08 May, 2013

1 commit

  • Merge rwsem optimizations from Michel Lespinasse:
    "These patches extend Alex Shi's work (which added write lock stealing
    on the rwsem slow path) in order to provide rwsem write lock stealing
    on the fast path (that is, without taking the rwsem's wait_lock).

    I have unfortunately been unable to push this through -next before due
    to Ingo Molnar / David Howells / Peter Zijlstra being busy with other
    things. However, this has gotten some attention from Rik van Riel and
    Davidlohr Bueso who both commented that they felt this was ready for
    v3.10, and Ingo Molnar has said that he was OK with me pushing
    directly to you. So, here goes :)

    Davidlohr got the following test results from pgbench running on a
    quad-core laptop:

    | db_size | clients | tps-vanilla | tps-rwsem |
    +---------+----------+----------------+--------------+
    | 160 MB | 1 | 5803 | 6906 | + 19.0%
    | 160 MB | 2 | 13092 | 15931 |
    | 160 MB | 4 | 29412 | 33021 |
    | 160 MB | 8 | 32448 | 34626 |
    | 160 MB | 16 | 32758 | 33098 |
    | 160 MB | 20 | 26940 | 31343 | + 16.3%
    | 160 MB | 30 | 25147 | 28961 |
    | 160 MB | 40 | 25484 | 26902 |
    | 160 MB | 50 | 24528 | 25760 |
    ------------------------------------------------------
    | 1.6 GB | 1 | 5733 | 7729 | + 34.8%
    | 1.6 GB | 2 | 9411 | 19009 | + 101.9%
    | 1.6 GB | 4 | 31818 | 33185 |
    | 1.6 GB | 8 | 33700 | 34550 |
    | 1.6 GB | 16 | 32751 | 33079 |
    | 1.6 GB | 20 | 30919 | 31494 |
    | 1.6 GB | 30 | 28540 | 28535 |
    | 1.6 GB | 40 | 26380 | 27054 |
    | 1.6 GB | 50 | 25241 | 25591 |
    ------------------------------------------------------
    | 7.6 GB | 1 | 5779 | 6224 |
    | 7.6 GB | 2 | 10897 | 13611 | + 24.9%
    | 7.6 GB | 4 | 32683 | 33108 |
    | 7.6 GB | 8 | 33968 | 34712 |
    | 7.6 GB | 16 | 32287 | 32895 |
    | 7.6 GB | 20 | 27770 | 31689 | + 14.1%
    | 7.6 GB | 30 | 26739 | 29003 |
    | 7.6 GB | 40 | 24901 | 26683 |
    | 7.6 GB | 50 | 17115 | 25925 | + 51.5%
    ------------------------------------------------------

    (Davidlohr also has one additional patch which further improves
    throughput, though I will ask him to send it directly to you as I have
    suggested some minor changes)."

    * emailed patches from Michel Lespinasse :
    rwsem: no need for explicit signed longs
    x86 rwsem: avoid taking slow path when stealing write lock
    rwsem: do not block readers at head of queue if other readers are active
    rwsem: implement support for write lock stealing on the fastpath
    rwsem: simplify __rwsem_do_wake
    rwsem: skip initial trylock in rwsem_down_write_failed
    rwsem: avoid taking wait_lock in rwsem_down_write_failed
    rwsem: use cmpxchg for trying to steal write lock
    rwsem: more agressive lock stealing in rwsem_down_write_failed
    rwsem: simplify rwsem_down_write_failed
    rwsem: simplify rwsem_down_read_failed
    rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed
    rwsem: shorter spinlocked section in rwsem_down_failed_common()
    rwsem: make the waiter type an enumeration rather than a bitmask

    Linus Torvalds
     

07 May, 2013

37 commits

  • Pull slab changes from Pekka Enberg:
    "The bulk of the changes are more slab unification from Christoph.

    There's also few fixes from Aaron, Glauber, and Joonsoo thrown into
    the mix."

    * 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux: (24 commits)
    mm, slab_common: Fix bootstrap creation of kmalloc caches
    slab: Return NULL for oversized allocations
    mm: slab: Verify the nodeid passed to ____cache_alloc_node
    slub: tid must be retrieved from the percpu area of the current processor
    slub: Do not dereference NULL pointer in node_match
    slub: add 'likely' macro to inc_slabs_node()
    slub: correct to calculate num of acquired objects in get_partial_node()
    slub: correctly bootstrap boot caches
    mm/sl[au]b: correct allocation type check in kmalloc_slab()
    slab: Fixup CONFIG_PAGE_ALLOC/DEBUG_SLAB_LEAK sections
    slab: Handle ARCH_DMA_MINALIGN correctly
    slab: Common definition for kmem_cache_node
    slab: Rename list3/l3 to node
    slab: Common Kmalloc cache determination
    stat: Use size_t for sizes instead of unsigned
    slab: Common function to create the kmalloc array
    slab: Common definition for the array of kmalloc caches
    slab: Common constants for kmalloc boundaries
    slab: Rename nodelists to node
    slab: Common name for the per node structures
    ...

    Linus Torvalds
     
  • Pull misc kbuild updates from Michal Marek:
    "Non-critical kbuild changes:

    - make coccicheck improvements, but no new semantic patches this time

    - make rpm improvements

    - make tar-pkg change to include the architecture in the filename.

    This is a deliberate incompatibility, but nobody has complained so
    far and it is useful if you build for different architectures. It
    also matches what the deb-pkg and rpm-pkg targets produce.

    - kbuild documentation fix"

    * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    rpm-pkg: Remove pointless set -e statements
    rpm-pkg: Always regenerate the specfile
    rpm-pkg: Do not write to the parent directory
    rpm-pkg: Do not package the whole source directory
    buildtar: Add ARCH to the archive name
    Coccinelle: Fix patch output when coccicheck is used with M= and C=
    Coccinelle: Add support to the SPFLAGS variable
    Coccinelle: Cleanup the setting of the FLAGS and OPTIONS variables
    Coccinelle: Restore coccicheck verbosity in ONLINE mode (C=1 or C=2)
    scripts/package/Makefile: compare objtree with srctree instead of test KBUILD_OUTPUT
    doc: change example to existing Makefile fragment
    scripts/tags.sh: Add magic for OFFSET and DEFINE

    Linus Torvalds
     
  • Pull kconfig updates from Michal Marek:
    - use pkg-config to detect curses libraries
    - clean up the way curses headers are searched
    - Some randconfig fixes, of which one had to be reverted
    - KCONFIG_SEED for randconfig debugging
    - memuconfig memory leak plugged
    - menuconfig > breadcrumbs > navigation
    - xconfig compilation fix
    - Other minor fixes

    * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kconfig: fix lists definition for C++
    Revert "kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG"
    kconfig: implement KCONFIG_PROBABILITY for randconfig
    kconfig: allow specifying the seed for randconfig
    kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG
    kconfig: do not override symbols already set
    kconfig: fix randconfig tristate detection
    kconfig/lxdialog: rationalise the include paths where to find {.n}curses{,w}.h
    menuconfig: Add "breadcrumbs" navigation aid
    menuconfig: Fix memory leak introduced by jump keys feature
    merge_config.sh: Avoid creating unnessary source softlinks
    kconfig: optionally use pkg-config to detect ncurses libs
    menuconfig: optionally use pkg-config to detect ncurses libs

    Linus Torvalds
     
  • Pull kbuild changes from Michal Marek:
    "Kbuild commits for v3.10-rc1:

    - Fix make mrproper after mod/file2alias rework
    - Fix ld-option Makefile function
    - Rewrite headers_install to shell to drop Perl dependency.

    There are some more patches I have to look at, so I might send another
    pull request later. Or just queue them for 3.11."

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    Fix cleaning in scripts/mod
    headers_install.pl: convert to headers_install.sh
    kbuild: fix ld-option function

    Linus Torvalds
     
  • Searching for PPC_EFIKA results in a segmentation fault, and it's
    because get_symbol_prop() returns NULL.

    In this case CONFIG_PPC_EFIKA is defined in arch/powerpc/platforms/
    52xx/Kconfig, so it won't be parsed if ARCH!=PPC, but menuconfig knows
    this symbol when it parses sound/soc/fsl/Kconfig:

    config SND_MPC52xx_SOC_EFIKA
    tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
    depends on PPC_EFIKA

    This bug was introduced by commit bcdedcc1afd6 ("menuconfig: print more
    info for symbol without prompts").

    Reported-and-tested-by: Borislav Petkov
    Signed-off-by: Li Zefan
    Tested-by: Libo Chen
    Reviewed-by: "Yann E. MORIN"
    Signed-off-by: Michal Marek
    Signed-off-by: Linus Torvalds

    Li Zefan
     
  • A scheduling while atomic bug was introduced recently (by commit
    ce43a2168c59: "e1000e: cleanup USLEEP_RANGE checkpatch checks").

    Revert the particular instance of usleep_range() which causes the bug.

    Reported-by: Maarten Lankhorst
    Signed-off-by: Bruce Allan
    Signed-off-by: Jeff Kirsher
    Acked-by: David S. Miller
    Signed-off-by: Linus Torvalds

    Bruce Allan
     
  • Change explicit "signed long" declarations into plain "long" as suggested
    by Peter Hurley.

    Signed-off-by: Davidlohr Bueso
    Reviewed-by: Michel Lespinasse
    Signed-off-by: Michel Lespinasse
    Signed-off-by: Linus Torvalds

    Davidlohr Bueso
     
  • modify __down_write[_nested] and __down_write_trylock to grab the write
    lock whenever the active count is 0, even if there are queued waiters
    (they must be writers pending wakeup, since the active count is 0).

    Note that this is an optimization only; architectures without this
    optimization will still work fine:

    - __down_write() would take the slow path which would take the wait_lock
    and then try stealing the lock (as in the spinlocked rwsem implementation)

    - __down_write_trylock() would fail, but callers must be ready to deal
    with that - since there are some writers pending wakeup, they could
    have raced with us and obtained the lock before we steal it.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • This change fixes a race condition where a reader might determine it
    needs to block, but by the time it acquires the wait_lock the rwsem has
    active readers and no queued waiters.

    In this situation the reader can run in parallel with the existing
    active readers; it does not need to block until the active readers
    complete.

    Thanks to Peter Hurley for noticing this possible race.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • When we decide to wake up readers, we must first grant them as many read
    locks as necessary, and then actually wake up all these readers. But in
    order to know how many read shares to grant, we must first count the
    readers at the head of the queue. This might take a while if there are
    many readers, and we want to be protected against a writer stealing the
    lock while we're counting. To that end, we grant the first reader lock
    before counting how many more readers are queued.

    We also require some adjustments to the wake_type semantics.

    RWSEM_WAKE_NO_ACTIVE used to mean that we had found the count to be
    RWSEM_WAITING_BIAS, in which case the rwsem was known to be free as
    nobody could steal it while we hold the wait_lock. This doesn't make
    sense once we implement fastpath write lock stealing, so we now use
    RWSEM_WAKE_ANY in that case.

    Similarly, when rwsem_down_write_failed found that a read lock was
    active, it would use RWSEM_WAKE_READ_OWNED which signalled that new
    readers could be woken without checking first that the rwsem was
    available. We can't do that anymore since the existing readers might
    release their read locks, and a writer could steal the lock before we
    wake up additional readers. So, we have to use a new RWSEM_WAKE_READERS
    value to indicate we only want to wake readers, but we don't currently
    hold any read lock.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • This is mostly for cleanup value:

    - We don't need several gotos to handle the case where the first
    waiter is a writer. Two simple tests will do (and generate very
    similar code).

    - In the remainder of the function, we know the first waiter is a reader,
    so we don't have to double check that. We can use do..while loops
    to iterate over the readers to wake (generates slightly better code).

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • We can skip the initial trylock in rwsem_down_write_failed() if there
    are known active lockers already, thus saving one likely-to-fail
    cmpxchg.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Acked-by: Rik van Riel
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • In rwsem_down_write_failed(), if there are active locks after we wake up
    (i.e. the lock got stolen from us), skip taking the wait_lock and go
    back to sleep immediately.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Acked-by: Rik van Riel
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Using rwsem_atomic_update to try stealing the write lock forced us to
    undo the adjustment in the failure path. We can have simpler and faster
    code by using cmpxchg instead.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Acked-by: Rik van Riel
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Some small code simplifications can be achieved by doing more agressive
    lock stealing:

    - When rwsem_down_write_failed() notices that there are no active locks
    (and thus no thread to wake us if we decided to sleep), it used to wake
    the first queued process. However, stealing the lock is also sufficient
    to deal with this case, so we don't need this check anymore.

    - In try_get_writer_sem(), we can steal the lock even when the first waiter
    is a reader. This is correct because the code path that wakes readers is
    protected by the wait_lock. As to the performance effects of this change,
    they are expected to be minimal: readers are still granted the lock
    (rather than having to acquire it themselves) when they reach the front
    of the wait queue, so we have essentially the same behavior as in
    rwsem-spinlock.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • When waking writers, we never grant them the lock - instead, they have
    to acquire it themselves when they run, and remove themselves from the
    wait_list when they succeed.

    As a result, we can do a few simplifications in rwsem_down_write_failed():

    - We don't need to check for !waiter.task since __rwsem_do_wake() doesn't
    remove writers from the wait_list

    - There is no point releaseing the wait_lock before entering the wait loop,
    as we will need to reacquire it immediately. We can change the loop so
    that the lock is always held at the start of each loop iteration.

    - We don't need to get a reference on the task structure, since the task
    is responsible for removing itself from the wait_list. There is no risk,
    like in the rwsem_down_read_failed() case, that a task would wake up and
    exit (thus destroying its task structure) while __rwsem_do_wake() is
    still running - wait_lock protects against that.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • When trying to acquire a read lock, the RWSEM_ACTIVE_READ_BIAS
    adjustment doesn't cause other readers to block, so we never have to
    worry about waking them back after canceling this adjustment in
    rwsem_down_read_failed().

    We also never want to steal the lock in rwsem_down_read_failed(), so we
    don't have to grab the wait_lock either.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Remove the rwsem_down_failed_common function and replace it with two
    identical copies of its code in rwsem_down_{read,write}_failed.

    This is because we want to make different optimizations in
    rwsem_down_{read,write}_failed; we are adding this pure-duplication
    step as a separate commit in order to make it easier to check the
    following steps.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • This change reduces the size of the spinlocked and TASK_UNINTERRUPTIBLE
    sections in rwsem_down_failed_common():

    - We only need the sem->wait_lock to insert ourselves on the wait_list;
    the waiter node can be prepared outside of the wait_lock.

    - The task state only needs to be set to TASK_UNINTERRUPTIBLE immediately
    before checking if we actually need to sleep; it doesn't need to protect
    the entire function.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • We are not planning to add some new waiter flags, so we can convert the
    waiter type into an enumeration.

    Background: David Howells suggested I do this back when I tried adding
    a new waiter type for unfair readers. However, I believe the cleanup
    applies regardless of that use case.

    Signed-off-by: Michel Lespinasse
    Reviewed-by: Rik van Riel
    Reviewed-by: Peter Hurley
    Acked-by: Davidlohr Bueso
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Pekka Enberg
     
  • Pull networking fixes from David Miller:
    "Just a small pile of fixes"

    1) Fix race conditions in IP fragmentation LRU list handling, from
    Konstantin Khlebnikov.

    2) vfree() is no longer verboten in interrupts, so deferring is
    pointless, from Al Viro.

    3) Conversion from mutex to semaphore in netpoll left trylock test
    inverted, caught by Dan Carpenter.

    4) 3c59x uses wrong base address when releasing regions, from Sergei
    Shtylyov.

    5) Bounds checking in TIPC from Dan Carpenter.

    6) Fastopen cookies should not be expired as aggressively as other TCP
    metrics. From Eric Dumazet.

    7) Fix retrieval of MAC address in ibmveth, from Ben Herrenschmidt.

    8) Don't use "u16" in virtio user headers, from Stephen Hemminger

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    tipc: potential divide by zero in tipc_link_recv_fragment()
    tipc: add a bounds check in link_recv_changeover_msg()
    net/usb: new driver for RTL8152
    3c59x: fix freeing nonexistent resource on driver unload
    netpoll: inverted down_trylock() test
    rps_dev_flow_table_release(): no need to delay vfree()
    fib_trie: no need to delay vfree()
    net: frag, fix race conditions in LRU list maintenance
    tcp: do not expire TCP fastopen cookies
    net/eth/ibmveth: Fixup retrieval of MAC address
    virtio: don't expose u16 in userspace api

    Linus Torvalds
     
  • Pull LED subsystem updates from Bryan Wu:
    - move LED trigger drivers into a new directory
    - lp55xx common driver updates
    - other led drivers updates and bug fixing

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
    leds: leds-asic3: switch to using SIMPLE_DEV_PM_OPS
    leds: leds-bd2802: add CONFIG_PM_SLEEP to suspend/resume functions
    leds: lp55xx: configure the clock detection
    leds: lp55xx: use common clock framework when external clock is used
    leds: leds-ns2: fix oops at module removal
    leds: leds-pwm: Defer led_pwm_set() if PWM can sleep
    leds: lp55xx: fix the sysfs read operation
    leds: lm355x, lm3642: support camera LED triggers for flash and torch
    leds: add camera LED triggers
    leds: trigger: use inline functions instead of macros
    leds: tca6507: Use of_match_ptr() macro
    leds: wm8350: Complain if we fail to reenable DCDC
    leds: renesas: set gpio_request_one() flags param correctly
    leds: leds-ns2: set devm_gpio_request_one() flags param correctly
    leds: leds-lt3593: set devm_gpio_request_one() flags param correctly
    leds: leds-bd2802: remove erroneous __exit annotation
    leds: atmel-pwm: remove erroneous __exit annotation
    leds: move LED trigger drivers into new subdirectory
    leds: add new LP5562 LED driver

    Linus Torvalds
     
  • Pull GPIO changes from Grant Likely:
    "The usual selection of bug fixes and driver updates for GPIO. Nothing
    really stands out except the addition of the GRGPIO driver and some
    enhacements to ACPI support"

    I'm pulling this despite the earlier mess. Let's hope it compiles these
    days.

    * tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux: (46 commits)
    gpio: grgpio: Add irq support
    gpio: grgpio: Add device driver for GRGPIO cores
    gpiolib-acpi: introduce acpi_get_gpio_by_index() helper
    GPIO: gpio-generic: remove kfree() from bgpio_remove call
    gpio / ACPI: Handle ACPI events in accordance with the spec
    gpio: lpc32xx: Fix off-by-one valid range checking for bank
    gpio: mcp23s08: convert driver to DT
    gpio/omap: force restore if context loss is not detectable
    gpio/omap: optimise interrupt service routine
    gpio/omap: remove extra context restores in *_runtime_resume()
    gpio/omap: free irq domain in probe() failure paths
    gpio: gpio-generic: Add 16 and 32 bit big endian byte order support
    gpio: samsung: Add terminating entry for exynos_pinctrl_ids
    gpio: mvebu: add dbg_show function
    MAX7301 GPIO: Do not force SPI speed when using OF Platform
    gpio: gpio-tps65910.c: fix checkpatch error
    gpio: gpio-timberdale.c: fix checkpatch error
    gpio: gpio-tc3589x.c: fix checkpatch errors
    gpio: gpio-stp-xway.c: fix checkpatch error
    gpio: gpio-sch.c: fix checkpatch error
    ...

    Linus Torvalds
     
  • Pull pwm changes from Thierry Reding:
    "Nothing very exciting this time around. A couple of bug fixes and a
    lot of cleanup across the board. The DaVinci 8xx family of SoCs now
    use the same driver as the AM33xx family.

    Many thanks to Axel Lin and Jingoo Han who have done a great job
    fixing various bugs and inconsistencies."

    * tag 'for-3.10-rc1' of git://gitorious.org/linux-pwm/linux-pwm: (27 commits)
    pwm: lpc32xx: Don't change PWM_ENABLE bit in lpc32xx_pwm_config
    pwm: lpc32xx: Properly set PWM_ENABLE bit in lpc32xx_pwm_[enable|disable]
    pwm: Constify OF match tables
    pwm: pwm-tiehrpwm: Update device-tree binding document
    pwm: pwm-tiecap: Update device-tree binding document
    pwm: puv3: Remove unused enabled filed from struct puv3_pwm_chip
    pwm: pxa: Remove PWM_ID_BASE macro
    pwm: spear: Remove unused *dev from struct spear_pwm_chip
    pwm: mxs: Remove unused *dev from struct mxs_pwm_chip
    pwm: twl: Return proper error if twl6030_pwm_enable() fails
    pwm: pxa: Remove clk_enabled field from struct pxa_pwm_chip
    pwm: imx: Remove enabled field from struct imx_chip
    pwm: twl: Add .owner to struct pwm_ops
    pwm: twl-led: Add .owner to struct pwm_ops
    pwm: atmel-tcb: Add .owner to struct pwm_ops
    pwm: ab8500: Add .owner to struct pwm_ops
    pwm: spear: Fix checking return value of clk_enable() and clk_prepare()
    pwm: tiehrpwm: Staticize non-exported symbols
    pwm: tiecap: Staticize non-exported symbols
    pwm: ab8500: Fix trivial typo in dev_err message
    ...

    Linus Torvalds
     
  • Pull IOMMU updates from Joerg Roedel:
    "The updates are mostly about the x86 IOMMUs this time.

    Exceptions are the groundwork for the PAMU IOMMU from Freescale (for a
    PPC platform) and an extension to the IOMMU group interface.

    On the x86 side this includes a workaround for VT-d to disable
    interrupt remapping on broken chipsets. On the AMD-Vi side the most
    important new feature is a kernel command-line interface to override
    broken information in IVRS ACPI tables and get interrupt remapping
    working this way.

    Besides that there are small fixes all over the place."

    * tag 'iommu-updates-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (24 commits)
    iommu/tegra: Fix printk formats for dma_addr_t
    iommu: Add a function to find an iommu group by id
    iommu/vt-d: Remove warning for HPET scope type
    iommu: Move swap_pci_ref function to drivers/iommu/pci.h.
    iommu/vt-d: Disable translation if already enabled
    iommu/amd: fix error return code in early_amd_iommu_init()
    iommu/AMD: Per-thread IOMMU Interrupt Handling
    iommu: Include linux/err.h
    iommu/amd: Workaround for ERBT1312
    iommu/amd: Document ivrs_ioapic and ivrs_hpet parameters
    iommu/amd: Don't report firmware bugs with cmd-line ivrs overrides
    iommu/amd: Add ioapic and hpet ivrs override
    iommu/amd: Add early maps for ioapic and hpet
    iommu/amd: Extend IVRS special device data structure
    iommu/amd: Move add_special_device() to __init
    iommu: Fix compile warnings with forward declarations
    iommu/amd: Properly initialize irq-table lock
    iommu/amd: Use AMD specific data structure for irq remapping
    iommu/amd: Remove map_sg_no_iommu()
    iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets
    ...

    Linus Torvalds
     
  • Make sure devicetable-offsets.h is cleaned in the scripts/mod directory

    Signed-off-by: Andreas Schwab
    Tested-by: Geert Uytterhoeven
    Signed-off-by: Michal Marek

    Andreas Schwab
     
  • For SLAB the kmalloc caches must be created in ascending sizes in order
    for the OFF_SLAB sub-slab cache to work properly.

    Create the non power of two caches immediately after the prior power of
    two kmalloc cache. Do not create the non power of two caches before all
    other caches.

    Reported-and-tested-by: Tetsuo Handa
    Signed-off-by: Christoph Lamete
    Link: http://lkml.kernel.org/r/201305040348.CIF81716.OStQOHFJMFLOVF@I-love.SAKURA.ne.jp
    Signed-off-by: Pekka Enberg

    Christoph Lameter
     
  • The worry here is that fragm_sz could be zero since it comes from
    skb->data.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • The bearer_id here comes from skb->data and it can be a number from 0 to
    7. The problem is that the ->links[] array has only 2 elements so I
    have added a range check.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Add new driver for supporting Realtek RTL8152 Based USB 2.0 Ethernet Adapters

    Signed-off-by: Hayes Wang
    Cc: Realtek linux nic maintainers
    Signed-off-by: David S. Miller

    hayeswang
     
  • Pull Ceph changes from Alex Elder:
    "This is a big pull.

    Most of it is culmination of Alex's work to implement RBD image
    layering, which is now complete (yay!).

    There is also some work from Yan to fix i_mutex behavior surrounding
    writes in cephfs, a sync write fix, a fix for RBD images that get
    resized while they are mapped, and a few patches from me that resolve
    annoying auth warnings and fix several bugs in the ceph auth code."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (254 commits)
    rbd: fix image request leak on parent read
    libceph: use slab cache for osd client requests
    libceph: allocate ceph message data with a slab allocator
    libceph: allocate ceph messages with a slab allocator
    rbd: allocate image object names with a slab allocator
    rbd: allocate object requests with a slab allocator
    rbd: allocate name separate from obj_request
    rbd: allocate image requests with a slab allocator
    rbd: use binary search for snapshot lookup
    rbd: clear EXISTS flag if mapped snapshot disappears
    rbd: kill off the snapshot list
    rbd: define rbd_snap_size() and rbd_snap_features()
    rbd: use snap_id not index to look up snap info
    rbd: look up snapshot name in names buffer
    rbd: drop obj_request->version
    rbd: drop rbd_obj_method_sync() version parameter
    rbd: more version parameter removal
    rbd: get rid of some version parameters
    rbd: stop tracking header object version
    rbd: snap names are pointer to constant data
    ...

    Linus Torvalds
     
  • Pull CIFS fixes from Steve French:
    "A set of cifs cleanup fixes.

    The only big one of this set optimizes the cifs error logging,
    renaming cFYI and cERROR macros to cifs_dbg, and in the process makes
    it clearer and reduces module size."

    * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: small variable name cleanup
    CIFS: fix error return code in cifs_atomic_open()
    cifs: store the real expected sequence number in the mid
    cifs: on send failure, readjust server sequence number downward
    cifs: remove ENOSPC handling in smb_sendv
    [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg
    fs: cifs: use kmemdup instead of kmalloc + memcpy
    cifs: replaced kmalloc + memset with kzalloc
    cifs: ignore the unc= and prefixpath= mount options

    Linus Torvalds
     
  • When checking if an autofs mount point is busy it isn't sufficient to
    only check if it's a mount point.

    For example, if the mount of an offset mountpoint in a tree is denied
    for this host by its export and the dentry becomes a process working
    directory the check incorrectly returns the mount as not in use at
    expire.

    This can happen since the default when mounting within a tree is
    nostrict, which means ingnore mount fails on mounts within the tree and
    continue. The nostrict option is meant to allow mounting in this case.

    Signed-off-by: David Jeffery
    Signed-off-by: Ian Kent
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    David Jeffery
     
  • Fixed the sparse warning:

    fs/autofs4/root.c:411:5: warning: symbol 'autofs4_d_manage' was not declared. Should it be static?"

    [ Clearly it should be static as the function is declared static at the
    top of root.c. - imk ]

    Signed-off-by: Claudiu Ghioc
    Signed-off-by: Ian Kent
    Signed-off-by: Linus Torvalds

    Claudiu Ghioc
     
  • Pull more s390 updates from Martin Schwidefsky:
    "This is the second batch of s390 patches for the 3.10 merge window.

    Heiko improved the memory detection, this fixes kdump for large memory
    sizes. Some kvm related memory management work, new ipldev/condev
    keywords in cio and bug fixes."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/mem_detect: remove artificial kdump memory types
    s390/mm: add pte invalidation notifier for kvm
    s390/zcrypt: ap bus rescan problem when toggle crypto adapters on/off
    s390/memory hotplug,sclp: get rid of per memory increment usecount
    s390/memory hotplug: provide memory_block_size_bytes() function
    s390/mem_detect: limit memory detection loop to "mem=" parameter
    s390/kdump,bootmem: fix bootmem allocator bitmap size
    s390: get rid of odd global real_memory_size
    s390/kvm: Change the virtual memory mapping location for Virtio devices
    s390/zcore: calculate real memory size using own get_mem_size function
    s390/mem_detect: add DAT sanity check
    s390/mem_detect: fix lockdep irq tracing
    s390/mem_detect: move memory detection code to mm folder
    s390/zfcpdump: exploit new cio_ignore keywords
    s390/cio: add condev keyword to cio_ignore
    s390/cio: add ipldev keyword to cio_ignore
    s390/uaccess: add "fallthrough" comments

    Linus Torvalds
     
  • When unloading the driver that drives an EISA board, a message similar to the
    following one is displayed:

    Trying to free nonexistent resource

    Then an user is unable to reload the driver because the resource it requested in
    the previous load hasn't been freed. This happens most probably due to a typo in
    vortex_eisa_remove() which calls release_region() with 'dev->base_addr' instead
    of 'edev->base_addr'...

    Reported-by: Matthew Whitehead
    Tested-by: Matthew Whitehead
    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller

    Sergei Shtylyov
     

06 May, 2013

2 commits