From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (EUR03-DBA-obe.outbound.protection.outlook.com [40.107.104.61]) by mx.groups.io with SMTP id smtpd.web11.2916.1675992451967543874 for ; Thu, 09 Feb 2023 17:27:32 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@suse.com header.s=selector1 header.b=HnUmcyuo; spf=pass (domain: suse.com, ip: 40.107.104.61, mailfrom: jlee@suse.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NIlNXohV94gnFS+sJ4QkylBOGmyLzH+ig3HMJh2DXByj9C9xr+uVR18EeKnl8LmxHlJ93mAfZeGmNAtLFl0Slh+aSdAzizvOEyC3kgubYj5F6xeusDtrjabd9BpYiv/FzsqPtuE2kJkF7PnqBmtSoZO/WAvHLva5c7ZwrzXW+felk4YWKfEzQZa7cRr8pQX+zRSHgkeqJkQyys3idEdxt0oNjX7R527CJn0VETqzCANpf4AybkjYc4loILY4ooOPpvUqONwNEOgOBaiMQw9dSsQd2eAEOAcbPbHzZwD7S0NtIL28ssHyLi8KYsm2DnlpTnf+TFXOOpvNnQ+lzgLLGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Zxq5XzTWsG0L+hzFIrPW/aQBEVMYfdCtRjI7NgQhIs4=; b=PQ1xBoz4bNWsMbjSo9UK1QltoTYKIWrceHEwtOELsaxCqlwBAwG5OkQHXBAXQs+2Bq2iQfU/mVQlAZRfvHaBS5NMKdPiG7CpOYL1wY/N3vR5gaWqJUUtbB4R7FiwUXU5xixldMAJqjPAe3MIqCYHEo1NHMKSj1DmzA1bPKMEYMRswaQKU8YbW4IQ+cU9MN9KnOMWa1HmqklislxeUR2KukC0qAMYmITebrHKjy48BgbrbsvLCXTCtL2YJ2gWTAMLnlkF7BSVfUTlC0yOQST9ZTuf0ccZ1w/vFcg4wAIWn9E1Jtm0Z8bGpgewidOH+mwVZx4UjJWCN2k8GM/xbcmfVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Zxq5XzTWsG0L+hzFIrPW/aQBEVMYfdCtRjI7NgQhIs4=; b=HnUmcyuoDoNZ1QKdNVu4gmKiRIMf+//MhpUZsD1LlJvhAzr29M/k5LzVKiOC4fsxP4nmaykDrqkkuY02ADtZVaC3VZY+RXq/cuWcwX3FOmv1HdBZwjNpClN5gFWb/bo4bKxD8lr/9OKDMEbDyBY3P1lYefC2GftvcFneehOmIG7t6mRZCRievHVIO9r57/If2ywcM3kHlweTEIyVRo84ZZ48+xw2fEgkLUOAF3vZjzmcVZ/DZ5bbgfeANmt+V4JEe+bmlV7Nug/PaLX8ReM322uWfZ4PaqgTPmNXDgkda/FhaVH+lpjH756tcBoYr25YrYW68iwkJSIHJq6e7uSwBA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DB8PR04MB7164.eurprd04.prod.outlook.com (2603:10a6:10:129::23) by AS8PR04MB8836.eurprd04.prod.outlook.com (2603:10a6:20b:42f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Fri, 10 Feb 2023 01:27:28 +0000 Received: from DB8PR04MB7164.eurprd04.prod.outlook.com ([fe80::f104:52a1:3f1e:b7fa]) by DB8PR04MB7164.eurprd04.prod.outlook.com ([fe80::f104:52a1:3f1e:b7fa%4]) with mapi id 15.20.6086.019; Fri, 10 Feb 2023 01:27:28 +0000 Date: Fri, 10 Feb 2023 09:27:16 +0800 From: "joeyli" To: devel@edk2.groups.io, anthony.perard@citrix.com Cc: Liming Gao , Zhiguang Liu , Michael D Kinney Subject: Re: [edk2-devel] [PATCH] MdePkg/SecPeiDxeTimerLibCpu: Better support for dynamic PcdFSBClock Message-ID: <20230210012716.GG13090@linux-l9pv.suse> References: <20221108143148.1552888-1-anthony.perard@citrix.com> In-Reply-To: <20221108143148.1552888-1-anthony.perard@citrix.com> User-Agent: Mutt/1.11.4 (2019-03-13) X-ClientProxiedBy: TYAPR04CA0020.apcprd04.prod.outlook.com (2603:1096:404:15::32) To DB8PR04MB7164.eurprd04.prod.outlook.com (2603:10a6:10:129::23) Return-Path: JLee@suse.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB8PR04MB7164:EE_|AS8PR04MB8836:EE_ X-MS-Office365-Filtering-Correlation-Id: 538ecd77-e14c-4fb1-3037-08db0b05f8ee X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bZTdlOOkFd8YIPMu/tjOeXdciIlcrTFZOXJ2l9lEAcEegqhlGQN7yMzFFradLlpdeRx53NhExVCaEGyr+y2Fapdqk/p2Zb6boOpE2FojYvqGt4rPUIs1uH1jsr1sRN7cftniKhcCcIVjwcvEaxCW7K/+SbxH/oIy9HdGNlfv0DqKO+ZPRtrWUp5/D2yPg3YSBdeaIw9lJWaBVeaDlX/XSx+Kn6dTHvUaeEg7odA8bnxDA8n607LUJhgQufWTd9HMk9NQllT4XBVAY8UNwKDPFVYHcY0zVN63Qkq9cCVyJPzVdGbxpViSHg5jXnLUqkVFrov3Jr6P/m6ZXyu3ykXD6P4q9Zu2BC0HMZpH76lUKa8BVZCH89p145gE/HNa0Jk/5dcuKjGeegTse6SusvhaEuV4Sm0KDa7m/8f6fz7i332FV7dFmyr2JxFsEZHg8pCapOypuVVQMdiXyYO/vXDACXw5z8IIXWwwzrhe7TTUn98M/GJK5PBxPx5WO+bPoxwCY4uCqY6ISvltH8ffgNg8/Ygb5sSDhkdFi6YP0i0vSmFqSIRVgEAUpWdXW02UFcn9AaqOPebhu+z3OJ/PmFV2rYq1uVWe4hzRqDvFP5XiJ+vRplXKLvFRFgCOjvczdK6p3GR43CuoOCrBTTObMevUBpdDBu6VgwA7gHiocfDpMbfbu4BzHVvyx+Cqu03IumEcAlF23C6Wd5/10JiR9c2XrPokbhoPaFvKdLulVDJY7VgHMK2pgmPIztulR6a53I86ngGPCxfGIFFGfC1J8XlOOg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB7164.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(136003)(366004)(346002)(39860400002)(376002)(396003)(451199018)(316002)(19627235002)(83380400001)(66899018)(2906002)(478600001)(6512007)(26005)(54906003)(38100700002)(186003)(41300700001)(966005)(6486002)(9686003)(86362001)(6506007)(6666004)(8936002)(1076003)(5660300002)(36756003)(4326008)(8676002)(66556008)(66946007)(66476007)(33656002)(43062005)(156123004)(213903007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Dc1CQ+50zyhG0Lzj4oYdiFz7nYVKtTwX7lTluUOJm6hN2g8MIadrJAIH76Ri?= =?us-ascii?Q?YpFpQaIU7uJITyM6IDghroCBKWIF+5E8Vc6esZe8LanRplvJjGyczptalen1?= =?us-ascii?Q?rbibPaQGrmFSvD0aFTPCZSogXnuU1C8dqdThJE4KFffhYqRvaX/vyr2OrB9r?= =?us-ascii?Q?g/aDHes7XtoipYYoZ21ft5wkqsk5bmUanpeJUd76hGHK/yTKXq0u8areX1tb?= =?us-ascii?Q?s98RVLHlBUTsQ9/O1NTc0W/b9/WUf0Pk1/pEEEjivfBKFy+6su9Umto/XVKJ?= =?us-ascii?Q?eKgy/PnQmCtSNZhblqc2vwRaTbn9StX6g8G8ExVJE2OuHFYGpcleWocbfxjB?= =?us-ascii?Q?FpfaF1Tju6S6KjDmLwRCgFGlTE47sisw7H5E9dHuQ37fNM+fMeLk2k0lzYIV?= =?us-ascii?Q?OKitc8NBBcK48lyypV5WE3qoUmebUgxvVSmgRqsPjL+IJBDdLAMo1sxgUgSh?= =?us-ascii?Q?7eR3N5dmHDOloEnMH4Z9Q9oML1LNLGdC0FdxZRNdntC8FrWeYXldQHXD5pvg?= =?us-ascii?Q?7TElOGYAIoE+wvD6HkCYmW2MihAyHTq8fakYAqyr5EK0Y6Xtfg6i5fP7cges?= =?us-ascii?Q?ji/IcwxqQuYgeKxDnTGLBzaMrAD3h2jcMNaAmMi788TpBPHRGSLcIirPanBy?= =?us-ascii?Q?hriER2WibRPGQb3pxKR7WJVvEUPWfjeOdVrjLB0m5uPk64TWu82iedIDTV4S?= =?us-ascii?Q?72gGcYVWwHp3+zKS3FjmB1BpM8q0mwayR7ul4BnEXV3NwwUqBr8GSOzs7aPG?= =?us-ascii?Q?DzIIH3SlgOuL7c61kHjPx3i60bGhmgM0JwPB0BqYGOyl+20u+3SMHyuHWHL4?= =?us-ascii?Q?vqKYkpPxW7+ixaHj0kfB/IOLgW60FZwahJKJZjp2vFbyPwWo2G5oVKpDBmF7?= =?us-ascii?Q?NsPTVKutrcKn100iJQMYGMUjUaKn/SefIRm7QMaqokOVz5p2BgzFRuoCrrsc?= =?us-ascii?Q?3aTSKAzYS0X0GhKN+uhG3duHlwPfsVTLE1KD63Koq8Z0sWjNxVxu90B743K0?= =?us-ascii?Q?1g+eQrB0Q1XVLJ4+rkH15l6U/w+rdAgw9o4PBIPCuFM4h+RSUUx4hleqHrwP?= =?us-ascii?Q?owEcuXQ41dbiywOYSodG++bziZneyiE2hR/7R+dHgaD+fcjuvNe9NCfPOIFh?= =?us-ascii?Q?HuCCLTwF6dEzH+/RNplxv+GQ+VtTCqjz2sHmsfj519x1H1161xEcvZYueDQl?= =?us-ascii?Q?fCMWf6Sf88kinH11PfhEdCCVZ51gBD6frGJyl1xlmGIhA+nLcATHkcKowNtA?= =?us-ascii?Q?TOcDJ6zsT2/3h+GE2/xzfX0BVSPaQuD2JjgLoUr9EP63iqOYgutm0RfsSoYI?= =?us-ascii?Q?ZhSj/zY9eq0cMslVXInbL85E48SFbZ1xNlulE8m0PHzOjW3aY27GlVvker1I?= =?us-ascii?Q?N6s4NwmDkeN0v5Wgw18tKpZxJry1Wl67R0yY1xmN00oOJIxUqqLCQZicgn68?= =?us-ascii?Q?mwttiBl8VJTR4O/oZ9EGCXjp7bw0kdJrUEvR7I9IyH2JS55KDt1V3a2HV5n5?= =?us-ascii?Q?jJ8AtCeYGT4S6VAp9UHQyYTiu3jt+fuR5QMdVEvt41MFKsYwGFtEgWDSgPqv?= =?us-ascii?Q?zvbLsM7CYLelXhM0Wgiu7CfUtBwklwvJ3C0aCrKP?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 538ecd77-e14c-4fb1-3037-08db0b05f8ee X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB7164.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 01:27:28.5751 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wdvfchmkdAqqA9u1dU8pVS41hVidtQepkpoBJ9/q9wbsFE5hYTlSP2JQfsVE6Usr X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8836 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Nov 08, 2022 at 02:31:48PM +0000, Anthony PERARD via groups.io wrote: > 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 I have tested this patch with edk2-stable202202 and edk2-stable202211. It works to me to fix problem on bto#4340: Bug 4340 - Running windows 2k22 on OvmfXen got ASSERT /root/source-git/edk2/MdeModulePkg/Core/Dxe/Event/Tpl.c(66): ((BOOLEAN)(0==1)) https://bugzilla.tianocore.org/show_bug.cgi?id=4340 Thanks a lot! Joey Lee > --- > > 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/Library/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 == 0) { > + // > + // Cache current value of PcdFSBClock in case it's a dynamic PCD. > + // > + mFSBClock = PcdGet32 (PcdFSBClock); > + } > return > - PcdGet32 (PcdFSBClock) / > + mFSBClock / > mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + APIC_TDCR, 0, 3)]; > } > > -- > Anthony PERARD > > > > > >