1. 15 3月, 2012 3 次提交
  2. 01 3月, 2012 6 次提交
  3. 27 2月, 2012 2 次提交
  4. 25 2月, 2012 4 次提交
  5. 24 2月, 2012 6 次提交
    • O
      iommu/omap: fix NULL pointer dereference · 87997aaa
      Ohad Ben-Cohen 提交于
      Fix this:
      
      root@omap4430-panda:~# cat /debug/iommu/ducati/mem
      [   62.725708] Unable to handle kernel NULL pointer dereference at virtual addre
      ss 0000001c
      [   62.725708] pgd = e6240000
      [   62.737091] [0000001c] *pgd=a7168831, *pte=00000000, *ppte=00000000
      [   62.743682] Internal error: Oops: 17 [#1] SMP
      [   62.743682] Modules linked in: omap_iommu_debug omap_iovmm virtio_rpmsg_bus o
      map_remoteproc remoteproc virtio_ring virtio mailbox_mach mailbox
      [   62.743682] CPU: 0    Not tainted  (3.3.0-rc1-00265-g382f84e-dirty #682)
      [   62.743682] PC is at debug_read_mem+0x5c/0xac [omap_iommu_debug]
      [   62.743682] LR is at 0x1004
      [   62.777832] pc : [<bf033178>]    lr : [<00001004>]    psr: 60000013
      [   62.777832] sp : e72c7f40  ip : c0763c00  fp : 00000001
      [   62.777832] r10: 00000000  r9 : 00000000  r8 : e72c7f80
      [   62.777832] r7 : e6ffdc08  r6 : bed1ac78  r5 : 00001000  r4 : e7276000
      [   62.777832] r3 : e60f3460  r2 : 00000000  r1 : e60f38c0  r0 : 00000000
      [   62.777832] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [   62.816375] Control: 10c53c7d  Table: a624004a  DAC: 00000015
      [   62.816375] Process cat (pid: 1176, stack limit = 0xe72c62f8)
      [   62.828369] Stack: (0xe72c7f40 to 0xe72c8000)
      ...
      [   62.884185] [<bf033178>] (debug_read_mem+0x5c/0xac [omap_iommu_debug]) from [<c010e354>] (vfs_read+0xac/0x130)
      [   62.884185] [<c010e354>] (vfs_read+0xac/0x130) from [<c010e4a8>] (sys_read+0x40/0x70)
      [   62.884185] [<c010e4a8>] (sys_read+0x40/0x70) from [<c0014a00>] (ret_fast_syscall+0x0/0x3c)
      
      Fix also its 'echo bla > /debug/iommu/ducati/mem' Oops sibling, too.
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Hiroshi Doyu <hdoyu@nvidia.com>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Joerg Roedel <Joerg.Roedel@amd.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      87997aaa
    • O
      iommu/omap: fix erroneous omap-iommu-debug API calls · 46451d62
      Ohad Ben-Cohen 提交于
      Adapt omap-iommu-debug to the latest omap-iommu API changes, which
      were introduced by commit fabdbca8 "iommu/omap: eliminate the public
      omap_find_iommu_device() method".
      
      In a nutshell, iommu users are not expected to provide the omap_iommu
      handle anymore - instead, iommus are attached using their user's device
      handle.
      
      omap-iommu-debug is a hybrid beast though: it invokes both public and
      private omap iommu API, so fix it as necessary (otherwise a crash
      is imminent).
      
      Note: omap-iommu-debug is a bit disturbing, as it fiddles with internal
      omap iommu data and requires exposing API which is otherwise not needed.
      It should better be more tightly coupled with omap-iommu, to prevent
      further bit rot and avoid exposing redundant API. Naturally that's out
      of scope for the -rc cycle, so for now just fix the obvious.
      Reported-by: NRussell King <linux@arm.linux.org.uk>
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Hiroshi Doyu <hdoyu@nvidia.com>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Joerg Roedel <Joerg.Roedel@amd.com>
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      46451d62
    • C
      davinci_emac: Do not free all rx dma descriptors during init · 5d697032
      Christian Riesch 提交于
      This patch fixes a regression that was introduced by
      
      commit 0a5f3846
      davinci_emac: Add Carrier Link OK check in Davinci RX Handler
      
      Said commit adds a check whether the carrier link is ok. If the link is
      not ok, the skb is freed and no new dma descriptor added to the rx dma
      channel. This causes trouble during initialization when the carrier
      status has not yet been updated. If a lot of packets are received while
      netif_carrier_ok returns false, all dma descriptors are freed and the
      rx dma transfer is stopped.
      
      The bug occurs when the board is connected to a network with lots of
      traffic and the ifconfig down/up is done, e.g., when reconfiguring
      the interface with DHCP.
      
      The bug can be reproduced by flood pinging the davinci board while doing
      ifconfig eth0 down
      ifconfig eth0 up
      on the board.
      
      After that, the rx path stops working and the overrun value reported
      by ifconfig is counting up.
      
      This patch reverts commit 0a5f3846
      and instead issues warnings only if cpdma_chan_submit returns -ENOMEM.
      Signed-off-by: NChristian Riesch <christian.riesch@omicron.at>
      Cc: <stable@vger.kernel.org>
      Cc: Hegde, Vinay <vinay.hegde@ti.com>
      Cc: Cyril Chemparathy <cyril@ti.com>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Tested-by: NRajashekhara, Sudhakar <sudhakar.raj@ti.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5d697032
    • Y
    • G
      phy: IC+101G and PHY_HAS_INTERRUPT flag · e3e09f26
      Giuseppe CAVALLARO 提交于
      This patch adds the PHY_HAS_INTERRUPT flag for IC+101 device series.
      Also the patch does a simple dity-up to signal that
      the driver actually is for IP101A LF and IP101G devices.
      In fact, these are two similar PHYs that have the same IDs
      and mainly differ for the EEE capability supported in the
      G series.
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e3e09f26
    • D
      netdev/phy/icplus: Correct broken phy_init code · b8e3995a
      David McKay 提交于
      The code for ip1001_config_init() was totally broken if you were not
      using RGMII. Instead of returning an error code or zero it actually
      returned the value in the IP1001_SPEC_CTRL_STATUS_2 register. It was
      also trying to set the IP1001_APS_ON bit , but never actually wrote
      back the register.
      
      The error checking was also incorrect in both this function and the
      reset function, so this patch fixes that up in a consistent fashion.
      Signed-off-by: NDavid McKay <david.mckay@st.com>
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b8e3995a
  6. 23 2月, 2012 8 次提交
    • N
      hwmon: (f75375s) Fix register write order when setting fans to full speed · c1c1a3d0
      Nikolaus Schulz 提交于
      By hwmon sysfs interface convention, setting pwm_enable to zero sets a fan
      to full speed.  In the f75375s driver, this need be done by enabling
      manual fan control, plus duty mode for the F875387 chip, and then setting
      the maximum duty cycle.  Fix a bug where the two necessary register writes
      were swapped, effectively discarding the setting to full-speed.
      Signed-off-by: NNikolaus Schulz <mail@microschulz.de>
      Cc: Riku Voipio <riku.voipio@iki.fi>
      Signed-off-by: NGuenter Roeck <guenter.roeck@ericsson.com>
      c1c1a3d0
    • G
      hwmon: (ads1015) Fix file leak in probe function · 363434b5
      Guenter Roeck 提交于
      An error while creating sysfs attribute files in the driver's probe function
      results in an error abort, but already created files are not removed. This patch
      fixes the problem.
      Signed-off-by: NGuenter Roeck <guenter.roeck@ericsson.com>
      Cc: stable@vger.kernel.org # 3.0+
      Cc: Dirk Eibach <eibach@gdsys.de>
      Acked-by: NJean Delvare <khali@linux-fr.org>
      363434b5
    • D
      mlx4_core: Exported functions can't be static · 22c8bff6
      Doug Ledford 提交于
      At least on powerpc, it breaks the build if exported functions are
      static.  Fix some static exported functions introduced with the mlx4
      SR-IOV support added in 3.3-rc1.
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      22c8bff6
    • S
      Move Logitech Harmony 900 from cdc_ether to zaurus · ee932bf9
      Scott Talbert 提交于
      In the current kernel implementation, the Logitech Harmony 900 remote
      control is matched to the cdc_ether driver through the generic
      USB_CDC_SUBCLASS_MDLM entry.  However, this device appears to be of the
      pseudo-MDLM (Belcarra) type, rather than the standard one.  This patch
      blacklists the Harmony 900 from the cdc_ether driver and whitelists it for
      the pseudo-MDLM driver in zaurus.
      Signed-off-by: NScott Talbert <talbert@techie.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ee932bf9
    • D
      hso: memsetting wrong data in hso_get_count() · 22ad7499
      Dan Carpenter 提交于
      The intent was to clear out the icount struct here, but we accidentally
      clear stack memory instead.  It probably will lead to a NULL dereference
      right away.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22ad7499
    • R
      ethernet/broadcom: ip6_route_output() never returns NULL. · 0541743b
      RongQing.Li 提交于
      ip6_route_output() never returns NULL, so it is wrong to
      check if the return value is NULL.
      Signed-off-by: NRongQing.Li <roy.qing.li@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0541743b
    • G
      jme: Fix FIFO flush issue · ba9adbe6
      Guo-Fu Tseng 提交于
      Set the RX FIFO flush watermark lower.
      According to Federico and JMicron's reply,
      setting it to 16QW would be stable on most platforms.
      Otherwise, user might experience packet drop issue.
      
      CC: stable@kernel.org
      Reported-by: NFederico Quagliata <federico@quagliata.org>
      Fixed-by: NFederico Quagliata <federico@quagliata.org>
      Signed-off-by: NGuo-Fu Tseng <cooldavid@cooldavid.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ba9adbe6
    • M
      [SCSI] scsi_dh_rdac: Fix for unbalanced reference count · 3569e537
      Moger, Babu 提交于
      This patch fixes an unbalanced refcount issue.
      
      Elevating the lock for both kref_put and also for controller node deletion.
      Previously, controller deletion was protected but the not the kref_put. This
      was causing the other thread to pick up the controller structure which was
      already kref'd zero.
      
      This was causing the following WARN_ON and also sometimes panic.
      
      WARNING: at lib/kref.c:43 kref_get+0x2d/0x30() (Not tainted)
      Hardware name: IBM System x3655 -[7985AC1]-
      Modules linked in: fuse scsi_dh_rdac autofs4 nfs lockd fscache nfs_acl
      auth_rpcgss sunrpc 8021q garp stp llc ipv6 ib_srp(U) scsi_transport_srp
      scsi_tgt ib_cm(U) ib_sa(U) ib_uverbs(U) ib_umad(U) mlx4_ib(U) mlx4_core(U)
      ib_mthca(U) ib_mad(U) ib_core(U) dm_mirror dm_region_hash dm_log dm_round_robin
      dm_multipath uinput bnx2 ses enclosure sg ibmpex ibmaem ipmi_msghandler
      serio_raw k8temp hwmon amd64_edac_mod edac_core edac_mce_amd shpchp i2c_piix4
      ext4 mbcache jbd2 sr_mod cdrom sd_mod crc_t10dif sata_svw pata_acpi ata_generic
      pata_serverworks aacraid radeon ttm drm_kms_helper drm i2c_algo_bit i2c_core
      dm_mod [last unloaded: freq_table]
      Pid: 13735, comm: srp_daemon Not tainted 2.6.32-71.el6.x86_64 #1
      Call Trace:
      [<ffffffff8106b857>] warn_slowpath_common+0x87/0xc0
      [<ffffffff8106b8aa>] warn_slowpath_null+0x1a/0x20
      [<ffffffff8125c39d>] kref_get+0x2d/0x30
      [<ffffffffa01b4029>] rdac_bus_attach+0x459/0x580 [scsi_dh_rdac]
      [<ffffffff8135232a>] scsi_dh_handler_attach+0x2a/0x80
      [<ffffffff81352c7b>] scsi_dh_notifier+0x9b/0xa0
      [<ffffffff814cd7a5>] notifier_call_chain+0x55/0x80
      [<ffffffff8109711a>] __blocking_notifier_call_chain+0x5a/0x80
      [<ffffffff81097156>] blocking_notifier_call_chain+0x16/0x20
      [<ffffffff8132bec5>] device_add+0x515/0x640
      [<ffffffff813329e4>] ? attribute_container_device_trigger+0xc4/0xe0
      [<ffffffff8134f659>] scsi_sysfs_add_sdev+0x89/0x2c0
      [<ffffffff8134d096>] scsi_probe_and_add_lun+0xea6/0xed0
      [<ffffffff8134beb2>] ? scsi_alloc_target+0x292/0x2d0
      [<ffffffff8134d1e1>] __scsi_scan_target+0x121/0x750
      [<ffffffff811df806>] ? sysfs_create_file+0x26/0x30
      [<ffffffff8132b759>] ? device_create_file+0x19/0x20
      [<ffffffff81332838>] ? attribute_container_add_attrs+0x78/0x90
      [<ffffffff814b008c>] ? klist_next+0x4c/0xf0
      [<ffffffff81332e30>] ? transport_configure+0x0/0x20
      [<ffffffff813329e4>] ? attribute_container_device_trigger+0xc4/0xe0
      [<ffffffff8134df40>] scsi_scan_target+0xd0/0xe0
      [<ffffffffa02f053a>] srp_create_target+0x75a/0x890 [ib_srp]
      [<ffffffff8132a130>] dev_attr_store+0x20/0x30
      [<ffffffff811df145>] sysfs_write_file+0xe5/0x170
      [<ffffffff8116c818>] vfs_write+0xb8/0x1a0
      [<ffffffff810d40a2>] ? audit_syscall_entry+0x272/0x2a0
      [<ffffffff8116d251>] sys_write+0x51/0x90
      [<ffffffff81013172>] system_call_fastpath+0x16/0x1b
      Signed-off-by: NBabu Moger <babu.moger@netapp.com>
      Acked-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      3569e537
  7. 22 2月, 2012 11 次提交
    • 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
    • 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
    • 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
    • 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