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 8C91CD811AC for ; Fri, 19 Jan 2024 15:46:24 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=WUhUPOzgcsfht2ugzHYEUx+G45TQuV5ba27+n6/BRHs=; 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=1705679183; v=1; b=XVhFW+nrLYUk/GOq89j2IaaPGjXTwZ7qC45b4z7BkyBG9ovQ9ZkqwPVhUsJFrjSVme0h8dL4 JHWSXtk648RLjYcUS4ArXpQyWUzXa7YZozCrQYBShq2QDI/j6WTUy0iIoRDcMf0JRQiGQjPQmai fVmCMEsVbSyMkWgEyUY+eEUs= X-Received: by 127.0.0.2 with SMTP id MQdxYY7687511xj1I6G6NvEH; Fri, 19 Jan 2024 07:46:23 -0800 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.106]) by mx.groups.io with SMTP id smtpd.web10.25619.1705679180683156874 for ; Fri, 19 Jan 2024 07:46:21 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e+zufJitAyiDjUxrA6Ef+FBVQQOMSqBfP1MfABGrt/paH+GeSai2doD7NpHHY1Twbj6vdr1kCYHwF6gcJkolv3RQRxgvKIbnyyeJzCSu9ZZkz0g6j+zBsewVpg69s0fRnvNwQrYan0V7vBHQeeIWe5+Wk2Pv7iDDnUSqTTUrbRjTv7Ubww+KwQQygaNtjJWkMiUeavbJPtgPAUnuXaHVFLx0rF51NaElcDyqQkbmRxW3PWpwcB7IuQjObPD9mZpQjDT1TPENP3JF8+G6O6pbffiFzzxKTVzQAFjf2JtEluKwEm3EUHPmjnQsfStM4EkdRzxYCsQtpPSeEYK5bdk54A== 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=1rfyZOkyDElgvMbDc5gUttHaHCLUr+mVoatRsKtXA4U=; b=JLnztLqsoSusWiQ+BFDh4kEZj2S1BqjBNKIG80oUfBj5gP8+Q1JZyXYBLUenjwgK7ueYbMuyYdQ3Q46dt0HMLwX2yf1qwWqBhZ0JNj2rfqdC/5mN9vDJgeHxbEhoWe4dTc/TrVeW3W+0iKWEbAWqTloZjmZPTcx4CJPZgoEe6LqmH0fPt5zB0JxjCjwcWPVO/9P4HiPTQV5m30+LLL18xrowq/pwqi60d5BMuBlcGqLksLnCzq9dJEAjh+wpRrYwnWG1DXRoJusEqiz9rsdZp+WgT5S+qiB1lFYfP2xTmxQngLcFfsSxA5PA3CepskPc3ai1JolkdbIXnrYKVuQMWw== 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 MW4PR01MB6482.prod.exchangelabs.com (2603:10b6:303:65::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.26; Fri, 19 Jan 2024 15:46:17 +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.7202.024; Fri, 19 Jan 2024 15:46:17 +0000 From: "Rebecca Cran via groups.io" To: Leif Lindholm , Ard Biesheuvel , Sami Mujawar CC: Rebecca Cran , devel@edk2.groups.io Subject: [edk2-devel] [PATCH v4 1/3] ArmPkg: Update GenericWatchdogDxe to allow setting full 48-bit offset Date: Fri, 19 Jan 2024 08:45:52 -0700 Message-ID: <20240119154554.1052736-2-rebecca@os.amperecomputing.com> In-Reply-To: <20240119154554.1052736-1-rebecca@os.amperecomputing.com> References: <20240119154554.1052736-1-rebecca@os.amperecomputing.com> X-ClientProxiedBy: CH2PR04CA0022.namprd04.prod.outlook.com (2603:10b6:610:52::32) To LV3PR01MB8464.prod.exchangelabs.com (2603:10b6:408:1a3::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3PR01MB8464:EE_|MW4PR01MB6482:EE_ X-MS-Office365-Filtering-Correlation-Id: 81dbbd39-268b-4558-2347-08dc1905c62e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: 32ZEUO3BcQ83+7FdkK48VoSq31DJxrC3J/GNTZqvd57aDtKQC0aaUkMoZrfdYDU6ClSGeYRHix2oFWtV0Mqnb3h5LMKCijtaZo+s1Dysm5wKQlxlotV1XwWDrtWGMGHJCw0Zyi1sQSmtWUFWjdcsmW+gzbp2b5oeX7yH9bJ9lc/K2odusP3wnEKwuD4w/AZlD3y9mfJ+QJPdChkGIGQQv9TRaDPtY2xevwYMzaKo593RaVmgkVdGgZeKfm/debg7awlYJjQ5IE/u059ANE9pnlI6de+gHrgK3X7RhkJVJvMM0EVZBMmKuGaxqL0GT1MfuFsyyymApHYG/QBivfvLmsn1WggHHI7ywwuaMVTF3n593Yhi800toKgVbnudoFoGgET7jF+zch5DXmpgB9t/c9kMwxzq2T7JHyfUWbL/sczuJUD4yPOL401nL+1XwDjU5f7837ZR/a14lvE8+4i7tz9hYY+J+OMXtkX7IQi2aQvrfVBImGtrjG73crkTuinKwebtxQvQxiIUqQ28fdZovcsiwFONX5+lK94IMPJ07HhqkONk8v/sOD/v+WIA9tSuvz4Coe1AgiraxS05YCl4FU/Ly6RooatmOChBdaM8BuQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sfJv4TQCdHeS4ApHfggebxxvWaDOFnKtr9VDRcij3KhD3tFq4HstqoW16d6D?= =?us-ascii?Q?884MgxnmE/+VH9p6Fe7e2UQAKb+IWfO4jRHr3IgGWPGgpaYyF9+Zv0zYXtyG?= =?us-ascii?Q?mBgoP+zVJPdOPQfYA3DTr88OSYGGmKjWkp3Dxaxarl5C09UYPJ2BMvT8Qbdj?= =?us-ascii?Q?n53yBshirNnwcnm9Cr9StTizZsfU2B9G/QYCHrAIA/qHdO2+EOqLc20npiH/?= =?us-ascii?Q?SWcvfrN6FTQkccNzKfEZ+j/CNgERhrzHQhryzpyxBtvy4qyJMq4DpJ0fjR+/?= =?us-ascii?Q?EObN+kX9hpRrrZlzgnxOvkLQHR35ioxKeUmV7H+XGFWgprghiMPxz/cRyXEF?= =?us-ascii?Q?2kPQ9RRwarZFWbxrRuYMw6z18mV9GW2D+CU8qIAWdPIW9GrfDzQzc0Az9aNG?= =?us-ascii?Q?Q/v+KmgXqRBI4bPlvwR/aDOwkHcWNJsinwW1DyBRWXnCd243f3hje9jWJkfk?= =?us-ascii?Q?LCSSORXdQuLDTtu45oVkhUxcItp/wqFhveX4NEZGjJw9PUxTczhNg3HTyHM7?= =?us-ascii?Q?3fc/IL8ntYQxVofMZjytLMqPvLVdlA3wAiqsM/lLNpc1WVsPIpZaFLX+o5uX?= =?us-ascii?Q?cqswAd38Lb61GNSU4+zHNxZtBzykXZ4CrRzCec15dlRyrvXWQ98YEC/HCggB?= =?us-ascii?Q?wIdIBD5Wx3Dr8BXgJV2GdpZwIzFWzQ68gOGhXJW0IVeKHRRfWPR5/Cu7hb9W?= =?us-ascii?Q?OHt5W6w/mWH+cFAsGyWFBCLdbMrbvuB1pO6KRMkBPLg1WrBXZuNKeJFeO33T?= =?us-ascii?Q?xykYjlJP2vdHPSaICMktwjpKWviLFeIJHKlCIT97qsJEXbDOx7DGyhwoTUKd?= =?us-ascii?Q?5/FyGAe50io2wwUMABotHOVZag7qhapBvAOyMFwQlZWlf5vmyF9gljFxEcXm?= =?us-ascii?Q?aZsRrpX2Ll82+8F3hNkJVp83aVNJIrZFCSEDjcozfdN2rMkL7+U/QJYCx4Cp?= =?us-ascii?Q?tA15/kD0aTPNWtun0WGfHlCtHkhi5vk9rlxYKCrOWEFvgiwvK2xvh3JgU+0T?= =?us-ascii?Q?fNDDbCphXJnHH3PyVOWGC+hYheQuCAt0bTYRwvaR97sRavp5CS+PWgwz/C4i?= =?us-ascii?Q?vAd5oSp94PmbKFIVjjl2FFUXOkogik3/9jtuR/IyJxSZTi2SfLckmK+jZE2C?= =?us-ascii?Q?Fe1kQxea1eYRI0U4wEMc0/7RnVEbFpON8QycezbHT+3l0nVzI+efhZh98Awv?= =?us-ascii?Q?3fVBtAfRTA8gj6onDQT9hBD3Acn1L8rtn5hQjRa4ha6ddanawZ2E0rKcjkCs?= =?us-ascii?Q?h4EPDc6ObsjqEfmNbyB7lgYUzJqqlPyV4Eq9hUdAY1EJe6XO86WKoY6hjjJ1?= =?us-ascii?Q?F2LPp36eJoZ8+LcbUGcSP8C15AT9s6TvLlx+YkFhQTYaS/ixofE5NArNvBfG?= =?us-ascii?Q?G0UsPwNS1AFiEpgzr2hy4gSdGA1RD2soYdzJhndIda3FuFywwirbZt7E0zim?= =?us-ascii?Q?Cb2JiR7H1C3AJKc3OawYxgaBl8HLlDaUDBHTv1d1dxPB8Z7kwWKbI9HdKFKZ?= =?us-ascii?Q?kkJnD2viRhWV6wN+fc3U7k1Hve2QnHOHQOTSauiqkIhEHgcF/9C1Rsfhjj7t?= =?us-ascii?Q?Khqd60M4GeFcVCwW59T25pfwbcgOTKxU2GWt2yemb/7rjhFlU5onPLL08p6H?= =?us-ascii?Q?QSV3oUnH5PNA6robHYmIe+I=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81dbbd39-268b-4558-2347-08dc1905c62e X-MS-Exchange-CrossTenant-AuthSource: LV3PR01MB8464.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2024 15:46:17.1834 (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: p6TaFgvWIYf/cdiFlQ//bR7Q+gD7qQYrVXTzYpdpfd3QiNl0ny47S4wxy4BZsVf1vdbQk7t5ZF/pO8e0eJ4oUCnluig0dFgrKaZs0LM6P0HKnQ9vWKnof3ZkpwJuxyFQ X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR01MB6482 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: OwNZgmDJDfZeinI05BNIALFpx7686176AA= 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=XVhFW+nr; 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 generic watchdog offset register is 48 bits wide, and can be set by performing two 32-bit writes. Add support for writing the high 16 bits of the offset register and update the signature of the WatchdogWriteOffsetRegister function to take a UINT64 value. Signed-off-by: Rebecca Cran --- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h | 11 +++++++++- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c | 23 ++++++++++++++= +----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h b/ArmPkg/D= rivers/GenericWatchdogDxe/GenericWatchdog.h index 9bc3bf47047c..fb117832683f 100644 --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h @@ -1,9 +1,13 @@ /** @file * +* Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
* Copyright (c) 2013-2017, ARM Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * +* @par Reference(s): +* - Generic Watchdog specification in Arm Base System Architecture 1.0C: +* https://developer.arm.com/documentation/den0094/c/ **/ =20 #ifndef GENERIC_WATCHDOG_H_ @@ -14,12 +18,17 @@ =20 // Control Frame: #define GENERIC_WDOG_CONTROL_STATUS_REG ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x000) -#define GENERIC_WDOG_OFFSET_REG ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x008) +#define GENERIC_WDOG_OFFSET_REG_LOW ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x008) +#define GENERIC_WDOG_OFFSET_REG_HIGH ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x00C) #define GENERIC_WDOG_COMPARE_VALUE_REG_LOW ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x010) #define GENERIC_WDOG_COMPARE_VALUE_REG_HIGH ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0x014) +#define GENERIC_WDOG_IID_REG ((UINTN)FixedPcdGet64 (PcdGen= ericWatchdogControlBase) + 0xFCC) =20 // Values of bit 0 of the Control/Status Register #define GENERIC_WDOG_ENABLED 1 #define GENERIC_WDOG_DISABLED 0 =20 +#define GENERIC_WDOG_IID_REV_SHIFT 16 +#define GENERIC_WDOG_IID_REV_MASK 0xF + #endif // GENERIC_WATCHDOG_H_ diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c b/ArmPk= g/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c index 66c6c37c08b0..20549aa91d94 100644 --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c @@ -1,5 +1,6 @@ /** @file * +* Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
* Copyright (c) 2013-2018, ARM Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent @@ -35,16 +36,23 @@ STATIC UINTN mTimerFrequencyHz =3D 0; It is therefore stored here. 0 means the timer is not running. */ STATIC UINT64 mNumTimerTicks =3D 0; =20 +STATIC UINT8 WatchdogRevision; + +#define MAX_UINT48 0xFFFFFFFFFFFFULL + STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL *mInterruptProtocol; STATIC EFI_WATCHDOG_TIMER_NOTIFY mWatchdogNotify; =20 STATIC VOID WatchdogWriteOffsetRegister ( - UINT32 Value + UINT64 Value ) { - MmioWrite32 (GENERIC_WDOG_OFFSET_REG, Value); + MmioWrite32 (GENERIC_WDOG_OFFSET_REG_LOW, Value & MAX_UINT32); + if (WatchdogRevision =3D=3D 1) { + MmioWrite32 (GENERIC_WDOG_OFFSET_REG_HIGH, (Value >> 32) & MAX_UINT16)= ; + } } =20 STATIC @@ -211,17 +219,17 @@ WatchdogSetTimerPeriod ( /* 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_UINT32) { + if (mNumTimerTicks > 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 trigger an interrupt, set the offset to max. */ - WatchdogWriteOffsetRegister (MAX_UINT32); + WatchdogWriteOffsetRegister (MAX_UINT48); WatchdogEnable (); SystemCount =3D ArmGenericTimerGetSystemCount (); WatchdogWriteCompareRegister (SystemCount + mNumTimerTicks); } else { - WatchdogWriteOffsetRegister ((UINT32)mNumTimerTicks); + WatchdogWriteOffsetRegister (mNumTimerTicks); WatchdogEnable (); } =20 @@ -310,6 +318,7 @@ GenericWatchdogEntry ( { EFI_STATUS Status; EFI_HANDLE Handle; + UINT32 WatchdogIId; =20 Status =3D gBS->LocateProtocol ( &gHardwareInterrupt2ProtocolGuid, @@ -367,7 +376,9 @@ GenericWatchdogEntry ( ); ASSERT_EFI_ERROR (Status); =20 - mNumTimerTicks =3D 0; + mNumTimerTicks =3D 0; + WatchdogIId =3D MmioRead32 (GENERIC_WDOG_IID_REG); + WatchdogRevision =3D (WatchdogIId >> GENERIC_WDOG_IID_REV_SHIFT) & GENER= IC_WDOG_IID_REV_MASK; 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 (#114088): https://edk2.groups.io/g/devel/message/114088 Mute This Topic: https://groups.io/mt/103832319/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-