acpi/acpi.c: Accomodate 64bit MMCONF base in MCFG table

Allow the use of 64bit MMCONF base in MCFG table.
Previously only 32 bits were utilized for MMCONF base, while the
remaining 32bits were reserved & held value of zero as evident from MCFG
table disassembly. This commit entails updating the 'base_address' field
in the 'mmconfig' structure to 64 bits and removing the 'base_reserved'
field.

TEST=Confirmed the functionality of the 64bit MMCONF base in the MCFG
table disassembly below

            Signature : "MCFG"
         Table Length : 0000003C
             Revision : 01
             Checksum : BD
               Oem ID : "COREv4"
         Oem Table ID : "COREBOOT"
         Oem Revision : 00000000
      Asl Compiler ID : "CORE"
Asl Compiler Revision : 20230628

             Reserved : 0000000000000000

         Base Address : 0000001010000000
 Segment Group Number : 0000
     Start Bus Number : 00
       End Bus Number : FF
             Reserved : 00000000

Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com>
Change-Id: I2f4bc727c3239bf941e1a09bc277ed66ae6b0185
Reviewed-on: https://review.coreboot.org/c/coreboot/+/77539
Reviewed-by: Tim Wawrzynczak <inforichland@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Naresh Solanki 2023-08-25 12:58:11 +02:00 committed by Martin L Roth
parent d888f61f08
commit 4d0b18480d
2 changed files with 2 additions and 4 deletions

View File

@ -117,12 +117,11 @@ static enum cb_err acpi_fill_header(acpi_header_t *header, const char name[4],
return CB_SUCCESS; return CB_SUCCESS;
} }
static int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u32 base, static int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u64 base,
u16 seg_nr, u8 start, u8 end) u16 seg_nr, u8 start, u8 end)
{ {
memset(mmconfig, 0, sizeof(*mmconfig)); memset(mmconfig, 0, sizeof(*mmconfig));
mmconfig->base_address = base; mmconfig->base_address = base;
mmconfig->base_reserved = 0;
mmconfig->pci_segment_group_number = seg_nr; mmconfig->pci_segment_group_number = seg_nr;
mmconfig->start_bus_number = start; mmconfig->start_bus_number = start;
mmconfig->end_bus_number = end; mmconfig->end_bus_number = end;

View File

@ -217,8 +217,7 @@ typedef struct acpi_tpm2 {
} __packed acpi_tpm2_t; } __packed acpi_tpm2_t;
typedef struct acpi_mcfg_mmconfig { typedef struct acpi_mcfg_mmconfig {
u32 base_address; u64 base_address;
u32 base_reserved;
u16 pci_segment_group_number; u16 pci_segment_group_number;
u8 start_bus_number; u8 start_bus_number;
u8 end_bus_number; u8 end_bus_number;