22 Feb, 2011

7 commits

  • When SMP_ON_UP is used and the spinlocks are inlined, we end up with
    inline spinlocks in the exit code, with references from the SMP
    alternatives section to the exit sections. This causes link time
    errors. Avoid this by placing the exit sections in the init-discarded
    region.

    Cc:
    Tested-by: Dave Martin
    Signed-off-by: Russell King

    Russell King
     
  • Ensure a predictable endian state when entering signal handlers. This
    avoids programs which use SETEND to momentarily switch their endian
    state from having their signal handlers entered with an unpredictable
    endian state.

    Cc:
    Acked-by: Dave Martin
    Signed-off-by: Russell King

    Russell King
     
  • Commit 18991197b4b588255ccabf472ebc84db7b66a19c added --build-id
    linker option when toolchain supports it. ARM one does, but for some
    reason places the section at 0 when linker script doesn't mention it
    explicitly.

    The 1e621a8e3752367d4aae78a8ab00a18fb2793f34 worked around the problem
    removing this section from binary image with explicit objcopy options,
    but it still exists in vmlinux, confusing tools like debuggers and perf.

    This problem was discussed here:
    http://lists.infradead.org/pipermail/linux-arm-kernel/2010-May/015994.html
    http://lists.infradead.org/pipermail/linux-arm-kernel/2010-May/015994.html
    but the proposed changes to the linker script were substantial.

    This patch simply places NOTES (36 bytes long, at least when compiled
    with CodeSourcery toolchain) between data and bss, which seem to be
    the right place (and suggested by the sample linker script in
    include/asm-generic/vmlinux.lds.h).

    It is enough to place it correctly in vmlinux (so debuggers are happy):

    Section Headers:
    [11] .data PROGBITS c07ce000 7ce000 020fc0 00 WA 0 0 32
    [12] .notes NOTE c07eefc0 7eefc0 000024 00 AX 0 0 4
    [13] .bss NOBITS c07ef000 7eefe4 01e628 00 WA 0 0 32
    Program Headers:
    LOAD 0x008000 0xc0008000 0xc0008000 0x7e6fe4 0x805628 RWE 0x8000
    NOTE 0x7eefc0 0xc07eefc0 0xc07eefc0 0x00024 0x00024 R E 0x4
    Section to Segment mapping:
    Segment Sections...
    00 .data .notes .bss
    01 .notes

    and to get it exposed as /sys/kernel/notes used by perf tools.

    Signed-off-by: Pawel Moll
    Signed-off-by: Russell King

    Pawel Moll
     
  • SPEAR320_SOC_CONFIG_BASE was wrong, causing the wrong registers to be
    accessed.

    Reviewed-by: Stanley Miao
    Signed-off-by: Viresh Kumar
    Signed-off-by: Russell King

    viresh kumar
     
  • In sysctl_soft_reset(), switch to slow mode before resetting the system
    via the system controller. This is required.

    Reviewed-by: Stanley Miao
    Signed-off-by: Shiraz Hashim
    Signed-off-by: Russell King

    Shiraz Hashim
     
  • readl() and writel() calls the outer cache maintainance operations
    which are not available during Linux uncompression. This patch replaces
    readl() and writel() with readl_relaxed() and writel_relaxed() to avoid
    the link time errors.

    Reviewed-by: Stanley Miao
    Signed-off-by: Viresh Kumar
    Signed-off-by: Russell King

    viresh kumar
     
  • This patch fixes following warning:
    arch/arm/mm/init.c:606: warning: format '%08lx' expects type 'long unsigned int', but argument 12 has type 'unsigned int'

    by appending UL to VMALLOC_END's Number.

    Reviewed-by: Stanley Miao
    Signed-off-by: Viresh Kumar
    Signed-off-by: Russell King

    viresh kumar
     

19 Feb, 2011

13 commits

  • If ID_MMFR0[3:0] >= 3, the architecture version is ARMv7. The code was
    currently only testing for ID_MMFR0[3:0] == 3.

    Signed-off-by: Catalin Marinas
    Signed-off-by: Russell King

    Catalin Marinas
     
  • Signed-off-by: Nicolas Pitre
    Signed-off-by: Russell King

    Nicolas Pitre
     
  • On versions of the Cortex-A9 prior to r3p0, an interrupted ICIALLUIS
    operation may prevent the completion of a following broadcasted
    operation if the second operation is received by a CPU before the
    ICIALLUIS has completed, potentially leading to corrupted entries in
    the cache or TLB.

    This workaround sets a bit in the diagnostic register of the Cortex-A9,
    causing CP15 maintenance operations to be uninterruptible.

    Acked-by: Catalin Marinas
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • Now that we can execute a CONFIG_SMP kernel on a uniprocessor system,
    extra care has to be taken in the PMU IRQ affinity setting code to
    ensure that we don't always fail to initialise.

    This patch changes the CPU PMU initialisation code so that when we
    only have a single IRQ, whose affinity can not be changed at the
    controller, we report success (0) rather than -EINVAL.

    Reported-by: Avik Sil
    Acked-by: Jamie Iles
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • The effect of cache sync operation is to drain the store buffer and
    wait for all internal buffers to be empty. In normal conditions, store
    buffer is able to merge the normal memory writes within its 32-byte
    data buffers. Due to this erratum present in r3p0, the effect of cache
    sync operation on the store buffer still remains when the operation
    completes. This means that the store buffer is always asked to drain
    and this prevents it from merging any further writes.

    This can severely affect performance on the write traffic esp. on
    Normal memory NC one.

    The proposed workaround is to replace the normal offset of cache sync
    operation(0x730) by another offset targeting an unmapped PL310
    register 0x740.

    Signed-off-by: srinidhi kasagar
    Acked-by: Linus Walleij
    Acked-by: Catalin Marinas
    Signed-off-by: Russell King

    Srinidhi Kasagar
     
  • * 'rtc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    RTC: Re-enable UIE timer/polling emulation
    RTC: Revert UIE emulation removal
    RTC: Release mutex in error path of rtc_alarm_irq_enable

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (37 commits)
    net: deinit automatic LIST_HEAD
    net: dont leave active on stack LIST_HEAD
    net: provide default_advmss() methods to blackhole dst_ops
    tg3: Restrict phy ioctl access
    drivers/net: Call netif_carrier_off at the end of the probe
    ixgbe: work around for DDP last buffer size
    ixgbe: fix panic due to uninitialised pointer
    e1000e: flush all writebacks before unload
    e1000e: check down flag in tasks
    isdn: hisax: Use l2headersize() instead of dup (and buggy) func.
    arp_notify: unconditionally send gratuitous ARP for NETDEV_NOTIFY_PEERS.
    cxgb4vf: Use defined Mailbox Timeout
    cxgb4vf: Quiesce Virtual Interfaces on shutdown ...
    cxgb4vf: Behave properly when CONFIG_DEBUG_FS isn't defined ...
    cxgb4vf: Check driver parameters in the right place ...
    pch_gbe: Fix the MAC Address load issue.
    iwlwifi: Delete iwl3945_good_plcp_health.
    net/can/softing: make CAN_SOFTING_CS depend on CAN_SOFTING
    netfilter: nf_iterate: fix incorrect RCU usage
    pch_gbe: Fix the issue that the receiving data is not normal.
    ...

    Linus Torvalds
     
  • * 'for-linus/bugfixes' of git://xenbits.xen.org/people/ianc/linux-2.6:
    xen: suspend and resume system devices when running PVHVM

    Linus Torvalds
     
  • * 'fixes-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
    workqueue: make sure MAYDAY_INITIAL_TIMEOUT is at least 2 jiffies long
    workqueue, freezer: unify spelling of 'freeze' + 'able' to 'freezable'
    workqueue: wake up a worker when a rescuer is leaving a gcwq

    Linus Torvalds
     
  • commit 9b5e383c11b08784 (net: Introduce
    unregister_netdevice_many()) left an active LIST_HEAD() in
    rollback_registered(), with possible memory corruption.

    Even if device is freed without touching its unreg_list (and therefore
    touching the previous memory location holding LISTE_HEAD(single), better
    close the bug for good, since its really subtle.

    (Same fix for default_device_exit_batch() for completeness)

    Reported-by: Michal Hocko
    Tested-by: Michal Hocko
    Reported-by: Eric W. Biderman
    Tested-by: Eric W. Biderman
    Signed-off-by: Linus Torvalds
    Signed-off-by: Eric Dumazet
    CC: Ingo Molnar
    CC: Octavian Purdila
    CC: stable [.33+]
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Eric W. Biderman and Michal Hocko reported various memory corruptions
    that we suspected to be related to a LIST head located on stack, that
    was manipulated after thread left function frame (and eventually exited,
    so its stack was freed and reused).

    Eric Dumazet suggested the problem was probably coming from commit
    443457242beb (net: factorize
    sync-rcu call in unregister_netdevice_many)

    This patch fixes __dev_close() and dev_close() to properly deinit their
    respective LIST_HEAD(single) before exiting.

    References: https://lkml.org/lkml/2011/2/16/304
    References: https://lkml.org/lkml/2011/2/14/223

    Reported-by: Michal Hocko
    Tested-by: Michal Hocko
    Reported-by: Eric W. Biderman
    Tested-by: Eric W. Biderman
    Signed-off-by: Linus Torvalds
    Signed-off-by: Eric Dumazet
    CC: Ingo Molnar
    CC: Octavian Purdila
    Signed-off-by: David S. Miller

    Linus Torvalds
     
  • Commit 0dbaee3b37e118a (net: Abstract default ADVMSS behind an
    accessor.) introduced a possible crash in tcp_connect_init(), when
    dst->default_advmss() is called from dst_metric_advmss()

    Reported-by: George Spelvin
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • When list debugging is enabled, we aim to readably show list corruption
    errors, and the basic list_add/list_del operations end up having extra
    debugging code in them to do some basic validation of the list entries.

    However, "list_del_init()" and "list_move[_tail]()" ended up avoiding
    the debug code due to how they were written. This fixes that.

    So the _next_ time we have list_move() problems with stale list entries,
    we'll hopefully have an easier time finding them..

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

18 Feb, 2011

12 commits

  • * 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
    PM / Hibernate: Return error code when alloc_image_page() fails

    Linus Torvalds
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/radeon/kms: add missing frac fb div flag for dce4+
    drm/radeon/kms: do not reject X16 and Y16X16 floating-point formats on r300
    drm/nouveau: fix suspend/resume on GPUs that don't have PM support
    drm/nouveau: flips/flipd need to always set 'evict' for move_accel_cleanup()
    drm/nv40: fix tiling-related setup for a number of chipsets
    drm/nouveau: fix non-EDIDful native mode selection
    drm/nouveau: Fix detection of DDC-based LVDS on DCB15 boards.
    drm/nv04-nv40: Fix NULL dereference when we fail to find an LVDS native mode.
    drm/nv10: Fix crash when allocating a BO larger than half the available VRAM.

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    IB/qib: Prevent double completions after a timeout or RNR error
    IB/qib: Fix double add_timer()
    RDMA/nes: Don't generate async events for unregistered devices

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
    sparc64: Fix NMI startup bug which also breaks perf.
    sparc: fix size argument to find_next_zero_bit()
    sparc: use bitmap_set()
    sparc32: unaligned memory access (MNA) trap handler bug

    Linus Torvalds
     
  • Validate number of blocks in map and remove redundant variable.

    Signed-off-by: Timo Warns
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Timo Warns
     
  • This patch re-enables UIE timer/polling emulation for rtc devices
    that do not support alarm irqs.

    CC: Uwe Kleine-König
    CC: Thomas Gleixner
    Reported-by: Uwe Kleine-König
    Tested-by: Uwe Kleine-König
    Signed-off-by: John Stultz

    John Stultz
     
  • Uwe pointed out that my alarm based UIE emulation is not sufficient
    to replace the older timer/polling based UIE emulation on devices
    where there is no alarm irq. This causes rtc devices without alarms
    to return -EINVAL to UIE ioctls. The fix is to re-instate the old
    timer/polling method for devices without alarm irqs.

    This patch reverts the following commits:
    042620a018afcfba1d678062b62e46 - Remove UIE emulation
    1daeddd5962acad1bea55e524fc0fa - Cleanup removed UIE emulation declaration
    b5cc8ca1c9c3a37eaddf709b2fd3e1 - Remove Kconfig symbol for UIE emulation

    The emulation mode will still need to be wired-in with a following
    patch before it will work.

    CC: Uwe Kleine-König
    CC: Thomas Gleixner
    Reported-by: Uwe Kleine-König
    Signed-off-by: John Stultz

    John Stultz
     
  • On hardware that doesn't support alarm interrupts, rtc_alarm_irq_enable
    could return without releasing the ops_lock mutex.

    This was introduced in
    aa0be0f (RTC: Propagate error handling via rtc_timer_enqueue properly)

    This patch corrects the issue by only returning once the mutex is
    released.

    [john.stultz: Reworded the commit log]

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: John Stultz

    Uwe Kleine-König
     
  • If management firmware is present and the device is down, the firmware
    will assume control of the phy. If a phy access were allowed from the
    host, it will collide with firmware phy accesses, resulting in
    unpredictable behavior. This patch fixes the problem by disallowing phy
    accesses during the problematic condition.

    Signed-off-by: Matt Carlson
    Reviewed-by: Michael Chan
    Signed-off-by: David S. Miller

    Matt Carlson
     
  • Without calling of netif_carrier_off at the end of the probe the operstate
    is unknown when the device is initially opened. By default the carrier is
    on so when the device is opened and netif_carrier_on is called the link
    watch event is not fired and operstate remains zero (unknown).

    This patch fixes this behavior in forcedeth and r8169.

    Signed-off-by: Ivan Vecera
    Acked-by: Francois Romieu
    Signed-off-by: David S. Miller

    Ivan Vecera
     
  • Roland Dreier
     
  • There is a double completion associated with error handling for RC QPs.

    The sequence is:

    - The do_rc_ack() routine fields an RNR nack and there are 0
    rnr_retries configured on the QP.
    - qib_error_qp() stops the pending timer
    - qib_rc_send_complete() is called from sdma_complete()
    - qib_rc_send_complete() starts the timer because the msb of the psn
    just completed says an ack is needed.
    - a bunch of flushes occur as ipoib posts WQEs to an error'ed QP
    - rc_timeout() calls qib_restart_rc()
    - qib_restart_rc() calls qib_send_complete() with a
    IB_WC_RETRY_EXC_ERR on a wqe that has already been completed in the
    past

    The fix avoids starting the timer since another packet will never
    arrive.

    Signed-off-by: Mike Marciniszyn
    Signed-off-by: Roland Dreier

    Mike Marciniszyn
     

17 Feb, 2011

8 commits

  • Otherwise we fail to properly suspend/resume all of the emulated devices.

    Something between 2.6.38-rc2 and rc3 appears to have exposed this
    issue, but it's always been wrong not to do this.

    Signed-off-by: Ian Campbell
    Acked-by: Stefano Stabellini
    Acked-by: Jeremy Fitzhardinge

    Ian Campbell
     
  • A HW limitation was recently discovered where the last buffer in a DDP offload
    cannot be a full buffer size in length. Fix the issue with a work around by
    adding another buffer with size = 1.

    Signed-off-by: Amir Hanania
    Tested-by: Ross Brattain
    Signed-off-by: Jeff Kirsher

    Amir Hanania
     
  • Systems containing an 82599EB and running a backported driver from
    upstream were panicing on boot. It turns out hw->mac.ops.setup_sfp is
    only set for 82599, so one should check to be sure that pointer is set
    before continuing in ixgbe_sfp_config_module_task. I verified by
    inspection that the upstream driver has the same issue and also added a
    check before the call in ixgbe_sfp_link_config.

    Signed-off-by: Andy Gospodarek
    Signed-off-by: Jeff Kirsher

    Andy Gospodarek
     
  • The driver was not flushing all writebacks before unloading, possibly
    causing memory to be written by the hardware after the driver had
    reinitialized the rings.

    This adds missing functionality to flush any pending writebacks and is
    called in all spots where descriptors should be completed before the driver
    begins processing.

    Signed-off-by: Jesse Brandeburg
    Reviewed-by: Bruce Allan
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher

    Jesse Brandeburg
     
  • This change is part of a fix to avoid any tasks running while the driver is
    exiting and deinitializing resources.

    Signed-off-by: Jesse Brandeburg
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher

    Jesse Brandeburg
     
  • * 'for-2.6.38' of git://linux-nfs.org/~bfields/linux:
    nfsd: correctly handle return value from nfsd_map_name_to_*

    Linus Torvalds
     
  • * 'nouveau/drm-nouveau-next' of /ssd/git/drm-nouveau-next:
    drm/nouveau: fix suspend/resume on GPUs that don't have PM support
    drm/nouveau: flips/flipd need to always set 'evict' for move_accel_cleanup()
    drm/nv40: fix tiling-related setup for a number of chipsets
    drm/nouveau: fix non-EDIDful native mode selection
    drm/nouveau: Fix detection of DDC-based LVDS on DCB15 boards.
    drm/nv04-nv40: Fix NULL dereference when we fail to find an LVDS native mode.
    drm/nv10: Fix crash when allocating a BO larger than half the available VRAM.

    Dave Airlie
     
  • The fixed ref/post dividers are set by the AdjustPll table
    rather than the ss info table on dce4+. Make sure we enable
    the fractional feedback dividers when using a fixed post
    or ref divider on them as well.

    Fixes:
    https://bugzilla.kernel.org/show_bug.cgi?id=29272

    Signed-off-by: Alex Deucher
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher