|
@@ -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
|