1. 03 Jun, 2011 1 commit
  2. 02 Jun, 2011 2 commits
  3. 26 May, 2011 14 commits
    • Benjamin Herrenschmidt's avatar
      9693ebd4
    • Rupjyoti Sarmah's avatar
      powerpc/4xx: Adding PCIe MSI support · 3fb79338
      Rupjyoti Sarmah authored
      This patch adds MSI support for 440SPe, 460Ex, 460Sx and 405Ex.
      Signed-off-by: default avatarRupjyoti Sarmah <rsarmah@apm.com>
      Signed-off-by: default avatarTirumala R Marri <tmarri@apm.com>
      Acked-by: default avatarJosh Boyer <jwboyer@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      3fb79338
    • Milton Miller's avatar
      powerpc: Fix irq_free_virt by adjusting bounds before loop · 4dd60290
      Milton Miller authored
      Instead of looping over each irq and checking against the irq array
      bounds, adjust the bounds before looping.
      
      The old code will not free any irq if the irq + count is above
      irq_virq_count because the test in the loop is testing irq + count
      instead of irq + i.
      
      This code checks the limits to avoid unsigned integer overflows.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      4dd60290
    • Milton Miller's avatar
      powerpc/irq: Protect irq_radix_revmap_lookup against irq_free_virt · 9b788251
      Milton Miller authored
      The radix-tree code uses call_rcu when freeing internal elements.
      We must protect against the elements being freed while we traverse
      the tree, even if the returned pointer will still be valid.
      
      While preparing a patch to expand the context in which
      irq_radix_revmap_lookup will be called, I realized that the
      radix tree was not locked.
      
      When asked
      
          For a normal call_rcu usage, is it allowed to read the structure in
          irq_enter / irq_exit, without additional rcu_read_lock?  Could an
          element freed with call_rcu advance with the cpu still between
          irq_enter/irq_exit (and irq_disabled())?
      
      Paul McKenney replied:
      
          Absolutely illegal to do so. OK for call_rcu_sched(), but a
          flaming bug for call_rcu().
      
          And thank you very much for finding this!!!
      
      Further analysis:
      
      In the current CONFIG_TREE_RCU implementation. CONFIG_TREE_PREEMPT_RCU
      (and CONFIG_TINY_PREEMPT_RCU) uses explicit counters.
      
      These counters are reflected from per-CPU to global in the
      scheduling-clock-interrupt handler, so disabling irq does prevent the
      grace period from completing. But there are real-time implementations
      (such as the one use by the Concurrent guys) where disabling irq
      does -not- prevent the grace period from completing.
      
      While an alternative fix would be to switch radix-tree to rcu_sched, I
      don't want to audit the other users of radix trees (nor put alternative
      freeing in the library).  The normal overhead for rcu_read_lock and
      unlock are a local counter increment and decrement.
      
      This does not show up in the rcu lockdep because in 2.6.34 commit
      2676a58c (radix-tree: Disable RCU lockdep checking in radix tree)
      deemed it too hard to pass the condition of the protecting lock
      to the library.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Reviewed-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      9b788251
    • Milton Miller's avatar
      powerpc/irq: Check desc in handle_one_irq and expand generic_handle_irq · 2e455257
      Milton Miller authored
      Look up the descriptor and check that it is found in handle_one_irq
      before checking if we are on the irq stack, and call the handler
      directly using the descriptor if we are on the stack.
      
      We need check irq_to_desc finds the descriptor to avoid a NULL
      pointer dereference.  It could have failed because the number from
      ppc_md.get_irq was above NR_IRQS, or various exceptional conditions
      with sparse irqs (eg race conditions while freeing an irq if its was
      not shutdown in the controller).
      
      fe12bc2c (genirq: Uninline and sanity check generic_handle_irq())
      moved generic_handle_irq out of line to allow its use by interrupt
      controllers in modules.  However, handle_one_irq is core arch code.
      It already knows the details of struct irq_desc and handling irqs in
      the nested irq case.  This will avoid the extra stack frame to return
      the value we don't check.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      2e455257
    • Milton Miller's avatar
      powerpc/irq: Always free duplicate IRQ_LEGACY hosts · 3d1b5e20
      Milton Miller authored
      Since kmem caches are allocated before init_IRQ as noted in 3af259d1
      (powerpc: Radix trees are available before init_IRQ), we now call
      kmalloc in all cases and can can always call kfree if we are asked
      to allocate a duplicate or conflicting IRQ_HOST_MAP_LEGACY host.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      3d1b5e20
    • Milton Miller's avatar
      powerpc/irq: Remove stale and misleading comment · 8142f032
      Milton Miller authored
      The comment claims we will call host->ops->map() to update the flags if
      we find a previously established mapping, but we never did.  We used
      to call remap, but that call was removed in da051980 (powerpc: Remove
      irq_host_ops->remap hook).
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8142f032
    • Milton Miller's avatar
      powerpc/cell: Rename ipi functions to match current abstractions · d5a1c193
      Milton Miller authored
      Rename functions and arguments to reflect current usage.  iic_cause_ipi
      becomes iic_message_pass and iic_ipi_to_irq becomes iic_msg_to_irq,
      and iic_request_ipi now takes a message (msg) instead of an ipi number.
      Also mesg is renamed to msg.
      
      Commit f1072939 (powerpc: Remove checks for MSG_ALL and
      MSG_ALL_BUT_SELF) connected the smp_message_pass hook for cell to the
      underlying iic_cause_IPI, a platform unique name.  Later 23d72bfd
      (powerpc: Consolidate ipi message mux and demux) added a cause_ipi
      hook to the smp_ops, also used in message passing, but for controllers
      that can not send 4 unique messages and require multiplexing.  It is
      even more confusing that the both take two arguments, but one is the
      small message ordinal and the other is an opaque long data associated
      with the cpu.
      
      Since cell iic maps messages one to one to ipi irqs, rename the
      function and argument to translate from ipi to message.  Also make it
      clear that iic_request_ipi takes a message number as the argument
      for which ipi to create and request.
      
      No functionional change, just renames to avoid future confusion.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d5a1c193
    • Milton Miller's avatar
      powerpc/cell: Use common smp ipi actions · 7ef71d75
      Milton Miller authored
      The cell iic interrupt controller has enough software caused interrupts
      to use a unique interrupt for each of the 4 messages powerpc uses.
      This means each interrupt gets its own irq action/data combination.
      
      Use the seperate, optimized, arch common ipi action functions
      registered via the helper smp_request_message_ipi instead passing the
      message as action data to a single action that then demultipexes to
      the required acton via a switch statement.
      
      smp_request_message_ipi will register the action as IRQF_PER_CPU
      and IRQF_DISABLED, and WARN if the allocation fails for some reason,
      so no need to print on that failure.  It will return positive if
      the message will not be used by the kernel, in which case we can
      free the virq.
      
      In addition to elimiating inefficient code, this also corrects the
      error that a kernel built with kexec but without a debugger would
      not register the ipi for kdump to notify the other cpus of a crash.
      
      This also restores the debugger action to be static to kernel/smp.c.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      7ef71d75
    • Milton Miller's avatar
      Remove unused MSG_ flags in linux/smp.h · ce2a4045
      Milton Miller authored
      Now that powerpc has removed its use of MSG_ALL_BUT_SELF and MSG_ALL
      all these MSG_ flags are unused.
      Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ce2a4045
    • Brian King's avatar
      powerpc/pseries: Update MAX_HCALL_OPCODE to reflect page coalescing · ca193150
      Brian King authored
      When page coalescing support was added recently, the MAX_HCALL_OPCODE
      define was not updated for the newly added H_GET_MPP_X hcall.
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ca193150
    • Eric B Munson's avatar
      powerpc/oprofile: Handle events that raise an exception without overflowing · ad5d5292
      Eric B Munson authored
      Commit 0837e324 fixes a situation on POWER7
      where events can roll back if a specualtive event doesn't actually complete.
      This can raise a performance monitor exception.  We need to catch this to ensure
      that we reset the PMC.  In all cases the PMC will be less than 256 cycles from
      overflow.
      
      This patch lifts Anton's fix for the problem in perf and applies it to oprofile
      as well.
      Signed-off-by: default avatarEric B Munson <emunson@mgebm.net>
      Cc: <stable@kernel.org> # as far back as it applies cleanly
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ad5d5292
    • Ian Munsie's avatar
      powerpc/ftrace: Implement raw syscall tracepoints on PowerPC · 02424d89
      Ian Munsie authored
      This patch implements the raw syscall tracepoints on PowerPC and exports
      them for ftrace syscalls to use.
      
      To minimise reworking existing code, I slightly re-ordered the thread
      info flags such that the new TIF_SYSCALL_TRACEPOINT bit would still fit
      within the 16 bits of the andi. instruction's UI field. The instructions
      in question are in /arch/powerpc/kernel/entry_{32,64}.S to and the
      _TIF_SYSCALL_T_OR_A with the thread flags to see if system call tracing
      is enabled.
      
      In the case of 64bit PowerPC, arch_syscall_addr and
      arch_syscall_match_sym_name are overridden to allow ftrace syscalls to
      work given the unusual system call table structure and symbol names that
      start with a period.
      Signed-off-by: default avatarIan Munsie <imunsie@au1.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      02424d89
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 3f5785ec
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (89 commits)
        bonding: documentation and code cleanup for resend_igmp
        bonding: prevent deadlock on slave store with alb mode (v3)
        net: hold rtnl again in dump callbacks
        Add Fujitsu 1000base-SX PCI ID to tg3
        bnx2x: protect sequence increment with mutex
        sch_sfq: fix peek() implementation
        isdn: netjet - blacklist Digium TDM400P
        via-velocity: don't annotate MAC registers as packed
        xen: netfront: hold RTNL when updating features.
        sctp: fix memory leak of the ASCONF queue when free asoc
        net: make dev_disable_lro use physical device if passed a vlan dev (v2)
        net: move is_vlan_dev into public header file (v2)
        bug.h: Fix build with CONFIG_PRINTK disabled.
        wireless: fix fatal kernel-doc error + warning in mac80211.h
        wireless: fix cfg80211.h new kernel-doc warnings
        iwlagn: dbg_fixed_rate only used when CONFIG_MAC80211_DEBUGFS enabled
        dst: catch uninitialized metrics
        be2net: hash key for rss-config cmd not set
        bridge: initialize fake_rtable metrics
        net: fix __dst_destroy_metrics_generic()
        ...
      
      Fix up trivial conflicts in drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
      3f5785ec
  4. 25 May, 2011 23 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc · 8c1c77ff
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (75 commits)
        mmc: core: eMMC bus width may not work on all platforms
        mmc: sdhci: Auto-CMD23 fixes.
        mmc: sdhci: Auto-CMD23 support.
        mmc: core: Block CMD23 support for UHS104/SDXC cards.
        mmc: sdhci: Implement MMC_CAP_CMD23 for SDHCI.
        mmc: core: Use CMD23 for multiblock transfers when we can.
        mmc: quirks: Add/remove quirks conditional support.
        mmc: Add new VUB300 USB-to-SD/SDIO/MMC driver
        mmc: sdhci-pxa: Add quirks for DMA/ADMA to match h/w
        mmc: core: duplicated trial with same freq in mmc_rescan_try_freq()
        mmc: core: add support for eMMC Dual Data Rate
        mmc: core: eMMC signal voltage does not use CMD11
        mmc: sdhci-pxa: add platform code for UHS signaling
        mmc: sdhci: add hooks for setting UHS in platform specific code
        mmc: core: clear MMC_PM_KEEP_POWER flag on resume
        mmc: dw_mmc: fixed wrong regulator_enable in suspend/resume
        mmc: sdhi: allow powering down controller with no card inserted
        mmc: tmio: runtime suspend the controller, where possible
        mmc: sdhi: support up to 3 interrupt sources
        mmc: sdhi: print physical base address and clock rate
        ...
      8c1c77ff
    • Linus Torvalds's avatar
      Merge branch 'kconfig-for-40' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 · f3ae1c75
      Linus Torvalds authored
      * 'kconfig-for-40' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
        xconfig: merge code path to conf_write()
        kconfig: do not record timestamp in .config
        gconfig: Hide unused left treeview when start up the interface
        gconfig: enable rules hint for main treeviews
        MAINTAINERS: Update KCONFIG entry
        kconfig-language: add to hints
        kconfig: Document the new "visible if" syntax
        kconfig: quiet commands when V=0
        kconfig: change update-po-config to reflect new layout of arch/um
        kconfig: make update-po-config work in KBUILD_OUTPUT
        kconfig: rearrange clean-files
        kconfig: change gconf to modify hostprogs-y like nconf and mconf
        kconfig: change qconf to modify hostprogs-y like nconf and mconf
        kconfig: only build kxgettext when needed
        nconfig: Silence unused return values from wattrset
        kconfig: Do not record timestamp in auto.conf and autoconf.h
        kconfig: get rid of unused flags
        kconfig: allow multiple inclusion of the same file
        kconfig: Avoid buffer underrun in choice input
      f3ae1c75
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc · 9720d753
      Linus Torvalds authored
      * 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc:
        signal: sys_pause() should check signal_pending()
        ptrace: ptrace_resume() shouldn't wake up !TASK_TRACED thread
      9720d753
    • Linus Torvalds's avatar
      Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging · 0c63e38a
      Linus Torvalds authored
      * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
        hwmon: New driver for the SMSC EMC6W201
        hwmon: (abituguru) Depend on DMI
        hwmon: (it87) Use request_muxed_region
        hwmon: (sch5627) Trigger Vbat measurements
        hwmon: (sch5627) Add sch5627_send_cmd function
        i8k: Integrate with the hwmon subsystem
        hwmon: (max6650) Properly support the MAX6650
        hwmon: (max6650) Drop device detection
        Move ACPI power meter driver to hwmon
        hwmon: (f71882fg) Add support for F71808A
        hwmon: (f71882fg) Split has_beep in fan_has_beep and temp_has_beep
        hwmon: (asc7621) Drop duplicate dependency
        hwmon: (jc42) Change detection class
        hwmon: Add driver for AMD family 15h processor power information
        hwmon: (k10temp) Add support for Fam15h (Bulldozer)
        hwmon: Use helper functions to set and get driver data
        i8k: Avoid lahf in 64-bit code
      0c63e38a
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · 0798b1db
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: (26 commits)
        arch/tile: prefer "tilepro" as the name of the 32-bit architecture
        compat: include aio_abi.h for aio_context_t
        arch/tile: cleanups for tilegx compat mode
        arch/tile: allocate PCI IRQs later in boot
        arch/tile: support signal "exception-trace" hook
        arch/tile: use better definitions of xchg() and cmpxchg()
        include/linux/compat.h: coding-style fixes
        tile: add an RTC driver for the Tilera hypervisor
        arch/tile: finish enabling support for TILE-Gx 64-bit chip
        compat: fixes to allow working with tile arch
        arch/tile: update defconfig file to something more useful
        tile: do_hardwall_trap: do not play with task->sighand
        tile: replace mm->cpu_vm_mask with mm_cpumask()
        tile,mn10300: add device parameter to dma_cache_sync()
        audit: support the "standard" <asm-generic/unistd.h>
        arch/tile: clarify flush_buffer()/finv_buffer() function names
        arch/tile: kernel-related cleanups from removing static page size
        arch/tile: various header improvements for building drivers
        arch/tile: disable GX prefetcher during cache flush
        arch/tile: tolerate disabling CONFIG_BLK_DEV_INITRD
        ...
      0798b1db
    • Linus Torvalds's avatar
      Merge branch 'for-torvalds' of... · ad363e09
      Linus Torvalds authored
      Merge branch 'for-torvalds' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson
      
      * 'for-torvalds' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson:
        mach-ux500: voltage domain regulators for DB8500
        cpufreq: make DB8500 cpufreq driver compile
        cpufreq: update DB8500 cpufreq driver
        mach-ux500: move CPUfreq driver to cpufreq subsystem
        mfd: add DB5500 PRCMU driver
        mfd: update DB8500 PRCMU driver
        mach-ux500: move the DB8500 PRCMU driver to MFD
        mach-ux500: make PRCMU base address dynamic
        mach-ux500: rename PRCMU driver per SoC
        mach-ux500: update ASIC version detection
        mach-ux500: update SoC and board IRQ handling
        mach-ux500: update the DB5500 register file
        mach-ux500: update the DB8500 register file
      ad363e09
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin · ed0795aa
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (37 commits)
        Blackfin: use new common PERCPU_INPUT define
        MAINTAINERS: Fix Analog Devices mailinglist address
        Blackfin: boards: update ASoC resources after machine driver overhaul
        Blackfin: work around anomaly 05000480
        Blackfin: fix addr type with bfin_write_{or,and} helpers
        Blackfin: convert /proc/sram to seq_file
        Blackfin: switch /proc/gpio to seq_file
        Blackfin: fix indentation with bfin_read() helper
        Blackfin: convert old cpumask API to new one
        Blackfin: don't touch task->cpus_allowed directly
        Blackfin: don't touch cpu_possible_map and cpu_present_map directly
        Blackfin: bf548-ezkit/bf561-ezkit: update nor flash layout
        Blackfin: initial perf_event support
        Blackfin: update anomaly lists to latest public info
        Blackfin: use on-chip reset func with newer parts
        Blackfin: bf533-stamp/bf537-stamp: drop ad1980 from defconfigs
        Blackfin: optimize MMR reads during startup a bit
        Blackfin: bf537: demux port H mask A and emac rx ints
        Blackfin: bf537: fix excessive gpio int demuxing
        Blackfin: bf54x: drop unused pm gpio handling
        ...
      ed0795aa
    • Linus Torvalds's avatar
      Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 · 4e8a780e
      Linus Torvalds authored
      * 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (34 commits)
        ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1
        ARM: mach-shmobile: Correct the G4EVM SDHI0 I/O range.
        ARM: arch-shmobile: sh7372: add renesas_usbhs irq support
        ARM: mach-shmobile: sh73a0: mark DMA slave ID 0 as invalid
        ARM: mach-shmobile: mark DMA slave ID 0 as invalid
        ARM: mach-shmobile: Enable DMAEngine for SDHI on AG5EVM
        ARM: mach-shmobile: Enable DMAEngine for MMCIF on AG5EVM
        ARM: mach-shmobile: sh73a0 DMA Engine support for SY-DMAC
        dmaengine: shdma: Update SH_DMAC_MAX_CHANNELS to 20
        dmaengine: shdma: Fix SH_DMAC_MAX_CHANNELS handling
        dmaengine: shdma: Make second memory window optional
        ARM: mach-shmobile: Tidy up after SH7372 pm changes.
        ARM: mach-shmobile: sh7372 Core Standby CPUIdle
        ARM: mach-shmobile: CPUIdle support
        ARM: mach-shmobile: sh7372 Core Standby Suspend-to-RAM
        ARM: mach-shmobile: Suspend-to-RAM support
        mailmap: Add entry for Damian Hobson-Garcia.
        ARM: switch mackerel to dynamically manage the platform camera
        ARM: mach-shmobile: Add SDHI support for AG5EVM and sh73a0
        ARM: arch-shmobile: Use multiple irq vectors for SDHI
        ...
      4e8a780e
    • Thomas Gleixner's avatar
      hrtimers: Fix typo causing erratic timers · 90ff1f30
      Thomas Gleixner authored
      commit 9ec26907 ("timerfd: Manage cancelable timers in timerfd")
      introduced a CONFIG_HIGHRES_TIMERS (should be CONFIG_HIGH_RES_TIMERS)
      typo, which caused applications depending on CLOCK_REALTIME timers to
      become sluggy due to the fact that the time base of the realtime
      timers was not updated when the wall clock time was set.
      
      This causes anything from 100% CPU use for some applications to odd
      delays and hickups.
      Reported-bisected-and-tested-by: default avatarAnca Emanuel <anca.emanuel@gmail.com>
      Tested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Fatfingered-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      90ff1f30
    • Flavio Leitner's avatar
      bonding: documentation and code cleanup for resend_igmp · 94265cf5
      Flavio Leitner authored
      Improves the documentation about how IGMP resend parameter
      works, fix two missing checks and coding style issues.
      Signed-off-by: default avatarFlavio Leitner <fbl@redhat.com>
      Acked-by: default avatarRick Jones <rick.jones2@hp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      94265cf5
    • Neil Horman's avatar
      bonding: prevent deadlock on slave store with alb mode (v3) · 9fe0617d
      Neil Horman authored
      This soft lockup was recently reported:
      
      [root@dell-per715-01 ~]# echo +bond5 > /sys/class/net/bonding_masters
      [root@dell-per715-01 ~]# echo +eth1 > /sys/class/net/bond5/bonding/slaves
      bonding: bond5: doing slave updates when interface is down.
      bonding bond5: master_dev is not up in bond_enslave
      [root@dell-per715-01 ~]# echo -eth1 > /sys/class/net/bond5/bonding/slaves
      bonding: bond5: doing slave updates when interface is down.
      
      BUG: soft lockup - CPU#12 stuck for 60s! [bash:6444]
      CPU 12:
      Modules linked in: bonding autofs4 hidp rfcomm l2cap bluetooth lockd sunrpc
      be2d
      Pid: 6444, comm: bash Not tainted 2.6.18-262.el5 #1
      RIP: 0010:[<ffffffff80064bf0>]  [<ffffffff80064bf0>]
      .text.lock.spinlock+0x26/00
      RSP: 0018:ffff810113167da8  EFLAGS: 00000286
      RAX: ffff810113167fd8 RBX: ffff810123a47800 RCX: 0000000000ff1025
      RDX: 0000000000000000 RSI: ffff810123a47800 RDI: ffff81021b57f6f8
      RBP: ffff81021b57f500 R08: 0000000000000000 R09: 000000000000000c
      R10: 00000000ffffffff R11: ffff81011d41c000 R12: ffff81021b57f000
      R13: 0000000000000000 R14: 0000000000000282 R15: 0000000000000282
      FS:  00002b3b41ef3f50(0000) GS:ffff810123b27940(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 00002b3b456dd000 CR3: 000000031fc60000 CR4: 00000000000006e0
      
      Call Trace:
       [<ffffffff80064af9>] _spin_lock_bh+0x9/0x14
       [<ffffffff886937d7>] :bonding:tlb_clear_slave+0x22/0xa1
       [<ffffffff8869423c>] :bonding:bond_alb_deinit_slave+0xba/0xf0
       [<ffffffff8868dda6>] :bonding:bond_release+0x1b4/0x450
       [<ffffffff8006457b>] __down_write_nested+0x12/0x92
       [<ffffffff88696ae4>] :bonding:bonding_store_slaves+0x25c/0x2f7
       [<ffffffff801106f7>] sysfs_write_file+0xb9/0xe8
       [<ffffffff80016b87>] vfs_write+0xce/0x174
       [<ffffffff80017450>] sys_write+0x45/0x6e
       [<ffffffff8005d28d>] tracesys+0xd5/0xe0
      
      It occurs because we are able to change the slave configuarion of a bond while
      the bond interface is down.  The bonding driver initializes some data structures
      only after its ndo_open routine is called.  Among them is the initalization of
      the alb tx and rx hash locks.  So if we add or remove a slave without first
      opening the bond master device, we run the risk of trying to lock/unlock a
      spinlock that has garbage for data in it, which results in our above softlock.
      
      Note that sometimes this works, because in many cases an unlocked spinlock has
      the raw_lock parameter initialized to zero (meaning that the kzalloc of the
      net_device private data is equivalent to calling spin_lock_init), but thats not
      true in all cases, and we aren't guaranteed that condition, so we need to pass
      the relevant spinlocks through the spin_lock_init function.
      
      Fix it by moving the spin_lock_init calls for the tx and rx hashtable locks to
      the ndo_init path, so they are ready for use by the bond_store_slaves path.
      
      Change notes:
      v2) Based on conversation with Jay and Nicolas it seems that the ability to
      enslave devices while the bond master is down should be safe to do.  As such
      this is an outlier bug, and so instead we'll just initalize the errant spinlocks
      in the init path rather than the open path, solving the problem.  We'll also
      remove the warnings about the bond being down during enslave operations, since
      it should be safe
      
      v3) Fix spelling error
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Reported-by: jtluka@redhat.com
      CC: Jay Vosburgh <fubar@us.ibm.com>
      CC: Andy Gospodarek <andy@greyhouse.net>
      CC: nicolas.2p.debian@gmail.com
      CC: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fe0617d
    • Eric Dumazet's avatar
      net: hold rtnl again in dump callbacks · 2907c35f
      Eric Dumazet authored
      Commit e67f88dd (dont hold rtnl mutex during netlink dump callbacks)
      missed fact that rtnl_fill_ifinfo() must be called with rtnl held.
      
      Because of possible deadlocks between two mutexes (cb_mutex and rtnl),
      its not easy to solve this problem, so revert this part of the patch.
      
      It also forgot one rcu_read_unlock() in FIB dump_rules()
      
      Add one ASSERT_RTNL() in rtnl_fill_ifinfo() to remind us the rule.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: Patrick McHardy <kaber@trash.net>
      CC: Stephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2907c35f
    • Meelis Roos's avatar
      Add Fujitsu 1000base-SX PCI ID to tg3 · 1dcb14d9
      Meelis Roos authored
      This patch adds the PCI ID of Fujitsu 1000base-SX NIC to tg3 driver.
      Tested to detect the card, MAC and serdes, not tested with link at the
      moment since I have no fiber switch here. I did not add new constants to
      the pci_ids.h header file since these constants are used only here.
      Signed-off-by: default avatarMeelis Roos <mroos@linux.ee>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1dcb14d9
    • Dmitry Kravkov's avatar
    • Eric Dumazet's avatar
      sch_sfq: fix peek() implementation · 07bd8df5
      Eric Dumazet authored
      Since commit eeaeb068 (sch_sfq: allow big packets and be fair),
      sfq_peek() can return a different skb that would be normally dequeued by
      sfq_dequeue() [ if current slot->allot is negative ]
      
      Use generic qdisc_peek_dequeued() instead of custom implementation, to
      get consistent result.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: Jarek Poplawski <jarkao2@gmail.com>
      CC: Patrick McHardy <kaber@trash.net>
      CC: Jesper Dangaard Brouer <hawk@diku.dk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      07bd8df5
    • Prarit Bhargava's avatar
      isdn: netjet - blacklist Digium TDM400P · 367bbf2a
      Prarit Bhargava authored
      [2nd try ... 1st attempt didn't make it to netdev mailing list]
      
      A quick google search reveals that people with this card are blacklisting it
      in the initramfs and in the module blacklist based on a statement that it
      is unsupported. Since the older Digium is also unsupported I'm pretty
      confident that this newer card is also not supported.
      
      lspci -xxx -vv shows
      
      04:07.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface
              Subsystem: Device b100:0003
      P.
      
      ----8<----
      The Asterisk Voice Card, DIGIUM TDM400P is unsupported by the netjet driver.
      Blacklist it like the Digium X100P/X101P card.
      Signed-off-by: default avatarPrarit Bhargava <prarit@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      367bbf2a
    • Ulrich Hecht's avatar
      via-velocity: don't annotate MAC registers as packed · d10358de
      Ulrich Hecht authored
      On ARM, memory accesses through packed pointers behave in unexpected
      ways in GCC releases 4.3 and higher; see https://lkml.org/lkml/2011/2/2/163
      for discussion.
      
      In this particular case, 32-bit I/O registers are accessed bytewise,
      causing incorrect setting of the DMA address registers which in turn
      leads to an error interrupt storm that brings the system to a halt.
      
      Since the mac_regs structure does not need any packing anyway, this patch
      simply removes the attribute to fix the issue.
      Signed-off-by: default avatarUlrich Hecht <uli@suse.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d10358de
    • Ian Campbell's avatar
      xen: netfront: hold RTNL when updating features. · 1ba37c51
      Ian Campbell authored
      Konrad reports:
      [    0.930811] RTNL: assertion failed at /home/konrad/ssd/linux/net/core/dev.c (5258)
      [    0.930821] Pid: 22, comm: xenwatch Not tainted 2.6.39-05193-gd762f438 #1
      [    0.930825] Call Trace:
      [    0.930834]  [<ffffffff8143bd0e>] __netdev_update_features+0xae/0xe0
      [    0.930840]  [<ffffffff8143dd41>] netdev_update_features+0x11/0x30
      [    0.930847]  [<ffffffffa0037105>] netback_changed+0x4e5/0x800 [xen_netfront]
      [    0.930854]  [<ffffffff8132a838>] xenbus_otherend_changed+0xa8/0xb0
      [    0.930860]  [<ffffffff8157ca99>] ? _raw_spin_unlock_irqrestore+0x19/0x20
      [    0.930866]  [<ffffffff8132adfe>] backend_changed+0xe/0x10
      [    0.930871]  [<ffffffff8132875a>] xenwatch_thread+0xba/0x180
      [    0.930876]  [<ffffffff810a8ba0>] ? wake_up_bit+0x40/0x40
      [    0.930881]  [<ffffffff813286a0>] ? split+0xf0/0xf0
      [    0.930886]  [<ffffffff810a8646>] kthread+0x96/0xa0
      [    0.930891]  [<ffffffff815855a4>] kernel_thread_helper+0x4/0x10
      [    0.930896]  [<ffffffff815846b3>] ? int_ret_from_sys_call+0x7/0x1b
      [    0.930901]  [<ffffffff8157cf61>] ? retint_restore_args+0x5/0x6
      [    0.930906]  [<ffffffff815855a0>] ? gs_change+0x13/0x13
      
      This update happens in xenbus watch callback context and hence does not already
      hold the rtnl. Take the lock as necessary.
      Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Tested-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1ba37c51
    • Wei Yongjun's avatar
      sctp: fix memory leak of the ASCONF queue when free asoc · 8b4472cc
      Wei Yongjun authored
      If an ASCONF chunk is outstanding, then the following ASCONF
      chunk will be queued for later transmission. But when we free
      the asoc, we forget to free the ASCONF queue at the same time,
      this will cause memory leak.
      Signed-off-by: default avatarWei Yongjun <yjwei@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8b4472cc
    • Neil Horman's avatar
      net: make dev_disable_lro use physical device if passed a vlan dev (v2) · f11970e3
      Neil Horman authored
      If the device passed into dev_disable_lro is a vlan, then repoint the dev
      poniter so that we actually modify the underlying physical device.
      Signed-of-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: davem@davemloft.net
      CC: bhutchings@solarflare.com
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f11970e3
    • Neil Horman's avatar
      net: move is_vlan_dev into public header file (v2) · 6dcbbe25
      Neil Horman authored
      Migrate is_vlan_dev() to if_vlan.h so that core networkig can use it
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: davem@davemloft.net
      CC: bhutchings@solarflare.com
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6dcbbe25
    • Philip Rakity's avatar
      mmc: core: eMMC bus width may not work on all platforms · 08ee80cc
      Philip Rakity authored
      CMD19 -- The offical way to validate bus widths from the JEDEC spec
      does not work on all platforms.  Some platforms that use PCI/PCIe
      to connect their SD controllers are known to fail.
      
      If the quirk MMC_BUS_WIDTH_TEST is not defined we try to figure out
      the bus width by reading the ext_csd at different bus widths and
      compare this against the ext_csd read in 1 bit mode.  If no ext_csd
      is available we default to 1 bit operations.
      
      Code has been tested on mmp2 against 8 bit eMMC and Transcend 2GB
      card that is known to not work in 4 bit mode.  The physical pins
      on the card are not present to support 4 bit operation.
      Signed-off-by: default avatarPhilip Rakity <prakity@marvell.com>
      Signed-off-by: default avatarChris Ball <cjb@laptop.org>
      08ee80cc
    • Andrei Warkentin's avatar
      mmc: sdhci: Auto-CMD23 fixes. · 4f3d3e9b
      Andrei Warkentin authored
      Fixes bugs in Auto-CMD23 feature enable decision. Auto-CMD23
      should be enabled if host is >= v3, and SDMA is not in use.
      
      USE_ADMA | USE_SDMA | Auto-CMD23
      ---------+----------+-----------
          0    |    0     |     1
      ---------+----------+-----------
          0    |    1     |     0
      ---------+----------+-----------
          1    |    0     |     1
      ---------+----------+-----------
          1    |    1     |     1
      Signed-off-by: default avatarAndrei Warkentin <andreiw@motorola.com>
      Signed-off-by: default avatarChris Ball <cjb@laptop.org>
      4f3d3e9b