NcNode->Node.NumIdMappings = NodeList->IdMappingCount;\r
\r
ObjectNameLength = AsciiStrLen (NodeList->ObjectName) + 1;\r
- NcNode->Node.IdReference =\r
- (UINT32)(sizeof (EFI_ACPI_6_0_IO_REMAPPING_NAMED_COMP_NODE) +\r
- (ALIGN_VALUE (ObjectNameLength, 4)));\r
+ NcNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?\r
+ 0 : ((UINT32)(sizeof (EFI_ACPI_6_0_IO_REMAPPING_NAMED_COMP_NODE) +\r
+ (ALIGN_VALUE (ObjectNameLength, 4))));\r
\r
// Named Component specific data\r
NcNode->Flags = NodeList->Flags;\r
RcNode->Node.Revision = 1;\r
RcNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;\r
RcNode->Node.NumIdMappings = NodeList->IdMappingCount;\r
- RcNode->Node.IdReference = sizeof (EFI_ACPI_6_0_IO_REMAPPING_RC_NODE);\r
+ RcNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?\r
+ 0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_RC_NODE);\r
\r
// Root Complex specific data\r
RcNode->CacheCoherent = NodeList->CacheCoherent;\r
SmmuNode->Node.Revision = 0;\r
SmmuNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;\r
SmmuNode->Node.NumIdMappings = NodeList->IdMappingCount;\r
- SmmuNode->Node.IdReference = sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_NODE) +\r
- (NodeList->ContextInterruptCount *\r
- sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT)) +\r
- (NodeList->PmuInterruptCount *\r
- sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT));\r
+ SmmuNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?\r
+ 0 : (sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_NODE) +\r
+ (NodeList->ContextInterruptCount *\r
+ sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT)) +\r
+ (NodeList->PmuInterruptCount *\r
+ sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU_INT)));\r
\r
// SMMU v1/v2 specific data\r
SmmuNode->Base = NodeList->BaseAddress;\r
SmmuV3Node->Node.Revision = 2;\r
SmmuV3Node->Node.Reserved = EFI_ACPI_RESERVED_DWORD;\r
SmmuV3Node->Node.NumIdMappings = NodeList->IdMappingCount;\r
- SmmuV3Node->Node.IdReference =\r
- sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE);\r
+ SmmuV3Node->Node.IdReference = (NodeList->IdMappingCount == 0) ?\r
+ 0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE);\r
\r
// SMMUv3 specific data\r
SmmuV3Node->Base = NodeList->BaseAddress;\r
PmcgNode->Node.Revision = 1;\r
PmcgNode->Node.Reserved = EFI_ACPI_RESERVED_DWORD;\r
PmcgNode->Node.NumIdMappings = NodeList->IdMappingCount;\r
- PmcgNode->Node.IdReference = sizeof (EFI_ACPI_6_0_IO_REMAPPING_PMCG_NODE);\r
+ PmcgNode->Node.IdReference = (NodeList->IdMappingCount == 0) ?\r
+ 0 : sizeof (EFI_ACPI_6_0_IO_REMAPPING_PMCG_NODE);\r
\r
// PMCG specific data\r
PmcgNode->Base = NodeList->BaseAddress;\r