25 Jul, 2012

2 commits

  • Pull trivial tree from Jiri Kosina:
    "Trivial updates all over the place as usual."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (29 commits)
    Fix typo in include/linux/clk.h .
    pci: hotplug: Fix typo in pci
    iommu: Fix typo in iommu
    video: Fix typo in drivers/video
    Documentation: Add newline at end-of-file to files lacking one
    arm,unicore32: Remove obsolete "select MISC_DEVICES"
    module.c: spelling s/postition/position/g
    cpufreq: Fix typo in cpufreq driver
    trivial: typo in comment in mksysmap
    mach-omap2: Fix typo in debug message and comment
    scsi: aha152x: Fix sparse warning and make printing pointer address more portable.
    Change email address for Steve Glendinning
    Btrfs: fix typo in convert_extent_bit
    via: Remove bogus if check
    netprio_cgroup.c: fix comment typo
    backlight: fix memory leak on obscure error path
    Documentation: asus-laptop.txt references an obsolete Kconfig item
    Documentation: ManagementStyle: fixed typo
    mm/vmscan: cleanup comment error in balance_pgdat
    mm: cleanup on the comments of zone_reclaim_stat
    ...

    Linus Torvalds
     
  • Pull networking changes from David S Miller:

    1) Remove the ipv4 routing cache. Now lookups go directly into the FIB
    trie and use prebuilt routes cached there.

    No more garbage collection, no more rDOS attacks on the routing
    cache. Instead we now get predictable and consistent performance,
    no matter what the pattern of traffic we service.

    This has been almost 2 years in the making. Special thanks to
    Julian Anastasov, Eric Dumazet, Steffen Klassert, and others who
    have helped along the way.

    I'm sure that with a change of this magnitude there will be some
    kind of fallout, but such things ought the be simple to fix at this
    point. Luckily I'm not European so I'll be around all of August to
    fix things :-)

    The major stages of this work here are each fronted by a forced
    merge commit whose commit message contains a top-level description
    of the motivations and implementation issues.

    2) Pre-demux of established ipv4 TCP sockets, saves a route demux on
    input.

    3) TCP SYN/ACK performance tweaks from Eric Dumazet.

    4) Add namespace support for netfilter L4 conntrack helpers, from Gao
    Feng.

    5) Add config mechanism for Energy Efficient Ethernet to ethtool, from
    Yuval Mintz.

    6) Remove quadratic behavior from /proc/net/unix, from Eric Dumazet.

    7) Support for connection tracker helpers in userspace, from Pablo
    Neira Ayuso.

    8) Allow userspace driven TX load balancing functions in TEAM driver,
    from Jiri Pirko.

    9) Kill off NLMSG_PUT and RTA_PUT macros, more gross stuff with
    embedded gotos.

    10) TCP Small Queues, essentially minimize the amount of TCP data queued
    up in the packet scheduler layer. Whereas the existing BQL (Byte
    Queue Limits) limits the pkt_sched --> netdevice queuing levels,
    this controls the TCP --> pkt_sched queueing levels.

    From Eric Dumazet.

    11) Reduce the number of get_page/put_page ops done on SKB fragments,
    from Alexander Duyck.

    12) Implement protection against blind resets in TCP (RFC 5961), from
    Eric Dumazet.

    13) Support the client side of TCP Fast Open, basically the ability to
    send data in the SYN exchange, from Yuchung Cheng.

    Basically, the sender queues up data with a sendmsg() call using
    MSG_FASTOPEN, then they do the connect() which emits the queued up
    fastopen data.

    14) Avoid all the problems we get into in TCP when timers or PMTU events
    hit a locked socket. The TCP Small Queues changes added a
    tcp_release_cb() that allows us to queue work up to the
    release_sock() caller, and that's what we use here too. From Eric
    Dumazet.

    15) Zero copy on TX support for TUN driver, from Michael S. Tsirkin.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1870 commits)
    genetlink: define lockdep_genl_is_held() when CONFIG_LOCKDEP
    r8169: revert "add byte queue limit support".
    ipv4: Change rt->rt_iif encoding.
    net: Make skb->skb_iif always track skb->dev
    ipv4: Prepare for change of rt->rt_iif encoding.
    ipv4: Remove all RTCF_DIRECTSRC handliing.
    ipv4: Really ignore ICMP address requests/replies.
    decnet: Don't set RTCF_DIRECTSRC.
    net/ipv4/ip_vti.c: Fix __rcu warnings detected by sparse.
    ipv4: Remove redundant assignment
    rds: set correct msg_namelen
    openvswitch: potential NULL deref in sample()
    tcp: dont drop MTU reduction indications
    bnx2x: Add new 57840 device IDs
    tcp: avoid oops in tcp_metrics and reset tcpm_stamp
    niu: Change niu_rbr_fill() to use unlikely() to check niu_rbr_add_page() return value
    niu: Fix to check for dma mapping errors.
    net: Fix references to out-of-scope variables in put_cmsg_compat()
    net: ethernet: davinci_emac: add pm_runtime support
    net: ethernet: davinci_emac: Remove unnecessary #include
    ...

    Linus Torvalds
     

24 Jul, 2012

2 commits

  • Pull misc Itanium fixes from Tony Luck.

    * tag 'please-pull-misc-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
    debug: Do not permit CONFIG_DEBUG_STACK_USAGE=y on IA64 or PARISC
    [IA64] Port OOM changes to ia64_do_page_fault

    Linus Torvalds
     
  • Pull security subsystem updates from James Morris:
    "Nothing groundbreaking for this kernel, just cleanups and fixes, and a
    couple of Smack enhancements."

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (21 commits)
    Smack: Maintainer Record
    Smack: don't show empty rules when /smack/load or /smack/load2 is read
    Smack: user access check bounds
    Smack: onlycap limits on CAP_MAC_ADMIN
    Smack: fix smack_new_inode bogosities
    ima: audit is compiled only when enabled
    ima: ima_initialized is set only if successful
    ima: add policy for pseudo fs
    ima: remove unused cleanup functions
    ima: free securityfs violations file
    ima: use full pathnames in measurement list
    security: Fix nommu build.
    samples: seccomp: add .gitignore for untracked executables
    tpm: check the chip reference before using it
    TPM: fix memleak when register hardware fails
    TPM: chip disabled state erronously being reported as error
    MAINTAINERS: TPM maintainers' contacts update
    Merge branches 'next-queue' and 'next' into next
    Remove unused code from MPI library
    Revert "crypto: GnuPG based MPI lib - additional sources (part 4)"
    ...

    Linus Torvalds
     

23 Jul, 2012

1 commit

  • Pull RCU changes from Ingo Molnar:
    "Quoting from Paul, the major features of this series are:

    1. Preventing latency spikes of more than 200 microseconds for
    kernels built with NR_CPUS=4096, which is reportedly becoming the
    default for some distros. This is a first step, as it does not
    help with systems that actually -have- 4096 CPUs (work on this case
    is in progress, but is not yet ready for mainline).

    This category also includes improving concurrency of rcu_barrier(),
    placed here due to conflicts. Posted to LKML at:

    https://lkml.org/lkml/2012/6/22/381

    Note that patches 18-22 of that series have been defered to 3.7, as
    they have not yet proven themselves to be mainline-ready (and yes,
    these are the ones intended to get rid of RCU's latency spikes for
    systems that actually have 4096 CPUs).

    2. Updates to documentation and rcutorture fixes, the latter category
    including improvements to rcu_barrier() testing. Posted to LKML at

    http://lkml.indiana.edu/hypermail/linux/kernel/1206.1/04094.html.

    3. Miscellaneous fixes posted to LKML at:

    https://lkml.org/lkml/2012/6/22/500

    with the exception of the last commit, which was posted here:

    http://www.gossamer-threads.com/lists/linux/kernel/1561830

    4. RCU_FAST_NO_HZ fixes and improvements. Posted to LKML at:

    http://lkml.indiana.edu/hypermail/linux/kernel/1206.1/00006.html
    http://www.gossamer-threads.com/lists/linux/kernel/1561833

    The first four patches of the first series went into 3.5 to fix a
    regression.

    5. Code-style fixes. These were posted to LKML at

    http://lkml.indiana.edu/hypermail/linux/kernel/1205.2/01180.html
    http://lkml.indiana.edu/hypermail/linux/kernel/1205.2/01181.html"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (48 commits)
    rcu: Fix broken strings in RCU's source code.
    rcu: Fix code-style issues involving "else"
    rcu: Introduce check for callback list/count mismatch
    rcu: Make RCU_FAST_NO_HZ respect nohz= boot parameter
    rcu: Fix qlen_lazy breakage
    rcu: Round FAST_NO_HZ lazy timeout to nearest second
    rcu: The rcu_needs_cpu() function is not a quiescent state
    rcu: Dump only the current CPU's buffers for idle-entry/exit warnings
    rcu: Add check for CPUs going offline with callbacks queued
    rcu: Disable preemption in rcu_blocking_is_gp()
    rcu: Prevent uninitialized string in RCU CPU stall info
    rcu: Fix rcu_is_cpu_idle() #ifdef in TINY_RCU
    rcu: Split RCU core processing out of __call_rcu()
    rcu: Prevent __call_rcu() from invoking RCU core on offline CPUs
    rcu: Make __call_rcu() handle invocation from idle
    rcu: Remove function versions of __kfree_rcu and __is_kfree_rcu_offset
    rcu: Consolidate tree/tiny __rcu_read_{,un}lock() implementations
    rcu: Remove return value from rcu_assign_pointer()
    key: Remove extraneous parentheses from rcu_assign_keypointer()
    rcu: Remove return value from RCU_INIT_POINTER()
    ...

    Linus Torvalds
     

20 Jul, 2012

2 commits


10 Jul, 2012

1 commit

  • Pull IOMMU fixes from Joerg Roedel:
    "The patches fix several issues in the AMD IOMMU driver, the NVidia
    SMMU driver, and the DMA debug code.

    The most important fix for the AMD IOMMU solves a problem with SR-IOV
    devices where virtual functions did not work with IOMMU enabled. The
    NVidia SMMU patch fixes a possible sleep while spin-lock situation
    (queued the small fix for v3.5, a better but more intrusive fix is
    coming for v3.6). The DMA debug patches fix a possible data
    corruption issue due to bool vs u32 usage."

    * tag 'iommu-fixes-v3.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    iommu/amd: fix type bug in flush code
    dma-debug: debugfs_create_bool() takes a u32 pointer
    iommu/tegra: smmu: Fix unsleepable memory allocation
    iommu/amd: Initialize dma_ops for hotplug and sriov devices
    iommu/amd: Fix missing iommu_shutdown initialization in passthrough mode

    Linus Torvalds
     

06 Jul, 2012

1 commit

  • Although the C language allows you to break strings across lines, doing
    this makes it hard for people to find the Linux kernel code corresponding
    to a given console message. This commit therefore fixes broken strings
    throughout RCU's source code.

    Suggested-by: Josh Triplett
    Suggested-by: Ingo Molnar
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

02 Jul, 2012

1 commit

  • Even though it has "bool" in the name, you have pass a u32 pointer to
    debugfs_create_bool(). Otherwise you get memory corruption in
    write_file_bool(). Fortunately in this case the corruption happens in
    an alignment hole between variables so it doesn't cause any problems.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Joerg Roedel

    Dan Carpenter
     

30 Jun, 2012

1 commit

  • This patch adds the following structure:

    struct netlink_kernel_cfg {
    unsigned int groups;
    void (*input)(struct sk_buff *skb);
    struct mutex *cb_mutex;
    };

    That can be passed to netlink_kernel_create to set optional configurations
    for netlink kernel sockets.

    I've populated this structure by looking for NULL and zero parameters at the
    existing code. The remaining parameters that always need to be set are still
    left in the original interface.

    That includes optional parameters for the netlink socket creation. This allows
    easy extensibility of this interface in the future.

    This patch also adapts all callers to use this new interface.

    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira Ayuso
     

29 Jun, 2012

1 commit


28 Jun, 2012

1 commit


21 Jun, 2012

1 commit


16 Jun, 2012

1 commit

  • Pull core updates (RCU and locking) from Ingo Molnar:
    "Most of the diffstat comes from the RCU slow boot regression fixes,
    but there's also a debuggability improvements/fixes."

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    memblock: Document memblock_is_region_{memory,reserved}()
    rcu: Precompute RCU_FAST_NO_HZ timer offsets
    rcu: Move RCU_FAST_NO_HZ per-CPU variables to rcu_dynticks structure
    rcu: Update RCU_FAST_NO_HZ tracing for lazy callbacks
    rcu: RCU_FAST_NO_HZ detection of callback adoption
    spinlock: Indicate that a lockup is only suspected
    kdump: Execute kmsg_dump(KMSG_DUMP_PANIC) after smp_send_stop()
    panic: Make panic_on_oops configurable

    Linus Torvalds
     

10 Jun, 2012

1 commit


08 Jun, 2012

2 commits

  • Storing NULL values in the btree is illegal and can lead to memory
    corruption and possible other fun as well. Catch it on insert, instead
    of waiting for the inevitable.

    Signed-off-by: Joern Engel
    Signed-off-by: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joern Engel
     
  • The memory the parameter __key points to is used as an iterator in
    btree_get_prev(), so if we save off a bkey() pointer in retry_key and
    then assign that to __key, we'll end up corrupting the btree internals
    when we do eg

    longcpy(__key, bkey(geo, node, i), geo->keylen);

    to return the key value. What we should do instead is use longcpy() to
    copy the key value that retry_key points to __key.

    This can cause a btree to get corrupted by seemingly read-only
    operations such as btree_for_each_safe.

    [akpm@linux-foundation.org: avoid the double longcpy()]
    Signed-off-by: Roland Dreier
    Acked-by: Joern Engel
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roland Dreier
     

07 Jun, 2012

1 commit


06 Jun, 2012

3 commits

  • On an over-committed KVM system we got a:

    "BUG: spinlock lockup on CPU#2, swapper/2/0"

    message on the heavily contended virtio blk spinlock.

    While we might want to reconsider the locking of virtio-blk
    (lock is held while switching to the host) this patch tries to
    make the message clearer: the lockup is only suspected.

    Signed-off-by: Christian Borntraeger
    Cc: Rusty Russell
    Cc: Michael S. Tsirkin
    Cc: Linus Torvalds
    Cc: Andrew Morton
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1338283124-7063-1-git-send-email-borntraeger@de.ibm.com
    Signed-off-by: Ingo Molnar

    Christian Borntraeger
     
  • Merge two debugging patchlets that were waiting for
    preparatory commits to hit upstream.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • This patch fixes bug in macro radix_tree_for_each_contig().

    If radix_tree_next_slot() sees NULL in next slot it returns NULL, but following
    radix_tree_next_chunk() switches iterating into next chunk. As result iterating
    becomes non-contiguous and breaks vfs "splice" and all its users.

    Signed-off-by: Konstantin Khlebnikov
    Reported-and-bisected-by: Hans de Bruin
    Reported-and-bisected-by: Ondrej Zary
    Reported-bisected-and-tested-by: Toralf Förster
    Link: https://lkml.org/lkml/2012/6/5/64
    Cc: stable # 3.4.x
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

03 Jun, 2012

1 commit

  • Pull networking updates from David Miller:

    1) Make syn floods consume significantly less resources by

    a) Not pre-COW'ing routing metrics for SYN/ACKs
    b) Mirroring the device queue mapping of the SYN for the SYN/ACK
    reply.

    Both from Eric Dumazet.

    2) Fix calculation errors in Byte Queue Limiting, from Hiroaki SHIMODA.

    3) Validate the length requested when building a paged SKB for a
    socket, so we don't overrun the page vector accidently. From Jason
    Wang.

    4) When netlabel is disabled, we abort all IP option processing when we
    see a CIPSO option. This isn't the right thing to do, we should
    simply skip over it and continue processing the remaining options
    (if any). Fix from Paul Moore.

    5) SRIOV fixes for the mellanox driver from Jack orgenstein and Marcel
    Apfelbaum.

    6) 8139cp enables the receiver before the ring address is properly
    programmed, which potentially lets the device crap over random
    memory. Fix from Jason Wang.

    7) e1000/e1000e fixes for i217 RST handling, and an improper buffer
    address reference in jumbo RX frame processing from Bruce Allan and
    Sebastian Andrzej Siewior, respectively.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    fec_mpc52xx: fix timestamp filtering
    mcs7830: Implement link state detection
    e1000e: fix Rapid Start Technology support for i217
    e1000: look into the page instead of skb->data for e1000_tbi_adjust_stats()
    r8169: call netif_napi_del at errpaths and at driver unload
    tcp: reflect SYN queue_mapping into SYNACK packets
    tcp: do not create inetpeer on SYNACK message
    8139cp/8139too: terminate the eeprom access with the right opmode
    8139cp: set ring address before enabling receiver
    cipso: handle CIPSO options correctly when NetLabel is disabled
    net: sock: validate data_len before allocating skb in sock_alloc_send_pskb()
    bql: Avoid possible inconsistent calculation.
    bql: Avoid unneeded limit decrement.
    bql: Fix POSDIFF() to integer overflow aware.
    net/mlx4_core: Fix obscure mlx4_cmd_box parameter in QUERY_DEV_CAP
    net/mlx4_core: Check port out-of-range before using in mlx4_slave_cap
    net/mlx4_core: Fixes for VF / Guest startup flow
    net/mlx4_en: Fix improper use of "port" parameter in mlx4_en_event
    net/mlx4_core: Fix number of EQs used in ICM initialisation
    net/mlx4_core: Fix the slave_id out-of-range test in mlx4_eq_int

    Linus Torvalds
     

01 Jun, 2012

6 commits

  • Merge misc patches from Andrew Morton:

    - the "misc" tree - stuff from all over the map

    - checkpatch updates

    - fatfs

    - kmod changes

    - procfs

    - cpumask

    - UML

    - kexec

    - mqueue

    - rapidio

    - pidns

    - some checkpoint-restore feature work. Reluctantly. Most of it
    delayed a release. I'm still rather worried that we don't have a
    clear roadmap to completion for this work.

    * emailed from Andrew Morton : (78 patches)
    kconfig: update compression algorithm info
    c/r: prctl: add ability to set new mm_struct::exe_file
    c/r: prctl: extend PR_SET_MM to set up more mm_struct entries
    c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat
    syscalls, x86: add __NR_kcmp syscall
    fs, proc: introduce /proc//task//children entry
    sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE
    aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()
    eventfd: change int to __u64 in eventfd_signal()
    fs/nls: add Apple NLS
    pidns: make killed children autoreap
    pidns: use task_active_pid_ns in do_notify_parent
    rapidio/tsi721: add DMA engine support
    rapidio: add DMA engine support for RIO data transfers
    ipc/mqueue: add rbtree node caching support
    tools/selftests: add mq_perf_tests
    ipc/mqueue: strengthen checks on mqueue creation
    ipc/mqueue: correct mq_attr_ok test
    ipc/mqueue: improve performance of send/recv
    selftests: add mq_open_tests
    ...

    Linus Torvalds
     
  • Previous code was using optimizations which were developed to work well
    even on narrow-word CPUs (by today's standards). But Linux runs only on
    32-bit and wider CPUs. We can use that.

    First: using 32x32->64 multiply and trivial 32-bit shift, we can correctly
    divide by 10 much larger numbers, and thus we can print groups of 9 digits
    instead of groups of 5 digits.

    Next: there are two algorithms to print larger numbers. One is generic:
    divide by 1000000000 and repeatedly print groups of (up to) 9 digits.
    It's conceptually simple, but requires an (unsigned long long) /
    1000000000 division.

    Second algorithm splits 64-bit unsigned long long into 16-bit chunks,
    manipulates them cleverly and generates groups of 4 decimal digits. It so
    happens that it does NOT require long long division.

    If long is > 32 bits, division of 64-bit values is relatively easy, and we
    will use the first algorithm. If long long is > 64 bits (strange
    architecture with VERY large long long), second algorithm can't be used,
    and we again use the first one.

    Else (if long is 32 bits and long long is 64 bits) we use second one.

    And third: there is a simple optimization which takes fast path not only
    for zero as was done before, but for all one-digit numbers.

    In all tested cases new code is faster than old one, in many cases by 30%,
    in few cases by more than 50% (for example, on x86-32, conversion of
    12345678). Code growth is ~0 in 32-bit case and ~130 bytes in 64-bit
    case.

    This patch is based upon an original from Michal Nazarewicz.

    [akpm@linux-foundation.org: checkpatch fixes]
    Signed-off-by: Michal Nazarewicz
    Signed-off-by: Denys Vlasenko
    Cc: Douglas W Jones
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Denys Vlasenko
     
  • The '%p' output of the kernel's vsprintf() uses spec.field_width to
    determine how many digits to output based on 2 * sizeof(void*) so that all
    digits of a pointer are shown. ie. a pointer will be output as
    "001A2B3C" instead of "1A2B3C". However, if the '#' flag is used in the
    format (%#p), then the code doesn't take into account the width of the
    '0x' prefix and will end up outputing "0x1A2B3C" instead of "0x001A2B3C".

    This patch reworks the "pointer()" format hook to include 2 characters for
    the '0x' prefix if the '#' flag is included.

    [akpm@linux-foundation.org: checkpatch fixes]
    Signed-off-by: Grant Likely
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Grant Likely
     
  • dql->num_queued could change while processing dql_completed().
    To provide consistent calculation, added an on stack variable.

    Signed-off-by: Hiroaki SHIMODA
    Cc: Tom Herbert
    Cc: Eric Dumazet
    Cc: Denys Fedoryshchenko
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Hiroaki SHIMODA
     
  • When below pattern is observed,

    TIME
    dql_queued() dql_completed() |
    a) initial state |
    |
    b) X bytes queued V

    c) Y bytes queued
    d) X bytes completed
    e) Z bytes queued
    f) Y bytes completed

    a) dql->limit has already some value and there is no in-flight packet.
    b) X bytes queued.
    c) Y bytes queued and excess limit.
    d) X bytes completed and dql->prev_ovlimit is set and also
    dql->prev_num_queued is set Y.
    e) Z bytes queued.
    f) Y bytes completed. inprogress and prev_inprogress are true.

    At f), according to the comment, all_prev_completed becomes
    true and limit should be increased. But POSDIFF() ignores
    (completed == dql->prev_num_queued) case, so limit is decreased.

    Signed-off-by: Hiroaki SHIMODA
    Cc: Tom Herbert
    Cc: Eric Dumazet
    Cc: Denys Fedoryshchenko
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Hiroaki SHIMODA
     
  • POSDIFF() fails to take into account integer overflow case.

    Signed-off-by: Hiroaki SHIMODA
    Cc: Tom Herbert
    Cc: Eric Dumazet
    Cc: Denys Fedoryshchenko
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Hiroaki SHIMODA
     

30 May, 2012

11 commits

  • Pull IOMMU updates from Joerg Roedel:
    "Not much stuff this time. The only change to the IOMMU core code is
    the addition of a handle to the fault handling code. A few updates to
    the AMD IOMMU driver to work around new errata. The other patches are
    mostly fixes and enhancements to the existing ARM IOMMU drivers and
    documentation updates.

    A new IOMMU driver for the Exynos platform was also underway but got
    merged via the Samsung tree and is not part of this tree."

    * tag 'iommu-updates-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    Documentation: kernel-parameters.txt Add amd_iommu_dump
    iommu/core: pass a user-provided token to fault handlers
    iommu/tegra: gart: Fix register offset correctly
    iommu: OMAP: device detach on domain destroy
    iommu: tegra/gart: Add device tree support
    iommu: tegra/gart: use correct gart_device
    iommu/tegra: smmu: Print device name correctly
    iommu/amd: Add workaround for event log erratum
    iommu/amd: Check for the right TLP prefix bit
    dma-debug: release free_entries_lock before saving stack trace

    Linus Torvalds
     
  • Joerg Roedel
     
  • number()'s behaviour is slighly changed: 0 becomes "0" instead of "00"
    when using the flag SPECIAL and base 8.

    Before:
    Number\Format %o %#o %x %#x
    0 0 00 0 0x0
    1 1 01 1 0x1
    16 20 020 10 0x10

    After:
    Number\Format %o %#o %x %#x
    0 0 0 0 0x0
    1 1 01 1 0x1
    16 20 020 10 0x10

    Signed-off-by: Pierre Carrier
    Acked-by: Stephen Rothwell
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pierre Carrier
     
  • We are not preallocating a sufficient number of nodes.

    Signed-off-by: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • When a spinlock warning is printed we usually get

    BUG: spinlock bad magic on CPU#0, modprobe/111
    lock: 0xdff09f38, .magic: 00000000, .owner: /0, .owner_cpu: 0

    but it's nicer to print the symbol for the lock if we have it so that we
    can avoid 'grep dff09f38 /proc/kallsyms' to find out which lock it was.
    Use kallsyms to print the symbol name so we get something a bit easier to
    read

    BUG: spinlock bad magic on CPU#0, modprobe/112
    lock: test_lock, .magic: 00000000, .owner: /-1, .owner_cpu: 0

    If the lock is not in kallsyms %ps will fall back to printing the address
    directly.

    Signed-off-by: Stephen Boyd
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • Using %ps in a printk format will sometimes fail silently and print the
    empty string if the address passed in does not match a symbol that
    kallsyms knows about. But using %pS will fall back to printing the full
    address if kallsyms can't find the symbol. Make %ps act the same as %pS
    by falling back to printing the address.

    While we're here also make %ps print the module that a symbol comes from
    so that it matches what %pS already does. Take this simple function for
    example (in a module):

    static void test_printk(void)
    {
    int test;
    pr_info("with pS: %pS\n", &test);
    pr_info("with ps: %ps\n", &test);
    }

    Before this patch:

    with pS: 0xdff7df44
    with ps:

    After this patch:

    with pS: 0xdff7df44
    with ps: 0xdff7df44

    Signed-off-by: Stephen Boyd
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Boyd
     
  • The code comments for bscnl_emit() and bitmap_scnlistprintf() are
    describing snprintf() return semantics, but these functions use
    scnprintf() return semantics. Fix that, and document the
    bitmap_scnprintf() return value as well.

    Cc: Ryota Ozaki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Moving these arrays into static storage shrinks the kernel a bit:

    text data bss dec hex filename
    723 112 64 899 383 lib/string_helpers.o
    516 272 64 852 354 lib/string_helpers.o

    Cc: James Bottomley
    Cc: "Aneesh Kumar K.V"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • As long as there is no other non-const variable marked __initdata in the
    same compilation unit it doesn't hurt. If there were one however
    compilation would fail with

    error: $variablename causes a section type conflict

    because a section containing const variables is marked read only and so
    cannot contain non-const variables.

    Signed-off-by: Uwe Kleine-König
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Uwe Kleine-König
     
  • We were bitten by this at one point and added an additional sanity test
    for DEBUG_LIST. You can't validly add a list_head to a list where either
    prev or next is the same as the thing you're adding.

    Signed-off-by: Chris Metcalf
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Metcalf
     
  • Print swiotlb info in a style consistent with the %pR style used elsewhere
    in the kernel. For example:

    -Placing 64MB software IO TLB between ffff88007a662000 - ffff88007e662000
    -software IO TLB at phys 0x7a662000 - 0x7e662000
    +software IO TLB [mem 0x7a662000-0x7e661fff] (64MB) mapped at [ffff88007a662000-ffff88007e661fff]

    Signed-off-by: Bjorn Helgaas
    Cc: Yinghai Lu
    Cc: Konrad Rzeszutek Wilk
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas