From nobody Fri May 17 09:18:54 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+96077+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+96077+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1667917916; cv=none; d=zohomail.com; s=zohoarc; b=HOdayCJDajd4hRdfZaa8g6bmw3BbsBZySujo/yZ7RDI9y6D961thi/6Snhuh549l1F2tjw+MUt3+39WPuvq7UYuqQspPNrOI7SbhM8qFAXWN6mjBHXWkyQXdc1hcWWv8oWLVrBTfIeQZ/xe1OVhx3tlUrAGhO1piVC8Hbj1PlQ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667917916; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=lWO2WDA6gviX+y0+g/5S1FPlCRFQPuVD15+BXvoiafs=; b=GcpSSrQu+1nJ3JUs9s0QhEFWS/jB2V5QwofkwTWAGX04EnLXFHBRseJuYfVuqwn6vjLmvumO3E9N4v+varBWmMLaHEg0ZJfX2GxSf6ricN/AwsCUY3yDb3+Wd3MoKunOeECE4r+C2Ywu7IWmvPST1D9162eLJjg8TGSxCLXqreY= 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+96077+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1667917915860291.4116232499051; Tue, 8 Nov 2022 06:31:55 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id VVb3YY1788612xQdU5Y9AuMh; Tue, 08 Nov 2022 06:31:54 -0800 X-Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by mx.groups.io with SMTP id smtpd.web08.8715.1667917913261247175 for ; Tue, 08 Nov 2022 06:31:53 -0800 X-SBRS: None X-MesageID: 83471394 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:OPo5Ta0o/txCeJf/x/bD5clxkn2cJEfYwER7XKvMYLTBsI5bp2ACm 2BNDWGOM/mNZDbxfopyOdi09EIBv8TQxtEyGQFopC1hF35El5HIVI+TRqvS04F+DeWYFR46s J9OAjXkBJppJpMJjk71atANlVEliefTAOK5ULSfUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo tq3qMDEULOf82cc3lk8tuTS9nuDgNyo4GlC5wVmNagR1LPjvyJ94Kw3dPnZw0TQGuG4LsbiL 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiI+t5qK23CulQRrukoPD9IOaF8/ttm8t4sZJ OOhF3CHYVxB0qXkwIzxWvTDes10FfUuFLTveRBTvSEPpqFvnrSFL/hGVSkL0YMkFulfL1FF0 KUGEXM3bT+tiaGfmr23QcI0mZF2RCXrFNt3VnBIyDjYCbAtQIzZQrWM7thdtNsyrpkQR7CEP ZNfMGcxKkSbC/FMEg5/5JYWleG0hn75YntApUicv6Yf6GnP1g1hlrPqNbI5f/TaHpkKxx3J+ goq+UzLAVYrBtel8QGn3Sqc3bP2hSTafIsdQejQGvlC3wTImz175ActfUm7oPakg0ixHdZeN mQV/DYjqe4580nDZtz8VB2xrXrCslgfWtxWHvwS6QeRx66S6AGcbkAIQyBMbPQruMxsAzMw0 UKRhJXoAlRHv7SSTXOY97GbhTmjPjMSI3NEbigBCwADi+QPu6lq0EiJFIw6Vvfo0JulQlkc3 gxmsgAQt7421NAylJ+40n7JwBv2qZTCZVYqs1C/sn2e0it1Y4usZoqN4Ffd7OpdIIvxcmRtr EToiODFsrlQUMjleDilBbxUQer3v6rt3Cj02wYHInU3y9i6F5dPl6h06So2GkpmO91sldTBM B6K4lM5CHO+0RKXgU5Lj2CZUZpCIUvIT46NuhXogj1mM/BMmPevpn0GWKJp9zmFfYhFufhX1 W2nWcitF20GLq9s0SC7QewQuZdymH5hlT+NHMijlUr3uVZ7WJJyYe5bWGZik8hjtP/UyOkr2 4o32zS2J+V3D7SlP3i/HX87JlEWN3krba0aWOQOHtNu42NORgkcNhMm6epwJtM/xP8Nxr6gE 7PUchYw9WcTTEbvcW2iAk2Popu1NXqjhRrX5RARAGs= IronPort-HdrOrdr: A9a23:qvEn/qHzdU4sH3sepLqE5MeALOsnbusQ8zAXP0AYc3Jom6uj5q STdZUgpHnJYVkqOE3I9ertBEDiewK4yXcW2/hzAV7KZmCP0wHEEGgL1/qE/9SKIUzDH4Bmup uIC5IOauHNMQ== X-IronPort-AV: E=Sophos;i="5.96,148,1665460800"; d="scan'208";a="83471394" From: "Anthony PERARD via groups.io" To: CC: Liming Gao , Zhiguang Liu , Michael D Kinney , Anthony PERARD Subject: [edk2-devel] [PATCH] MdePkg/SecPeiDxeTimerLibCpu: Better support for dynamic PcdFSBClock Date: Tue, 8 Nov 2022 14:31:48 +0000 Message-ID: <20221108143148.1552888-1-anthony.perard@citrix.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,anthony.perard@citrix.com X-Gm-Message-State: BkYhGgfe7fLRd4LXMcxfVpXAx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1667917914; bh=lWO2WDA6gviX+y0+g/5S1FPlCRFQPuVD15+BXvoiafs=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=pibXztxn6SQELLlSaRW0ug4+nwqOh8LRMlGeZhC1xsUhlseYiffIqP3cIJl60fY3vMo EFmiWp+IQ37BuNOyBROyaF2swALu/RUtRD0DSJiEI6qsx+5rdUk2W5FfyF7EANenbk+pk 3xHDQd0Usz/Pn7DZ9BwXZWm5t1amWQquyRU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1667917916782100002 Content-Type: text/plain; charset="utf-8" From: Anthony PERARD The PcdFSBClock can be a dynamic PCD. This can be an issue when InternalX86GetTimerFrequency() tries to get the value while been called with TPL been set to TPL_HIGH_LEVEL. When the PCD is dynamic, PcdGet*() calls a function that try to grab a lock which set TPL to TPL_NOTIFY. If TPL is already at TPL_HIGH_LEVEL, then an assert() in RaiseTPL() fails (in debug build). To try to avoid the issue, we'll store the current PcdFSBClock value in a local variable the first time we need it. The issue was discovered while attempting to boot a Windows guest with OvmfXen platform. The issue appear while executing the Windows's boot loader EFI application. The down side of this change is that when the PCD is FixedAtBuild, the value is loaded from a variable rather than been a constant. Signed-off-by: Anthony PERARD --- InternalX86GetTimerFrequency() is called by - MicroSecondDelay() - NanoSecondDelay() - GetPerformanceCounterProperties() If one of those functions is called for the first time with a TPL too high, the work around in this patch would not work. But it seems to workaround the issue in my test case. So maybe that's enough, unless someone have a better idea? --- MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c b/MdePkg/Lib= rary/SecPeiDxeTimerLibCpu/X86TimerLib.c index c60589607fde..28ff77ad0c1f 100644 --- a/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c +++ b/MdePkg/Library/SecPeiDxeTimerLibCpu/X86TimerLib.c @@ -90,8 +90,16 @@ InternalX86GetTimerFrequency ( IN UINTN ApicBase ) { + STATIC UINT32 mFSBClock; + + if (mFSBClock =3D=3D 0) { + // + // Cache current value of PcdFSBClock in case it's a dynamic PCD. + // + mFSBClock =3D PcdGet32 (PcdFSBClock); + } return - PcdGet32 (PcdFSBClock) / + mFSBClock / mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + APIC_TDCR, 0,= 3)]; } =20 --=20 Anthony PERARD -=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 (#96077): https://edk2.groups.io/g/devel/message/96077 Mute This Topic: https://groups.io/mt/94891128/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-