Re: [PATCH v4 11/11] PCI: Sleep rather than busy-wait for VPD access completion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/23/2016 08:47 AM, Bjorn Helgaas wrote:
> Use usleep_range() instead of udelay() while waiting for a VPD access to
> complete.  This is not a performance path, so no need to hog the CPU.
> 
> Rationale for usleep_range() parameters:
> 
>   We clear PCI_VPD_ADDR_F for a read (or set it for a write), then wait for
>   the device to change it.  For a device that updates PCI_VPD_ADDR between
>   our config write and subsequent config read, we won't sleep at all and
>   can get the device's maximum rate.
> 
>   Sleeping a minimum of 10 usec per 4-byte access limits throughput to
>   about 400Kbytes/second.  VPD is small (32K bytes at most), and most
>   devices use only a fraction of that.
> 
>   We back off exponentially up to 1024 usec per iteration.  If we reach
>   1024, we've already waited up to 1008 usec (16 + 32 + ...  + 512), so if
>   we miss an update and wait an extra 1024 usec, we can still get about 1/2
>   of the device's maximum rate.
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> ---
Reviewed-by: Hannes Reinecke <hare@xxxxxxxx>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@xxxxxxx			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux