diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h index ca1ec7d894..87c99a1eb3 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -595,7 +595,8 @@ typedef struct acpi_ivrs_ivhd_11 { struct ivhd11_iommu_attr iommu_attributes; uint32_t efr_reg_image_low; uint32_t efr_reg_image_high; - uint32_t reserved[2]; + uint32_t efr_reg_image2_low; + uint32_t efr_reg_image2_high; uint8_t entry[]; } __packed acpi_ivrs_ivhd11_t; diff --git a/src/include/acpi/acpi_ivrs.h b/src/include/acpi/acpi_ivrs.h index ad86e6a2f3..3efd654e53 100644 --- a/src/include/acpi/acpi_ivrs.h +++ b/src/include/acpi/acpi_ivrs.h @@ -200,7 +200,8 @@ typedef struct acpi_ivrs_ivhd_40 { uint32_t iommu_attributes; uint32_t efr_reg_image_low; uint32_t efr_reg_image_high; - uint32_t reserved[2]; + uint32_t efr_reg_image2_low; + uint32_t efr_reg_image2_high; uint8_t entry[]; } __packed acpi_ivrs_ivhd40_t; diff --git a/src/soc/amd/common/block/acpi/ivrs.c b/src/soc/amd/common/block/acpi/ivrs.c index 451a6c0879..2301158a0a 100644 --- a/src/soc/amd/common/block/acpi/ivrs.c +++ b/src/soc/amd/common/block/acpi/ivrs.c @@ -223,6 +223,8 @@ static unsigned long acpi_fill_ivrs40(unsigned long current, acpi_ivrs_ivhd_t *i if (pci_read_config32(iommu_dev, ivhd_40->capability_offset) & EFR_FEATURE_SUP) { ivhd_40->efr_reg_image_low = read32p(ivhd_40->iommu_base_low + 0x30); ivhd_40->efr_reg_image_high = read32p(ivhd_40->iommu_base_low + 0x34); + ivhd_40->efr_reg_image2_low = read32p(ivhd_40->iommu_base_low + 0x1a0); + ivhd_40->efr_reg_image2_high = read32p(ivhd_40->iommu_base_low + 0x1a4); } current += sizeof(acpi_ivrs_ivhd40_t); @@ -282,6 +284,8 @@ static unsigned long acpi_fill_ivrs11(unsigned long current, acpi_ivrs_ivhd_t *i if (pci_read_config32(iommu_dev, ivhd_11->capability_offset) & EFR_FEATURE_SUP) { ivhd_11->efr_reg_image_low = read32p(ivhd_11->iommu_base_low + 0x30); ivhd_11->efr_reg_image_high = read32p(ivhd_11->iommu_base_low + 0x34); + ivhd_11->efr_reg_image2_low = read32p(ivhd_11->iommu_base_low + 0x1a0); + ivhd_11->efr_reg_image2_high = read32p(ivhd_11->iommu_base_low + 0x1a4); } current += sizeof(acpi_ivrs_ivhd11_t);