summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2024-01-25 14:52:01 +0100
committerLean Sheng Tan <sheng.tan@9elements.com>2024-01-31 14:47:54 +0000
commit61ec6e9fa944567022a135723e13d99516ef4481 (patch)
treefda9a7da562b273c0e7dad7ec0ff0b2182f2bd26
parentd42125cb95c75270dbccce1e038a9aa7e5aaca4f (diff)
cpu/x86/smm/pci_resource_store: Store DEV/VEN ID
Allow SMM to verify the list of provided PCI devices by comparing the device and vendor ID for each PCI device. Change-Id: I7086fa450fcb117ef8767c199c30462c1ab1e1b6 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/80245 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
-rw-r--r--src/cpu/x86/smm/pci_resource_store.c2
-rw-r--r--src/include/cpu/x86/smm.h2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/cpu/x86/smm/pci_resource_store.c b/src/cpu/x86/smm/pci_resource_store.c
index 56bb766cc3..f1d3e28d03 100644
--- a/src/cpu/x86/smm/pci_resource_store.c
+++ b/src/cpu/x86/smm/pci_resource_store.c
@@ -34,6 +34,8 @@ bool smm_pci_resource_store_fill_resources(struct smm_pci_resource_info *slots,
slots[i_slot].pci_addr = pci_addr;
slots[i_slot].class_device = PCI_CLASS_GET_DEVICE(devices[i_dev]->class);
slots[i_slot].class_prog = PCI_CLASS_GET_PROG(devices[i_dev]->class);
+ slots[i_slot].vendor_id = devices[i_dev]->vendor;
+ slots[i_slot].device_id = devices[i_dev]->device;
/* Use the resource list to get our BARs. */
if (!devices[i_dev]->resource_list)
diff --git a/src/include/cpu/x86/smm.h b/src/include/cpu/x86/smm.h
index dfb27cd202..beb88faeab 100644
--- a/src/include/cpu/x86/smm.h
+++ b/src/include/cpu/x86/smm.h
@@ -73,6 +73,8 @@ extern unsigned char _binary_smm_end[];
struct smm_pci_resource_info {
pci_devfn_t pci_addr;
+ uint16_t vendor_id;
+ uint16_t device_id;
uint16_t class_device;
uint8_t class_prog;
struct resource resources[SMM_PCI_RESOURCE_STORE_NUM_RESOURCES];