From e66e39059e037d0fcb2b6ed6c1eae13a17d1a433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Thu, 21 Sep 2017 12:58:20 +0300 Subject: [PATCH] AGESA: Allow const PcieComplexList for OemCustomize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's already implemented like this with binaryPI API header. That implementation is essentially the same with 'const' qualifier just being ignored in the build process for PI blob. For open-source AGESA build, work around -Werror=discarded-qualifier using a simple but ugly cast. Change-Id: Ib84eb9aa40f1f4442f7aeaa8c15f6f1cbc6ca295 Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/21630 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones Reviewed-by: Aaron Durbin --- src/vendorcode/amd/agesa/f12/AGESA.h | 2 +- .../f12/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c | 9 ++++++++- src/vendorcode/amd/agesa/f14/AGESA.h | 2 +- .../f14/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c | 4 ++-- src/vendorcode/amd/agesa/f15/AGESA.h | 2 +- src/vendorcode/amd/agesa/f15tn/AGESA.h | 2 +- .../Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c | 9 ++++++++- src/vendorcode/amd/agesa/f16kb/AGESA.h | 2 +- .../Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c | 9 ++++++++- 9 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/vendorcode/amd/agesa/f12/AGESA.h b/src/vendorcode/amd/agesa/f12/AGESA.h index d720364374..01a9c3f32c 100644 --- a/src/vendorcode/amd/agesa/f12/AGESA.h +++ b/src/vendorcode/amd/agesa/f12/AGESA.h @@ -1021,7 +1021,7 @@ typedef struct { /// GNB configuration info typedef struct { - IN PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. + IN const PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. * Last element of array must be terminated with DESCRIPTOR_TERMINATE_LIST * Example of topology definition for single socket system: * @code diff --git a/src/vendorcode/amd/agesa/f12/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c b/src/vendorcode/amd/agesa/f12/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c index d69a896645..62468baafa 100644 --- a/src/vendorcode/amd/agesa/f12/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c +++ b/src/vendorcode/amd/agesa/f12/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c @@ -133,7 +133,14 @@ PcieConfigurationInit ( PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; AGESA_STATUS Status; EarlyParamsPtr = (AMD_EARLY_PARAMS *) StdHeader; - PcieComplexList = PcieConfigProcessUserConfig (EarlyParamsPtr->GnbConfig.PcieComplexList, StdHeader); + + /* FIXME: Intentionally discard qualifier const of + * GnbConfig.PcieComplexList here. + */ + PcieComplexList = PcieConfigProcessUserConfig ( + (PCIe_COMPLEX_DESCRIPTOR *)EarlyParamsPtr->GnbConfig.PcieComplexList, + StdHeader); + if (PcieComplexList == NULL) { return AGESA_FATAL; } diff --git a/src/vendorcode/amd/agesa/f14/AGESA.h b/src/vendorcode/amd/agesa/f14/AGESA.h index a2283d14f3..5a87d293cb 100644 --- a/src/vendorcode/amd/agesa/f14/AGESA.h +++ b/src/vendorcode/amd/agesa/f14/AGESA.h @@ -876,7 +876,7 @@ typedef struct { /// GNB configuration info typedef struct { - IN PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. + IN const PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. * Last element of array must be terminated with DESCRIPTOR_TERMINATE_LIST * Example of topology definition for single socket system: * @code diff --git a/src/vendorcode/amd/agesa/f14/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c b/src/vendorcode/amd/agesa/f14/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c index cf5400f191..85859d908f 100644 --- a/src/vendorcode/amd/agesa/f14/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c +++ b/src/vendorcode/amd/agesa/f14/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c @@ -123,7 +123,7 @@ PcieConfigurationInit ( IDS_HDT_CONSOLE (GNB_TRACE, "PcieConfigurationInit Enter\n"); EarlyParamsPtr = (AMD_EARLY_PARAMS *) StdHeader; - ComplexList = EarlyParamsPtr->GnbConfig.PcieComplexList; + ComplexList = (PCIe_COMPLEX_DESCRIPTOR *)EarlyParamsPtr->GnbConfig.PcieComplexList; AgesaStatus = AGESA_SUCCESS; ComplexesDataLength = 0; NumberOfSockets = GnbGetNumberOfSockets (StdHeader); @@ -381,4 +381,4 @@ PcieConfigDebugDump ( SiliconList = PcieLibGetNextDescriptor (SiliconList); } IDS_HDT_CONSOLE (PCIE_MISC, "<-------------- PCIe Config End------------------>\n"); -} \ No newline at end of file +} diff --git a/src/vendorcode/amd/agesa/f15/AGESA.h b/src/vendorcode/amd/agesa/f15/AGESA.h index fba3149346..ec97853284 100644 --- a/src/vendorcode/amd/agesa/f15/AGESA.h +++ b/src/vendorcode/amd/agesa/f15/AGESA.h @@ -1144,7 +1144,7 @@ typedef struct { /// GNB configuration info typedef struct { - IN PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. + IN const PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. * Last element of array must be terminated with DESCRIPTOR_TERMINATE_LIST * Example of topology definition for single socket system: * @code diff --git a/src/vendorcode/amd/agesa/f15tn/AGESA.h b/src/vendorcode/amd/agesa/f15tn/AGESA.h index 1392810254..21ce58c791 100644 --- a/src/vendorcode/amd/agesa/f15tn/AGESA.h +++ b/src/vendorcode/amd/agesa/f15tn/AGESA.h @@ -1243,7 +1243,7 @@ typedef struct { /// GNB configuration info typedef struct { - IN PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. + IN const PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. * Last element of array must be terminated with DESCRIPTOR_TERMINATE_LIST * Example of topology definition for single socket system: * @code diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c b/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c index f66fd9b419..aee2b20a09 100644 --- a/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c +++ b/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c @@ -215,7 +215,14 @@ PcieConfigurationMap ( IDS_HDT_CONSOLE (GNB_TRACE, "PcieConfigurationMap Enter\n"); AgesaStatus = AGESA_SUCCESS; EarlyParamsPtr = (AMD_EARLY_PARAMS *) StdHeader; - PcieComplexList = PcieConfigProcessUserConfig (EarlyParamsPtr->GnbConfig.PcieComplexList, StdHeader); + + /* FIXME: Intentionally discard qualifier const of + * GnbConfig.PcieComplexList here. + */ + PcieComplexList = PcieConfigProcessUserConfig ( + (PCIe_COMPLEX_DESCRIPTOR *)EarlyParamsPtr->GnbConfig.PcieComplexList, + StdHeader); + GNB_DEBUG_CODE ( if (PcieComplexList != NULL) { PcieUserConfigConfigDump (PcieComplexList); diff --git a/src/vendorcode/amd/agesa/f16kb/AGESA.h b/src/vendorcode/amd/agesa/f16kb/AGESA.h index 6c2f19ccf1..9262896858 100644 --- a/src/vendorcode/amd/agesa/f16kb/AGESA.h +++ b/src/vendorcode/amd/agesa/f16kb/AGESA.h @@ -1276,7 +1276,7 @@ typedef struct { /// GNB configuration info typedef struct { - IN PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. + IN const PCIe_COMPLEX_DESCRIPTOR *PcieComplexList; /**< Pointer to array of structures describe PCIe topology on each processor package or NULL. * Last element of array must be terminated with DESCRIPTOR_TERMINATE_LIST * Example of topology definition for single socket system: * @code diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c b/src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c index 5a25844884..a54ddfbaf6 100644 --- a/src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c +++ b/src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbPcieConfig/PcieConfigData.c @@ -214,7 +214,14 @@ PcieConfigurationMap ( IDS_HDT_CONSOLE (GNB_TRACE, "PcieConfigurationMap Enter\n"); AgesaStatus = AGESA_SUCCESS; EarlyParamsPtr = (AMD_EARLY_PARAMS *) StdHeader; - PcieComplexList = PcieConfigProcessUserConfig (EarlyParamsPtr->GnbConfig.PcieComplexList, StdHeader); + + /* FIXME: Intentionally discard qualifier const of + * GnbConfig.PcieComplexList here. + */ + PcieComplexList = PcieConfigProcessUserConfig ( + (PCIe_COMPLEX_DESCRIPTOR *)EarlyParamsPtr->GnbConfig.PcieComplexList, + StdHeader); + GNB_DEBUG_CODE ( if (PcieComplexList != NULL) { PcieUserConfigConfigDump (PcieComplexList);