Some CM objects fields are wider than the targeted field in ACPI tables. Some assignments are also subject to data loss and trigger the following warnings: - '<': signed/unsigned mismatch - '=': conversion from 'UINTxx' to 'UINTyy', possible loss of data with xx > yy.
Add checks/cast to remove the warnings. Signed-off-by: Pierre Gondois <pierre.gond...@arm.com> --- .../Acpi/Common/AcpiPcctLib/PcctGenerator.c | 15 +++++++++++---- .../SsdtCpuTopologyGenerator.c | 6 ++++-- .../Common/AcpiSsdtPcieLib/SsdtPcieGenerator.c | 15 ++++++++++----- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/PcctGenerator.c b/DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/PcctGenerator.c index 205c44405785..061e12bf1b3d 100644 --- a/DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/PcctGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/PcctGenerator.c @@ -379,10 +379,12 @@ AddSubspaceStructType1 ( Doorbell = &GenericPccCmObj->DoorbellReg; ChannelTiming = &GenericPccCmObj->ChannelTiming; + ASSERT ((PccCmObj->PlatIrq.Flags >> 8) == 0); + PccAcpi->Type = GenericPccCmObj->Type; PccAcpi->Length = sizeof (EFI_ACPI_6_4_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS); PccAcpi->PlatformInterrupt = PccCmObj->PlatIrq.Interrupt; - PccAcpi->PlatformInterruptFlags = PccCmObj->PlatIrq.Flags; + PccAcpi->PlatformInterruptFlags = (UINT8)PccCmObj->PlatIrq.Flags; PccAcpi->Reserved = EFI_ACPI_RESERVED_BYTE; PccAcpi->BaseAddress = GenericPccCmObj->BaseAddress; PccAcpi->AddressLength = GenericPccCmObj->AddressLength; @@ -441,10 +443,12 @@ AddSubspaceStructType2 ( PlatIrqAck = &PccCmObj->PlatIrqAckReg; ChannelTiming = &GenericPccCmObj->ChannelTiming; + ASSERT ((PccCmObj->PlatIrq.Flags >> 8) == 0); + PccAcpi->Type = GenericPccCmObj->Type; PccAcpi->Length = sizeof (EFI_ACPI_6_4_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS); PccAcpi->PlatformInterrupt = PccCmObj->PlatIrq.Interrupt; - PccAcpi->PlatformInterruptFlags = PccCmObj->PlatIrq.Flags; + PccAcpi->PlatformInterruptFlags = (UINT8)PccCmObj->PlatIrq.Flags; PccAcpi->BaseAddress = GenericPccCmObj->BaseAddress; PccAcpi->Reserved = EFI_ACPI_RESERVED_BYTE; PccAcpi->BaseAddress = GenericPccCmObj->BaseAddress; @@ -519,13 +523,16 @@ AddSubspaceStructType34 ( ErrorStatus = &PccCmObj->ErrorStatusReg; ChannelTiming = &GenericPccCmObj->ChannelTiming; + ASSERT ((PccCmObj->PlatIrq.Flags >> 8) == 0); + ASSERT ((GenericPccCmObj->AddressLength >> 32) == 0); + PccAcpi->Type = GenericPccCmObj->Type; PccAcpi->Length = sizeof (EFI_ACPI_6_4_PCCT_SUBSPACE_3_EXTENDED_PCC); PccAcpi->PlatformInterrupt = PccCmObj->PlatIrq.Interrupt; - PccAcpi->PlatformInterruptFlags = PccCmObj->PlatIrq.Flags; + PccAcpi->PlatformInterruptFlags = (UINT8)PccCmObj->PlatIrq.Flags; PccAcpi->Reserved = EFI_ACPI_RESERVED_BYTE; PccAcpi->BaseAddress = GenericPccCmObj->BaseAddress; - PccAcpi->AddressLength = GenericPccCmObj->AddressLength; + PccAcpi->AddressLength = (UINT32)GenericPccCmObj->AddressLength; CopyMem ( &PccAcpi->DoorbellRegister, diff --git a/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c index 74595131935c..f82b7449713c 100644 --- a/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c @@ -1026,7 +1026,8 @@ CreateAmlCpuTopologyTree ( if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) { Name = Generator->ProcNodeList[Index].OverrideName; } else { - Name = CpuIndex; + ASSERT ((CpuIndex >> 16) == 0); + Name = (UINT16)CpuIndex; } Status = CreateAmlCpuFromProcHierarchy ( @@ -1061,7 +1062,8 @@ CreateAmlCpuTopologyTree ( Name = Generator->ProcNodeList[Index].OverrideName; Uid = Generator->ProcNodeList[Index].OverrideUid; } else { - Name = ProcContainerName; + ASSERT ((ProcContainerName >> 16) == 0); + Name = (UINT16)ProcContainerName; Uid = *ProcContainerIndex; } diff --git a/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtPcieLib/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtPcieLib/SsdtPcieGenerator.c index 5b6d5515622b..3dcca2b33987 100644 --- a/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtPcieLib/SsdtPcieGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtPcieLib/SsdtPcieGenerator.c @@ -311,7 +311,7 @@ GeneratePrt ( ) { EFI_STATUS Status; - INT32 Index; + UINT32 Index; AML_OBJECT_NODE_HANDLE PrtNode; CM_ARCH_COMMON_OBJ_REF *RefInfo; UINT32 RefCount; @@ -561,6 +561,11 @@ GeneratePciCrs ( break; case PCI_SS_M32: + ASSERT ((AddrMapInfo->PciAddress >> 32) == 0); + ASSERT (((AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1) >> 32) == 0); + ASSERT (((Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0) >> 32) == 0); + ASSERT ((AddrMapInfo->AddressSize >> 32) == 0); + Status = AmlCodeGenRdDWordMemory ( FALSE, IsPosDecode, @@ -569,10 +574,10 @@ GeneratePciCrs ( AmlMemoryCacheable, TRUE, 0, - AddrMapInfo->PciAddress, - AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1, - Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0, - AddrMapInfo->AddressSize, + (UINT32)(AddrMapInfo->PciAddress), + (UINT32)(AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1), + (UINT32)(Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->PciAddress : 0), + (UINT32)(AddrMapInfo->AddressSize), 0, NULL, AmlAddressRangeMemory, -- 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119778): https://edk2.groups.io/g/devel/message/119778 Mute This Topic: https://groups.io/mt/107016603/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-