From 61ec6e9fa944567022a135723e13d99516ef4481 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Thu, 25 Jan 2024 14:52:01 +0100 Subject: [PATCH] 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80245 Tested-by: build bot (Jenkins) Reviewed-by: Arthur Heymans --- src/cpu/x86/smm/pci_resource_store.c | 2 ++ src/include/cpu/x86/smm.h | 2 ++ 2 files changed, 4 insertions(+) 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]; -- 2.11.4.GIT