PCI: handle long delays in VPD access
authorStephen Hemminger <shemminger@vyatta.com>
Thu, 18 Dec 2008 17:17:16 +0000 (09:17 -0800)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 7 Jan 2009 19:13:16 +0000 (11:13 -0800)
commit1120f8b8169fb2cb51219d326892d963e762edb6
tree8ee86fe0b3dffa0ebff4406f1470092c4df84f25
parent904d6a303361a85bfa4c8181ef62a24edb8da0a8
PCI: handle long delays in VPD access

Accessing the VPD area can take a long time.  The existing
VPD access code fails consistently on my hardware. There are comments
in the SysKonnect vendor driver that it can take up to 13ms per word.

Change the access routines to:
  * use a mutex rather than spinning with IRQ's disabled and lock held
  * have a much longer timeout
  * call cond_resched while spinning

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Reviewed-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/access.c