summaryrefslogtreecommitdiff
path: root/src/include/acpi
diff options
context:
space:
mode:
authorMatt DeVillier <matt.devillier@amd.corp-partner.google.com>2023-09-03 12:51:58 -0500
committerFelix Held <felix-coreboot@felixheld.de>2023-09-06 22:07:38 +0000
commit7c04d0e6fdaedaf6ee336485df939963fa6c0c1a (patch)
treee6eee54724e10cfed2147581f059447da6645c4d /src/include/acpi
parentbfd85218a72ef057a7c150358a0f6983639f86dc (diff)
device/pci_rom: Set VBIOS checksum when filling VFCT table
AMD's Windows display drivers validate the checksum of the VBIOS data in the VFCT table (which gets modified by the FSP GOP driver), so ensure it is set correctly after copying the VBIOS into the table if the FSP GOP driver was run. Without the correct checksum, the Windows GPU drivers will fail to load with a code 43 error in Device Manager. Thanks to coolstar for root causing the issue. TEST=build/boot Win11 on google/skyrim (frostflow), ensure GPU driver loaded and functional. Change-Id: I809f87865fd2a25fb106444574b619746aec068d Signed-off-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Signed-off-by: CoolStar <coolstarorganization@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/77628 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Diffstat (limited to 'src/include/acpi')
-rw-r--r--src/include/acpi/acpi.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h
index 3a7c99c5a0..16fe912b39 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -466,6 +466,8 @@ typedef struct acpi_lpi_desc_ncst {
uint64_t counter_frequency; /* Frequency in cycles per second - 0 means TSC freq */
} __packed acpi_lpi_desc_ncst_t;
+#define VFCT_VBIOS_CHECKSUM_OFFSET 0x21
+
/* VFCT image header */
typedef struct acpi_vfct_image_hdr {
u32 PCIBus;
@@ -477,7 +479,7 @@ typedef struct acpi_vfct_image_hdr {
u16 SSID;
u32 Revision;
u32 ImageLength;
- u8 VbiosContent; // dummy - copy VBIOS here
+ u8 VbiosContent[]; // dummy - copy VBIOS here
} __packed acpi_vfct_image_hdr_t;
/* VFCT (VBIOS Fetch Table) */