31 Oct, 2011

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (33 commits)
    iommu/core: Remove global iommu_ops and register_iommu
    iommu/msm: Use bus_set_iommu instead of register_iommu
    iommu/omap: Use bus_set_iommu instead of register_iommu
    iommu/vt-d: Use bus_set_iommu instead of register_iommu
    iommu/amd: Use bus_set_iommu instead of register_iommu
    iommu/core: Use bus->iommu_ops in the iommu-api
    iommu/core: Convert iommu_found to iommu_present
    iommu/core: Add bus_type parameter to iommu_domain_alloc
    Driver core: Add iommu_ops to bus_type
    iommu/core: Define iommu_ops and register_iommu only with CONFIG_IOMMU_API
    iommu/amd: Fix wrong shift direction
    iommu/omap: always provide iommu debug code
    iommu/core: let drivers know if an iommu fault handler isn't installed
    iommu/core: export iommu_set_fault_handler()
    iommu/omap: Fix build error with !IOMMU_SUPPORT
    iommu/omap: Migrate to the generic fault report mechanism
    iommu/core: Add fault reporting mechanism
    iommu/core: Use PAGE_SIZE instead of hard-coded value
    iommu/core: use the existing IS_ALIGNED macro
    iommu/msm: ->unmap() should return order of unmapped page
    ...

    Fixup trivial conflicts in drivers/iommu/Makefile: "move omap iommu to
    dedicated iommu folder" vs "Rename the DMAR and INTR_REMAP config
    options" just happened to touch lines next to each other.

    Linus Torvalds
     

29 Oct, 2011

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (83 commits)
    mmc: fix compile error when CONFIG_BLOCK is not enabled
    mmc: core: Cleanup eMMC4.5 conditionals
    mmc: omap_hsmmc: if multiblock reads are broken, disable them
    mmc: core: add workaround for controllers with broken multiblock reads
    mmc: core: Prevent too long response times for suspend
    mmc: recognise SDIO cards with SDIO_CCCR_REV 3.00
    mmc: sd: Handle SD3.0 cards not supporting UHS-I bus speed mode
    mmc: core: support HPI send command
    mmc: core: Add cache control for eMMC4.5 device
    mmc: core: Modify the timeout value for writing power class
    mmc: core: new discard feature support at eMMC v4.5
    mmc: core: mmc sanitize feature support for v4.5
    mmc: dw_mmc: modify DATA register offset
    mmc: sdhci-pci: add flag for devices that can support runtime PM
    mmc: omap_hsmmc: ensure pbias configuration is always done
    mmc: core: Add Power Off Notify Feature eMMC 4.5
    mmc: sdhci-s3c: fix potential NULL dereference
    mmc: replace printk with appropriate display macro
    mmc: core: Add default timeout value for CMD6
    mmc: sdhci-pci: add runtime pm support
    ...

    Linus Torvalds
     

27 Oct, 2011

4 commits

  • mmc_core module needs to use setup_fault_attr() in order
    to set fault injection attributes during module load time.

    Signed-off-by: Per Forlin
    Reviewed-by: Akinobu Mita
    Signed-off-by: Chris Ball

    Per Forlin
     
  • This adds support to inject data errors after a completed host transfer.
    The mmc core will return error even though the host transfer is successful.
    This simple fault injection proved to be very useful to test the
    non-blocking error handling in the mmc_blk_issue_rw_rq().
    Random faults can also test how the host driver handles pre_req()
    and post_req() in case of errors.

    Signed-off-by: Per Forlin
    Acked-by: Akinobu Mita
    Reviewed-by: Linus Walleij
    Signed-off-by: Chris Ball

    Per Forlin
     
  • Export symbols should_fail() and fault_create_debugfs_attr() in order
    to let modules utilize the fault injection framework.

    Signed-off-by: Per Forlin
    Acked-by: Akinobu Mita
    Signed-off-by: Chris Ball

    Per Forlin
     
  • * 'for-linus' of git://neil.brown.name/md: (34 commits)
    md: Fix some bugs in recovery_disabled handling.
    md/raid5: fix bug that could result in reads from a failed device.
    lib/raid6: Fix filename emitted in generated code
    md.c: trivial comment fix
    MD: Allow restarting an interrupted incremental recovery.
    md: clear In_sync bit on devices added to an active array.
    md: add proper write-congestion reporting to RAID1 and RAID10.
    md: rename "mdk_personality" to "md_personality"
    md/bitmap remove fault injection options.
    md/raid5: typedef removal: raid5_conf_t -> struct r5conf
    md/raid1: typedef removal: conf_t -> struct r1conf
    md/raid10: typedef removal: conf_t -> struct r10conf
    md/raid0: typedef removal: raid0_conf_t -> struct r0conf
    md/multipath: typedef removal: multipath_conf_t -> struct mpconf
    md/linear: typedef removal: linear_conf_t -> struct linear_conf
    md/faulty: remove typedef: conf_t -> struct faulty_conf
    md/linear: remove typedefs: dev_info_t -> struct dev_info
    md: remove typedefs: mirror_info_t -> struct mirror_info
    md: remove typedefs: r10bio_t -> struct r10bio and r1bio_t -> struct r1bio
    md: remove typedefs: mdk_thread_t -> struct md_thread
    ...

    Linus Torvalds
     

26 Oct, 2011

2 commits

  • * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (46 commits)
    llist: Add back llist_add_batch() and llist_del_first() prototypes
    sched: Don't use tasklist_lock for debug prints
    sched: Warn on rt throttling
    sched: Unify the ->cpus_allowed mask copy
    sched: Wrap scheduler p->cpus_allowed access
    sched: Request for idle balance during nohz idle load balance
    sched: Use resched IPI to kick off the nohz idle balance
    sched: Fix idle_cpu()
    llist: Remove cpu_relax() usage in cmpxchg loops
    sched: Convert to struct llist
    llist: Add llist_next()
    irq_work: Use llist in the struct irq_work logic
    llist: Return whether list is empty before adding in llist_add()
    llist: Move cpu_relax() to after the cmpxchg()
    llist: Remove the platform-dependent NMI checks
    llist: Make some llist functions inline
    sched, tracing: Show PREEMPT_ACTIVE state in trace_sched_switch
    sched: Remove redundant test in check_preempt_tick()
    sched: Add documentation for bandwidth control
    sched: Return unused runtime on group dequeue
    ...

    Linus Torvalds
     
  • * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    rtmutex: Add missing rcu_read_unlock() in debug_rt_mutex_print_deadlock()
    lockdep: Comment all warnings
    lib: atomic64: Change the type of local lock to raw_spinlock_t
    locking, lib/atomic64: Annotate atomic64_lock::lock as raw
    locking, x86, iommu: Annotate qi->q_lock as raw
    locking, x86, iommu: Annotate irq_2_ir_lock as raw
    locking, x86, iommu: Annotate iommu->register_lock as raw
    locking, dma, ipu: Annotate bank_lock as raw
    locking, ARM: Annotate low level hw locks as raw
    locking, drivers/dca: Annotate dca_lock as raw
    locking, powerpc: Annotate uic->lock as raw
    locking, x86: mce: Annotate cmci_discover_lock as raw
    locking, ACPI: Annotate c3_lock as raw
    locking, oprofile: Annotate oprofilefs lock as raw
    locking, video: Annotate vga console lock as raw
    locking, latencytop: Annotate latency_lock as raw
    locking, timer_stats: Annotate table_lock as raw
    locking, rwsem: Annotate inner lock as raw
    locking, semaphores: Annotate inner lock as raw
    locking, sched: Annotate thread_group_cputimer as raw
    ...

    Fix up conflicts in kernel/posix-cpu-timers.c manually: making
    cputimer->cputime a raw lock conflicted with the ABBA fix in commit
    bcd5cff7216f ("cputimer: Cure lock inversion").

    Linus Torvalds
     

25 Oct, 2011

5 commits

  • * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (38 commits)
    mm: memory hotplug: Check if pages are correctly reserved on a per-section basis
    Revert "memory hotplug: Correct page reservation checking"
    Update email address for stable patch submission
    dynamic_debug: fix undefined reference to `__netdev_printk'
    dynamic_debug: use a single printk() to emit messages
    dynamic_debug: remove num_enabled accounting
    dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions
    uio: Support physical addresses >32 bits on 32-bit systems
    sysfs: add unsigned long cast to prevent compile warning
    drivers: base: print rejected matches with DEBUG_DRIVER
    memory hotplug: Correct page reservation checking
    memory hotplug: Refuse to add unaligned memory regions
    remove the messy code file Documentation/zh_CN/SubmitChecklist
    ARM: mxc: convert device creation to use platform_device_register_full
    new helper to create platform devices with dma mask
    docs/driver-model: Update device class docs
    docs/driver-model: Document device.groups
    kobj_uevent: Ignore if some listeners cannot handle message
    dynamic_debug: make netif_dbg() call __netdev_printk()
    dynamic_debug: make netdev_dbg() call __netdev_printk()
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits)
    MAINTAINERS: linux-m32r is moderated for non-subscribers
    linux@lists.openrisc.net is moderated for non-subscribers
    Drop default from "DM365 codec select" choice
    parisc: Kconfig: cleanup Kernel page size default
    Kconfig: remove redundant CONFIG_ prefix on two symbols
    cris: remove arch/cris/arch-v32/lib/nand_init.S
    microblaze: add missing CONFIG_ prefixes
    h8300: drop puzzling Kconfig dependencies
    MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers
    tty: drop superfluous dependency in Kconfig
    ARM: mxc: fix Kconfig typo 'i.MX51'
    Fix file references in Kconfig files
    aic7xxx: fix Kconfig references to READMEs
    Fix file references in drivers/ide/
    thinkpad_acpi: Fix printk typo 'bluestooth'
    bcmring: drop commented out line in Kconfig
    btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888'
    doc: raw1394: Trivial typo fix
    CIFS: Don't free volume_info->UNC until we are entirely done with it.
    treewide: Correct spelling of successfully in comments
    ...

    Linus Torvalds
     
  • * 'for-linus' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm: (81 commits)
    ARM: 7133/1: SMP: fix per cpu timer setup before the cpu is marked online
    ARM: 7129/1: Add __arm_ioremap_exec for mapping external memory as MT_MEMORY
    ARM: 7136/1: pl330: Fix a race condition
    ARM: smp: fix clipping of number of CPUs
    ARM: 7137/1: Fix error upon adding LL debug
    ARM: Add a few machine types to mach-types
    ARM: 7130/1: dev_archdata: add private iommu extension
    ARM: 7125/1: Add unwinding annotations for 64bit division functions
    ARM: 7120/1: remove bashism in check for multiple zreladdrs
    ARM: 7118/1: rename temp variable in read*_relaxed()
    ARM: 6217/4: mach-realview: expose PB1176 ROM using physmap and map_rom
    ARM: 7098/1: kdump: copy kernel relocation code at the kexec prepare stage
    ARM: 7062/1: cache: detect PIPT I-cache using CTR
    ARM: platform fixups: remove mdesc argument to fixup function
    ARM: 7017/1: Use generic BUG() handler
    ARM: 7102/1: mach-integrator: update defconfig
    ARM: 7087/2: mach-integrator: get timer frequency from clock
    ARM: 7086/2: mach-integrator: modernize clock event registration
    ARM: 7085/2: mach-integrator: clockevent supports oneshot mode
    ARM: 7084/1: mach-integrator: retire some timer macros
    ...

    Linus Torvalds
     
  • * 'next' of git://selinuxproject.org/~jmorris/linux-security: (95 commits)
    TOMOYO: Fix incomplete read after seek.
    Smack: allow to access /smack/access as normal user
    TOMOYO: Fix unused kernel config option.
    Smack: fix: invalid length set for the result of /smack/access
    Smack: compilation fix
    Smack: fix for /smack/access output, use string instead of byte
    Smack: domain transition protections (v3)
    Smack: Provide information for UDS getsockopt(SO_PEERCRED)
    Smack: Clean up comments
    Smack: Repair processing of fcntl
    Smack: Rule list lookup performance
    Smack: check permissions from user space (v2)
    TOMOYO: Fix quota and garbage collector.
    TOMOYO: Remove redundant tasklist_lock.
    TOMOYO: Fix domain transition failure warning.
    TOMOYO: Remove tomoyo_policy_memory_lock spinlock.
    TOMOYO: Simplify garbage collector.
    TOMOYO: Fix make namespacecheck warnings.
    target: check hex2bin result
    encrypted-keys: check hex2bin result
    ...

    Linus Torvalds
     
  • …'pgt' (early part) and 'smp' into for-linus

    Russell King
     

21 Oct, 2011

1 commit


20 Oct, 2011

1 commit


19 Oct, 2011

3 commits

  • Dynamic debug recently added support for netdev_printk. It uses
    __netdev_printk() to support this functionality. However, when CONFIG_NET
    is not set, we get the following error:

    lib/built-in.o: In function `__dynamic_netdev_dbg':
    (.text+0x9fda): undefined reference to `__netdev_printk'

    Fix this by making the call to netdev_printk() contingent upon CONFIG_NET.
    We could have fixed this by defining netdev_printk() to a 'no-op' in the
    !CONFIG_NET case. However, this is not consistent with how the networking
    layer uses netdev_printk. For example, CONFIG_NET is not set,
    netdev_printk() does not have a 'no-op' definition defined.

    Signed-off-by: Jason Baron
    Acked-by: Randy Dunlap
    Acked-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     
  • We were using KERN_CONT to combine messages with their prefix. However,
    KERN_CONT is not smp safe, in the sense that it can interleave messages.
    This interleaving can result in printks coming out at the wrong loglevel.
    With the high frequency of printks that dynamic debug can produce this is
    not desirable.

    So make dynamic_emit_prefix() fill a char buf[64] instead of doing a
    printk directly. If we enable printing out of function, module, line, or
    pid info, they are placed in this 64 byte buffer. In my testing 64 bytes
    was enough size to fulfill all requests. Even if it's not, we can match
    up the printk itself to see where it's from, so to me this is no big deal.

    [akpm@linux-foundation.org: convert dangerous macro to C]
    Signed-off-by: Jason Baron
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     
  • The num_enabled accounting isn't actually used anywhere - remove them.

    Signed-off-by: Jason Baron
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Jason Baron
     

06 Oct, 2011

1 commit

  • This task is preparatory for the migrate_disable() implementation, but
    stands on its own and provides a cleanup.

    It currently only converts those sites required for task-placement.
    Kosaki-san once mentioned replacing cpus_allowed with a proper
    cpumask_t instead of the NR_CPUS sized array it currently is, that
    would also require something like this.

    Signed-off-by: Peter Zijlstra
    Acked-by: Thomas Gleixner
    Cc: KOSAKI Motohiro
    Link: http://lkml.kernel.org/n/tip-e42skvaddos99psip0vce41o@git.kernel.org
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

04 Oct, 2011

5 commits

  • Initial benchmarks show they're a net loss:

    $ for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor ; do echo performance > $i; done
    $ echo 4096 32000 64 128 > /proc/sys/kernel/sem
    $ ./sembench -t 2048 -w 1900 -o 0

    Pre:

    run time 30 seconds 778936 worker burns per second
    run time 30 seconds 912190 worker burns per second
    run time 30 seconds 817506 worker burns per second
    run time 30 seconds 830870 worker burns per second
    run time 30 seconds 845056 worker burns per second

    Post:

    run time 30 seconds 905920 worker burns per second
    run time 30 seconds 849046 worker burns per second
    run time 30 seconds 886286 worker burns per second
    run time 30 seconds 822320 worker burns per second
    run time 30 seconds 900283 worker burns per second

    So about 4% faster. (!)

    cpu_relax() stalls the pipeline, therefore, when used in a tight loop
    it has the following benefits:

    - allows SMT siblings to have a go;
    - reduces pressure on the CPU interconnect.

    However, cmpxchg loops are unfair and thus have unbounded completion
    time, therefore we should avoid getting in such heavily contended
    situations where the above benefits make any difference.

    A typical cmpxchg loop should not go round more than a handfull of
    times at worst, therefore adding extra delays just slows things down.

    Since the llist primitives are new, there aren't any bad users yet,
    and we should avoid growing them. Heavily contended sites should
    generally be better off using the ticket locks for serialization since
    they provide bounded completion times (fifo-fair over the cpus).

    Signed-off-by: Peter Zijlstra
    Cc: Huang Ying
    Cc: Andrew Morton
    Link: http://lkml.kernel.org/r/1315836358.26517.43.camel@twins
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Extend the llist_add*() functions to return a success indicator, this
    allows us in the scheduler code to send an IPI if the queue was empty.

    ( There's no effect on existing users, because the list_add_xxx() functions
    are inline, thus this will be optimized out by the compiler if not used
    by callers. )

    Signed-off-by: Huang Ying
    Cc: Mathieu Desnoyers
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-5-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Huang Ying
     
  • If in llist_add()/etc. functions the first cmpxchg() call succeeds, it is
    not necessary to use cpu_relax() before the cmpxchg(). So cpu_relax() in
    a busy loop involving cmpxchg() should go after cmpxchg() instead of before
    that.

    This patch fixes this for all involved llist functions.

    Signed-off-by: Huang Ying
    Acked-by: Mathieu Desnoyers
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-4-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Huang Ying
     
  • Remove the nmi() checks spread around the code. in_nmi() is not available
    on every architecture and it's a pretty obscure and ugly check in any case.

    Cc: Huang Ying
    Cc: Mathieu Desnoyers
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-3-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Because llist code will be used in performance critical scheduler
    code path, make llist_add() and llist_del_all() inline to avoid
    function calling overhead and related 'glue' overhead.

    Signed-off-by: Huang Ying
    Acked-by: Mathieu Desnoyers
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-2-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Huang Ying
     

02 Oct, 2011

1 commit

  • Thumb2 kernels cannot be built with frame pointers, but can use the
    ARM_UNWIND feature for unwinding instead. This makes sure that all
    features that rely on unwinding includeing CONFIG_LATENCYTOP and
    FAULT_INJECTION_STACKTRACE_FILTER do not enable frame pointers
    when the unwinder is already selected, and we always build with
    the unwinder when we want a thumb2 kernel, to make sure we do not
    get the frame pointers instead.

    A different option would be to redefine the CONFIG_FRAME_POINTERS
    option on ARM to mean builing with either frame pointers or
    the unwinder, and then select which one to use based on the
    CPU architecture or another user option. That would still allow
    building thumb2 kernels without the unwinder but would also be
    more confusing.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

22 Sep, 2011

1 commit

  • xz_dec_run() could incorrectly return XZ_BUF_ERROR if all of the
    following was true:

    - The caller knows how many bytes of output to expect and only provides
    that much output space.

    - When the last output bytes are decoded, the caller-provided input
    buffer ends right before the LZMA2 end of payload marker. So LZMA2
    won't provide more output anymore, but it won't know it yet and thus
    won't return XZ_STREAM_END yet.

    - A BCJ filter is in use and it hasn't left any unfiltered bytes in the
    temp buffer. This can happen with any BCJ filter, but in practice
    it's more likely with filters other than the x86 BCJ.

    This fixes where
    Squashfs thinks that a valid file system is corrupt.

    This also fixes a similar bug in single-call mode where the uncompressed
    size of a block using BCJ + LZMA2 was 0 bytes and caller provided no
    output space. Many empty .xz files don't contain any blocks and thus
    don't trigger this bug.

    This also tweaks a closely related detail: xz_dec_bcj_run() could call
    xz_dec_lzma2_run() to decode into temp buffer when it was known to be
    useless. This was harmless although it wasted a minuscule number of CPU
    cycles.

    Signed-off-by: Lasse Collin
    Cc: stable
    Signed-off-by: Linus Torvalds

    Lasse Collin
     

21 Sep, 2011

1 commit

  • hex2bin converts a hexadecimal string to its binary representation.
    The original version of hex2bin did not do any error checking. This
    patch adds error checking and returns the result.

    Changelog v1:
    - removed unpack_hex_byte()
    - changed return code from boolean to int

    Changelog:
    - use the new unpack_hex_byte()
    - add __must_check compiler option (Andy Shevchenko's suggestion)
    - change function API to return error checking result
    (based on Tetsuo Handa's initial patch)

    Signed-off-by: Mimi Zohar
    Acked-by: Andy Shevchenko

    Mimi Zohar
     

15 Sep, 2011

3 commits


14 Sep, 2011

2 commits

  • There are still some leftovers of commit f59ca058
    [locking, lib/atomic64: Annotate atomic64_lock::lock as raw]

    [ tglx: Seems I picked the wrong version of that patch :( ]

    Signed-off-by: Yong Zhang
    Cc: Peter Zijlstra
    Cc: Shan Hai
    Cc: Stephen Rothwell
    Link: http://lkml.kernel.org/r/20110914074924.GA16096@zhy
    Signed-off-by: Thomas Gleixner

    Yong Zhang
     
  • Include to pickup the declarations for sha_transform
    and sha_init to quite the sparse noise:

    warning: symbol 'sha_transform' was not declared. Should it be static?
    warning: symbol 'sha_init' was not declared. Should it be static?

    Signed-off-by: H Hartley Sweeten
    Acked-by: Mandeep Singh Baines
    Signed-off-by: Linus Torvalds

    H Hartley Sweeten
     

13 Sep, 2011

5 commits

  • The spinlock protected atomic64 operations must be irq safe as they
    are used in hard interrupt context and cannot be preempted on -rt:

    NIP [c068b218] rt_spin_lock_slowlock+0x78/0x3a8
    LR [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8
    Call Trace:
    [eb459b90] [c068b1e0] rt_spin_lock_slowlock+0x40/0x3a8 (unreliable)
    [eb459c20] [c068bdb0] rt_spin_lock+0x40/0x98
    [eb459c40] [c03d2a14] atomic64_read+0x48/0x84
    [eb459c60] [c001aaf4] perf_event_interrupt+0xec/0x28c
    [eb459d10] [c0010138] performance_monitor_exception+0x7c/0x150
    [eb459d30] [c0014170] ret_from_except_full+0x0/0x4c

    So annotate it.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Shan Hai
    Reviewed-by: Yong Zhang
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Shan Hai
     
  • There is no reason to allow the lock protecting rwsems (the
    ownerless variant) to be preemptible on -rt. Convert it to raw.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • The logbuf_lock lock can be taken in atomic context and therefore
    cannot be preempted on -rt - annotate it.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    [ merged and fixed it ]
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • The prop_local_percpu::lock can be taken in atomic context and therefore
    cannot be preempted on -rt - annotate it.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • The percpu_counter::lock can be taken in atomic context and therefore
    cannot be preempted on -rt - annotate it.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

31 Aug, 2011

1 commit

  • If there are no builtin users of find_next_bit_le() and
    find_next_zero_bit_le(), these functions are not present in the kernel
    image, causing m68k allmodconfig to fail with:

    ERROR: "find_next_zero_bit_le" [fs/ufs/ufs.ko] undefined!
    ERROR: "find_next_bit_le" [fs/udf/udf.ko] undefined!
    ...

    This started to happen after commit 171d809df189 ("m68k: merge mmu and
    non-mmu bitops.h"), as m68k had its own inline versions before.

    commit 63e424c84429 ("arch: remove CONFIG_GENERIC_FIND_{NEXT_BIT,
    BIT_LE, LAST_BIT}") added find_last_bit.o to obj-y (so it's always
    included), but find_next_bit.o to lib-y (so it gets removed by the
    linker if there are no builtin users).

    Signed-off-by: Geert Uytterhoeven
    Cc: Akinobu Mita
    Cc: Greg Ungerer
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

23 Aug, 2011

2 commits

  • Summary:
    Users of the pci_dma_sync_single_* api allow users to sync address ranges within
    the range of a mapped entry (i.e. you can dma map address X to dma_addr_t A and
    then pci_dma_sync_single on dma_addr_t A+1. The dma-debug library however
    assume dma syncs will always occur using the base address of a mapped region,
    and uses that assumption to find entries in its hash table. Since thats often
    (but not always the case), the dma debug library can give us false errors about
    missing entries, which are reported as syncing of memory not allocated by the
    driver. This was noted in the cxgb3 driver as this error:

    WARNING: at lib/dma-debug.c:902 check_sync+0xdd/0x48c()
    Hardware name: To be filled by O.E.M.
    cxgb3 0000:01:00.0: DMA-API: device driver tries to sync DMA memory it has not
    allocated [device address=0x00000000fff97800] [size=1984 bytes]
    Modules linked in: autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table
    mperf ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 uinput
    snd_hda_codec_intelhdmi snd_hda_codec_realtek snd_hda_intel snd_hda_codec
    snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer e1000e snd soundcore r8169
    cxgb3 iTCO_wdt snd_page_alloc mii shpchp i2c_i801 iTCO_vendor_support mdio
    microcode firewire_ohci firewire_core crc_itu_t ata_generic pata_acpi i915
    drm_kms_helper drm i2c_algo_bit i2c_core video output [last unloaded:
    scsi_wait_scan]
    Pid: 1818, comm: ifconfig Not tainted 2.6.35-0.23.rc3.git6.fc14.x86_64 #1
    Call Trace:
    [] warn_slowpath_common+0x85/0x9d
    [] warn_slowpath_fmt+0x46/0x48
    [] ? check_sync+0x39/0x48c
    [] ? trace_hardirqs_on+0xd/0xf
    [] check_sync+0xdd/0x48c
    [] debug_dma_sync_single_for_device+0x3f/0x41
    [] ? pci_map_page+0x84/0x97 [cxgb3]
    [] pci_dma_sync_single_for_device.clone.0+0x65/0x6e [cxgb3]
    [] refill_fl+0x305/0x30a [cxgb3]
    [] t3_sge_alloc_qset+0x6a7/0x821 [cxgb3]
    [] cxgb_up+0x4d0/0xe62 [cxgb3]
    [] ? __module_text_address+0x12/0x58
    [] cxgb_open+0x3f/0x309 [cxgb3]
    [] __dev_open+0x8e/0xbc
    [] __dev_change_flags+0xbe/0x142
    [] dev_change_flags+0x21/0x57
    [] devinet_ioctl+0x29a/0x54b
    [] ? inode_has_perm+0xaa/0xce
    [] inet_ioctl+0x8f/0xa7
    [] sock_do_ioctl+0x29/0x48
    [] sock_ioctl+0x213/0x222
    [] vfs_ioctl+0x32/0xa6
    [] do_vfs_ioctl+0x47a/0x4b3
    [] sys_ioctl+0x56/0x79
    [] system_call_fastpath+0x16/0x1b
    ---[ end trace 69a4d4cc77b58004 ]---

    (some edits by Joerg Roedel)

    Signed-off-by: Neil Horman
    Reported-by: Jay Fenalson
    CC: Divy LeRay
    CC: Stanislaw Gruszka
    CC: Joerg Roedel
    CC: Arnd Bergmann
    Signed-off-by: Joerg Roedel

    Neil Horman
     
  • The patch below removes an extra "it" in the comment.

    Signed-off-by: Justin P. Mattock
    Signed-off-by: Jiri Kosina

    Justin P. Mattock