From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+91996+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91996+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245853; cv=none; d=zohomail.com; s=zohoarc; b=D6zI9rO47cTIIiz2ifi0cQRBvKgGQzlqyixC2gICl2uBZQJIWbxTpIOmOpnazH+zT6UcJu3BAuw6ZdRYnVhFtxEVFVapGjGZNC7PRScfQ4jLv9gSUdY0Rx8IYUdOsWyv+03Xwz6aJbIDYU+20koUFVnxVaYXj0+cQ3N/e/i3ZxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245853; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=SCJQ24j9JZ1D31aeEJUH2O0LIEgugCBUZb8yIVlaVnQ=; b=SqJt3jdeUbQmOiJ4R1Cr9bgt6axcoczSEnWrDLC7qACRvMDqm8UuVWNm6hdW2F0wJFbP+e7smNZvbzTrtxS82HGeLgslrxaM4pJtQ+R4ENxElLI0pbc62A5qXMJlSskObBIJsN9jStvcOe31B5Eqx1ZEG931fDnqSwuUixwrowQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91996+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245853479989.2006085994163; Sat, 30 Jul 2022 22:37:33 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id HcF9YY1788612xGQAPWAaTuU; Sat, 30 Jul 2022 22:37:33 -0700 X-Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by mx.groups.io with SMTP id smtpd.web11.10565.1659245852173672411 for ; Sat, 30 Jul 2022 22:37:32 -0700 X-Received: by mail-pj1-f53.google.com with SMTP id 15-20020a17090a098f00b001f305b453feso12090046pjo.1 for ; Sat, 30 Jul 2022 22:37:32 -0700 (PDT) X-Gm-Message-State: Jo0iPfV7zs9zL49w1oNKMgtax1787277AA= X-Google-Smtp-Source: AA6agR4KALvBrcdHn/Rry9RAT25Y8la31xYMOJZLNCvtCUcwl3qEQIgE/hizisKfP2uWZyYSbN5HqQ== X-Received: by 2002:a17:90b:1894:b0:1f2:76d7:24ce with SMTP id mn20-20020a17090b189400b001f276d724cemr12488586pjb.62.1659245851544; Sat, 30 Jul 2022 22:37:31 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:31 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Sami Mujawar , Alexei Fedorov , Joe Lopez , Sami Mujawar , Pierre Gondois Subject: [edk2-devel] [PATCH v3 1/6] DynamicTablesPkg: DynamicPlatRepoLib: Added MemoryAllocationLib to inf Date: Sat, 30 Jul 2022 22:37:22 -0700 Message-Id: <20220731053727.536-2-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245853; bh=H/fwlGz+dmIP3e3txeN6O/DSFGp/0Sf1+Wm/w7wXuAU=; h=Cc:Date:From:Reply-To:Subject:To; b=og2qXjTEjI1fGnYQxEDki69qvILi8f+AN3VqqluTqODyQchlbnk748ZfW1/EfM0+p2j NKBzAtkXlPFn2LVj06eegjEb8kpDDsww/KAfWHNFvdW/Wkz80ODWfNfJSf1YccRaKUSRw CXKQp5ugZen8aoFFQ2ycDaZG6goRAl+IVPw= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245855468100006 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3996 The DynamicPlatRepoLib has multiple reference to MemoryAllocationLib, such as DynamicPlatRepo.c and TokenMapper.c. Not including it in the library inf file could lead to potential build break. This change added the MemoryAllocationLib into this inf file. Cc: Sami Mujawar Cc: Alexei Fedorov Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Sami Mujawar Reviewed-by: Pierre Gondois --- Notes: v2: - Added Reviewed-by tag [Sami] - Added Reviewed-by tag [Pierre] =20 v3: - No change. DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoLib.inf = | 1 + 1 file changed, 1 insertion(+) diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlat= RepoLib.inf b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPla= tRepoLib.inf index 9a3cc87fd91d..8423352550c2 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoLib= .inf +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoLib= .inf @@ -31,3 +31,4 @@ [Packages] [LibraryClasses] AcpiHelperLib BaseLib + MemoryAllocationLib --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91996): https://edk2.groups.io/g/devel/message/91996 Mute This Topic: https://groups.io/mt/92722839/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+91997+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91997+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245853; cv=none; d=zohomail.com; s=zohoarc; b=V6Ll6Px03AdwBTpfiLBYWb15zgAWhX0Jie/8CP4dKlNEDE+v0m0YoZfnPPQaSucFWWoaK1MEPAbYQwL4QBLBHOoRR6at7yje4IYVxqhBcZfLd1GVvd05QqUcPaWhNMZdBDLUe5pnbCEi1U87NK+Q6cY98hDBwyqJdnAJJvAcMBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245853; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=b+Z9JpOhuCfzfCVJAynCEqbSJp7gXY38V4u+cfBGWdM=; b=Wc6u/51jldkfQBpbWJQvmk4eihw7zQpmmOgy46PJvbgGfHdXkwbwa6+8frFdl9FcSrvvPPUmBA6mug28yitCXVGv+wGWQXZTczNWDs5mhZsjShbXOuQSNY1JZzrZaQlM7n8QcYhtQ32yKqFxXucNATEEk/o537eBz8AdC6HHXRI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91997+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245853894596.0154193367032; Sat, 30 Jul 2022 22:37:33 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id TCmCYY1788612xMunwapxfLG; Sat, 30 Jul 2022 22:37:33 -0700 X-Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) by mx.groups.io with SMTP id smtpd.web11.10564.1659245851702719585 for ; Sat, 30 Jul 2022 22:37:32 -0700 X-Received: by mail-pg1-f173.google.com with SMTP id 206so3597210pgb.0 for ; Sat, 30 Jul 2022 22:37:32 -0700 (PDT) X-Gm-Message-State: m5crpEFHoOL7RdGGLv9KcvuXx1787277AA= X-Google-Smtp-Source: AGRyM1thXVF6i3kL/T3CKivN1eOmMRdEH+TkdrBFkSixv8A16PUmkW0qfZ4sKrF4r71ZMlmifQK0Sw== X-Received: by 2002:a05:6a00:450d:b0:52b:84ca:9509 with SMTP id cw13-20020a056a00450d00b0052b84ca9509mr10645492pfb.74.1659245852218; Sat, 30 Jul 2022 22:37:32 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:31 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Sami Mujawar , Alexei Fedorov , Joe Lopez , Sami Mujawar , Pierre Gondois Subject: [edk2-devel] [PATCH v3 2/6] DynamicTablesPkg: DynamicPlatRepoLib: Fix incorrect dereferencing Date: Sat, 30 Jul 2022 22:37:23 -0700 Message-Id: <20220731053727.536-3-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245853; bh=gzRhULgTuI0wTqpqL+42k/AAVJDZE0zgNiPWqGNigaw=; h=Cc:Date:From:Reply-To:Subject:To; b=UJrBhrdtm8EC4EBGGUuo0lB7NjWYBUDZTmmsXJT8VMyjlG4A/+JacvNGlM+yiZUz9yC QyQUB8D1XHkpBMf7rsSmPmOeByqGjA3u59b1W3HtPPL20y0Y8zCsDZZq+WqotQE0zpqsI jTVZ4ZEHyPuKPJhHky51aAe1L7Z3S1C2YI8= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245855465100005 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3996 The content of token should be derived from the data section of the `CmObject` instead of the object itself. This change fixed the issue by dereferencing the token value from the data buffer of input CmObject. Cc: Sami Mujawar Cc: Alexei Fedorov Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Sami Mujawar Reviewed-by: Pierre Gondois --- Notes: v2: - Added Reviewed-by tag [Sami] - Added Reviewed-by tag [Pierre] =20 v3: - No change. DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c | = 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTok= enFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectToke= nFixer.c index 80d0aa17bc1a..84e4bb7e3bc8 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c @@ -60,7 +60,7 @@ TokenFixerItsGroup ( ) { ASSERT (CmObject !=3D NULL); - ((CM_ARM_ITS_GROUP_NODE *)CmObject)->Token =3D Token; + ((CM_ARM_ITS_GROUP_NODE *)CmObject->Data)->Token =3D Token; return EFI_SUCCESS; } =20 --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91997): https://edk2.groups.io/g/devel/message/91997 Mute This Topic: https://groups.io/mt/92722840/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+91998+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91998+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245854; cv=none; d=zohomail.com; s=zohoarc; b=R542In70HCeSeQirrlPX7SjEBu4JBRj+mT3G7uTlT/epc1LvH53cWvKKZuerT/XfQrGDmfLwpwqlGL0JMrbzd9nb8/wBIqlgN+6BKn9KvvMs9izM2E8u2ASBtwNVndNCuLqdrszDhWdr0tg7I1kB7xTwky1/7DwVX2DxPkugDzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245854; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=0JLaBXr+IsOI4BqKBvj8147U0BueDGKEjdctEIzubnE=; b=GPNRiQxzq40wVkGTRWL3xXGhVyYmcziYd9plnh9g+UN9oSQKnHbyeB5DD5U4iuwnk2bAy01j3nZfG51Tg/g+KYIAPo8+dyWG7nKqtjbvhu+mdg70Z9lVi4ZU+if/tC/nQVVE/ObS2ujYu4EVa+XJ+ZlNMxoR0Fhq5t9LwH0Ye6I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91998+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245854451893.8432608787635; Sat, 30 Jul 2022 22:37:34 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id OjdWYY1788612xdjLOvTsU02; Sat, 30 Jul 2022 22:37:34 -0700 X-Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) by mx.groups.io with SMTP id smtpd.web12.10821.1659245853541650282 for ; Sat, 30 Jul 2022 22:37:33 -0700 X-Received: by mail-pj1-f50.google.com with SMTP id ha11so8132375pjb.2 for ; Sat, 30 Jul 2022 22:37:33 -0700 (PDT) X-Gm-Message-State: p2KD1CWC7YR6kYlbBGTXQPawx1787277AA= X-Google-Smtp-Source: AA6agR7cq0kcbk3X5BfuVSaQd0huUfB1Ojy/tVhYjMJz6StBdHKJVKi60iGfTIszZcBN+WYXztEWAw== X-Received: by 2002:a17:90a:2e16:b0:1f2:f54c:c6a0 with SMTP id q22-20020a17090a2e1600b001f2f54cc6a0mr13056139pjd.10.1659245852900; Sat, 30 Jul 2022 22:37:32 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:32 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Sami Mujawar , Alexei Fedorov , Joe Lopez , Sami Mujawar , Pierre Gondois Subject: [edk2-devel] [PATCH v3 3/6] DynamicTablesPkg: DynamicPlatRepoLib: Adding more token fixers Date: Sat, 30 Jul 2022 22:37:24 -0700 Message-Id: <20220731053727.536-4-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245854; bh=7Dfrjs3RaBqe0+zsL/8fHsB0eRLBgtM0WnzqoXi+mHs=; h=Cc:Date:From:Reply-To:Subject:To; b=VpjDTjZq8ISqe7qgNKEH8KVQyEFYLUK2WPlxkjPGMuwOZc/QgkWIBF7tZetsn1n5TnB WAN3PNpPWUA/tWKs+CLPRM7oeoIwVot014HAX605YoNLAV9ZWrsURd5zbIoftX/U3cYRT PgjjBfFVsWzo9dp/F+aFkqsRbPJI+SV6EFs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245855478100007 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3996 This change added more token fixers for other node types, including NamedComponentNode, RootComplexNode, and SmmuV3Node. The corresponding entries for tokenFixer functions table is also updated. Cc: Sami Mujawar Cc: Alexei Fedorov Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Sami Mujawar Reviewed-by: Pierre Gondois --- Notes: v2: - Added Reviewed-by tag [Sami] - Added Reviewed-by tag [Pierre] =20 v3: - No change. DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c | = 78 +++++++++++++++++++- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTok= enFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectToke= nFixer.c index 84e4bb7e3bc8..345acab53f74 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer= .c @@ -64,6 +64,78 @@ TokenFixerItsGroup ( return EFI_SUCCESS; } =20 +/** EArmObjNamedComponent token fixer. + + CmObjectToken fixer function that updates the Tokens in the CmObjects. + + @param [in] CmObject Pointer to the Configuration Manager Object. + @param [in] Token Token to be updated in the CmObject. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_UNSUPPORTED Not supported. +**/ +STATIC +EFI_STATUS +EFIAPI +TokenFixerNamedComponentNode ( + IN CM_OBJ_DESCRIPTOR *CmObject, + IN CM_OBJECT_TOKEN Token + ) +{ + ASSERT (CmObject !=3D NULL); + ((CM_ARM_NAMED_COMPONENT_NODE *)CmObject->Data)->Token =3D Token; + return EFI_SUCCESS; +} + +/** EArmObjRootComplex token fixer. + + CmObjectToken fixer function that updates the Tokens in the CmObjects. + + @param [in] CmObject Pointer to the Configuration Manager Object. + @param [in] Token Token to be updated in the CmObject. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_UNSUPPORTED Not supported. +**/ +STATIC +EFI_STATUS +EFIAPI +TokenFixerRootComplexNode ( + IN CM_OBJ_DESCRIPTOR *CmObject, + IN CM_OBJECT_TOKEN Token + ) +{ + ASSERT (CmObject !=3D NULL); + ((CM_ARM_ROOT_COMPLEX_NODE *)CmObject->Data)->Token =3D Token; + return EFI_SUCCESS; +} + +/** EArmObjSmmuV3 token fixer. + + CmObjectToken fixer function that updates the Tokens in the CmObjects. + + @param [in] CmObject Pointer to the Configuration Manager Object. + @param [in] Token Token to be updated in the CmObject. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_UNSUPPORTED Not supported. +**/ +STATIC +EFI_STATUS +EFIAPI +TokenFixerSmmuV3Node ( + IN CM_OBJ_DESCRIPTOR *CmObject, + IN CM_OBJECT_TOKEN Token + ) +{ + ASSERT (CmObject !=3D NULL); + ((CM_ARM_SMMUV3_NODE *)CmObject->Data)->Token =3D Token; + return EFI_SUCCESS; +} + /** TokenFixer functions table. =20 A CmObj having a CM_OBJECT_TOKEN field might need to have its @@ -90,10 +162,10 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] =3D { NULL, ///< 16 - Hypervisor Vendor Id NULL, ///< 17 - Fixed feature flags for FADT TokenFixerItsGroup, ///< 18 - ITS Group - TokenFixerNotImplemented, ///< 19 - Named Component - TokenFixerNotImplemented, ///< 20 - Root Complex + TokenFixerNamedComponentNode, ///< 19 - Named Component + TokenFixerRootComplexNode, ///< 20 - Root Complex TokenFixerNotImplemented, ///< 21 - SMMUv1 or SMMUv2 - TokenFixerNotImplemented, ///< 22 - SMMUv3 + TokenFixerSmmuV3Node, ///< 22 - SMMUv3 TokenFixerNotImplemented, ///< 23 - PMCG NULL, ///< 24 - GIC ITS Identifier Array NULL, ///< 25 - ID Mapping Array --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91998): https://edk2.groups.io/g/devel/message/91998 Mute This Topic: https://groups.io/mt/92722841/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+91999+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91999+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245856; cv=none; d=zohomail.com; s=zohoarc; b=mVioXrYbs1vQ0o7X7072/nVT7/AVpknPn3KvKKb9d59DVndBWiA9ftPMc/ZcQV9nOdbjXKon1ool5eNnUC+JEdKagNEpTLGfQlq2PzkIDmRRRSy+oGLV0aDRKX4eOJxchE4p+gy8iT2oniPU4oL81TpBEQgecNOjU1IhpVmzDkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245856; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=K2ImI/uTsTMnX42NHng1h/TCJDTho10N3gjd2e2WOXg=; b=hXflGFNpBnpVwt3x3L5fdI7vqiqyerH2IkNpeyEBOhqfXDp89IlGRxINQ2ncMjp3syZnasu1mUYtqjuzOSrZ+CXZArBb/qwNYebKG7CvjJAv91qKZlfYrcCH2W17WSyslRea4wFtjUlp3IvptX4xpUjgG9k//WjwKDzDXzi26B4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+91999+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245856309986.1121639149134; Sat, 30 Jul 2022 22:37:36 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id jhGYYY1788612xahqmWxMXIE; Sat, 30 Jul 2022 22:37:35 -0700 X-Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mx.groups.io with SMTP id smtpd.web09.10668.1659245854376719063 for ; Sat, 30 Jul 2022 22:37:34 -0700 X-Received: by mail-pl1-f169.google.com with SMTP id t2so7842448ply.2 for ; Sat, 30 Jul 2022 22:37:34 -0700 (PDT) X-Gm-Message-State: WWYiW4VSHh8W0OiVZF0OCS5Mx1787277AA= X-Google-Smtp-Source: AA6agR4uIPbno13jYZa40KsTwMOsdYdzdtXtz43qM0zUT0/5RxiJ1ZZcKvlWYwsOrnBT5/CkHbBp+Q== X-Received: by 2002:a17:90a:b785:b0:1f1:be59:a607 with SMTP id m5-20020a17090ab78500b001f1be59a607mr12247499pjr.84.1659245853510; Sat, 30 Jul 2022 22:37:33 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:33 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Sami Mujawar , Alexei Fedorov , Joe Lopez , Pierre Gondois Subject: [edk2-devel] [PATCH v3 4/6] DynamicTablesPkg: DynamicTableManagerDxe: Added check for installed tables Date: Sat, 30 Jul 2022 22:37:25 -0700 Message-Id: <20220731053727.536-5-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245855; bh=8rehSXzV/1oOB19vkWrLw0YqyTFiK8njuzFd5+L/nkA=; h=Cc:Date:From:Reply-To:Subject:To; b=Gr9Xg1bEir+cQgZiR3RghTaGqaKrLqmMnkhl1RQsrQK/IOBg26EAs1Qp9BSqz+0UqiT 4sm3b4HG168iV0vwmIEfkCDPvmY766Qo7LbvDowK6CGmnWAWRT7+V2ZO8HJc9Ow23kzV1 KL4q0VZt760Pu8JcMjEPi/M38S0AHjLySPM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245857597100025 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3997 This change added an extra step to allow check for installed ACPI tables. For FADT, MADT, GTDT, DSDT, DBG2 and SPCR tables, either pre-installed or supplied through AcpiTableInfo can be accepted. An extra check for FADT ACPI table existence during installation step is also added. Cc: Sami Mujawar Cc: Alexei Fedorov Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Pierre Gondois --- Notes: v2: - Function description updates [Sami] - Refactorized the table verification [Pierre] =20 v3: - Added descriptions for new structures [Pierre] - Added check for SDT protocol PCD before using it [Pierre] DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.c = | 214 ++++++++++++-------- DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.inf= | 4 + 2 files changed, 138 insertions(+), 80 deletions(-) diff --git a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableMa= nagerDxe.c b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableMa= nagerDxe.c index ed62299f9bbd..7f3deef08a66 100644 --- a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.c +++ b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.c @@ -10,6 +10,7 @@ #include #include #include +#include #include =20 // Module specific include files. @@ -22,6 +23,58 @@ #include #include =20 +/// +/// Bit definitions for acceptable ACPI table presence formats. +/// Currently only ACPI tables present in the ACPI info list and +/// already installed will count towards "Table Present" during +/// verification routine. +/// +#define ACPI_TABLE_PRESENT_INFO_LIST BIT0 +#define ACPI_TABLE_PRESENT_INSTALLED BIT1 + +/// +/// Order of ACPI table being verified during presence inspection. +/// +#define ACPI_TABLE_VERIFY_FADT 0 +#define ACPI_TABLE_VERIFY_MADT 1 +#define ACPI_TABLE_VERIFY_GTDT 2 +#define ACPI_TABLE_VERIFY_DSDT 3 +#define ACPI_TABLE_VERIFY_DBG2 4 +#define ACPI_TABLE_VERIFY_SPCR 5 +#define ACPI_TABLE_VERIFY_COUNT 6 + +/// +/// Private data structure to verify the presence of mandatory +/// or optional ACPI tables. +/// +typedef struct { + /// ESTD ID for the ACPI table of interest. + ESTD_ACPI_TABLE_ID EstdTableId; + /// Standard UINT32 ACPI signature. + UINT32 AcpiTableSignature; + /// 4 character ACPI table name (the 5th char8 is for null terminator). + CHAR8 AcpiTableName[sizeof (UINT32) + 1]; + /// Indicator on whether the ACPI table is required. + BOOLEAN IsMandatory; + /// Formats of verified presences, as defined by ACPI_TABLE_PRESENT_* + /// This field should be initialized to 0 and will be populated during + /// verification routine. + UINT16 Presence; +} ACPI_TABLE_PRESENCE_INFO; + +/// +/// We require the FADT, MADT, GTDT and the DSDT tables to boot. +/// This list also include optional ACPI tables: DBG2, SPCR. +/// +ACPI_TABLE_PRESENCE_INFO mAcpiVerifyTables[ACPI_TABLE_VERIFY_COUNT] =3D { + { EStdAcpiTableIdFadt, EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATU= RE, "FADT", TRUE, 0 }, + { EStdAcpiTableIdMadt, EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGN= ATURE, "MADT", TRUE, 0 }, + { EStdAcpiTableIdGtdt, EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGN= ATURE, "GTDT", TRUE, 0 }, + { EStdAcpiTableIdDsdt, EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TA= BLE_SIGNATURE, "DSDT", TRUE, 0 }, + { EStdAcpiTableIdDbg2, EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, = "DBG2", FALSE, 0 }, + { EStdAcpiTableIdSpcr, EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABL= E_SIGNATURE, "SPCR", FALSE, 0 }, +}; + /** This macro expands to a function that retrieves the ACPI Table List from the Configuration Manager. */ @@ -395,6 +448,7 @@ BuildAndInstallAcpiTable ( =20 @retval EFI_SUCCESS Success. @retval EFI_NOT_FOUND If mandatory table is not found. + @retval EFI_ALREADY_STARTED If mandatory table found in AcpiTableInfo = is already installed. **/ STATIC EFI_STATUS @@ -404,75 +458,71 @@ VerifyMandatoryTablesArePresent ( IN UINT32 AcpiTableCount ) { - EFI_STATUS Status; - BOOLEAN FadtFound; - BOOLEAN MadtFound; - BOOLEAN GtdtFound; - BOOLEAN DsdtFound; - BOOLEAN Dbg2Found; - BOOLEAN SpcrFound; + EFI_STATUS Status; + UINTN Handle; + UINTN Index; + UINTN InstalledTableIndex; + EFI_ACPI_DESCRIPTION_HEADER *DescHeader; + EFI_ACPI_TABLE_VERSION Version; + EFI_ACPI_SDT_PROTOCOL *AcpiSdt; =20 - Status =3D EFI_SUCCESS; - FadtFound =3D FALSE; - MadtFound =3D FALSE; - GtdtFound =3D FALSE; - DsdtFound =3D FALSE; - Dbg2Found =3D FALSE; - SpcrFound =3D FALSE; ASSERT (AcpiTableInfo !=3D NULL); =20 + Status =3D EFI_SUCCESS; + + // Check against the statically initialized ACPI tables to see if they a= re in ACPI info list while (AcpiTableCount-- !=3D 0) { - switch (AcpiTableInfo[AcpiTableCount].AcpiTableSignature) { - case EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE: - FadtFound =3D TRUE; - break; - case EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE: - MadtFound =3D TRUE; - break; - case EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE: - GtdtFound =3D TRUE; - break; - case EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE: - DsdtFound =3D TRUE; - break; - case EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE: - Dbg2Found =3D TRUE; - break; - case EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE: - SpcrFound =3D TRUE; - break; - default: + for (Index =3D 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) { + if (AcpiTableInfo[AcpiTableCount].AcpiTableSignature =3D=3D mAcpiVer= ifyTables[Index].AcpiTableSignature) { + mAcpiVerifyTables[Index].Presence |=3D ACPI_TABLE_PRESENT_INFO_LIS= T; + // Found this table, skip the rest. break; + } } } =20 - // We need at least the FADT, MADT, GTDT and the DSDT tables to boot - if (!FadtFound) { - DEBUG ((DEBUG_ERROR, "ERROR: FADT Table not found\n")); - Status =3D EFI_NOT_FOUND; - } + // They also might be published already, so we can search from there + if (FeaturePcdGet (PcdInstallAcpiSdtProtocol)) { + AcpiSdt =3D NULL; + Status =3D gBS->LocateProtocol (&gEfiAcpiSdtProtocolGuid, NULL, (VOID= **)&AcpiSdt); =20 - if (!MadtFound) { - DEBUG ((DEBUG_ERROR, "ERROR: MADT Table not found.\n")); - Status =3D EFI_NOT_FOUND; - } + if (EFI_ERROR (Status) || (AcpiSdt =3D=3D NULL)) { + DEBUG ((DEBUG_ERROR, "ERROR: Failed to locate ACPI SDT protocol (0x%= p) - %r\n", AcpiSdt, Status)); + return Status; + } =20 - if (!GtdtFound) { - DEBUG ((DEBUG_ERROR, "ERROR: GTDT Table not found.\n")); - Status =3D EFI_NOT_FOUND; - } + for (Index =3D 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) { + Handle =3D 0; + InstalledTableIndex =3D 0; + do { + Status =3D AcpiSdt->GetAcpiTable (InstalledTableIndex, (EFI_ACPI_S= DT_HEADER **)&DescHeader, &Version, &Handle); + if (EFI_ERROR (Status)) { + break; + } =20 - if (!DsdtFound) { - DEBUG ((DEBUG_ERROR, "ERROR: DSDT Table not found.\n")); - Status =3D EFI_NOT_FOUND; - } + InstalledTableIndex++; + } while (DescHeader->Signature !=3D mAcpiVerifyTables[Index].AcpiTab= leSignature); =20 - if (!Dbg2Found) { - DEBUG ((DEBUG_WARN, "WARNING: DBG2 Table not found.\n")); + if (!EFI_ERROR (Status)) { + mAcpiVerifyTables[Index].Presence |=3D ACPI_TABLE_PRESENT_INSTALLE= D; + } + } } =20 - if (!SpcrFound) { - DEBUG ((DEBUG_WARN, "WARNING: SPCR Table not found.\n")); + for (Index =3D 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) { + if (mAcpiVerifyTables[Index].Presence =3D=3D 0) { + if (mAcpiVerifyTables[Index].IsMandatory) { + DEBUG ((DEBUG_ERROR, "ERROR: %a Table not found.\n", mAcpiVerifyTa= bles[Index].AcpiTableName)); + Status =3D EFI_NOT_FOUND; + } else { + DEBUG ((DEBUG_WARN, "WARNING: %a Table not found.\n", mAcpiVerifyT= ables[Index].AcpiTableName)); + } + } else if (mAcpiVerifyTables[Index].Presence =3D=3D + (ACPI_TABLE_PRESENT_INFO_LIST | ACPI_TABLE_PRESENT_INSTALLE= D)) + { + DEBUG ((DEBUG_ERROR, "ERROR: %a Table found while already published.= \n", mAcpiVerifyTables[Index].AcpiTableName)); + Status =3D EFI_ALREADY_STARTED; + } } =20 return Status; @@ -489,8 +539,9 @@ VerifyMandatoryTablesArePresent ( @param [in] CfgMgrProtocol Pointer to the Configuration Manager Protocol Interface. =20 - @retval EFI_SUCCESS Success. - @retval EFI_NOT_FOUND If a mandatory table or a generator is not found. + @retval EFI_SUCCESS Success. + @retval EFI_NOT_FOUND If a mandatory table or a generator is not= found. + @retval EFI_ALREADY_STARTED If mandatory table found in AcpiTableInfo = is already installed. **/ STATIC EFI_STATUS @@ -562,7 +613,7 @@ ProcessAcpiTables ( if (EFI_ERROR (Status)) { DEBUG (( DEBUG_ERROR, - "ERROR: Failed to find mandatory ACPI Table(s)." + "ERROR: Failed to verify mandatory ACPI Table(s) presence." " Status =3D %r\n", Status )); @@ -570,29 +621,32 @@ ProcessAcpiTables ( } =20 // Add the FADT Table first. - for (Idx =3D 0; Idx < AcpiTableCount; Idx++) { - if (CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdFadt) =3D=3D - AcpiTableInfo[Idx].TableGeneratorId) - { - Status =3D BuildAndInstallAcpiTable ( - TableFactoryProtocol, - CfgMgrProtocol, - AcpiTableProtocol, - &AcpiTableInfo[Idx] - ); - if (EFI_ERROR (Status)) { - DEBUG (( - DEBUG_ERROR, - "ERROR: Failed to find build and install ACPI FADT Table." \ - " Status =3D %r\n", - Status - )); - return Status; - } + if ((mAcpiVerifyTables[ACPI_TABLE_VERIFY_FADT].Presence & ACPI_TABLE_PRE= SENT_INSTALLED) =3D=3D 0) { + // FADT is not yet installed + for (Idx =3D 0; Idx < AcpiTableCount; Idx++) { + if (CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdFadt) =3D=3D + AcpiTableInfo[Idx].TableGeneratorId) + { + Status =3D BuildAndInstallAcpiTable ( + TableFactoryProtocol, + CfgMgrProtocol, + AcpiTableProtocol, + &AcpiTableInfo[Idx] + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ERROR: Failed to find build and install ACPI FADT Table." \ + " Status =3D %r\n", + Status + )); + return Status; + } =20 - break; - } - } // for + break; + } + } // for + } =20 // Add remaining ACPI Tables for (Idx =3D 0; Idx < AcpiTableCount; Idx++) { diff --git a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableMa= nagerDxe.inf b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTable= ManagerDxe.inf index 028c3d413cf8..ad8b3d037c16 100644 --- a/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.inf +++ b/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDx= e.inf @@ -34,8 +34,12 @@ [LibraryClasses] UefiBootServicesTableLib UefiDriverEntryPoint =20 +[FeaturePcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol ## CONSUMES + [Protocols] gEfiAcpiTableProtocolGuid # PROTOCOL ALWAYS_CONSUMED + gEfiAcpiSdtProtocolGuid # PROTOCOL ALWAYS_CONSUMED =20 gEdkiiConfigurationManagerProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEdkiiDynamicTableFactoryProtocolGuid # PROTOCOL ALWAYS_CONSUMED --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#91999): https://edk2.groups.io/g/devel/message/91999 Mute This Topic: https://groups.io/mt/92722842/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+92000+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92000+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245855; cv=none; d=zohomail.com; s=zohoarc; b=ExTuS1o0JT96u/T7prDdv8l7CXX+m0cVmn99bN9t/DKXf6CH5zaWRZRnwLC1CMGxTO4OhH32oOAK5t9K/uu+i8stLqP6cQoTgCgxKuL6t124f9wqRM16yKfpilCWKKdVMwRFpI/JHDLR54PdZpEZ1tJIhmiklG111XPpnn8yOck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245855; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=4VZUo80MoyLFhhVQ9m+OOCUyFUrL6a+HKw4KIWJN2NU=; b=bIhKe7zxDUswGiT//x5csn5GqHl5ebmk+jz82PjoSVJX9MVlMrS7SIKe+c7TxYnKX2GNL2mxQ6J0lkPbWlWY59/VcaIO2EUliC/sVTZrChLuWvm3Jjz2r1tnsP1uj34xNgrXVbflITNRPvDRAhiCgm6B1YVCG0miOQ++0s5i5OE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92000+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245855852912.7060347829695; Sat, 30 Jul 2022 22:37:35 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id mrwUYY1788612xzg8x2hXBaN; Sat, 30 Jul 2022 22:37:35 -0700 X-Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by mx.groups.io with SMTP id smtpd.web10.10472.1659245854906888865 for ; Sat, 30 Jul 2022 22:37:34 -0700 X-Received: by mail-pg1-f170.google.com with SMTP id 12so7103613pga.1 for ; Sat, 30 Jul 2022 22:37:34 -0700 (PDT) X-Gm-Message-State: xRK5knoundUD00A3cc7u2n7qx1787277AA= X-Google-Smtp-Source: AGRyM1uVZyrxCFVEvH5RYun5JjVMJ/VTsy1RRCEiAhH6sUY6mAnCEaqaLAIo4QNTKOi6bXUIpH7MzA== X-Received: by 2002:a05:6a00:cc5:b0:52c:91b8:e88c with SMTP id b5-20020a056a000cc500b0052c91b8e88cmr10564507pfv.56.1659245854211; Sat, 30 Jul 2022 22:37:34 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:33 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Joe Lopez , Pierre Gondois Subject: [edk2-devel] [PATCH v3 5/6] DynamicTablesPkg: AcpiSsdtPcieLibArm: Added function to reserve ECAM space Date: Sat, 30 Jul 2022 22:37:26 -0700 Message-Id: <20220731053727.536-6-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245855; bh=T+Rh4gLweotUT9/dk3tueUiKwHyz+F7sQHNuTU9bSPQ=; h=Cc:Date:From:Reply-To:Subject:To; b=XQY2gBVNJAoL9GVP7/z+afyqk9fN1K+CPwcPvwA+WY/d1lhfA72o9vzVnp1E4W58UkO 81M9/eaRgO8MMYQHuQbhDox6RaqcyhZ9rY4r6p85tPoRxsus2CdgjPX9UsvCACiYwPa/5 7dtr3ULLHGIKAVzBy2wZ0tVZxtK4A6aeJCs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245857493100021 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3998 Certain OSes will complain if the ECAM config space is not reserved in the ACPI namespace. This change adds a function to reserve PNP motherboard resources for a given PCI node. Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- Notes: v2: - Only create RES0 after config space checking [Pierre] =20 v3: - Updated function names and descriptions [Pierre] - Moved translation calculation to CONFIG case [Pierre] DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c |= 171 ++++++++++++++++++++ 1 file changed, 171 insertions(+) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c index ceffe2838c03..658a089c8f1f 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c @@ -616,6 +616,169 @@ GeneratePciCrs ( return Status; } =20 +/** Generate a RES0 device node to reserve PNP motherboard resources + for a given PCI node. + + @param [in] PciNode Parent PCI node handle of the generated + resource object. + @param [out] CrsNode CRS node of the AML tree to populate. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid input parameter. + @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +**/ +STATIC +EFI_STATUS +EFIAPI +GenerateMotherboardDevice ( + IN AML_OBJECT_NODE_HANDLE PciNode, + OUT AML_OBJECT_NODE_HANDLE *CrsNode + ) +{ + EFI_STATUS Status; + UINT32 EisaId; + AML_OBJECT_NODE_HANDLE ResNode; + + if (CrsNode =3D=3D NULL) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + // ASL: Device (RES0) {} + Status =3D AmlCodeGenDevice ("RES0", PciNode, &ResNode); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // ASL: Name (_HID, EISAID ("PNP0C02")) + Status =3D AmlGetEisaIdFromString ("PNP0C02", &EisaId); /* PNP Motherboa= rd Resources */ + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D AmlCodeGenNameInteger ("_HID", EisaId, ResNode, NULL); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // ASL: Name (_CRS, ResourceTemplate () {}) + Status =3D AmlCodeGenNameResourceTemplate ("_CRS", ResNode, CrsNode); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + return Status; +} + +/** Reserves ECAM space for PCI config space + + @param [in] Generator The SSDT Pci generator. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol interface. + @param [in] PciInfo Pci device information. + @param [in, out] PciNode RootNode of the AML tree to populate. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +**/ +STATIC +EFI_STATUS +EFIAPI +ReserveEcamSpace ( + IN ACPI_PCI_GENERATOR *Generator, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtoc= ol, + IN CONST CM_ARM_PCI_CONFIG_SPACE_INFO *PciInfo, + IN OUT AML_OBJECT_NODE_HANDLE PciNode + ) +{ + EFI_STATUS Status; + AML_OBJECT_NODE_HANDLE CrsNode; + BOOLEAN Translation; + UINT32 Index; + CM_ARM_OBJ_REF *RefInfo; + UINT32 RefCount; + CM_ARM_PCI_ADDRESS_MAP_INFO *AddrMapInfo; + BOOLEAN IsPosDecode; + + // Get the array of CM_ARM_OBJ_REF referencing the + // CM_ARM_PCI_ADDRESS_MAP_INFO objects. + Status =3D GetEArmObjCmRef ( + CfgMgrProtocol, + PciInfo->AddressMapToken, + &RefInfo, + &RefCount + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + for (Index =3D 0; Index < RefCount; Index++) { + // Get CM_ARM_PCI_ADDRESS_MAP_INFO structures one by one. + Status =3D GetEArmObjPciAddressMapInfo ( + CfgMgrProtocol, + RefInfo[Index].ReferenceToken, + &AddrMapInfo, + NULL + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + switch (AddrMapInfo->SpaceCode) { + case PCI_SS_CONFIG: + Translation =3D (AddrMapInfo->CpuAddress !=3D AddrMapInfo->PciAddr= ess); + if (AddrMapInfo->CpuAddress >=3D AddrMapInfo->PciAddress) { + IsPosDecode =3D TRUE; + } else { + IsPosDecode =3D FALSE; + } + + Status =3D GenerateMotherboardDevice (PciNode, &CrsNode); + if (EFI_ERROR (Status)) { + ASSERT (0); + break; + } + + Status =3D AmlCodeGenRdQWordMemory ( + FALSE, + IsPosDecode, + TRUE, + TRUE, + FALSE, // non-cacheable + TRUE, + 0, + AddrMapInfo->PciAddress, + AddrMapInfo->PciAddress + AddrMapInfo->AddressSize - 1, + Translation ? AddrMapInfo->CpuAddress - AddrMapInfo->Pc= iAddress : 0, + AddrMapInfo->AddressSize, + 0, + NULL, + 0, + TRUE, + CrsNode, + NULL + ); + break; + default: + break; + } // switch + + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + } + + return Status; +} + /** Generate a Pci device. =20 @param [in] Generator The SSDT Pci generator. @@ -702,9 +865,17 @@ GeneratePciDevice ( return Status; } =20 + // Add the PNP Motherboard Resources Device to reserve ECAM space + Status =3D ReserveEcamSpace (Generator, CfgMgrProtocol, PciInfo, PciNode= ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + // Add the template _OSC method. Status =3D AddOscMethod (PciInfo, PciNode); ASSERT_EFI_ERROR (Status); + return Status; } =20 --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92000): https://edk2.groups.io/g/devel/message/92000 Mute This Topic: https://groups.io/mt/92722843/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Wed Apr 24 15:43:10 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+92001+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92001+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1659245856; cv=none; d=zohomail.com; s=zohoarc; b=YXM0SiTETFxqnFKTW1GWbvnbCqMhMszy9p+bKb7jozPWbR8pvs21dNd5tT7okPOgcCM7Sbp9gTi5jEI6uD5Q5UjYJ8nPTEjbPRuAV7axkBHsuE/bcR37x0nrtI5eK1dnZxsj4cDUgIk+7OQs7mNWSXsTcdZVROT6zhPPD8S4a2w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659245856; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=cRlS3Kx72Vfzno13rc2NwlxZiHxjv0nJ2ubA/AcElmk=; b=VxpzM53/ZIg2mZqUOiMUDmgDyIIuIBrY1tdPfe5VPdhfEVzUkyjrdIG1zPdKg43nRnQR7DjnxZB9BNCBGJmP8HYvdIuFI47VXf00IA+WwzWRUojWkOMXXrStphz/evLyhQeNcqrTMEwVSAQj7ipsyp8cD3ewX0Unla/xO/6LRsg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+92001+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1659245856366851.5450521233024; Sat, 30 Jul 2022 22:37:36 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id Qnr7YY1788612xB9lzFpAsYm; Sat, 30 Jul 2022 22:37:36 -0700 X-Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by mx.groups.io with SMTP id smtpd.web09.10669.1659245855454635860 for ; Sat, 30 Jul 2022 22:37:35 -0700 X-Received: by mail-pj1-f41.google.com with SMTP id t2-20020a17090a4e4200b001f21572f3a4so8907795pjl.0 for ; Sat, 30 Jul 2022 22:37:35 -0700 (PDT) X-Gm-Message-State: RV3cbiShQqOzZ5KZ96aWf5aUx1787277AA= X-Google-Smtp-Source: AA6agR7xI533i/6QBr+NT7K1AqI8WbaLYRluLGahps5xewJYOsCkl+jFghi4iavueNe3OmUkKll1+w== X-Received: by 2002:a17:90b:33cd:b0:1f2:b0bd:6da with SMTP id lk13-20020a17090b33cd00b001f2b0bd06damr13335811pjb.95.1659245854780; Sat, 30 Jul 2022 22:37:34 -0700 (PDT) X-Received: from MININT-0U7P5GU.redmond.corp.microsoft.com ([2001:4898:80e8:7:a09e:ed80:a0cd:1e24]) by smtp.gmail.com with ESMTPSA id x6-20020a1709029a4600b00168e83eda56sm6714524plv.3.2022.07.30.22.37.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Jul 2022 22:37:34 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Sami Mujawar , Alexei Fedorov , Joe Lopez , Pierre Gondois Subject: [edk2-devel] [PATCH v3 6/6] DynamicTablesPkg: AcpiSsdtPcieLibArm: Added case handling for PCI config Date: Sat, 30 Jul 2022 22:37:27 -0700 Message-Id: <20220731053727.536-7-kuqin12@gmail.com> In-Reply-To: <20220731053727.536-1-kuqin12@gmail.com> References: <20220731053727.536-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1659245856; bh=IYafJ9SFQhfsqLxuXW+VuhNR5xM5Nn48DG8H/6mAtUw=; h=Cc:Date:From:Reply-To:Subject:To; b=PhRtVnmC6EaI+mcm7K5Wz20JpnQIEUZN0wjeOZZY+LKIhjdI5KlHVcTLfkClWBJaJd8 VBJQ7a/P8h/boFzAFNS41MVx2h4sMyBpsFronWSTTRLhWQ0mMyva41Vqxk2YQOpRX55yH V+SiCdyHCKgKyiuT8uc96wOlUfkPH1qXnIY= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1659245857462100018 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3998 This change added a switch case handling for PCI_SS_CONFIG during SSDT generation. This will allow PCI config case return EFI_SUCCESS instead of EFI_INVALID_PARAMETER. Cc: Sami Mujawar Cc: Alexei Fedorov Co-authored-by: Joe Lopez Signed-off-by: Kun Qin Reviewed-by: Pierre Gondois Reviewed-by: Sami Mujawar --- Notes: v2: - Added Reviewed-by tag [Pierre] =20 v3: - No change DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerator.c |= 5 +++++ 1 file changed, 5 insertions(+) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c index 658a089c8f1f..740271b504ca 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c @@ -603,6 +603,11 @@ GeneratePciCrs ( ); break; =20 + case PCI_SS_CONFIG: + // Do nothing + Status =3D EFI_SUCCESS; + break; + default: Status =3D EFI_INVALID_PARAMETER; } // switch --=20 2.37.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92001): https://edk2.groups.io/g/devel/message/92001 Mute This Topic: https://groups.io/mt/92722844/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-