25 Feb, 2012

3 commits

  • SH/R-Mobile fixes for 3.3-rc5

    * tag 'rmobile-for-linus' of git://github.com/pmundt/linux-sh:
    arch/arm/mach-shmobile/board-ag5evm.c: included linux/dma-mapping.h twice
    ARM: mach-shmobile: r8a7779 PFC IPSR4 fix
    ARM: mach-shmobile: sh73a0 PSTR 32-bit access fix
    ARM: mach-shmobile: add GPIO-to-IRQ translation to sh7372
    ARM: mach-shmobile: clock-sh73a0: add DSIxPHY clock support
    arm: fix compile failure in mach-shmobile/board-ag5evm.c
    ARM: mach-shmobile: mackerel: add ak4642 amixer settings on comment
    ARM: mach-shmobile: mackerel: use renesas_usbhs instead of r8a66597_hcd
    ARM: mach-shmobile: simplify MMCIF DMA configuration
    ARM: mach-shmobile: IRQ driven GPIO key support for Kota2
    ARM: mach-shmobile: sh73a0 IRQ sparse alloc fix
    ARM: mach-shmobile: sh73a0 PINT IRQ base fix

    Linus Torvalds
     
  • SuperH fixes for 3.3-rc5

    * tag 'sh-for-linus' of git://github.com/pmundt/linux-sh:
    sh: Fix sh2a build error for CONFIG_CACHE_WRITETHROUGH
    sh: modify a resource of sh_eth_giga1_resources in board-sh7757lcr
    arch/sh: remove references to cpu_*_map.
    sh: Fix typo in pci-sh7780.c
    sh: add platform_device for SPI1 in setup-sh7757
    sh: modify resource for SPI0 in setup-sh7757
    sh: se7724: fix compile breakage
    sh: clkfwk: bugfix: use clk_reparent() for div6 clocks
    sh: clock-sh7724: fixup sh_fsi clock settings
    sh: sh7757lcr: update to the new MMCIF DMA configuration
    sh: fix the sh_mmcif_plat_data in board-sh7757lcr
    video: pvr2fb: Fix up spurious section mismatch warnings.
    sh: Defer to asm-generic/device.h.

    Linus Torvalds
     
  • There is an issue when memcg unregisters events that were attached to
    the same eventfd:

    - On the first call mem_cgroup_usage_unregister_event() removes all
    events attached to a given eventfd, and if there were no events left,
    thresholds->primary would become NULL;

    - Since there were several events registered, cgroups core will call
    mem_cgroup_usage_unregister_event() again, but now kernel will oops,
    as the function doesn't expect that threshold->primary may be NULL.

    That's a good question whether mem_cgroup_usage_unregister_event()
    should actually remove all events in one go, but nowadays it can't
    do any better as cftype->unregister_event callback doesn't pass
    any private event-associated cookie. So, let's fix the issue by
    simply checking for threshold->primary.

    FWIW, w/o the patch the following oops may be observed:

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000004
    IP: [] mem_cgroup_usage_unregister_event+0x9c/0x1f0
    Pid: 574, comm: kworker/0:2 Not tainted 3.3.0-rc4+ #9 Bochs Bochs
    RIP: 0010:[] [] mem_cgroup_usage_unregister_event+0x9c/0x1f0
    RSP: 0018:ffff88001d0b9d60 EFLAGS: 00010246
    Process kworker/0:2 (pid: 574, threadinfo ffff88001d0b8000, task ffff88001de91cc0)
    Call Trace:
    [] cgroup_event_remove+0x2b/0x60
    [] process_one_work+0x174/0x450
    [] worker_thread+0x123/0x2d0

    Cc: stable
    Signed-off-by: Anton Vorontsov
    Acked-by: KAMEZAWA Hiroyuki
    Cc: Kirill A. Shutemov
    Cc: Michal Hocko
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     

24 Feb, 2012

12 commits

  • arch/arm/mach-shmobile/board-ag5evm.c: included 'linux/dma-mapping.h'
    twice, remove the duplicate.

    Signed-off-by: Danny Kukawka
    Signed-off-by: Paul Mundt

    Danny Kukawka
     
  • Fix the bit field width information for the IPSR4 register
    in the r8a7779 pin function controller (PFC).

    Without this fix the Marzen board fails to receive data
    over the serial console due to misconfigured pin function
    for the RX pin.

    Signed-off-by: Magnus Damm
    Tested-by: Kuninori Morimoto
    Tested-by: Simon Horman
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Convert the sh73a0 SMP code to use 32-bit PSTR access.

    This fixes wakeup from deep sleep for sh73a0 secondary CPUs.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Paul Mundt
     
  • Signed-off-by: Phil Edworthy
    Signed-off-by: Paul Mundt

    Phil Edworthy
     
  • The latest sh_eth driver needs a resource of TSU in the channel 1,
    if the controller has TSU registers. So, this patch adds the resource.

    Signed-off-by: Yoshihiro Shimoda
    Signed-off-by: Paul Mundt

    Shimoda, Yoshihiro
     
  • This has been obsolescent for a while; time for the final push.

    Signed-off-by: Rusty Russell
    Cc: Paul Mundt
    Cc: linux-sh@vger.kernel.org
    Signed-off-by: Paul Mundt

    Rusty Russell
     
  • Correct spelling "erorr" to "error" in
    arch/sh/drivers/pci/pci-sh7780.c

    Signed-off-by: Masanari Iida
    Signed-off-by: Paul Mundt

    Masanari Iida
     
  • With kernel 3.1, Christoph removed i_alloc_sem and replaced it with
    calls (namely inode_dio_wait() and inode_dio_done()) which are
    EXPORT_SYMBOL_GPL() thus they cannot be used by non-GPL file systems and
    further inode_dio_wait() was pushed from notify_change() into the file
    system ->setattr() method but no non-GPL file system can make this call.

    That means non-GPL file systems cannot exist any more unless they do not
    use any VFS functionality related to reading/writing as far as I can
    tell or at least as long as they want to implement direct i/o.

    Both Linus and Al (and others) have said on LKML that this breakage of
    the VFS API should not have happened and that the change was simply
    missed as it was not documented in the change logs of the patches that
    did those changes.

    This patch changes the two function exports in question to be
    EXPORT_SYMBOL() thus restoring the VFS API as it used to be - accessible
    for all modules.

    Christoph, who introduced the two functions and exported them GPL-only
    is CC-ed on this patch to give him the opportunity to object to the
    symbols being changed in this manner if he did indeed intend them to be
    GPL-only and does not want them to become available to all modules.

    Signed-off-by: Anton Altaparmakov
    CC: Christoph Hellwig
    Signed-off-by: Linus Torvalds

    Anton Altaparmakov
     
  • A fix from Jesper Juhl removes an assignment in an ASSERT when a compare
    is intended. Two fixes from Mitsuo Hayasaka address off-by-ones in XFS
    quota enforcement.

    * 'for-linus' of git://oss.sgi.com/xfs/xfs:
    xfs: make inode quota check more general
    xfs: change available ranges of softlimit and hardlimit in quota check
    XFS: xfs_trans_add_item() - don't assign in ASSERT() when compare is intended

    Linus Torvalds
     
  • BenH says:
    'Here are a few more powerpc bits for you. A stupid regression I
    introduced with my previous commit to "fix" program check exceptions
    (brown paper bag for me), fix the cpuidle default, a bug fix for
    something that isn't strictly speaking a regression but some upstream
    changes causes it to show in lockdep now while it didn't before, and
    finally a trivial one for rusty to make his life easier later on
    removing the old cpumask cruft. '

    * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc: Fix various issues with return to userspace
    cpuidle: Default y on powerpc pSeries
    powerpc: Fix program check handling when lockdep is enabled
    powerpc: Remove references to cpu_*_map

    Linus Torvalds
     
  • sound fixes for 3.3-rc5

    Just a collection of boring small fixes for ASoC, HD-audio Realtek
    and USB-audio drivers.

    * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: snd-usb-caiaq: Fix the return of XRUN
    ASoC: ak4642: fixup HeadPhone L/R dapm settings
    ALSA: hda/realtek - Fix surround output regression on Acer Aspire 5935
    ALSA: hda/realtek - Fix overflow of vol/sw check bitmap
    ALSA: usb-audio: avoid integer overflow in create_fixed_stream_quirk()
    ASoC: wm8962: Fix sidetone enumeration texts

    Linus Torvalds
     

23 Feb, 2012

4 commits

  • USB bugfixes for 3.3-rc4

    A number of new device ids, and a cleanup/fix for some of the option
    device ids that shouldn't have been added in the first place.

    There's also a few USB 3 fixes for problems that people have reported,
    and a usb-storage bugfix to round it out.

    Signed-off-by: Greg Kroah-Hartman

    * tag 'usb-3.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: Added Kamstrup VID/PIDs to cp210x serial driver.
    USB: Serial: ti_usb_3410_5052: Add Abbot Diabetes Care cable id
    usb-storage: fix freezing of the scanning thread
    xhci: Fix encoding for HS bulk/control NAK rate.
    USB: Set hub depth after USB3 hub reset
    USB: Fix handoff when BIOS disables host PCI device.
    USB: option: cleanup zte 3g-dongle's pid in option.c
    USB: Don't fail USB3 probe on missing legacy PCI IRQ.
    xhci: Fix oops caused by more USB2 ports than USB3 ports.
    USB: Remove duplicate USB 3.0 hub feature #defines.

    Linus Torvalds
     
  • Intel, radeon, exynos fixes.

    Intel: fixes a few Ivybridge hangs, along with fixing RC6 on SNB (still
    not on, but at least allows for distros to patch it on easily).

    radeon: oops reading some files in debugfs that weren't meant to appear,
    a fix that touches a lot of files, so looks worse than it is, it fixes
    an oops if a GPU reset fails and userspace keeps submitting more data,
    along with a minor BIOS fix for newer boards.

    exynos: a group of fixes for exynos, they've sent me a few more but
    these were all I got through, and its no hw vanilla kernel users see a
    lot off yet.

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/kms/atom: dpms bios scratch reg updates
    drm/radeon/kms: properly set accel working flag and bailout when false
    drm/radeon: Only create additional ring debugfs files on Cayman or newer.
    drm/exynos: added postclose to release resource.
    drm/exynos: removed exynos_drm_fbdev_recreate function.
    drm/exynos: fixed page flip issue.
    drm/exynos: added possible_clones setup function.
    drm/exynos: removed pageflip_event_list init code when closed.
    drm/exynos: changed priority of mixer layers.
    drm/exynos: Fix typo in exynos_mixer.c
    drm/i915: do not enable RC6p on Sandy Bridge
    drm/i915: gen7: Disable the RHWO optimization as it can cause GPU hangs.
    drm/i915: gen7: work around a system hang on IVB
    drm/i915: gen7: Implement an L3 caching workaround.
    drm/i915: gen7: implement rczunit workaround

    Linus Torvalds
     
  • It contains 3 important fixes for ColdFire based machines:
    - fix processes getting stuck when running from strace
    - fix kernel vmalloced pages not being visible in all kernel contexts
    - fix shared user pages sometimes being visible in another process
    context

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
    m68k: Do not set global share for non-kernel shared pages
    m68k: Add shared bit to Coldfire kernel page entries
    m68knommu: fix syscall tracing stuck process

    Linus Torvalds
     
  • Bugfixes for the NFS client.

    Fix a nasty Oops in the NFSv4 getacl code, another source of infinite
    loops in the NFSv4 state recovery code, and a regression in NFSv4.1
    session initialisation.

    Also deal with an NFSv4.1 memory leak.

    * tag 'nfs-for-3.3-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv4: fix server_scope memory leak
    NFSv4.1: Fix a NFSv4.1 session initialisation regression
    NFSv4: Ensure we throw out bad delegation stateids on NFS4ERR_BAD_STATEID
    NFSv4: Fix an Oops in the NFSv4 getacl code

    Linus Torvalds
     

22 Feb, 2012

21 commits

  • dpms bits not used on DCE4+

    Signed-off-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • If accel is not working many subsystem such as the ib pool might not be
    initialized properly that can lead to segfault inside kernel when cs
    ioctl is call with non working acceleration. To avoid this make sure
    the accel working flag is false when an error in GPU startup happen and
    return EBUSY from cs ioctl if accel is not working.

    Signed-off-by: Jerome Glisse
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46274

    Tested with a Cayman card in a Llano system: The additional files are created
    and working for the Cayman card but not created for the CPU's built-in GPU.

    Signed-off-by: Michel Dänzer
    Reviewed-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Michel Dänzer
     
  • …jbarnes/drm-intel into drm-fixes

    * 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-intel:
    drm/i915: do not enable RC6p on Sandy Bridge
    drm/i915: gen7: Disable the RHWO optimization as it can cause GPU hangs.
    drm/i915: gen7: work around a system hang on IVB
    drm/i915: gen7: Implement an L3 caching workaround.
    drm/i915: gen7: implement rczunit workaround

    Dave Airlie
     
  • Commit 3702b08 added a lock, but did not account for the case of
    SNDRV_PCM_POS_XRUN, which would get immediately overwritten.

    This could be bundled into one if-else-if statement, but the goto
    helps to clarify the 'exceptional' case.

    Thanks to Andreas Pape for spotting this.

    Signed-off-by: Mark Hills
    Acked-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Mark Hills
     
  • We have a few problems when returning to userspace. This is a
    quick set of fixes for 3.3, I'll look into a more comprehensive
    rework for 3.4. This fixes:

    - We kept interrupts soft-disabled when schedule'ing or calling
    do_signal when returning to userspace as a result of a hardware
    interrupt.

    - Rename do_signal to do_notify_resume like all other archs (and
    do_signal_pending back to do_signal, which it was before Roland
    changed it).

    - Add the missing call to key_replace_session_keyring() to
    do_notify_resume().

    Signed-off-by: Benjamin Herrenschmidt
    ---

    Benjamin Herrenschmidt
     
  • We moved all our pSeries idle loops to the cpu idle framework
    so we really want it to come up by default.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • In commit 54321242afe ("Disable interrupts early in Program Check"), we
    switched from enabling to disabling interrupts in program_check_common.

    Whereas ENABLE_INTS leaves r3 untouched, if lockdep is enabled DISABLE_INTS
    calls into lockdep code and will clobber r3. That means we pass a bogus
    struct pt_regs* into program_check_exception() and all hell breaks loose.

    So load our regs pointer into r3 after we call DISABLE_INTS.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Benjamin Herrenschmidt

    Michael Ellerman
     
  • This has been obsolescent for a while; time for the final push.

    In adjacent context, replaced old cpus_* with cpumask_*.

    Signed-off-by: Rusty Russell
    Signed-off-by: Benjamin Herrenschmidt

    Rusty Russell
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    maintainers: update my email address

    Linus Torvalds
     
  • A few more things this time around. The only thing warranting some
    commentry is the modpost change, which allows folk building a Thumb2
    enabled kernel to see section mismatch warnings. This is why many
    weren't noticed with OMAP.

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM/audit: include audit header and fix audit arch
    ARM: OMAP: fix voltage domain build errors with PM_OPP disabled
    ARM/PCI: Remove ARM's duplicate definition of 'pcibios_max_latency'
    ARM: 7336/1: smp_twd: Don't register CPUFREQ notifiers if local timers are not initialised
    ARM: 7327/1: need to include asm/system.h in asm/processor.h
    ARM: 7326/2: PL330: fix null pointer dereference in pl330_chan_ctrl()
    ARM: 7164/3: PL330: Fix the size of the dst_cache_ctrl field
    ARM: 7325/1: fix v7 boot with lockdep enabled
    ARM: 7324/1: modpost: Fix section warnings for ARM for many compilers
    ARM: 7323/1: Do not allow ARM_LPAE on pre-ARMv7 architectures

    Linus Torvalds
     
  • Update my email address.

    Signed-off-by: James Morris

    James Morris
     
  • The 'poll()' system call timeout parameter is supposed to be 'int', not
    'long'.

    Now, the reason this matters is that right now 32-bit compat mode is
    broken on at least x86-64, because the 32-bit code just calls
    'sys_poll()' directly on x86-64, and the 32-bit argument will have been
    zero-extended, turning a signed 'int' into a large unsigned 'long'
    value.

    We could just introduce a 'compat_sys_poll()' function for this, and
    that may eventually be what we have to do, but since the actual standard
    poll() semantics is *supposed* to be 'int', and since at least on x86-64
    glibc sign-extends the argument before invocing the system call (so
    nobody can actually use a 64-bit timeout value in user space _anyway_,
    even in 64-bit binaries), the simpler solution would seem to be to just
    fix the definition of the system call to match what it should have been
    from the very start.

    If it turns out that somebody somehow circumvents the user-level libc
    64-bit sign extension and actually uses a large unsigned 64-bit timeout
    despite that not being how poll() is supposed to work, we will need to
    do the compat_sys_poll() approach.

    Reported-by: Thomas Meyer
    Acked-by: Eric Dumazet
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This provides unified readq()/writeq() helper functions for 32-bit
    drivers.

    For some cases, readq/writeq without atomicity is harmful, and order of
    io access has to be specified explicitly. So in this patch, new two
    header files which contain non-atomic readq/writeq are added.

    - provides non-atomic readq/
    writeq with the order of lower address -> higher address

    - provides non-atomic readq/
    writeq with reversed order

    This allows us to remove some readq()s that were added drivers when the
    default non-atomic ones were removed in commit dbee8a0affd5 ("x86:
    remove 32-bit versions of readq()/writeq()")

    The drivers which need readq/writeq but can do with the non-atomic ones
    must add the line:

    #include /* or hi-lo.h */

    But this will be nop in 64-bit environments, and no other #ifdefs are
    required. So I believe that this patch can solve the problem of
    1. driver-specific readq/writeq
    2. atomicity and order of io access

    This patch is tested with building allyesconfig and allmodconfig as
    ARCH=x86 and ARCH=i386 on top of tip/master.

    Cc: Kashyap Desai
    Cc: Len Brown
    Cc: Ravi Anand
    Cc: Vikas Chaudhary
    Cc: Matthew Garrett
    Cc: Jason Uhlenkott
    Cc: James Bottomley
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Roland Dreier
    Cc: James Bottomley
    Cc: Alan Cox
    Cc: Matthew Wilcox
    Cc: Andrew Morton
    Signed-off-by: Hitoshi Mitake
    Signed-off-by: Linus Torvalds

    Hitoshi Mitake
     
  • Signed-off-by: Bruno Thomsen
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Bruno Thomsen
     
  • This USB-serial cable with mini stereo jack enumerates as:
    Bus 001 Device 004: ID 1a61:3410 Abbott Diabetes Care

    It is a TI3410 inside.

    Signed-off-by: Andrew Lunn
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Andrew Lunn
     
  • This patch (as1521b) fixes the interaction between usb-storage's
    scanning thread and the freezer. The current implementation has a
    race: If the device is unplugged shortly after being plugged in and
    just as a system sleep begins, the scanning thread may get frozen
    before the khubd task. Khubd won't be able to freeze until the
    disconnect processing is complete, and the disconnect processing can't
    proceed until the scanning thread finishes, so the sleep transition
    will fail.

    The implementation in the 3.2 kernel suffers from an additional
    problem. There the scanning thread calls set_freezable_with_signal(),
    and the signals sent by the freezer will mess up the thread's I/O
    delays, which are all interruptible.

    The solution to both problems is the same: Replace the kernel thread
    used for scanning with a delayed-work routine on the system freezable
    work queue. Freezable work queues have the nice property that you can
    cancel a work item even while the work queue is frozen, and no signals
    are needed.

    The 3.2 version of this patch solves the problem in Bugzilla #42730.

    Signed-off-by: Alan Stern
    Acked-by: Seth Forshee
    CC: stable
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • …l/git/sarah/xhci into usb-linus

    Hi Greg,

    Here's three bug fixes that should be queued for 3.3.

    The first fixes an issue we saw with an Intel Panther Point xHCI host,
    where a certain OSV's custom BIOS would disable the PCI device during
    boot. It changes the generic PCI quirks handler for all USB host
    controllers, but in a way both Jesse Barnes and Oliver Neukum have
    agreed is safe.

    The second patch is Elric Fu's first kernel patch! Congrats! It fixes
    a bug in the USB 3.0 hub reset handling.

    The last patch fixes a bug in the xHCI driver that feeds invalid input
    to the xHC host. Only the VIA host controller seems to have issues with
    it. Thanks to Felipe Contreras for testing this patch on his VIA host,
    and Andiry Xu for suggesting the fix.

    All three patches are marked for stable.

    Sarah Sharp

    Greg Kroah-Hartman
     
  • The xHCI 0.96 spec says that HS bulk and control endpoint NAK rate must
    be encoded as an exponent of two number of microframes. The endpoint
    descriptor has the NAK rate encoded in number of microframes. We were
    just copying the value from the endpoint descriptor into the endpoint
    context interval field, which was not correct. This lead to the VIA
    host rejecting the add of a bulk OUT endpoint from any USB 2.0 mass
    storage device.

    The fix is to use the correct encoding. Refactor the code to convert
    number of frames to an exponential number of microframes, and make sure
    we convert the number of microframes in HS bulk and control endpoints to
    an exponent.

    This should be back ported to kernels as old as 2.6.31, that contain the
    commit dfa49c4ad120a784ef1ff0717168aa79f55a483a "USB: xhci - fix math
    in xhci_get_endpoint_interval"

    Signed-off-by: Sarah Sharp
    Tested-by: Felipe Contreras
    Suggested-by: Andiry Xu
    Cc: stable@vger.kernel.org

    Sarah Sharp
     
  • The superspeed device attached to a USB 3.0 hub(such as VIA's)
    doesn't respond the address device command after resume. The
    root cause is the superspeed hub will miss the Hub Depth value
    that is used as an offset into the route string to locate the
    bits it uses to determine the downstream port number after
    reset, and all packets can't be routed to the device attached
    to the superspeed hub.

    Hub driver sends a Set Hub Depth request to the superspeed hub
    except for USB 3.0 root hub when the hub is initialized and
    doesn't send the request again after reset due to the resume
    process. So moving the code that sends the Set Hub Depth request
    to the superspeed hub from hub_configure() to hub_activate()
    is to cover those situations include initialization and reset.

    The patch should be backported to kernels as old as 2.6.39.

    Signed-off-by: Elric Fu
    Signed-off-by: Sarah Sharp
    Acked-by: Alan Stern
    Cc: stable@vger.kernel.org

    Elric Fu
     
  • On some systems with an Intel Panther Point xHCI host controller, the
    BIOS disables the xHCI PCI device during boot, and switches the xHCI
    ports over to EHCI. This allows the BIOS to access USB devices without
    having xHCI support.

    The downside is that the xHCI BIOS handoff mechanism will fail because
    memory mapped I/O is not enabled for the disabled PCI device.
    Jesse Barnes says this is expected behavior. The PCI core will enable
    BARs before quirks run, but it will leave it in an undefined state, and
    it may not have memory mapped I/O enabled.

    Make the generic USB quirk handler call pci_enable_device() to re-enable
    MMIO, and call pci_disable_device() once the host-specific BIOS handoff
    is finished. This will balance the ref counts in the PCI core. When
    the PCI probe function is called, usb_hcd_pci_probe() will call
    pci_enable_device() again.

    This should be back ported to kernels as old as 2.6.31. That was the
    first kernel with xHCI support, and no one has complained about BIOS
    handoffs failing due to memory mapped I/O being disabled on other hosts
    (EHCI, UHCI, or OHCI).

    Signed-off-by: Sarah Sharp
    Acked-by: Oliver Neukum
    Cc: Jesse Barnes
    Cc: stable@vger.kernel.org

    Sarah Sharp