1. 25 2月, 2012 3 次提交
    • L
      Merge tag 'rmobile-for-linus' of git://github.com/pmundt/linux-sh · 37e79cbf
      Linus Torvalds 提交于
      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
      37e79cbf
    • L
      Merge tag 'sh-for-linus' of git://github.com/pmundt/linux-sh · 0e69e084
      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.
      0e69e084
    • A
      mm: memcg: Correct unregistring of events attached to the same eventfd · 371528ca
      Anton Vorontsov 提交于
      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: [<ffffffff810be32c>] mem_cgroup_usage_unregister_event+0x9c/0x1f0
       Pid: 574, comm: kworker/0:2 Not tainted 3.3.0-rc4+ #9 Bochs Bochs
       RIP: 0010:[<ffffffff810be32c>]  [<ffffffff810be32c>] mem_cgroup_usage_unregister_event+0x9c/0x1f0
       RSP: 0018:ffff88001d0b9d60  EFLAGS: 00010246
       Process kworker/0:2 (pid: 574, threadinfo ffff88001d0b8000, task ffff88001de91cc0)
       Call Trace:
        [<ffffffff8107092b>] cgroup_event_remove+0x2b/0x60
        [<ffffffff8103db94>] process_one_work+0x174/0x450
        [<ffffffff8103e413>] worker_thread+0x123/0x2d0
      
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NAnton Vorontsov <anton.vorontsov@linaro.org>
      Acked-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Kirill A. Shutemov <kirill@shutemov.name>
      Cc: Michal Hocko <mhocko@suse.cz>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      371528ca
  2. 24 2月, 2012 12 次提交
  3. 23 2月, 2012 4 次提交
    • L
      Merge tag 'usb-3.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 45196cee
      Linus Torvalds 提交于
      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: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      * 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.
      45196cee
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · e2d4370b
      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
      e2d4370b
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · 71c01b9d
      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
      71c01b9d
    • L
      Merge tag 'nfs-for-3.3-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 437cf4c7
      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
      437cf4c7
  4. 22 2月, 2012 21 次提交
    • A
      drm/radeon/kms/atom: dpms bios scratch reg updates · 3ac0eb6d
      Alex Deucher 提交于
      dpms bits not used on DCE4+
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      3ac0eb6d
    • J
      drm/radeon/kms: properly set accel working flag and bailout when false · 6b7746e8
      Jerome Glisse 提交于
      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: NJerome Glisse <jglisse@redhat.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      6b7746e8
    • M
      drm/radeon: Only create additional ring debugfs files on Cayman or newer. · f0d14daa
      Michel Dänzer 提交于
      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: NMichel Dänzer <michel.daenzer@amd.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      f0d14daa
    • D
      Merge branch 'drm-intel-fixes' of... · bb757a7e
      Dave Airlie 提交于
      Merge branch 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/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
      bb757a7e
    • M
      ALSA: snd-usb-caiaq: Fix the return of XRUN · cb74eb15
      Mark Hills 提交于
      Commit 3702b082 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: NMark Hills <mark@pogo.org.uk>
      Acked-by: NDaniel Mack <zonque@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      cb74eb15
    • B
      powerpc: Fix various issues with return to userspace · 18b246fa
      Benjamin Herrenschmidt 提交于
      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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ---
      18b246fa
    • B
      cpuidle: Default y on powerpc pSeries · aa491ad3
      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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      aa491ad3
    • M
      powerpc: Fix program check handling when lockdep is enabled · 922b9f86
      Michael Ellerman 提交于
      In commit 54321242 ("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: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      922b9f86
    • R
      powerpc: Remove references to cpu_*_map · 07d2f1a5
      Rusty Russell 提交于
      This has been obsolescent for a while; time for the final push.
      
      In adjacent context, replaced old cpus_* with cpumask_*.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      07d2f1a5
    • L
    • L
      Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm · 6b0d1abb
      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
      6b0d1abb
    • J
      maintainers: update my email address · 9b45c0d2
      James Morris 提交于
      Update my email address.
      Signed-off-by: NJames Morris <james.l.morris@oracle.com>
      9b45c0d2
    • L
      sys_poll: fix incorrect type for 'timeout' parameter · faf30900
      Linus Torvalds 提交于
      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: NThomas Meyer <thomas@m3y3r.de>
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      faf30900
    • H
      asm-generic: architecture independent readq/writeq for 32bit environment · 797a796a
      Hitoshi Mitake 提交于
      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.
      
       - <asm-generic/io-64-nonatomic-lo-hi.h> provides non-atomic readq/
         writeq with the order of lower address -> higher address
      
       - <asm-generic/io-64-nonatomic-hi-lo.h> 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 dbee8a0a ("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 <asm-generic/io-64-nonatomic-lo-hi.h> /* 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 <Kashyap.Desai@lsi.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Ravi Anand <ravi.anand@qlogic.com>
      Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Cc: Jason Uhlenkott <juhlenko@akamai.com>
      Cc: James Bottomley <James.Bottomley@parallels.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Roland Dreier <roland@purestorage.com>
      Cc: James Bottomley <jbottomley@parallels.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Matthew Wilcox <matthew.r.wilcox@intel.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NHitoshi Mitake <h.mitake@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      797a796a
    • B
      USB: Added Kamstrup VID/PIDs to cp210x serial driver. · c6c1e449
      Bruno Thomsen 提交于
      Signed-off-by: NBruno Thomsen <bruno.thomsen@gmail.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c6c1e449
    • A
      USB: Serial: ti_usb_3410_5052: Add Abbot Diabetes Care cable id · 7fd25702
      Andrew Lunn 提交于
      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: NAndrew Lunn <andrew@lunn.ch>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7fd25702
    • A
      usb-storage: fix freezing of the scanning thread · bb94a406
      Alan Stern 提交于
      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: NAlan Stern <stern@rowland.harvard.edu>
      Acked-by: NSeth Forshee <seth.forshee@canonical.com>
      CC: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bb94a406
    • G
      Merge tag 'for-usb-linus-2012-02-21' of... · 9a9a71b7
      Greg Kroah-Hartman 提交于
      Merge tag 'for-usb-linus-2012-02-21' of git://git.kernel.org/pub/scm/linux/kernel/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
      9a9a71b7
    • S
      xhci: Fix encoding for HS bulk/control NAK rate. · 340a3504
      Sarah Sharp 提交于
      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 dfa49c4a "USB: xhci - fix math
      in xhci_get_endpoint_interval"
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: NFelipe Contreras <felipe.contreras@gmail.com>
      Suggested-by: NAndiry Xu <andiry.xu@amd.com>
      Cc: stable@vger.kernel.org
      340a3504
    • E
      USB: Set hub depth after USB3 hub reset · a45aa3b3
      Elric Fu 提交于
      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: NElric Fu <elricfu1@gmail.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: stable@vger.kernel.org
      a45aa3b3
    • S
      USB: Fix handoff when BIOS disables host PCI device. · cab928ee
      Sarah Sharp 提交于
      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: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Acked-by: NOliver Neukum <oneukum@suse.de>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: stable@vger.kernel.org
      cab928ee