Nico Huber has uploaded this change for review.
pcidev: Always fetch ident info
As discovered earlier[1], the `vendor_id` and `device_id` fields are not
always automatically set. However, we use these fields throughout flash-
rom. To not lose track when we actually fetched them, let's always call
pci_fill_info(PCI_FILL_IDENT) before returning a `pci_dev` handle.
[1] Commit ca2e3bce0 (pcidev.c: populate IDs with pci_fill_info())
Signed-off-by: Nico Huber <nico.h@gmx.de>
Change-Id: Iae2511178bec44343cbe902722fdca9eda036059
Ticket: https://ticket.coreboot.org/issues/367
---
M pcidev.c
1 file changed, 10 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/73/64573/1
diff --git a/pcidev.c b/pcidev.c
index 7fb6f1d..5a5a377 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -151,9 +151,12 @@
struct pci_dev *pcidev_scandev(struct pci_filter *filter, struct pci_dev *start)
{
struct pci_dev *temp;
- for (temp = start ? start->next : pacc->devices; temp; temp = temp->next)
- if (pci_filter_match(filter, temp))
+ for (temp = start ? start->next : pacc->devices; temp; temp = temp->next) {
+ if (pci_filter_match(filter, temp)) {
+ pci_fill_info(temp, PCI_FILL_IDENT);
return temp;
+ }
+ }
return NULL;
}
@@ -190,14 +193,17 @@
struct pci_dev *pcidev_getdevfn(struct pci_dev *dev, const int func)
{
#if !defined(OLD_PCI_GET_DEV)
- return pci_get_dev(pacc, dev->domain, dev->bus, dev->dev, func);
+ struct pci_dev *const new = pci_get_dev(pacc, dev->domain, dev->bus, dev->dev, func);
#else
/* pciutils/libpci before version 2.2 is too old to support
* PCI domains. Such old machines usually don't have domains
* besides domain 0, so this is not a problem.
*/
- return pci_get_dev(pacc, dev->bus, dev->dev, func);
+ struct pci_dev *const new = pci_get_dev(pacc, dev->bus, dev->dev, func);
#endif
+ if (new)
+ pci_fill_info(new, PCI_FILL_IDENT);
+ return new;
}
struct pci_dev *pcidev_find_vendorclass(uint16_t vendor, uint16_t devclass)
To view, visit change 64573. To unsubscribe, or for help writing mail filters, visit settings.