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>
This commit is contained in:
Patrick Rudolph
2024-01-25 14:52:01 +01:00
committed by Lean Sheng Tan
parent d42125cb95
commit 61ec6e9fa9
2 changed files with 4 additions and 0 deletions

View File

@@ -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].pci_addr = pci_addr;
slots[i_slot].class_device = PCI_CLASS_GET_DEVICE(devices[i_dev]->class); 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].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. */ /* Use the resource list to get our BARs. */
if (!devices[i_dev]->resource_list) if (!devices[i_dev]->resource_list)

View File

@@ -73,6 +73,8 @@ extern unsigned char _binary_smm_end[];
struct smm_pci_resource_info { struct smm_pci_resource_info {
pci_devfn_t pci_addr; pci_devfn_t pci_addr;
uint16_t vendor_id;
uint16_t device_id;
uint16_t class_device; uint16_t class_device;
uint8_t class_prog; uint8_t class_prog;
struct resource resources[SMM_PCI_RESOURCE_STORE_NUM_RESOURCES]; struct resource resources[SMM_PCI_RESOURCE_STORE_NUM_RESOURCES];