28 Apr, 2014

12 commits

  • Linus Torvalds
     
  • The asm-generic, big-endian version of zero_bytemask creates a mask of
    bytes preceding the first zero-byte by left shifting ~0ul based on the
    position of the first zero byte.

    Unfortunately, if the first (top) byte is zero, the output of
    prep_zero_mask has only the top bit set, resulting in undefined C
    behaviour as we shift left by an amount equal to the width of the type.
    As it happens, GCC doesn't manage to spot this through the call to fls(),
    but the issue remains if architectures choose to implement their shift
    instructions differently.

    An example would be arch/arm/ (AArch32), where LSL Rd, Rn, #32 results
    in Rd == 0x0, whilst on arch/arm64 (AArch64) LSL Xd, Xn, #64 results in
    Xd == Xn.

    Rather than check explicitly for the problematic shift, this patch adds
    an extra shift by 1, replacing fls with __fls. Since zero_bytemask is
    never called with a zero argument (has_zero() is used to check the data
    first), we don't need to worry about calling __fls(0), which is
    undefined.

    Cc:
    Cc: Victor Kamensky
    Signed-off-by: Will Deacon
    Signed-off-by: Linus Torvalds

    Will Deacon
     
  • This merges the patch to fix possible loss of dirty bit on munmap() or
    madvice(DONTNEED). If there are concurrent writers on other CPU's that
    have the unmapped/unneeded page in their TLBs, their writes to the page
    could possibly get lost if a third CPU raced with the TLB flush and did
    a page_mkclean() before the page was fully written.

    Admittedly, if you unmap() or madvice(DONTNEED) an area _while_ another
    thread is still busy writing to it, you deserve all the lost writes you
    could get. But we kernel people hold ourselves to higher quality
    standards than "crazy people deserve to lose", because, well, we've seen
    people do all kinds of crazy things.

    So let's get it right, just because we can, and we don't have to worry
    about it.

    * safe-dirty-tlb-flush:
    mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: limit the path size in send to PATH_MAX
    Btrfs: correctly set profile flags on seqlock retry
    Btrfs: use correct key when repeating search for extent item
    Btrfs: fix inode caching vs tree log
    Btrfs: fix possible memory leaks in open_ctree()
    Btrfs: avoid triggering bug_on() when we fail to start inode caching task
    Btrfs: move btrfs_{set,clear}_and_info() to ctree.h
    btrfs: replace error code from btrfs_drop_extents
    btrfs: Change the hole range to a more accurate value.
    btrfs: fix use-after-free in mount_subvol()

    Linus Torvalds
     
  • Pull arm fixes from Russell King:
    "A number of fixes for the PJ4/iwmmxt changes which arm-soc forced me
    to take during the merge window. This stuff should have been better
    tested and sorted out *before* the merge window"

    * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
    ARM: 8042/1: iwmmxt: allow to build iWMMXt on Marvell PJ4B
    ARM: 8041/1: pj4: fix cpu_is_pj4 check
    ARM: 8040/1: pj4: properly detect existence of iWMMXt coprocessor
    ARM: 8039/1: pj4: enable iWMMXt only if CONFIG_IWMMXT is set
    ARM: 8038/1: iwmmxt: explicitly check for supported architectures

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:
    - compat renameat2 syscall wiring and __NR_compat_syscalls fix
    - TLB fix for transparent huge pages following switch to generic
    mmu_gather
    - spinlock initialisation for init_mm's context
    - move of_clk_init() earlier
    - Kconfig duplicate entry fix

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: init: Move of_clk_init to time_init
    arm64: initialize spinlock for init_mm's context
    arm64: debug: remove noisy, pointless warning
    arm64: mm: Add THP TLB entries to general mmu_gather
    arm64: add renameat2 compat syscall
    ARM64: Remove duplicated Kconfig entry for "kernel/power/Kconfig"
    arm64: __NR_compat_syscalls fix

    Linus Torvalds
     
  • Pull irq fixes from Thomas Gleixner:
    "A slighlty large fix for a subtle issue in the CPU hotplug code of
    certain ARM SoCs, where the not yet online cpu needs to setup the cpu
    local timer and needs to set the interrupt affinity to itself.
    Setting interrupt affinity to a not online cpu is prohibited and
    therefor the timer interrupt ends up on the wrong cpu, which leads to
    nasty complications.

    The SoC folks tried to hack around that in the SoC code in some more
    than nasty ways. The proper solution is to have a way to enforce the
    affinity setting to a not online cpu. The core patch to the genirq
    code provides that facility and the follow up patches make use of it
    in the GIC interrupt controller and the exynos timer driver.

    The change to the core code has no implications to existing users,
    except for the rename of the locked function and therefor the
    necessary fixup in mips/cavium. Aside of that, no runtime impact is
    possible, as none of the existing interrupt chips implements anything
    which depends on the force argument of the irq_set_affinity()
    callback"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource: Exynos_mct: Register clock event after request_irq()
    clocksource: Exynos_mct: Use irq_force_affinity() in cpu bringup
    irqchip: Gic: Support forced affinity setting
    genirq: Allow forcing cpu affinity of interrupts

    Linus Torvalds
     
  • Pull tty/serial fixes from Greg KH:
    "Here are a few tty/serial fixes for 3.15-rc3 that resolve a number of
    reported issues in the 8250 and samsung serial drivers, as well as a
    character loss fix for the tty core that was caused by the lock
    removal patches a release ago"

    * tag 'tty-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    serial_core: fix uart PORT_UNKNOWN handling
    serial: samsung: Change barrier() to cpu_relax() in console output
    serial: samsung: don't check config for every character
    serial: samsung: Use the passed in "port", fixing kgdb w/ no console
    serial: 8250: Fix thread unsafe __dma_tx_complete function
    8250_core: Fix unwanted TX chars write
    tty: Fix race condition between __tty_buffer_request_room and flush_to_ldisc

    Linus Torvalds
     
  • Pull staging / IIO driver fixes from Greg KH:
    "Here are some small staging and IIO driver fixes for 3.15-rc3.

    Nothing major at all, just some assorted issues that people have
    reported"

    * tag 'staging-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: comedi: usbdux: bug fix for accessing 'ao_chanlist' in private data
    iio: adc: mxs-lradc: fix warning when buidling on avr32
    iio: cm36651: Fix i2c client leak and possible NULL pointer dereference
    iio: querying buffer scan_mask should return 0/1
    staging:iio:ad2s1200 fix a missing break
    iio: adc: at91_adc: correct default shtim value
    ARM: at91: at91sam9260: change at91_adc name
    ARM: at91: at91sam9g45: change at91_adc name
    iio: cm32181: Fix read integration time function
    iio: adc: at91_adc: Repair broken platform_data support

    Linus Torvalds
     
  • Pull driver core fixes from Greg KH:
    "Here are some kernfs fixes for 3.15-rc3 that resolve some reported
    problems. Nothing huge, but all needed"

    * tag 'driver-core-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    s390/ccwgroup: Fix memory corruption
    kernfs: add back missing error check in kernfs_fop_mmap()
    kernfs: fix a subdir count leak

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are a number of USB fixes for 3.15-rc3. The majority are gadget
    fixes, as we didn't get any of those in for 3.15-rc2. The others are
    all over the place, and there's a number of new device id addtions as
    well."

    * tag 'usb-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (35 commits)
    usb: option: add and update a number of CMOTech devices
    usb: option: add Alcatel L800MA
    usb: option: add Olivetti Olicard 500
    usb: qcserial: add Sierra Wireless MC7305/MC7355
    usb: qcserial: add Sierra Wireless MC73xx
    usb: qcserial: add Sierra Wireless EM7355
    USB: io_ti: fix firmware download on big-endian machines
    usb/xhci: fix compilation warning when !CONFIG_PCI && !CONFIG_PM
    xhci: extend quirk for Renesas cards
    xhci: Switch Intel Lynx Point ports to EHCI on shutdown.
    usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb
    phy: core: make NULL a valid phy reference if !CONFIG_GENERIC_PHY
    phy: fix kernel oops in phy_lookup()
    phy: restore OMAP_CONTROL_PHY dependencies
    phy: exynos: fix building as a module
    USB: serial: fix sysfs-attribute removal deadlock
    usb: wusbcore: fix panic in wusbhc_chid_set
    usb: wusbcore: convert nested lock to use spin_lock instead of spin_lock_irq
    uwb: don't call spin_unlock_irq in a USB completion handler
    usb: chipidea: coordinate usb phy initialization for different phy type
    ...

    Linus Torvalds
     
  • Pull ACPI and power management fixes from Rafael Wysocki:
    "These include a fix for a recent ACPI regression related to device
    notifications, intel_idle fix related to IvyTown support, fix for a
    buffer size issue in ACPICA, PM core fix related to the "freeze" sleep
    state, four fixes for various types of breakage in cpufreq drivers, a
    PNP workaround for a wrong memory region size in ACPI tables, and a
    fix and cleanup for the ACPI tools Makefile.

    Specifics:

    - Fix for broken ACPI notifications on some systems caused by a
    recent ACPI hotplug commit that blocked the propagation of unknown
    type notifications to device drivers inadvertently.

    - intel_idle fix to make the IvyTown C-states handling (added
    recently) work as intended which now is broken due to missing
    braces. From Christoph Jaeger.

    - ACPICA fix to make it allocate buffers of the right sizes for the
    Generic Serial Bus operation region access. From Lv Zheng.

    - PM core fix unblocking cpuidle before entering the "freeze" sleep
    state which causes that state to be able to actually save more
    energy than runtime idle.

    - Configuration and build fixes for the highbank and powernv cpufreq
    drivers from Kefeng Wang and Srivatsa S Bhat.

    - Coccinelle warning fix related to error pointers for the unicore32
    cpufreq driver from Duan Jiong.

    - Integer overflow fix for the ppc-corenet cpufreq driver from Geert
    Uytterhoeven.

    - Workaround for BIOSes that don't report the entire Intel MCH area
    in their ACPI tables from Bjorn Helgaas.

    - ACPI tools Makefile fix and cleanup from Thomas Renninger"

    * tag 'pm+acpi-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / notify: Do not block unknown type notifications in root handler
    PNP: Work around BIOS defects in Intel MCH area reporting
    cpufreq: highbank: fix ARM_HIGHBANK_CPUFREQ dependency warning
    cpufreq: ppc: Fix integer overflow in expression
    cpufreq, powernv: Fix build failure on UP
    cpufreq: unicore32: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
    PM / suspend: Make cpuidle work in the "freeze" state
    intel_idle: fix IVT idle state table setting
    ACPICA: Fix buffer allocation issue for generic_serial_bus region accesses.
    tools/power/acpi: Minor bugfixes

    Linus Torvalds
     

26 Apr, 2014

23 commits

  • fs_path_ensure_buf is used to make sure our path buffers for
    send are big enough for the path names as we construct them.
    The buffer size is limited to 32K by the length field in
    the struct.

    But bugs in the path construction can end up trying to build
    a huge buffer, and we'll do invalid memmmoves when the
    buffer length field wraps.

    This patch is step one, preventing the overflows.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • The mmu-gather operation 'tlb_flush_mmu()' has done two things: the
    actual tlb flush operation, and the batched freeing of the pages that
    the TLB entries pointed at.

    This splits the operation into separate phases, so that the forced
    batched flushing done by zap_pte_range() can now do the actual TLB flush
    while still holding the page table lock, but delay the batched freeing
    of all the pages to after the lock has been dropped.

    This in turn allows us to avoid a race condition between
    set_page_dirty() (as called by zap_pte_range() when it finds a dirty
    shared memory pte) and page_mkclean(): because we now flush all the
    dirty page data from the TLB's while holding the pte lock,
    page_mkclean() will be held up walking the (recently cleaned) page
    tables until after the TLB entries have been flushed from all CPU's.

    Reported-by: Benjamin Herrenschmidt
    Tested-by: Dave Hansen
    Acked-by: Hugh Dickins
    Cc: Peter Zijlstra
    Cc: Russell King - ARM Linux
    Cc: Tony Luck
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * pnp:
    PNP: Work around BIOS defects in Intel MCH area reporting

    * acpi-hotplug:
    ACPI / notify: Do not block unknown type notifications in root handler

    Rafael J. Wysocki
     
  • Pull hwmon fixes from Guenter Roeck:
    - ltc2945: Don't unecessarily crash kernel on implementation error
    - vexpress: Fix 'name' and 'label' attributes

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (ltc2945) Don't crash the kernel unnecessarily
    hwmon: (vexpress) Avoid creating non-existing attributes
    hwmon: (vexpress) Use legal hwmon device names

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This is a set of seven fixes, three (hpsa) and free'd command
    references correcting bugs in the last round of updates and the
    remaining four correcting problems within the SCSI error handler that
    was causing a deadlock within USB"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    [SCSI] More USB deadlock fixes
    [SCSI] Fix USB deadlock caused by SCSI error handling
    [SCSI] Fix command result state propagation
    [SCSI] Fix spurious request sense in error handling
    [SCSI] don't reference freed command in scsi_prep_return
    [SCSI] don't reference freed command in scsi_init_sgtable
    [SCSI] hpsa: fix NULL dereference in hpsa_put_ctlr_into_performant_mode()

    Linus Torvalds
     
  • Pull ARM SoC fixes from Arnd Bergmann:
    "Since we didn't get around to collect fixes in time for -rc2 over the
    easter vacation, this one is unfortunately a bit larger than we'd like
    for an -rc3 merge.

    A large set of the changes is in the device tree sources, so I'm
    splitting out the description between code changes and DT changes.
    Aside from omap and versatile express, the actual code bugs are and
    trivial. Here is an overview:

    imx:
    - fix video clock settings
    - fix one clock refcounting bug

    omap:
    - update defconfig for renamed USB PHY driver
    - fix error handling in gpmc
    - fix N900 video initialization regression
    - fix reression in hwmod code from missing braces
    - fix am43xx and omap3 clocks
    - remove bogus write to voltage control register

    pxa:
    - fix build regression from 3.13 header cleanup

    rockchip:
    - fix a misleading printk string

    shmobile:
    - fix incorrect sound setting on multiple machines

    spear:
    - remove incorrect __init section annotation

    tegra:
    - remove a stale Kconfig entry

    u300:
    - update defconfig

    ux500:
    - enable common wireless and sensor drivers in defconfig
    - more defconfig updates

    vexpress:
    - fix voltage calculation for opp
    - fix reboot hang and warning
    - fix out-of-bounds array access
    - improve error handling in clock driver

    overall:
    - always select CLKSRC_OF in multiplatform builds

    And these are the devicetree related changes:

    imx:
    - add missing #clock-cell properties
    - fix pinctrl setting in imx6sl-evk
    - fix video endpoint on imx53
    - remove obsolete lvds-channel nodes (multiple patches)
    - add missing second stmpe node
    - fix usb host mode on dmo-edmqmx6 (multiple patches)
    - fix gic node #address-cells to match usage
    - add missing legacy IRQ map for PCIe
    - fix microsom pincontrol setting for rgmii
    - fix fatal typo in touchscreen DT usage for mx5
    - list all RAM present on m53evk and mx53qsb

    omap:
    - fix bug in DT handling of gpmc external bus
    - add DT for older revision of beagleboard
    - fix regression after DT node name fixes
    - remove obsolete properties for gpmc
    - fix pinmux comment to match DT it refers to
    - fix newly added dra7xx clock node data
    - add missing clock for USB PHY

    mvebu:
    - add missing clock for mdio node
    - fix nonstandard vendor prefixes on i2c nodes

    rockchip:
    - fix pin control setting for uart

    shmobile:
    - fix typo in DT data for pin control (multiple patches)
    - fix gic node #address-cells to match usage

    tegra:
    - fix clock and uart DT representation to match hardware

    zynq:
    - add DT nodes for newly added driver
    - add DT properties required for cpufreq-ondemand

    overall:
    - restore alphabetic order in Makefile
    - grammar fixes in bindings"

    * tag 'fixes-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (66 commits)
    ARM: vexpress/TC2: Convert OPP voltage to uV before storing
    power/reset: vexpress: Fix restart/power off operation
    dt: tegra: remove non-existent clock IDs
    clk: tegra: remove non-existent clocks
    ARM: tegra: remove UART5/UARTE from tegra124.dtsi
    ARM: tegra: remove TEGRA_EMC_SCALING_ENABLE
    ARM: Tidy up DTB Makefile entries
    ARM: fix missing CLKSRC_OF on multi-platform
    ARM: spear: add __init to spear_clocksource_init()
    ARM: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO
    arm/mach-vexpress: array accessed out of bounds
    clk: vexpress: NULL dereference on error path
    ARM: OMAP2+: Fix GPMC remap for devices using an offset
    ARM: zynq: dt: Add I2C nodes to Zynq device tree
    ARM: zynq: DT: Add 'clock-latency' property
    ARM: OMAP2+: Fix oops for GPMC free
    ARM: dts: Add support for the BeagleBoard xM A/B
    ARM: dts: Grammar /that will/it will/
    ARM: dts: Grammar /is uses/ is used/
    ARM: OMAP2+: Fix config name for USB3 PHY
    ...

    Linus Torvalds
     
  • Pull file locking fixes from Jeff Layton:
    "File locking related bugfixes for v3.15 (pile #2)

    - fix for a long-standing bug in __break_lease that can cause soft
    lockups
    - renaming of file-private locks to "open file description" locks,
    and the command macros to more visually distinct names

    The fix for __break_lease is also in the pile of patches for which
    Bruce sent a pull request, but I assume that your merge procedure will
    handle that correctly.

    For the other patches, I don't like the fact that we need to rename
    this stuff at this late stage, but it should be settled now
    (hopefully)"

    * tag 'locks-v3.15-2' of git://git.samba.org/jlayton/linux:
    locks: rename FL_FILE_PVT and IS_FILE_PVT to use "*_OFDLCK" instead
    locks: rename file-private locks to "open file description locks"
    locks: allow __break_lease to sleep even when break_time is 0

    Linus Torvalds
     
  • Pull nfsd bugfixes from Bruce Fields:
    "Three small nfsd bugfixes (including one locks.c fix for a bug
    triggered only from nfsd).

    Jeff's patches are for long-existing problems that became easier to
    trigger since the addition of vfs delegation support"

    * 'for-3.15' of git://linux-nfs.org/~bfields/linux:
    Revert "nfsd4: fix nfs4err_resource in 4.1 case"
    nfsd: set timeparms.to_maxval in setup_callback_client
    locks: allow __break_lease to sleep even when break_time is 0

    Linus Torvalds
     
  • commit 0b60f9ead5d4816e7e3d6e28f4a0d22d4a1b2513 (s390: use
    device_remove_file_self() instead of device_schedule_callback())

    caused random memory corruption on my s390 box. Turns out that the
    last element of the ccwgroup structure is of dynamic size, so we
    must move the newly introduced work structure _before_ the zero
    length array.

    Signed-off-by: Christian Borntraeger
    CC: Tejun Heo
    CC: Martin Schwidefsky
    CC: Heiko Carstens
    CC: Sebastian Ott
    CC: Peter Oberparleiter
    Acked-by: Tejun Heo
    Signed-off-by: Greg Kroah-Hartman

    Christian Borntraeger
     
  • While updating how mmap enabled kernfs files are handled by lockdep,
    9b2db6e18945 ("sysfs: bail early from kernfs_file_mmap() to avoid
    spurious lockdep warning") inadvertently dropped error return check
    from kernfs_file_mmap(). The intention was just dropping "if
    (ops->mmap)" check as the control won't reach the point if the mmap
    callback isn't implemented, but I mistakenly removed the error return
    check together with it.

    This led to Xorg crash on i810 which was reported and bisected to the
    commit and then to the specific change by Tobias.

    Signed-off-by: Tejun Heo
    Reported-and-bisected-by: Tobias Powalowski
    Tested-by: Tobias Powalowski
    References: http://lkml.kernel.org/g/533D01BD.1010200@googlemail.com
    Cc: stable # 3.14
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • Currently kernfs_link_sibling() increates parent->dir.subdirs before
    adding the node into parent's chidren rb tree.

    Because it is possible that kernfs_link_sibling() couldn't find
    a suitable slot and bail out, this leads to a mismatch between
    elevated subdir count with actual children node numbers.

    This patches fix this problem, by moving the subdir accouting
    after the actual addtion happening.

    Signed-off-by: Jianyu Zhan
    Acked-by: Tejun Heo
    Signed-off-by: Greg Kroah-Hartman

    Jianyu Zhan
     
  • A number of older CMOTech modems are based on Qualcomm
    chips. The blacklisted interfaces are QMI/wwan.

    Reported-by: Lars Melin
    Cc:
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Device interface layout:
    0: ff/ff/ff - serial
    1: ff/00/00 - serial AT+PPP
    2: ff/ff/ff - QMI/wwan
    3: 08/06/50 - storage

    Cc:
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Device interface layout:
    0: ff/ff/ff - serial
    1: ff/ff/ff - serial AT+PPP
    2: 08/06/50 - storage
    3: ff/ff/ff - serial
    4: ff/ff/ff - QMI/wwan

    Cc:
    Reported-by: Julio Araujo
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Cc:
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Cc:
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Cc:
    Signed-off-by: Bjørn Mork
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • Clock providers should be initialized before clocksource_of_init.
    If not, Clock source initialization can be fail to get the clock.

    Acked-by: Will Deacon
    Signed-off-by: Chanho Min
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Chanho Min
     
  • During firmware download the device expects memory addresses in
    big-endian byte order. As the wIndex parameter which hold the address is
    sent in little-endian byte order regardless of host byte order, we need
    to use swab16 rather than cpu_to_be16.

    Also make sure to handle the struct ti_i2c_desc size parameter which is
    returned in little-endian byte order.

    Reported-by: Ludovic Drolez
    Tested-by: Ludovic Drolez
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • When CONFIG_PCI and CONFIG_PM are not selected, xhci.c gets this
    warning:
    drivers/usb/host/xhci.c:409:13: warning: ‘xhci_msix_sync_irqs’ defined
    but not used [-Wunused-function]

    Instead of creating nested #ifdefs, this patch fixes it by defining the
    xHCI PCI stubs as inline.

    This warning has been in since 3.2 kernel and was
    caused by commit 421aa841a134f6a743111cf44d0c6d3b45e3cf8c
    "usb/xhci: hide MSI code behind PCI bars", but wasn't noticed
    until 3.13 when a configuration with these options was tried

    Signed-off-by: David Cohen
    Cc: stable@vger.kernel.org # 3.2
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    David Cohen
     
  • After suspend another Renesas PCI-X USB 3.0 card doesn't work.
    [root@fedora-20 ~]# lspci -vmnnd 1912:
    Device: 03:00.0
    Class: USB controller [0c03]
    Vendor: Renesas Technology Corp. [1912]
    Device: uPD720202 USB 3.0 Host Controller [0015]
    SVendor: Renesas Technology Corp. [1912]
    SDevice: uPD720202 USB 3.0 Host Controller [0015]
    Rev: 02
    ProgIf: 30

    This patch should be applied to stable kernel 3.14 that contain
    the commit 1aa9578c1a9450fb21501c4f549f5b1edb557e6d
    "xhci: Fix resume issues on Renesas chips in Samsung laptops"

    Reported-and-tested-by: Anatoly Kharchenko
    Reference: http://redmine.russianfedora.pro/issues/1315
    Signed-off-by: Igor Gnatenko
    Cc: stable@vger.kernel.org # 3.14
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Igor Gnatenko
     
  • The same issue like with Panther Point chipsets. If the USB ports are
    switched to xHCI on shutdown, the xHCI host will send a spurious interrupt,
    which will wake the system. Some BIOS have work around for this, but not all.
    One example is Compulab's mini-desktop, the Intense-PC2.

    The bug can be avoided if the USB ports are switched back to EHCI on
    shutdown.

    This patch should be backported to stable kernels as old as 3.12,
    that contain the commit 638298dc66ea36623dbc2757a24fc2c4ab41b016
    "xhci: Fix spurious wakeups after S5 on Haswell"

    Signed-off-by: Denis Turischev
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Denis Turischev
     
  • We have observed a rare cycle state desync bug after Set TR Dequeue
    Pointer commands on Intel LynxPoint xHCs (resulting in an endpoint that
    doesn't fetch new TRBs and thus an unresponsive USB device). It always
    triggers when a previous Set TR Dequeue Pointer command has set the
    pointer to the final Link TRB of a segment, and then another URB gets
    enqueued and cancelled again before it can be completed. Further
    investigation showed that the xHC had returned the Link TRB in the TRB
    Pointer field of the Transfer Event (CC == Stopped -- Length Invalid),
    but when xhci_find_new_dequeue_state() later accesses the Endpoint
    Context's TR Dequeue Pointer field it is set to the first TRB of the
    next segment.

    The driver expects those two values to be the same in this situation,
    and uses the cycle state of the latter together with the address of the
    former. This should be fine according to the XHCI specification, since
    the endpoint ring should be stopped when returning the Transfer Event
    and thus should not advance over the Link TRB before it gets restarted.
    However, real-world XHCI implementations apparently don't really care
    that much about these details, so the driver should follow a more
    defensive approach to try to work around HC spec violations.

    This patch removes the stopped_trb variable that had been used to store
    the TRB Pointer from the last Transfer Event of a stopped TRB. Instead,
    xhci_find_new_dequeue_state() now relies only on the Endpoint Context,
    requiring a small amount of additional processing to find the virtual
    address corresponding to the TR Dequeue Pointer. Some other parts of the
    function were slightly rearranged to better fit into this model.

    This patch should be backported to kernels as old as 2.6.31 that contain
    the commit ae636747146ea97efa18e04576acd3416e2514f5 "USB: xhci: URB
    cancellation support."

    Signed-off-by: Julius Werner
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Julius Werner
     

25 Apr, 2014

5 commits

  • ARM64 has defined the spinlock for init_mm's context, so need initialize
    the spinlock structure; otherwise during the suspend flow it will dump
    the info for spinlock's bad magic warning as below:

    [ 39.084394] Disabling non-boot CPUs ...
    [ 39.092871] BUG: spinlock bad magic on CPU#1, swapper/1/0
    [ 39.092896] lock: init_mm+0x338/0x3e0, .magic: 00000000, .owner: /-1, .owner_cpu: 0
    [ 39.092907] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G O 3.10.33 #125
    [ 39.092912] Call trace:
    [ 39.092927] [] dump_backtrace+0x0/0x16c
    [ 39.092934] [] show_stack+0x10/0x1c
    [ 39.092947] [] dump_stack+0x1c/0x28
    [ 39.092953] [] spin_dump+0x78/0x88
    [ 39.092960] [] spin_bug+0x24/0x34
    [ 39.092971] [] do_raw_spin_lock+0x98/0x17c
    [ 39.092979] [] _raw_spin_lock_irqsave+0x4c/0x60
    [ 39.092990] [] set_mm_context+0x1c/0x6c
    [ 39.092996] [] __new_context+0x94/0x10c
    [ 39.093007] [] idle_task_exit+0x104/0x1b0
    [ 39.093014] [] cpu_die+0x14/0x74
    [ 39.093021] [] arch_cpu_idle_dead+0x8/0x14
    [ 39.093030] [] cpu_startup_entry+0x1ec/0x258
    [ 39.093036] [] secondary_start_kernel+0x114/0x124

    Signed-off-by: Leo Yan
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Leo Yan
     
  • Sending a SIGTRAP to a user task after execution of a BRK instruction at
    EL0 is fundamental to the way in which software breakpoints work and
    doesn't deserve a warning to be logged in dmesg. Whilst the warning can
    be justified from EL1, do_debug_exception will already do the right thing,
    so simply remove the code altogether.

    Cc: Sandeepa Prabhu
    Reported-by: Kyrylo Tkachov
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • When arm64 moved over to the core mmu_gather, it lost the logic to
    flush THP TLB entries (tlb_remove_pmd_tlb_entry was removed and the
    core implementation only signals that the mmu_gather needs a flush).

    This patch ensures that tlb_add_flush is called for THP TLB entries.

    Signed-off-by: Steve Capper
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Steve Capper
     
  • Some Marvell PJ4B CPUs also implement iWMMXt extensions. With a
    proper check for iWMMXt coprocessors now in place, enable it by
    default on PJ4B. While at it, also allow to manually select
    the corresponding Kconfig option.

    Signed-off-by: Sebastian Hesselbarth
    Tested-by: Thomas Petazzoni
    Tested-by: Kevin Hilman
    Signed-off-by: Russell King

    Sebastian Hesselbarth
     
  • Commit fdb487f5c961b94486a78fa61fa28b8eff1954ab
    ("ARM: 8015/1: Add cpu_is_pj4 to distinguish PJ4 because it
    has some differences with V7")
    introduced a cpuid check for Marvell PJ4 processors to fix a
    regression caused by adding PJ4 based Marvell Dove into
    multi_v7.

    Unfortunately, this check is too narrow to catch PJ4 used on
    Dove itself and breaks iWMMXt support.

    This patch therefore relaxes the cpuid mask to match both PJ4
    and PJ4B. Also, rework the given comment about PJ4/PJ4B
    modifications to be a little bit more specific about the
    differences.

    Signed-off-by: Sebastian Hesselbarth
    Tested-by: Thomas Petazzoni
    Tested-by: Kevin Hilman
    Signed-off-by: Russell King

    Sebastian Hesselbarth