From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.37874.1656679375731991925 for ; Fri, 01 Jul 2022 05:42:56 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: pierre.gondois@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 99A59113E; Fri, 1 Jul 2022 05:42:55 -0700 (PDT) Received: from [192.168.1.11] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 42A3F3F792; Fri, 1 Jul 2022 05:42:54 -0700 (PDT) Message-ID: <7619f090-f973-9a2d-095a-5503e63d10ff@arm.com> Date: Fri, 1 Jul 2022 14:42:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 From: "PierreGondois" Subject: Re: [PATCH 2/4] DynamicTablesPkg: AcpiSsdtPcieLibArm: Allow use of segment number as UID To: Jeff Brasen , devel@edk2.groups.io Cc: Sami.Mujawar@arm.com, Alexei.Fedorov@arm.com References: In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello Jeff, From "PCI Firmware Specification Revision 3.3", s4.1.2. "MCFG Table Description", the "PCI Segment Group Number" field of the MCFG table must match the value returned by the _SEG object in the corresponding object. I didn't find any constraint about the _UID value. Would it be possible to know why this is required ? Regards, Pierre On 6/30/22 17:48, Jeff Brasen wrote: > Add support for selecting to use index or segment number as UID and name. > This allows the path of the nodes to be well known. > > Signed-off-by: Jeff Brasen > --- > DynamicTablesPkg/DynamicTablesPkg.dec | 3 +++ > .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c | 19 ++++++++++++++++++- > .../Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf | 3 +++ > 3 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/DynamicTablesPkg/DynamicTablesPkg.dec b/DynamicTablesPkg/DynamicTablesPkg.dec > index 9b74c5a671..a890a048be 100644 > --- a/DynamicTablesPkg/DynamicTablesPkg.dec > +++ b/DynamicTablesPkg/DynamicTablesPkg.dec > @@ -57,5 +57,8 @@ > # Non BSA Compliant 16550 Serial HID > gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdNonBsaCompliant16550SerialHid|""|VOID*|0x40000008 > > + # Use PCI segment numbers as UID > + gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid|FALSE|BOOLEAN|0x40000009 > + > [Guids] > gEdkiiDynamicTablesPkgTokenSpaceGuid = { 0xab226e66, 0x31d8, 0x4613, { 0x87, 0x9d, 0xd2, 0xfa, 0xb6, 0x10, 0x26, 0x3c } } > diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c > index f0d15f69a4..85782af380 100644 > --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c > +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c > @@ -996,6 +996,7 @@ BuildSsdtPciTableEx ( > UINTN Index; > EFI_ACPI_DESCRIPTION_HEADER **TableList; > ACPI_PCI_GENERATOR *Generator; > + UINT32 Uid; > > ASSERT (This != NULL); > ASSERT (AcpiTableInfo != NULL); > @@ -1051,13 +1052,29 @@ BuildSsdtPciTableEx ( > *Table = TableList; > > for (Index = 0; Index < PciCount; Index++) { > + if (PcdGetBool (PcdPciUseSegmentAsUid)) { > + Uid = PciInfo[Index].PciSegmentGroupNumber; > + if (Uid > MAX_PCI_ROOT_COMPLEXES_SUPPORTED) { > + DEBUG (( > + DEBUG_ERROR, > + "ERROR: SSDT-PCI: Pci root complexes segment number: %d." > + " Greater than maximum number of Pci root complexes supported = %d.\n", > + Uid, > + MAX_PCI_ROOT_COMPLEXES_SUPPORTED > + )); > + return EFI_INVALID_PARAMETER; > + } > + } else { > + Uid = Index; > + } > + > // Build a SSDT table describing the Pci devices. > Status = BuildSsdtPciTable ( > Generator, > CfgMgrProtocol, > AcpiTableInfo, > &PciInfo[Index], > - Index, > + Uid, > &TableList[Index] > ); > if (EFI_ERROR (Status)) { > diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf > index 283b564801..431e32a777 100644 > --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf > +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf > @@ -30,3 +30,6 @@ > AcpiHelperLib > AmlLib > BaseLib > + > +[Pcd] > + gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid