From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 76C51D8108C for ; Mon, 29 Jan 2024 18:25:44 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=8CHPJtWjD7q1OiDxseAGnXvGz9I8ec45WsR8ELVxrvA=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1706552743; v=1; b=Qh9tvsVXYuXbV8ocNCuM8qadRG5VmlXRbysPKjPC+4HxgGSqlgshAT0OwrayglAZP6tqwrxf RA4Y3082mRLWKbqjzZ2EyRlmOM3CUQ9qonCOwpGhDHZdiaZ14HxJVG8CQ92cuXqvT7mLtb91yWX 3wC8OKabNQzMproQuRVyEDI0= X-Received: by 127.0.0.2 with SMTP id eih5YY7687511xyW1J3sw4zx; Mon, 29 Jan 2024 10:25:43 -0800 X-Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.100]) by mx.groups.io with SMTP id smtpd.web11.2501.1706552740109349493 for ; Mon, 29 Jan 2024 10:25:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UdPFHzG8fHDfMdXiMkWF4zc0oaiA4NQvvwwwKF3GWt+NT+EJ9jiJKY1m7stM3nFCQT2fri41GuTM1oJp2klk9au2wn9uhPnJRYXlNfP+urhNKjEyS8NueCCavmEeL/TW5enrBIJeuTqm+x0btaXKpWToPw/iWvXLpAItGdMHao/RkAIAkchM7deB9bezcvbbDDsr6JovT5m4HOZ7ALsuDU3o7hy4LnCxgph/ghxRHDyVbMLeGoODc4nkBEyCpjH6K0KcImyyWUZh0a8imVbtgv52oVm1s+7nZdY//I2vnYIGvGCU4yau5Jbf8Lhy1KBoM5MhC3Yacxnm2MGQgKgOyQ== 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=h6dvy5mSdP4mALOiPvYIrw45srDN5MFkw+E2IE4QURg=; b=fnpdFyOn9AwqHMUqkZ2zZyI5ja3gdhD/w7m2IsiVKQIyPcJ50qhCNPSGVJwuwurgQW1k+dr4GG/b62HFF48CnElW08DAXYTqufqLVkJAW57keMQ4xmg/AN9IgVZ1jMQEQ+tyKZY8yQXQ22yqwX+PaGneTsoWinj3sEfLcLzCW0AyyEePjuYXXalnRck7fsrEpHN28aqK2t8ltjKXvDyRlAjYLMhOml1P7S0xyRWEO6vqLjJclga6SLTJgkE/IXDBF38dyC66WgC+XTazBOb3FwFvF/z0JrsJ2bJQrXxBHdV39accYNXBwHx2lutftfIY8b2Ps1DDT0Thyw1zOgSR/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none X-Received: from LV3PR01MB8464.prod.exchangelabs.com (2603:10b6:408:1a3::7) by PH7PR01MB8495.prod.exchangelabs.com (2603:10b6:510:2ef::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Mon, 29 Jan 2024 18:25:36 +0000 X-Received: from LV3PR01MB8464.prod.exchangelabs.com ([fe80::7748:d4a3:bcd9:14c1]) by LV3PR01MB8464.prod.exchangelabs.com ([fe80::7748:d4a3:bcd9:14c1%6]) with mapi id 15.20.7228.029; Mon, 29 Jan 2024 18:25:36 +0000 From: "Rebecca Cran via groups.io" To: Leif Lindholm , Ard Biesheuvel , Sami Mujawar , devel@edk2.groups.io CC: Rebecca Cran Subject: [edk2-devel] [PATCH v5 2/3] ArmPkg: Introduce global mTimerPeriod and remove calculation Date: Mon, 29 Jan 2024 11:25:12 -0700 Message-ID: <20240129182514.1375466-3-rebecca@os.amperecomputing.com> In-Reply-To: <20240129182514.1375466-1-rebecca@os.amperecomputing.com> References: <20240129182514.1375466-1-rebecca@os.amperecomputing.com> X-ClientProxiedBy: CH2PR10CA0002.namprd10.prod.outlook.com (2603:10b6:610:4c::12) To LV3PR01MB8464.prod.exchangelabs.com (2603:10b6:408:1a3::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3PR01MB8464:EE_|PH7PR01MB8495:EE_ X-MS-Office365-Filtering-Correlation-Id: 93b86e7e-2338-45ab-ed18-08dc20f7b01c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: XfpKeUnwa11OG2rUy1CGULldRvvfOV1sOlZt/sNcdTT59C1yZNx6RIsJ4Qjse1eFp2Q7WiCGoVK0yWUr7JI9znJUEQPYO+DygygHJ0RWNn2aBEM+9Cpta2X366eWw7RM8K2mN68eM1/97DuS4kYBK7I4Q6dyWBFnNiTkfHFp8hQHG/mF11wIAw7oE9zcsL02gE3s4AcW3lSJRhpO2U/Gbg2BYtYPPkmRFrBVXSQApTV4McpYt6yNzIN1+GVEKFEFJEfakFMKtLdq3KDN1PA4dTN1kSWrp7h4nKcqkBZCXGyqlxM9rgH245O9O8Iuw3PaxGGL8TDgKnpHa0cN2kPQbvqK89vE4qHN9pCxT3cZI/lAGsVUuBxv36y9LqVjCX698LN4epfUwAEVTaGpErFfURHjaLbbhV2sPXXVZ4iW+bt/R2HOu8B8BmuzO2q4grkU+J+zwKlOuWUdG9OuC2bxj1z9PAHhvd9kcLdmO6hJlRxVt0MTSkUYVO/s0wkYy4Ny87qHcqzyz7274nKr1TsBb1U+b8EQKZa/7lSFeDu3Ypn1bhihq5xlxgr2s5yvhtEBwrujPRZIQ06u1cQ3CJ8P8Tjy8azqCZcQHch9egBoOiZRaHEWPgdCIAL9RI9gMbyi X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?areIMg8c7BxdaBk8nkZKTAyRg+rLbAZ9mcGROwOeU4FmrVVlT0PDUDszwAmt?= =?us-ascii?Q?E2YLaPRJ3Do/fxC+SACaUTuJ385KYhPx9q4CvxMBYeSompPSv/8WU68AFt5H?= =?us-ascii?Q?RPK5OC3LCjlyex5Os+bt6CmGkGyZ06ZMzBVUkP4550Ql6i4XmNQHEw9XC+jE?= =?us-ascii?Q?CsqiHkEeh53FdpzLnZS4wfhksGAX+0SK1VosA+nw7qrPkCfrO16U6omM1CPX?= =?us-ascii?Q?n3gUPR7EMGyCGivqDClTM+2jg63Y6ftGv9cHK/+zrlJ5JFD1tlYuqMhIgJJH?= =?us-ascii?Q?9qpdynG+z9kPZCspqjmHRQCTrnwQy570TjktfT4YunloC4m+bXoPHrcSprAE?= =?us-ascii?Q?QMKTz8yNPloJzk6nz02s1XkDyPGnDU/dNFmsZ44C2TGXNz/cW8hl2kbZVIEC?= =?us-ascii?Q?kT1bTo0jVEALuC6q6upNFwkc2hBDZyK3idvOKNd/vaVx1L9V+/iqckbHb9y8?= =?us-ascii?Q?Hw8HXlJQqkvV7ROW65KtCoJUKfCZqfIcj3jU52Sk+o4mwaSDdSDAoXZlppCd?= =?us-ascii?Q?R8E3zeGhtX0UndwX73G5stomb5AyMI6pWtDT7GIwvVsSwg31aJ27JQgNHY5k?= =?us-ascii?Q?gR/Rgwqpw9m5xXOKKt8lb2Vdg+mqgwvHaLoNYKk9i4if0f3KSjNnQX/LjYZz?= =?us-ascii?Q?yGCExNoS+yMZNbDEVkKQh45vsPJzOWcjsvUvUafRxur8NVO3iEDkp/v5rHKg?= =?us-ascii?Q?t1cyneYa7DgdXeO1fGyduvSSAVYA5n+KX9BairmBQkGbaRwso0tNTY5quvEw?= =?us-ascii?Q?aCprG0Lw1fsIEGfM+jEVnAXDeHyKla9PQTAd9mmYfZBYKZdf+VKwHKfRiZ/p?= =?us-ascii?Q?S2FKe6MEbp6CvgOjnEDZxLFca89Cdqyue/gTOwgHY39acB3zKjXMjVJIOw+K?= =?us-ascii?Q?q+OKKjA6jGJ04/EiCN9i4sMNT1ROE+fef9J3/z4M2wpQOV02lC9e1xshaNBR?= =?us-ascii?Q?MPVdfQqv4tNS56p45qruIPn+q8CNAonOJlJvDgqSRimBQDPQbhsJLGWTiLJs?= =?us-ascii?Q?wg9Jn+lC5k+0aggCs3RwWFvT34fwJY3cw48x9WZanFOIsFjjd+RWFBebqa6W?= =?us-ascii?Q?8FKmE6Kjy9tp0B8f3LTogMQjAq2UnAze3VCl8IjzC9nu2PIpGHdJMqItnM2m?= =?us-ascii?Q?ZtbbQrxggoY9D6CrU+lbqOV98BnfMzpEH8/ivYwpxm2ttzXmYz5O69PZwWU1?= =?us-ascii?Q?1sgrUpO0tI7+gFyFAvbVq/gbaZJ79kKspG/4JlSJqPY3WL6gMTkleLuJ8wIT?= =?us-ascii?Q?q3/ljHM+gNq6dLQKFPnPrJkGxVFLhztwq6Ch7/0CQRzU10wuw52rfv80eXbf?= =?us-ascii?Q?bsYDYa0WQh4+Y4kqsqBrOasR19Tif9nJQtqs/025GVFGX7Or5cYf4XGsXViP?= =?us-ascii?Q?o52VUy4TaX2JfquR5gzNsYBQzF1HsqDfZnkyyaCa26ytaXa8ceg91EwCuCSP?= =?us-ascii?Q?tA83ob4+YOX4fym3pvmfKqQzNwEQxYfP0sbVJovt8kTiLvxpEnp8oLwI2V6A?= =?us-ascii?Q?GmuQ0t8f53HwqCaIOnMLd49OeIq8OEuez3GSIERneXD9M94xlF58AA6wjH0s?= =?us-ascii?Q?unE02YZnDz2da5dXT1j08RcyXzZRFTk2TTtlyX4WG418rZNOTfvDKbSF5+ps?= =?us-ascii?Q?8w+UlljhRtMT2TO7BPaiYxQ=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93b86e7e-2338-45ab-ed18-08dc20f7b01c X-MS-Exchange-CrossTenant-AuthSource: LV3PR01MB8464.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2024 18:25:36.4565 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KeaEfnJp1ZzSoNXtCkphGSwmzHi9Xt/z1Yo2BpkZY4MRZkSF3AZRpAu691BvqPKeLSnZAON8Fu+D/o3YTJHqBOjoDzjRQVJf50wOq7YIGwkS4RWbSqondRc6gm/iipGm X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR01MB8495 Precedence: Bulk 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,rebecca@os.amperecomputing.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: oYFZuM8g4lzurGoYsu2egMZ3x7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=Qh9tvsVX; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=none; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") The calculation of the timer period was broken. Introduce a global mTimerPeriod so the calculation can be removed. Since mTimerFrequencyHz is only used in one place, remove the global and make it a local variable. Do the same with mNumTimerTicks. Signed-off-by: Rebecca Cran Reviewed-by: Sami Mujawar --- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c | 34 +++++++++-----= ------ 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c b/ArmPk= g/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c index 6ff947d4b746..d4f9fe6f4ece 100644 --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c @@ -28,13 +28,10 @@ in a second */ #define TIME_UNITS_PER_SECOND 10000000 =20 -// Tick frequency of the generic timer basis of the generic watchdog. -STATIC UINTN mTimerFrequencyHz =3D 0; - /* In cases where the compare register was set manually, information about how long the watchdog was asked to wait cannot be retrieved from hardwa= re. It is therefore stored here. 0 means the timer is not running. */ -STATIC UINT64 mNumTimerTicks =3D 0; +STATIC UINT64 mTimerPeriod =3D 0; =20 /* disables watchdog interaction after Exit Boot Services */ STATIC BOOLEAN mExitedBootServices =3D FALSE; @@ -125,7 +122,7 @@ WatchdogExitBootServicesEvent ( ) { WatchdogDisable (); - mNumTimerTicks =3D 0; + mTimerPeriod =3D 0; } =20 /* This function is called when the watchdog's first signal (WS0) goes hig= h. @@ -140,7 +137,6 @@ WatchdogInterruptHandler ( ) { STATIC CONST CHAR16 ResetString[] =3D L"The generic watchdog timer ran = out."; - UINT64 TimerPeriod; =20 WatchdogDisable (); =20 @@ -153,8 +149,7 @@ WatchdogInterruptHandler ( // the timer period plus 1. // if (mWatchdogNotify !=3D NULL) { - TimerPeriod =3D ((TIME_UNITS_PER_SECOND / mTimerFrequencyHz) * mNumTim= erTicks); - mWatchdogNotify (TimerPeriod + 1); + mWatchdogNotify (mTimerPeriod + 1); } =20 gRT->ResetSystem ( @@ -234,22 +229,27 @@ WatchdogSetTimerPeriod ( IN UINT64 TimerPeriod // In 100ns un= its ) { - UINTN SystemCount; + UINTN SystemCount; + UINT64 TimerFrequencyHz; + UINT64 NumTimerTicks; =20 // if TimerPeriod is 0, this is a request to stop the watchdog. if (TimerPeriod =3D=3D 0) { - mNumTimerTicks =3D 0; + mTimerPeriod =3D 0; WatchdogDisable (); return EFI_SUCCESS; } =20 // Work out how many timer ticks will equate to TimerPeriod - mNumTimerTicks =3D (mTimerFrequencyHz * TimerPeriod) / TIME_UNITS_PER_SE= COND; + TimerFrequencyHz =3D ArmGenericTimerGetTimerFreq (); + ASSERT (TimerFrequencyHz !=3D 0); + mTimerPeriod =3D TimerPeriod; + NumTimerTicks =3D (TimerFrequencyHz * TimerPeriod) / TIME_UNITS_PER_SECO= ND; =20 /* If the number of required ticks is greater than the max the watchdog'= s offset register (WOR) can hold, we need to manually compute and set the compare register (WCV) */ - if (mNumTimerTicks > MAX_UINT48) { + if (NumTimerTicks > MAX_UINT48) { /* We need to enable the watchdog *before* writing to the compare regi= ster, because enabling the watchdog causes an "explicit refresh", which clobbers the compare register (WCV). In order to make sure this doe= sn't @@ -257,9 +257,9 @@ WatchdogSetTimerPeriod ( WatchdogWriteOffsetRegister (MAX_UINT48); WatchdogEnable (); SystemCount =3D ArmGenericTimerGetSystemCount (); - WatchdogWriteCompareRegister (SystemCount + mNumTimerTicks); + WatchdogWriteCompareRegister (SystemCount + NumTimerTicks); } else { - WatchdogWriteOffsetRegister (mNumTimerTicks); + WatchdogWriteOffsetRegister (NumTimerTicks); WatchdogEnable (); } =20 @@ -294,7 +294,7 @@ WatchdogGetTimerPeriod ( return EFI_INVALID_PARAMETER; } =20 - *TimerPeriod =3D ((TIME_UNITS_PER_SECOND / mTimerFrequencyHz) * mNumTime= rTicks); + *TimerPeriod =3D mTimerPeriod; =20 return EFI_SUCCESS; } @@ -361,9 +361,6 @@ GenericWatchdogEntry ( This will avoid conflicts with the universal watchdog */ ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiWatchdogTimerArchProtocolG= uid); =20 - mTimerFrequencyHz =3D ArmGenericTimerGetTimerFreq (); - ASSERT (mTimerFrequencyHz !=3D 0); - // Install interrupt handler Status =3D mInterruptProtocol->RegisterInterruptSource ( mInterruptProtocol, @@ -405,7 +402,6 @@ GenericWatchdogEntry ( ); ASSERT_EFI_ERROR (Status); =20 - mNumTimerTicks =3D 0; WatchdogDisable (); =20 return EFI_SUCCESS; --=20 2.34.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 (#114728): https://edk2.groups.io/g/devel/message/114728 Mute This Topic: https://groups.io/mt/104037318/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-