08 May, 2012

1 commit

  • Conflicts:
    drivers/net/ethernet/intel/e1000e/param.c
    drivers/net/wireless/iwlwifi/iwl-agn-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans.h

    Resolved the iwlwifi conflict with mainline using 3-way diff posted
    by John Linville and Stephen Rothwell. In 'net' we added a bug
    fix to make iwlwifi report a more accurate skb->truesize but this
    conflicted with RX path changes that happened meanwhile in net-next.

    In e1000e a conflict arose in the validation code for settings of
    adapter->itr. 'net-next' had more sophisticated logic so that
    logic was used.

    Signed-off-by: David S. Miller

    David S. Miller
     

04 May, 2012

1 commit

  • Pull networking fixes from David Miller:

    1) Transfer padding was wrong for full-speed USB in ASIX driver, fix
    from Ingo van Lil.

    2) Propagate the negative packet offset fix into the PowerPC BPF JIT.
    From Jan Seiffert.

    3) dl2k driver's private ioctls were letting unprivileged tasks make
    MII writes and other ugly bits like that. Fix from Jeff Mahoney.

    4) Fix TX VLAN and RX packet drops in ucc_geth, from Joakim Tjernlund.

    5) OOPS and network namespace fixes in IPVS from Hans Schillstrom and
    Julian Anastasov.

    6) Fix races and sleeping in locked context bugs in drop_monitor, from
    Neil Horman.

    7) Fix link status indication in smsc95xx driver, from Paolo Pisati.

    8) Fix bridge netfilter OOPS, from Peter Huang.

    9) L2TP sendmsg can return on error conditions with the socket lock
    held, oops. Fix from Sasha Levin.

    10) udp_diag should return meaningful values for socket memory usage,
    from Shan Wei.

    11) Eric Dumazet is so awesome he gets his own section:

    Socket memory cgroup code (I never should have applied those
    patches, grumble...) made erroneous changes to
    sk_sockets_allocated_read_positive(). It was changed to
    use percpu_counter_sum_positive (which requires BH disabling)
    instead of percpu_counter_read_positive (which does not).
    Revert back to avoid crashes and lockdep warnings.

    Adjust the default tcp_adv_win_scale and tcp_rmem[2] values
    to fix throughput regressions. This is necessary as a result
    of our more precise skb->truesize tracking.

    Fix SKB leak in netem packet scheduler.

    12) New device IDs for various bluetooth devices, from Manoj Iyer,
    AceLan Kao, and Steven Harms.

    13) Fix command completion race in ipw2200, from Stanislav Yakovlev.

    14) Fix rtlwifi oops on unload, from Larry Finger.

    15) Fix hard_mtu when adjusting hard_header_len in smsc95xx driver.
    From Stephane Fillod.

    16) ehea driver registers it's IRQ before all the necessary state is
    setup, resulting in crashes. Fix from Thadeu Lima de Souza
    Cascardo.

    17) Fix PHY connection failures in davinci_emac driver, from Anatolij
    Gustschin.

    18) Missing break; in switch statement in bluetooth's
    hci_cmd_complete_evt(). Fix from Szymon Janc.

    19) Fix queue programming in iwlwifi, from Johannes Berg.

    20) Interrupt throttling defaults not being actually programmed into the
    hardware, fix from Jeff Kirsher and Ying Cai.

    21) TLAN driver SKB encoding in descriptor busted on 64-bit, fix from
    Benjamin Poirier.

    22) Fix blind status block RX producer pointer deref in TG3 driver, from
    Matt Carlson.

    23) Promisc and multicast are busted on ehea, fixes from Thadeu Lima de
    Souza Cascardo.

    24) Fix crashes in 6lowpan, from Alexander Smirnov.

    25) tcp_complete_cwr() needs to be careful to not rewind the CWND to
    ssthresh if ssthresh has the "infinite" value. Fix from Yuchung
    Cheng.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (81 commits)
    sungem: Fix WakeOnLan
    tcp: change tcp_adv_win_scale and tcp_rmem[2]
    net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg
    drop_monitor: prevent init path from scheduling on the wrong cpu
    usbnet: fix failure handling in usbnet_probe
    usbnet: fix leak of transfer buffer of dev->interrupt
    ucc_geth: Add 16 bytes to max TX frame for VLANs
    net: ucc_geth, increase no. of HW RX descriptors
    netem: fix possible skb leak
    sky2: fix receive length error in mixed non-VLAN/VLAN traffic
    sky2: propogate rx hash when packet is copied
    net: fix two typos in skbuff.h
    cxgb3: Don't call cxgb_vlan_mode until q locks are initialized
    ixgbe: fix calling skb_put on nonlinear skb assertion bug
    ixgbe: Fix a memory leak in IEEE DCB
    igbvf: fix the bug when initializing the igbvf
    smsc75xx: enable mac to detect speed/duplex from phy
    smsc75xx: declare smsc75xx's MII as GMII capable
    smsc75xx: fix phy interrupt acknowledge
    smsc75xx: fix phy init reset loop
    ...

    Linus Torvalds
     

02 May, 2012

1 commit

  • Pull MIPS fixes from Ralf Baechle:
    "misc fixes some of which are also applicable to 3.3 and removal of an
    unused function. This has been sitting in -next for ages with no
    complaints. Also there are no known regressions due to these patches"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: Remove get_current_pgd().
    MIPS: ath79: fix AR933X WMAC reset code
    MIPS: JZ4740: Fix the JZ4740_IRQ_DMA macro
    MIPS: Use set_current_blocked() and block_sigmask()

    Linus Torvalds
     

01 May, 2012

2 commits

  • Pull ARM fixes from Russell King.

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: 7406/1: hotplug: copy the affinity mask when forcefully migrating IRQs
    ARM: 7405/1: kexec: call platform_cpu_kill on the killer rather than the victim
    ARM: 7403/1: tls: remove covert channel via TPIDRURW
    ARM: 7401/1: mm: Fix section mismatches
    ARM: OMAP: fix DMA vs memory ordering
    ARM: 7390/1: dts: versatile-pb/ab fix MMC IRQs
    ARM: 7400/1: vfp: clear fpscr length and stride bits on entry to sig handler
    ARM: 7399/1: vfp: move user vfp state save/restore code out of signal.c
    ARM: 7398/1: l2x0: only write to debug registers on PL310
    ARM: 7397/1: l2x0: only apply workaround for erratum #753970 on PL310
    ARM: 7396/1: errata: only handle ARM erratum #326103 on affected cores

    Linus Torvalds
     
  • Now the helper function from filter.c for negative offsets is exported,
    it can be used it in the jit to handle negative offsets.

    First modify the asm load helper functions to handle:
    - know positive offsets
    - know negative offsets
    - any offset

    then the compiler can be modified to explicitly use these helper
    when appropriate.

    This fixes the case of a negative X register and allows to lift
    the restriction that bpf programs with negative offsets can't
    be jited.

    Tested-by: Benjamin Herrenschmidt
    Signed-off-by: Jan Seiffert
    Signed-off-by: David S. Miller

    Jan Seiffert
     

30 Apr, 2012

3 commits

  • Recently, Ryan Wang tried to compile PPC pSeries platform without
    CONFIG_EEH and eventually run into errors. Nishanth Aravamudan
    helped to narrow down the root cause. Actually, the pSeries platform
    depends on CONFIG_EEH heavily and that won't work properly without
    EEH support.

    According to Ben's suggestion, the patch make CONFIG_EEH invisible
    and keep it as always selected on pSeries platform.

    Signed-off-by: Gavin Shan
    Signed-off-by: Benjamin Herrenschmidt

    Gavin Shan
     
  • The switch from using irq_map to irq_alloc_desc*() for managing irq
    number allocations introduced new bugs in some of the powerpc
    interrupt code. Several functions rely on the value of NR_IRQS to
    determine the maximum irq number that could get allocated. However,
    with sparse_irq and using irq_alloc_desc*() the maximum possible irq
    number is now specified with 'nr_irqs' which may be a number larger
    than NR_IRQS. This has caused breakage on powermac when
    CONFIG_NR_IRQS is set to 32.

    This patch removes most of the direct references to NR_IRQS in the
    powerpc code and replaces them with either a nr_irqs reference or by
    using the common for_each_irq_desc() macro. The powerpc-specific
    for_each_irq() macro is removed at the same time.

    Also, the Cell axon_msi driver is refactored to remove the global
    build assumption on the size of NR_IRQS and instead add a limit to the
    maximum irq number when calling irq_domain_add_nomap().

    Signed-off-by: Grant Likely
    Signed-off-by: Benjamin Herrenschmidt

    Grant Likely
     
  • The mpc8xx driver uses a reference to NR_IRQS that is buggy. It uses
    NR_IRQs for the array size of the ppc_cached_irq_mask bitmap, but
    NR_IRQs could be smaller than the number of hardware irqs that
    ppc_cached_irq_mask tracks.

    Also, while fixing that problem, it became apparent that the interrupt
    controller only supports 32 interrupt numbers, but it is written as if
    it supports multiple register banks which is more complicated.

    This patch pulls out the buggy reference to NR_IRQs and fixes the size
    of the ppc_cached_irq_mask to match the number of HW irqs. It also
    drops the now-unnecessary code since ppc_cached_irq_mask is no longer
    an array.

    Signed-off-by: Grant Likely
    Signed-off-by: Benjamin Herrenschmidt

    Grant Likely
     

29 Apr, 2012

2 commits

  • The AT91RM9200 Ethernet controller still has a fixed IO mapping.
    So:
    * Remove the fixed IO mapping and AT91_VA_BASE_EMAC definition.
    * Pass the physical base-address via platform-resources to the driver.
    * Convert at91_ether.c driver to perform an ioremap().
    * Ethernet PHY detection needs to be performed during the driver
    initialization process, it can no longer be done first.

    Signed-off-by: Andrew Victor
    Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD
    Signed-off-by: Nicolas Ferre
    Signed-off-by: David S. Miller

    Andrew Victor
     
  • Pull ARM SoC fixes from Olof Johansson:
    "Nothing controversial, just another batch of fixes:

    - Samsung/exynos fixes for more merge window fallout: build errors
    and warnings mostly, but also some clock/device setup issues on
    exynos4/5
    - PXA bug and warning fixes related to gpio and pinmux
    - IRQ domain conversion bugfixes for U300 and MSM
    - A regulator setup fix for U300"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: PXA2xx: MFP: fix potential direction bug
    ARM: PXA2xx: MFP: fix bug with MFP_LPM_KEEP_OUTPUT
    arm/sa1100: fix sa1100-rtc memory resource
    ARM: pxa: fix gpio wakeup setting
    ARM: SAMSUNG: add missing MMC_CAP2_BROKEN_VOLTAGE capability
    ARM: EXYNOS: Fix compilation error when CONFIG_OF is not defined
    ARM: EXYNOS: Fix resource on dev-dwmci.c
    ARM: S3C24XX: Fix build warning for S3C2410_PM
    ARM: mini2440_defconfig: Fix build error
    ARM: msm: Fix gic irqdomain support
    ARM: EXYNOS: Fix incorrect initialization of GIC
    ARM: EXYNOS: use 'exynos4-sdhci' as device name for sdhci controllers
    ARM: u300: bump all IRQ numbers by one
    ARM: ux300: Fix unimplementable regulation constraints

    Linus Torvalds
     

28 Apr, 2012

11 commits

  • When a CPU is hotplugged off, we migrate any IRQs currently affine to it
    away and onto another online CPU by calling the irq_set_affinity
    function of the relevant interrupt controller chip. This function
    returns either IRQ_SET_MASK_OK or IRQ_SET_MASK_OK_NOCOPY, to indicate
    whether irq_data.affinity was updated.

    If we are forcefully migrating an interrupt (because the affinity mask
    no longer identifies any online CPUs) then we should update the IRQ
    affinity mask to reflect the new CPU set. Failure to do so can
    potentially leave /proc/irq/n/smp_affinity identifying only offline
    CPUs, which may confuse userspace IRQ balancing daemons.

    This patch updates migrate_one_irq to copy the affinity mask when
    the interrupt chip returns IRQ_SET_MASK_OK after forcefully changing the
    affinity of an interrupt.

    Cc: stable@vger.kernel.org
    Reported-by: Leif Lindholm
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • When performing a kexec on an SMP system, the secondary cores are stopped
    by calling machine_shutdown(), which in turn issues IPIs to offline the
    other CPUs. Unfortunately, this isn't enough to reboot the cores into
    a new kernel (since they are just executing a cpu_relax loop somewhere
    in memory) so we make use of platform_cpu_kill, part of the CPU hotplug
    implementation, to place the cores somewhere safe. This function expects
    to be called on the killing CPU for each core that it takes out.

    This patch moves the platform_cpu_kill callback out of the IPI handler
    and into smp_send_stop, therefore ensuring that it executes on the
    killing CPU rather than on the victim, matching what the hotplug code
    requires.

    Cc: stable@vger.kernel.org
    Reported-by: Russell King
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • TPIDRURW is a user read/write register forming part of the group of
    thread registers in more recent versions of the ARM architecture (~v6+).

    Currently, the kernel does not touch this register, which allows tasks
    to communicate covertly by reading and writing to the register without
    context-switching affecting its contents.

    This patch clears TPIDRURW when TPIDRURO is updated via the set_tls
    macro, which is called directly from __switch_to. Since the current
    behaviour makes the register useless to userspace as far as thread
    pointers are concerned, simply clearing the register (rather than saving
    and restoring it) will not cause any problems to userspace.

    Cc: stable@vger.kernel.org
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • WARNING: vmlinux.o(.text+0x111b8): Section mismatch in reference
    from the function arm_memory_present() to the function
    .init.text:memory_present()
    The function arm_memory_present() references
    the function __init memory_present().
    This is often because arm_memory_present lacks a __init
    annotation or the annotation of memory_present is wrong.

    WARNING: arch/arm/mm/built-in.o(.text+0x1edc): Section mismatch
    in reference from the function alloc_init_pud() to the function
    .init.text:alloc_init_section()
    The function alloc_init_pud() references
    the function __init alloc_init_section().
    This is often because alloc_init_pud lacks a __init
    annotation or the annotation of alloc_init_section is wrong.

    Signed-off-by: Stephen Boyd
    Signed-off-by: Russell King

    Stephen Boyd
     
  • Pull Xen fixes from Konrad Rzeszutek Wilk:
    "Some of these had been in existence since the 2.6.27 days, some since
    3.0 - and some due to new features added in v3.4.

    The one that is most interesting is David's one - in the low-level
    assembler code we had be checking events needlessly. With his patch
    now we do it when the appropriate flag is set - with the added benefit
    that we can process events faster. Stefano's is fixing a mistake
    where the Linux IRQ numbers were ACK-ed instead of the Xen IRQ,
    resulting in missing interrupts. The other ones are bootup related
    that can show up on various hardware."

    - In the low-level assembler code we would jump to check events even if
    none were present. This incorrect behavior had been there since
    2.6.27 days!
    - When using the fast-path for ACK-ing interrupts we were using the
    Linux IRQ numbers instead of the Xen ones (and they can differ) and
    missing interrupts in process.
    - Fix bootup crashes when ACPI hotplug CPUs were present and they would
    expand past the set number of CPUs we were allocated.
    - Deal with broken BIOSes when uploading C-states to the hypervisor.
    - Disable the cpuid check for MWAIT_LEAF if the ACPI PAD driver is
    loaded. If the ACPI PAD driver is used it will crash, so lets not
    export the functionality so the ACPI PAD driver won't load.

    * tag 'stable/for-linus-3.4-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen: correctly check for pending events when restoring irq flags
    xen/acpi: Workaround broken BIOSes exporting non-existing C-states.
    xen/smp: Fix crash when booting with ACPI hotplug CPUs.
    xen: use the pirq number to check the pirq_eoi_map
    xen/enlighten: Disable MWAIT_LEAF so that acpi-pad won't be loaded.

    Linus Torvalds
     
  • Pull x86 fixes from Ingo Molnar.

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Use x2apic physical mode based on FADT setting
    x86/mrst: Quiet sparse noise about plain integer as NULL pointer
    x86, intel_cacheinfo: Fix error return code in amd_set_l3_disable_slot()

    Linus Torvalds
     
  • Pull build fixes for less mainstream architectures from Paul Gortmaker:
    "These are fixes for frv(1), blackfin(2), powerpc(1) and xtensa(4).

    Fortunately the touches are nearly all specific to files just used by
    the arch in question. The two touches to shared/common files
    [kernel/irq/debug.h and drivers/pci/Makefile] are trivial to assess as
    no risk to anyone.

    Half of them relate to xtensa directly. It was only when I fixed the
    last xtensa issue that I realized that the arch has been broken for a
    significant time, and isn't a specific v3.4 regression. So if you
    wanted, we could leave xtensa lying bleeding in the street for a
    couple more weeks and queue those for 3.5. But given they are no risk
    to anyone outside of xtensa, I figured to just leave them in.

    If you are OK with taking the xtensa fixes, then please pull to get:

    - one last implicit include uncovered by system.h that is in a file
    specific to just one powerpc defconfig. (I'd sync'd with BenH).

    - fix an oversight in the PCI makefile where shared code wasn't being
    compiled for ARCH=frv

    - fix a missing include for GPIO in blackfin framebuffer.

    - audit and tag endif in blackfin ezkit board file, in order to find
    and fix the misplaced endif masking a block of code.

    - fix irq/debug.h choice of temporary macro names to be more internal
    so they don't conflict with names used by xtensa.

    - fix a reference to an undeclared local var in xtensa's signal.c

    - fix an implicit bug.h usage in xtensa's asm/io.h uncovered by my
    removing bug.h from kernel.h

    - fix xtensa to properly indicate it is using asm-generic/hardirq.h
    in order to resolve the link error - undefined ack_bad_irq

    The xtensa still fails final link as my latest binutils does something
    evil when ld forward-relocates unlikely() blocks, but in theory people
    who have older/valid toolchains could now use the thing."

    * 'for-v3.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
    xtensa: fix build fail on undefined ack_bad_irq
    blackfin: fix ifdef fustercluck in mach-bf538/boards/ezkit.c
    blackfin: fix compile error in bfin-lq035q1-fb.c
    pci: frv architecture needs generic setup-bus infrastructure
    irq: hide debug macros so they don't collide with others.
    xtensa: fix build error in xtensa/include/asm/io.h
    xtensa: fix build failure in xtensa/kernel/signal.c
    powerpc: fix system.h fallout in sysdev/scom.c [chroma_defconfig]

    Linus Torvalds
     
  • In xen_restore_fl_direct(), xen_force_evtchn_callback() was being
    called even if no events were pending. This resulted in (depending on
    workload) about a 100 times as many xen_version hypercalls as
    necessary.

    Fix this by correcting the sense of the conditional jump.

    This seems to give a significant performance benefit for some
    workloads.

    There is some subtle tricksy "..since the check here is trying to
    check both pending and masked in a single cmpw, but I think this is
    correct. It will call check_events now only when the combined
    mask+pending word is 0x0001 (aka unmasked, pending)." (Ian)

    CC: stable@kernel.org
    Acked-by: Ian Campbell
    Signed-off-by: David Vrabel
    Signed-off-by: Konrad Rzeszutek Wilk

    David Vrabel
     
  • …/git/kgene/linux-samsung into fixes

    * 'v3.4-samsung-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    ARM: SAMSUNG: add missing MMC_CAP2_BROKEN_VOLTAGE capability
    ARM: EXYNOS: Fix compilation error when CONFIG_OF is not defined
    ARM: EXYNOS: Fix resource on dev-dwmci.c
    ARM: S3C24XX: Fix build warning for S3C2410_PM
    ARM: mini2440_defconfig: Fix build error
    ARM: EXYNOS: Fix incorrect initialization of GIC
    ARM: EXYNOS: use 'exynos4-sdhci' as device name for sdhci controllers

    Olof Johansson
     
  • * 'fixes' of git://github.com/hzhuang1/linux:
    ARM: PXA2xx: MFP: fix potential direction bug
    ARM: PXA2xx: MFP: fix bug with MFP_LPM_KEEP_OUTPUT
    arm/sa1100: fix sa1100-rtc memory resource
    ARM: pxa: fix gpio wakeup setting

    Olof Johansson
     
  • It is unused in the tree.

    Signed-off-by: David Daney
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/3557/
    Signed-off-by: Ralf Baechle

    David Daney
     

27 Apr, 2012

15 commits

  • The current code puts the built-in WMAC device of the
    AR933X SoCs into reset instead of starting it. This
    causes a hard lock on AR933X based boards when the
    wireless driver tries to access the device.

    Signed-off-by: Gabor Juhos
    Cc: stable@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/3484/
    Signed-off-by: Ralf Baechle

    Gabor Juhos
     
  • Pins configured as input and have MFP_LPM_DRIVE_* flag set, can have a
    wrong output value for some period of time (spike) during the suspend
    sequence.
    This can happen because the direction of the pins (GPDR) is set by
    software and the output level is set by hardware (PGSR) at a later
    stage.

    Fix the above potential bug by setting the output levels first.
    Also save the actual levels of the pins before the suspend and restore
    them after the resume, but before the direction settings take place, so
    the same bug as described above will not happen in the resume sequence.

    Reported-by: Paul Parsons
    Signed-off-by: Igor Grinberg
    Tested-by: Paul Parsons
    Signed-off-by: Haojian Zhuang

    Igor Grinberg
     
  • Pins that have MFP_LPM_KEEP_OUTPUT set and are configured for output
    must retain the output state in low power mode.
    Currently, the pin direction configuration is overrided with values
    in gpdr_lpm[] array and do not obey the MFP_LPM_KEEP_OUTPUT setting.

    Fix the above bug and add some documentation to clarify the
    MFP_LPM_KEEP_OUTPUT setting purpose.

    Reported-by: Paul Parsons
    Signed-off-by: Igor Grinberg
    Tested-by: Paul Parsons
    Signed-off-by: Haojian Zhuang

    Igor Grinberg
     
  • DEFINE_RES_MEM() takes the size of resource as a second argument,
    not the end address. Passing end address leads to following error
    in runtime during device registration:
    sa1100-rtc: failed to claim resource 0

    Fix it.

    Signed-off-by: Dmitry Artamonow
    Signed-off-by: Haojian Zhuang

    Dmitry Artamonow
     
  • In 3.3, gpio wakeup setting was broken. The call
    enable_irq_wake() didn't set up the PXA gpio registers
    (PWER, ...) anymore.

    Fix it at least for pxa27x. The driver doesn't seem to be
    used in pxa25x (weird ...), and the fix doesn't extend to
    pxa3xx and pxa95x (which don't have a gpio_set_wake()
    available).

    Signed-off-by: Robert Jarzmik
    Signed-off-by: Haojian Zhuang

    Robert Jarzmik
     
  • When we boot on a machine that can hotplug CPUs and we
    are using 'dom0_max_vcpus=X' on the Xen hypervisor line
    to clip the amount of CPUs available to the initial domain,
    we get this:

    (XEN) Command line: com1=115200,8n1 dom0_mem=8G noreboot dom0_max_vcpus=8 sync_console mce_verbosity=verbose console=com1,vga loglvl=all guest_loglvl=all
    .. snip..
    DMI: Intel Corporation S2600CP/S2600CP, BIOS SE5C600.86B.99.99.x032.072520111118 07/25/2011
    .. snip.
    SMP: Allowing 64 CPUs, 32 hotplug CPUs
    installing Xen timer for CPU 7
    cpu 7 spinlock event irq 361
    NMI watchdog: disabled (cpu7): hardware events not enabled
    Brought up 8 CPUs
    .. snip..
    [acpi processor finds the CPUs are not initialized and starts calling
    arch_register_cpu, which creates /sys/devices/system/cpu/cpu8/online]
    CPU 8 got hotplugged
    CPU 9 got hotplugged
    CPU 10 got hotplugged
    .. snip..
    initcall 1_acpi_battery_init_async+0x0/0x1b returned 0 after 406 usecs
    calling erst_init+0x0/0x2bb @ 1

    [and the scheduler sticks newly started tasks on the new CPUs, but
    said CPUs cannot be initialized b/c the hypervisor has limited the
    amount of vCPUS to 8 - as per the dom0_max_vcpus=8 flag.
    The spinlock tries to kick the other CPU, but the structure for that
    is not initialized and we crash.]
    BUG: unable to handle kernel paging request at fffffffffffffed8
    IP: [] xen_spin_lock+0x29/0x60
    PGD 180d067 PUD 180e067 PMD 0
    Oops: 0002 [#1] SMP
    CPU 7
    Modules linked in:

    Pid: 1, comm: swapper/0 Not tainted 3.4.0-rc2upstream-00001-gf5154e8 #1 Intel Corporation S2600CP/S2600CP
    RIP: e030:[] [] xen_spin_lock+0x29/0x60
    RSP: e02b:ffff8801fb9b3a70 EFLAGS: 00010282

    With this patch, we cap the amount of vCPUS that the initial domain
    can run, to exactly what dom0_max_vcpus=X has specified.

    In the future, if there is a hypercall that will allow a running
    domain to expand past its initial set of vCPUS, this patch should
    be re-evaluated.

    CC: stable@kernel.org
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • Paul Mundt
     
  • With the introduction of static keys, anything using tracepoints blows up
    in the following manner:

    include/trace/events/oom.h:8:13: error: initializer element is not constant
    include/trace/events/oom.h:8:13: error: (near initialization for '__tracepoint_oom_score_adj_update')
    include/trace/events/oom.h:8:13: error: initializer element is not constant
    include/trace/events/oom.h:8:13: error: (near initialization for '__tracepoint_oom_score_adj_update.key')

    This is a result of the STATIC_KEY_INIT_xxx defs wrapping ATOMIC_INIT()
    which on sh includes an atomic_t typecast. Given that we don't really
    need the typecast for anything anymore, the simplest solution is simply
    to kill off the cast.

    Signed-off-by: Nobuhiro Iwamatsu
    Signed-off-by: Paul Mundt

    Nobuhiro Iwamatsu
     
  • Signed-off-by: Antony Pavlov
    Cc: Lars-Peter Clausen
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/3459/
    Signed-off-by: Ralf Baechle

    Antony Pavlov
     
  • As described in e6fa16ab ("signal: sigprocmask() should do
    retarget_shared_pending()") the modification of current->blocked is
    incorrect as we need to check whether the signal we're about to block
    is pending in the shared queue.

    Also, use the new helper function introduced in commit 5e6292c0f28f
    ("signal: add block_sigmask() for adding sigmask to current->blocked")
    which centralises the code for updating current->blocked after
    successfully delivering a signal and reduces the amount of duplicate
    code across architectures. In the past some architectures got this
    code wrong, so using this helper function should stop that from
    happening again.

    Cc: Oleg Nesterov
    Cc: Andrew Morton
    Cc: linux-kernel@vger.kernel.org
    Cc: Al Viro
    Cc: David Daney
    Cc: linux-mips@linux-mips.org
    Signed-off-by: Matt Fleming
    Patchwork: https://patchwork.linux-mips.org/patch/3363/
    Signed-off-by: Ralf Baechle

    Matt Fleming
     
  • Pull arch/tile fixes from Chris Metcalf:
    "One change fixes a platform-independent bug about environment var
    handling in the boot command line. The other is a trivial
    tile-specific bug fix to avoid a link-time warning."

    * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    arch/tile: fix a couple of functions that should be __init
    init: fix bug where environment vars can't be passed via boot args

    Linus Torvalds
     
  • Commit e520c410854bab763be24e0fce7ba89dc252efee

    "xtensa: convert to asm-generic/hardirq.h"

    converted over to using the asm-generic parts, but it also
    added the sentinel

    #define ack_bad_irq ack_bad_irq

    which tells asm-generic to _not_ use the common ack_bad_irq.

    Since e520c41 deleted the duplicated code from the arch specific
    file, we _do_ want the asm-generic one in scope. So delete
    the trigger define above which hides it. In doing so we'll
    realize that we've got to delete the almost-duplicate prototype
    as well to avoid "static declaration ... follows non-static".

    Cc: Christoph Hellwig
    Cc: Chris Zankel
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • Merge fixes from Andrew Morton:
    "13 fixes. The acerhdf patches aren't (really) fixes. But they've
    been stuck in my tree for up to two years, sent to Matthew multiple
    times and the developers are unhappy."

    * emailed from Andrew Morton : (13 patches)
    mm: fix NULL ptr dereference in move_pages
    mm: fix NULL ptr dereference in migrate_pages
    revert "proc: clear_refs: do not clear reserved pages"
    drivers/rtc/rtc-ds1307.c: fix BUG shown with lock debugging enabled
    arch/arm/mach-ux500/mbox-db5500.c: world-writable sysfs fifo file
    hugetlbfs: lockdep annotate root inode properly
    acerhdf: lowered default temp fanon/fanoff values
    acerhdf: add support for new hardware
    acerhdf: add support for Aspire 1410 BIOS v1.3314
    fs/buffer.c: remove BUG() in possible but rare condition
    mm: fix up the vmscan stat in vmstat
    epoll: clear the tfile_check_list on -ELOOP
    mm/hugetlb: fix warning in alloc_huge_page/dequeue_huge_page_vma

    Linus Torvalds
     
  • There are exactly four users of __monitor and __mwait:

    - cstate.c (which allows acpi_processor_ffh_cstate_enter to be called
    when the cpuidle API drivers are used. However patch
    "cpuidle: replace xen access to x86 pm_idle and default_idle"
    provides a mechanism to disable the cpuidle and use safe_halt.
    - smpboot (which allows mwait_play_dead to be called). However
    safe_halt is always used so we skip that.
    - intel_idle (same deal as above).
    - acpi_pad.c. This the one that we do not want to run as we
    will hit the below crash.

    Why do we want to expose MWAIT_LEAF in the first place?
    We want it for the xen-acpi-processor driver - which uploads
    C-states to the hypervisor. If MWAIT_LEAF is set, the cstate.c
    sets the proper address in the C-states so that the hypervisor
    can benefit from using the MWAIT functionality. And that is
    the sole reason for using it.

    Without this patch, if a module performs mwait or monitor we
    get this:

    invalid opcode: 0000 [#1] SMP
    CPU 2
    .. snip..
    Pid: 5036, comm: insmod Tainted: G O 3.4.0-rc2upstream-dirty #2 Intel Corporation S2600CP/S2600CP
    RIP: e030:[] [] mwait_check_init+0x17/0x1000 [mwait_check]
    RSP: e02b:ffff8801c298bf18 EFLAGS: 00010282
    RAX: ffff8801c298a010 RBX: ffffffffa03b2000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffff8801c29800d8 RDI: ffff8801ff097200
    RBP: ffff8801c298bf18 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
    R13: ffffffffa000a000 R14: 0000005148db7294 R15: 0000000000000003
    FS: 00007fbb364f2700(0000) GS:ffff8801ff08c000(0000) knlGS:0000000000000000
    CS: e033 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 000000000179f038 CR3: 00000001c9469000 CR4: 0000000000002660
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process insmod (pid: 5036, threadinfo ffff8801c298a000, task ffff8801c29cd7e0)
    Stack:
    ffff8801c298bf48 ffffffff81002124 ffffffffa03b2000 00000000000081fd
    000000000178f010 000000000178f030 ffff8801c298bf78 ffffffff810c41e6
    00007fff3fb30db9 00007fff3fb30db9 00000000000081fd 0000000000010000
    Call Trace:
    [] do_one_initcall+0x124/0x170
    [] sys_init_module+0xc6/0x220
    [] system_call_fastpath+0x16/0x1b
    Code: 01 c8 31 c0 0f 01 c9 c9 c3 00 00 00 00 00 00 00 00 00 00 00 00
    RIP [] mwait_check_init+0x17/0x1000 [mwait_check]
    RSP
    ---[ end trace 16582fc8a3d1e29a ]---
    Kernel panic - not syncing: Fatal exception

    With this module (which is what acpi_pad.c would hit):

    MODULE_AUTHOR("Konrad Rzeszutek Wilk ");
    MODULE_DESCRIPTION("mwait_check_and_back");
    MODULE_LICENSE("GPL");
    MODULE_VERSION();

    static int __init mwait_check_init(void)
    {
    __monitor((void *)¤t_thread_info()->flags, 0, 0);
    __mwait(0, 0);
    return 0;
    }
    static void __exit mwait_check_exit(void)
    {
    }
    module_init(mwait_check_init);
    module_exit(mwait_check_exit);

    Reported-by: Liu, Jinsong
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • This file has lots and lots of ifdef, around structure decls
    and structure usages. The failure issue was that we would
    build the BF538-EZKIT_defconfig and get:

    arch/blackfin/mach-bf538/boards/ezkit.c:924:3: error: 'bfin_lq035q1_device'
    undeclared here (not in a function)

    even though the same ifdef _appeared_ to enable both the struct
    declaration and the code that used it. Yet cpp was telling us we
    didn't have the struct, but we still had the usage of it.

    However, _appeared_ is the operative word. After marking all the
    anonymous #endif with their parent #ifdef config options, it was
    _then_ clear that there was a misplaced #endif that was hiding
    the struct declaration.

    The real guts of the patch boils down to this:

    -#endif
    +#endif /* CONFIG_MTD_M25P80 */
    +#endif /* CONFIG_SPI_BFIN5XX */
    [...]
    -#endif /* spi master and devices */

    but since I had to tag the #endif with their respective #ifdef
    options to find this misplaced SPI endif, it would be silly to
    then go and delete them all. So they stay.

    Cc: Sonic Zhang
    Cc: Bob Liu
    Acked-by: Mike Frysinger
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

26 Apr, 2012

4 commits