11 Mar, 2012

4 commits

  • Define struct pcpu and merge some of the NR_CPUS arrays into it, including
    __cpu_logical_map, current_set and smp_cpu_state. Split smp related
    functions to those operating on physical cpus and the functions operating
    on a logical cpu number. Make the functions for physical cpus use a
    pointer to a struct pcpu. This hides the knowledge about cpu addresses in
    smp.c, entry[64].S and swsusp_asm64.S, thus remove the sigp.h header.

    The PSW restart mechanism is used to start secondary cpus, calling a
    function on an online cpu, calling a function on the ipl cpu, and for
    the nmi signal. Replace the different assembler functions with a
    single function restart_int_handler. The new entry point calls a function
    whose pointer is stored in the lowcore of the target cpu and it can wait
    for the source cpu to stop. This covers all existing use cases.

    Overall the code is now simpler and there are ~380 lines less code.

    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • The 16 bit value at the lowcore location with offset 0x84 is the
    cpu address that is associated with an external interrupt. Rename
    the field from cpu_addr to ext_cpu_addr to make that clear.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • With gcc 4.6.0 we get a false compile warning:

    arch/s390/kernel/setup.c: In function 'setup_arch':
    arch/s390/kernel/setup.c:767:3: warning: 'msg' may be used
    uninitialized in this function [-Wuninitialized]
    arch/s390/kernel/setup.c:753:8: note: 'msg' was declared here

    This patch makes gcc quiet.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • Linus Torvalds
     

10 Mar, 2012

7 commits

  • Current code has put_ioctx() called asynchronously from aio_fput_routine();
    that's done *after* we have killed the request that used to pin ioctx,
    so there's nothing to stop io_destroy() waiting in wait_for_all_aios()
    from progressing. As the result, we can end up with async call of
    put_ioctx() being the last one and possibly happening during exit_mmap()
    or elf_core_dump(), neither of which expects stray munmap() being done
    to them...

    We do need to prevent _freeing_ ioctx until aio_fput_routine() is done
    with that, but that's all we care about - neither io_destroy() nor
    exit_aio() will progress past wait_for_all_aios() until aio_fput_routine()
    does really_put_req(), so the ioctx teardown won't be done until then
    and we don't care about the contents of ioctx past that point.

    Since actual freeing of these suckers is RCU-delayed, we don't need to
    bump ioctx refcount when request goes into list for async removal.
    All we need is rcu_read_lock held just over the ->ctx_lock-protected
    area in aio_fput_routine().

    Signed-off-by: Al Viro
    Reviewed-by: Jeff Moyer
    Acked-by: Benjamin LaHaise
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Have ioctx_alloc() return an extra reference, so that caller would drop it
    on success and not bother with re-grabbing it on failure exit. The current
    code is obviously broken - io_destroy() from another thread that managed
    to guess the address io_setup() would've returned would free ioctx right
    under us; gets especially interesting if aio_context_t * we pass to
    io_setup() points to PROT_READ mapping, so put_user() fails and we end
    up doing io_destroy() on kioctx another thread has just got freed...

    Signed-off-by: Al Viro
    Acked-by: Benjamin LaHaise
    Reviewed-by: Jeff Moyer
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Pull btrfs updates from Chris Mason:
    "I have two additional and btrfs fixes in my for-linus branch. One is
    a casting error that leads to memory corruption on i386 during scrub,
    and the other fixes a corner case in the backref walking code (also
    triggered by scrub)."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: fix casting error in scrub reada code
    btrfs: fix locking issues in find_parent_nodes()

    Linus Torvalds
     
  • Respectfully revert commit e6ca7b89dc76 "memcg: fix mapcount check
    in move charge code for anonymous page" for the 3.3 release, so that
    it behaves exactly like releases 2.6.35 through 3.2 in this respect.

    Horiguchi-san's commit is correct in itself, 1 makes much more sense
    than 2 in that check; but it does not go far enough - swapcount
    should be considered too - if we really want such a check at all.

    We appear to have reached agreement now, and expect that 3.4 will
    remove the mapcount check, but had better not make 3.3 different.

    Signed-off-by: Hugh Dickins
    Reviewed-by: Naoya Horiguchi
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Commit f0fbf0abc093 ("x86: integrate delay functions") converted
    delay_tsc() into a random delay generator for 64 bit. The reason is
    that it merged the mostly identical versions of delay_32.c and
    delay_64.c. Though the subtle difference of the result was:

    static void delay_tsc(unsigned long loops)
    {
    - unsigned bclock, now;
    + unsigned long bclock, now;

    Now the function uses rdtscl() which returns the lower 32bit of the
    TSC. On 32bit that's not problematic as unsigned long is 32bit. On 64
    bit this fails when the lower 32bit are close to wrap around when
    bclock is read, because the following check

    if ((now - bclock) >= loops)
    break;

    evaluated to true on 64bit for e.g. bclock = 0xffffffff and now = 0
    because the unsigned long (now - bclock) of these values results in
    0xffffffff00000001 which is definitely larger than the loops
    value. That explains Tvortkos observation:

    "Because I am seeing udelay(500) (_occasionally_) being short, and
    that by delaying for some duration between 0us (yep) and 491us."

    Make those variables explicitely u32 again, so this works for both 32
    and 64 bit.

    Reported-by: Tvrtko Ursulin
    Signed-off-by: Thomas Gleixner
    Cc: stable@vger.kernel.org # >= 2.6.27
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Pull sound fixes from Takashi Iwai:
    "Nothing exciting here: just a few regression fixes for HD-audio and
    ASoC, also the support of missing 32bit compat ioctl for HDSPM."

    * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hdspm - Provide ioctl_compat
    ALSA: hda/realtek - Apply the coef-setup only to ALC269VB
    ALSA: hda - add quirk to detect CD input on Gigabyte EP45-DS3
    ASoC: neo1973: fix neo1973 wm8753 initialization

    Linus Torvalds
     
  • The msm git tree moved to

    git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git

    Signed-off-by: David Brown
    Signed-off-by: Linus Torvalds

    David Brown
     

09 Mar, 2012

13 commits

  • Pull C6X fix from Mark Salter:
    "Fix for C6X KSTK_EIP and KSTK_ESP macros."

    * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
    C6X: fix KSTK_EIP and KSTK_ESP macros

    Linus Torvalds
     
  • Pull two IOMMU fixes from Joerg Roedel:
    "The first is an additional fix for the OMAP initialization order issue
    and the second patch fixes a possible section mismatch which can lead
    to a kernel crash in the AMD IOMMU driver when suspend/resume is used
    and the compiler has not inlined the iommu_set_device_table function."

    * tag 'iommu-fixes-v3.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    x86/amd: iommu_set_device_table() must not be __init
    ARM: OMAP: fix iommu, not mailbox

    Linus Torvalds
     
  • Pull radeon drm stuff from Dave Airlie:
    "Just some radeon fixes, one is for an oops where we run out of ioremap
    space on some big hardware systems in 32-bit mode, stuff doesn't work
    properly but at least the machine will boot.

    One regression fix, and two bugs, one hw, one blit code."

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/kms: fix hdmi duallink checks
    drm/radeon/kms: set SX_MISC in the r6xx blit code (v2)
    drm/radeon: deal with errors from framebuffer init path.
    drm/radeon: fix a semaphore deadlock on pre cayman asics

    Linus Torvalds
     
  • Pull networking from David Miller:

    1) IPV4 routing metrics can become stale when routes are changed by the
    administrator, fix from Steffen Klassert.

    2) atl1c does "val |= XXX;" where XXX is a bit number not a bit mask,
    fix by using set_bit. From Dan Carpenter.

    3) Memory accounting bug in carl9170 driver results in wedged TX queue.
    Fix from Nicolas Cavallari.

    4) iwlwifi accidently uses "sizeof(ptr)" instead of "sizeof(*ptr)", fix
    from Johannes Berg.

    5) Openvswitch doesn't honor dp_ifindex when doing vport lookups, fix
    from Ben Pfaff.

    6) ehea conversion to 64-bit stats lost multicast and rx_errors
    accounting, fix from Eric Dumazet.

    7) Bridge state transition logging in br_stp_disable_port() is busted,
    it's emitted at the wrong time and the message is in the wrong tense,
    fix from Paulius Zaleckas.

    8) mlx4 device erroneously invokes the queue resize firmware operation
    twice, fix from Jack Morgenstein.

    9) Fix deadlock in usbnet, need to drop lock when invoking usb_unlink_urb()
    otherwise we recurse into taking it again. Fix from Sebastian Siewior.

    10) hyperv network driver uses the wrong driver name string, fix from
    Haiyang Zhang.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net/hyperv: Use the built-in macro KBUILD_MODNAME for this driver
    net/usbnet: avoid recursive locking in usbnet_stop()
    route: Remove redirect_genid
    inetpeer: Invalidate the inetpeer tree along with the routing cache
    mlx4_core: fix bug in modify_cq wrapper for resize flow.
    atl1c: set ATL1C_WORK_EVENT_RESET bit correctly
    bridge: fix state reporting when port is disabled
    bridge: br_log_state() s/entering/entered/
    ehea: restore multicast and rx_errors fields
    openvswitch: Fix checksum update for actions on UDP packets.
    openvswitch: Honor dp_ifindex, when specified, for vport lookup by name.
    iwlwifi: fix wowlan suspend
    mwifiex: reset encryption mode flag before association
    carl9170: fix frame delivery if sta is in powersave mode
    carl9170: Fix memory accounting when sta is in power-save mode.

    Linus Torvalds
     
  • Pull last minute fixes from Olof Johansson:
    "One samsung build fix due to a mis-applied patch, and a small set of
    OMAP fixes. This should be the last from arm-soc for 3.3, hopefully."

    * tag 'fixes-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: S3C2440: Fixed build error for s3c244x
    ARM: OMAP2+: Fix module build errors with CONFIG_OMAP4_ERRATA_I688
    ARM: OMAP: id: Add missing break statement in omap3xxx_check_revision
    ARM: OMAP2+: Remove apply_uV constraints for fixed regulator
    ARM: OMAP: irqs: Fix NR_IRQS value to handle PRCM interrupts

    Linus Torvalds
     
  • Pull regulator fix from Mark Brown:
    "Another small, clear fix in a specific driver."

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: tps65910: Configure correct value for VDDCTRL vout reg

    Linus Torvalds
     
  • Pull minor devicetree bug fixes and documentation updates from Grant Likely:
    "Fixes up a duplicate #include, adds an empty implementation of
    of_find_compatible_node() and make git ignore .dtb files. And fix up
    bus name on OF described PHYs. Nothing exciting here."

    * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux-2.6:
    doc: dt: Fix broken reference in gpio-leds documentation
    of/mdio: fix fixed link bus name
    of/fdt.c: asm/setup.h included twice
    of: add picochip vendor prefix
    dt: add empty of_find_compatible_node function
    ARM: devicetree: Add .dtb files to arch/arm/boot/.gitignore

    Linus Torvalds
     
  • Pull SPI section mismatch bug fix for v3.3-rc3 from Grant Likely:
    "Minor fix for pl022_dma_probe() function which was put in the wrong
    section."

    * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6:
    Fix section mismatch in spi-pl022.c

    Linus Torvalds
     
  • Pull four hwmon patches from Guenter Roeck

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804
    hwmon: (zl6100) Maintain delay parameter in driver instance data
    hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes
    hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000

    Linus Torvalds
     
  • Pull device-mapper fixes for 3.3 from Alasdair Kergon

    Eight small device-mapper bug fixes.

    * tag 'dm-3.3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:
    dm raid: fix flush support
    dm raid: set MD_CHANGE_DEVS when rebuilding
    dm thin metadata: decrement counter after removing mapped block
    dm thin metadata: unlock superblock in init_pmd error path
    dm thin metadata: remove incorrect close_device on creation error paths
    dm flakey: fix crash on read when corrupt_bio_byte not set
    dm io: fix discard support
    dm ioctl: do not leak argv if target message only contains whitespace

    Linus Torvalds
     
  • Signed-off-by: Haiyang Zhang
    Signed-off-by: K. Y. Srinivasan
    Cc: Olaf Hering
    Signed-off-by: David S. Miller

    Haiyang Zhang
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: OMAP2+: Fix module build errors with CONFIG_OMAP4_ERRATA_I688
    ARM: OMAP: id: Add missing break statement in omap3xxx_check_revision
    ARM: OMAP2+: Remove apply_uV constraints for fixed regulator
    ARM: OMAP: irqs: Fix NR_IRQS value to handle PRCM interrupts

    Olof Johansson
     
  • Fixed following:
    arch/arm/mach-s3c2440/s3c244x.c: In function 's3c244x_restart':
    arch/arm/mach-s3c2440/s3c244x.c:209: error: expected declaration or statement at end of input
    make[1]: *** [arch/arm/mach-s3c24xx/s3c244x.o] Error 1
    make: *** [arch/arm/mach-s3c24xx] Error 2

    Signed-off-by: Kukjin Kim
    Signed-off-by: Olof Johansson

    Kukjin Kim
     

08 Mar, 2012

16 commits