PCI: add interface to set visible size of VPD

The VPD on all devices may not be 32K. Unfortunately, there is no
generic way to find the size, so this adds a simple API hook
to reset it.

Signed-off-by: Stephen Hemminger <[email protected]>
Signed-off-by: Jesse Barnes <[email protected]>
This commit is contained in:
Stephen Hemminger 2008-12-18 09:17:16 -08:00 • committed by Jesse Barnes
commit db5679437a
2 changed files with 24 additions and 0 deletions

View file

@ -339,6 +339,29 @@ int pci_vpd_pci22_init(struct pci_dev *dev)
return 0;
}
/**
* pci_vpd_truncate - Set available Vital Product Data size
* @dev: pci device struct
* @size: available memory in bytes
*
* Adjust size of available VPD area.
*/
int pci_vpd_truncate(struct pci_dev *dev, size_t size)
{
if (!dev->vpd)
return -EINVAL;
/* limited by the access method */
if (size > dev->vpd->len)
return -EINVAL;
dev->vpd->len = size;
dev->vpd->attr->size = size;
return 0;
}
EXPORT_SYMBOL(pci_vpd_truncate);
/**
* pci_block_user_cfg_access - Block userspace PCI config reads/writes
* @dev: pci device struct