From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.44]) by mx.groups.io with SMTP id smtpd.web10.2971.1602177889627307604 for ; Thu, 08 Oct 2020 10:24:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=BoFE4wI7; spf=pass (domain: arm.com, ip: 40.107.20.44, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/LSnaR+LT90IPyhaXuwVsBcg8mitzSUlCtOO1J+dWdY=; b=BoFE4wI7TwOrpUNyRLynOVOEDqhV02lvqMXSNLAISgfSvIPSUvCpw7evMcdENUkTax5yTzC18ixucf58+Zh+faUlZ9+sZsrXXUmST6pvzc/vnsSSFJJeF6GzOQoB8UhZOqZjlJ/ZossTXmI7lydbOgxVHGZqFzNcnwpD5F8MAe8= Received: from DB6PR0601CA0004.eurprd06.prod.outlook.com (2603:10a6:4:7b::14) by AM0PR08MB3570.eurprd08.prod.outlook.com (2603:10a6:208:e0::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21; Thu, 8 Oct 2020 17:24:47 +0000 Received: from DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:7b:cafe::93) by DB6PR0601CA0004.outlook.office365.com (2603:10a6:4:7b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21 via Frontend Transport; Thu, 8 Oct 2020 17:24:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT064.mail.protection.outlook.com (10.152.21.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23 via Frontend Transport; Thu, 8 Oct 2020 17:24:47 +0000 Received: ("Tessian outbound 7161e0c2a082:v64"); Thu, 08 Oct 2020 17:24:47 +0000 X-CR-MTA-TID: 64aa7808 Received: from f991b285bcf4.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id BB63C29E-C759-4611-A71C-620A655933CF.1; Thu, 08 Oct 2020 17:24:42 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f991b285bcf4.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 08 Oct 2020 17:24:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nCiH/chN7IheocU3sEtbUU2cYc+ckput/f9QFLQ3MvDYC7nA8mfCiz6cAC/owWqxiQqjOSvDgZdAI/Qh19Ypw4L/xHUauM3gG4xBzz1GzmBWvwnsuZL0EazbutH7Uy9UaxB/Ty0Maxtko7tdD2drja4K3J94NcSA/TTwUrCpHr5Pi3jXZ1GXYdy9fLuGoxN3UhTT4n6FDUZ2UTYOg+WaQ8C0DVVvSq9se8n9q/tWTRI/ZskRnkLT0yY57zOAoLbs+p7HZdPEBNI9l+qgupdgkodfabUiWalwZMAZWZ7kHKPIwvPlor65tZkFgoyMKD6SjBLlM30AFTsgNYvkgqiJxQ== 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-SenderADCheck; bh=/LSnaR+LT90IPyhaXuwVsBcg8mitzSUlCtOO1J+dWdY=; b=KMO+7LMWEUpcdW3ooEO7uXgFxz7jLAkZ9aU3jiIwVbQAwuS7yJPnK3RPD1I6RXTtWBN7NrfnPFVJx6b3UdRsoa+B2Y+pJMz2PyKPgot/3n9kARfWtCenJkSBY+5JucpliSk+sWKJ98ZlCeV8CtwqFmh0rhyuCrXgMGEfB9tD55nToDCmHX9tMTOd0IQzBITJMXfSnnK3i1lFvuGNcs44M0NCVXs+0eEAnW+DsLpdZYCz6tf5INigOo1Kbqdzv5mCL3EIMhmtnVycK/3y94QemxLRldhUwwCvaWrtJvfoJ/1/cGq9nQLgJIKuTQ1SamJoar68yPoXRGNsq28lP32rWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/LSnaR+LT90IPyhaXuwVsBcg8mitzSUlCtOO1J+dWdY=; b=BoFE4wI7TwOrpUNyRLynOVOEDqhV02lvqMXSNLAISgfSvIPSUvCpw7evMcdENUkTax5yTzC18ixucf58+Zh+faUlZ9+sZsrXXUmST6pvzc/vnsSSFJJeF6GzOQoB8UhZOqZjlJ/ZossTXmI7lydbOgxVHGZqFzNcnwpD5F8MAe8= Received: from DB7PR08MB3097.eurprd08.prod.outlook.com (2603:10a6:5:1d::27) by DBBPR08MB4680.eurprd08.prod.outlook.com (2603:10a6:10:f2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.24; Thu, 8 Oct 2020 17:24:40 +0000 Received: from DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::897b:8573:fd4b:d06b]) by DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::897b:8573:fd4b:d06b%7]) with mapi id 15.20.3433.046; Thu, 8 Oct 2020 17:24:39 +0000 From: "Sami Mujawar" To: "devel@edk2.groups.io" , "rajesh.ravi@broadcom.com" CC: Leif Lindholm , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg/GenericWatchdogDxe: Add rev 1 support to ARM Generic Watchdog driver Thread-Topic: [edk2-devel] [PATCH v1 1/1] ArmPkg/GenericWatchdogDxe: Add rev 1 support to ARM Generic Watchdog driver Thread-Index: AQHWnYQjTh8T2P8TQE+XMH5aGuPdn6mN4wIg Date: Thu, 8 Oct 2020 17:24:39 +0000 Message-ID: References: <20201008145608.15737-1-rajesh.ravi@broadcom.com> <20201008145608.15737-2-rajesh.ravi@broadcom.com> In-Reply-To: <20201008145608.15737-2-rajesh.ravi@broadcom.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: FDD53E974C08424CBCB19B90773B8B64.0 x-checkrecipientchecked: true Authentication-Results-Original: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; x-originating-ip: [86.177.210.215] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 07523b22-2ae9-49c4-b7d4-08d86baf0e06 x-ms-traffictypediagnostic: DBBPR08MB4680:|AM0PR08MB3570: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: FP+eKLnX26haDm6E2O8iMommTp/cDncELZPN+pQj0X9KjEtRU8neC+fh632kbrgLZn4BD9OGRxDaAI/oUmTALap8MoJJ0yMWSDJhdE0hIT3I+vO4Ov91vjhPt/QuuHFWZlflDev5kpNFNqIx1uo5wm/jZZPLrQHd4aFbx3Yl/FFuPkYAnz7PuVtofykluK4PCRgygWxXwdVmrhVU9IwhNozjBei/FZZtUJKcpktEyUomvu/AB53IIComv6EMBE1S1D2du0saV+XCDJL6vsbZwa/SMbUHi0x467q444rho4WXNLBLAa7OrYzN49NfpDQKiJVkNH4GFv/m7C0HmcudxIKAuwXaYUOjiauTdeJ6QNnlg39m70P6C9xm31IaWuisrmcy2XdPDBzVoK6LZTjHMQyQT/7681P36BdMXnqKnicB8UdlE6JNpAtbPcbMd7YrwGU1abgY0UhccmwbK+ZNew== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3097.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(376002)(39860400002)(136003)(396003)(366004)(76116006)(8936002)(83080400001)(478600001)(53546011)(4326008)(66946007)(66446008)(66556008)(66476007)(64756008)(55016002)(966005)(8676002)(186003)(83380400001)(7696005)(71200400001)(6506007)(86362001)(26005)(316002)(110136005)(5660300002)(2906002)(54906003)(9686003)(52536014)(33656002)(41533002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: UqjevQPtkBHYRVylxZQEWO6a62ql1sCuXNrDi6oK37OuqaaV2uGJIqvoLMr+Nx2Hs+eRiuv59WaGRvbLzfpg2F4nVtpAYy2U6GlX6GAE45BGLl55LrXW4x97g54dsk80iccdKYywoEMmK85NsbbSUvXlhtw+cKpW0kPGM6/zt/unYJsdbiFKbLfQLQh0dxBpZhUCwVzdtbV9sNPh8KzsxmGjq7r7k4lFq5VQp3NM0CgOavxvr4BDQo4FDJWsrqLHH/9kT/GPt7524BWv+5JRE/MrHFnOzxhYCePJVFU4immJyO8r3lyvKL5fGlZ8fNFq3R3MTQ1Nujg9O7nekOjND8S74d8N9UBfbI9O6OydGqdBwFv/IXDnHug4fslyWgxNRd/iIkzA1BF8jkuLqY3RCgFrQ/3M/mkvPY60KjOxMh/1AOd0WXZBN+OIs3dMs+kG0lEgLdWo3e3/6CCmaWWMKgVi3eioJAl0sRk1UePqiYYUeFSJSsCDcHYzajaLw01PQJ+ctUec5Y0V7N6+/GxJURkegtPqfmZ0jE8BUl+CP/deC8fQHInnMTiG5QPpnYga5/t/WmcaNavh+jVCTkbcoB3Nxnu6ZoZEP2xnzWZtYZRh2vlU71+GFwU2NxIoQi9YDxnjWIu9IP6W+vdLASs0Fg== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4680 Original-Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 92266333-58ff-494c-26c1-08d86baf09bd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MF0k3BsxeIyI7oDLDg0SE+bpw2u4GEJ+O3WkY4xeZy9jlx/FIIR95/NF42th7/rchSFkeSGU4R9MjkCtgqOw6d48qIxMdbDbKzue1sR7pUr98We93LTcVMmHDLxPHKkJZy8ihzrD9QLLpTPhbvyElOEa6ymPHCpa1TzaFe77D6OmmsUqsZH66YVezJC7szRYHpl0JiO24dgRCFFZSdycOogM32r+XjVwzpqSwmvCE7KVOocOX9MTEpdftWPf7pKPEoJDU1SGgmkrZRKV95e+YtlTZBxcFuSofDM9MnJsS+mVEaKPHM/YRqKvt3dX41U5BZab+MAzmqdAZ391oZX47f8/+GCB18babVrka8aEIP47oG/ce12jtL8t4RtlogjlHbHKKCIvhgSfTgmat1wDtECaSXc7/+1f5put/Nfxh7eQyyY9dDbvlNDxFsWJjWCgwDrUH3HhI4VJHR78fnXuPpAeLSTSOjF3RO/8eRB5Sswm8RRxQvG4igiF9YbN7pAF X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(136003)(39850400004)(376002)(346002)(396003)(46966005)(7696005)(70206006)(70586007)(33656002)(83380400001)(336012)(4326008)(26005)(52536014)(82310400003)(186003)(2906002)(9686003)(5660300002)(47076004)(86362001)(478600001)(6506007)(82740400003)(55016002)(81166007)(110136005)(8676002)(54906003)(83080400001)(356005)(316002)(53546011)(966005)(8936002)(41533002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2020 17:24:47.1625 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 07523b22-2ae9-49c4-b7d4-08d86baf0e06 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3570 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Rajesh, Thank you for this patch. Please see my response inline marked as [SAMI]. Regards, Sami Mujawar -----Original Message----- From: devel@edk2.groups.io On Behalf Of rajesh.ravi= @broadcom.com via groups.io Sent: 08 October 2020 03:56 PM To: devel@edk2.groups.io Cc: Rajesh Ravi ; Leif Lindholm ; Ard Biesheuvel Subject: [edk2-devel] [PATCH v1 1/1] ArmPkg/GenericWatchdogDxe: Add rev 1 = support to ARM Generic Watchdog driver From: Rajesh Ravi Add SBSA watchdog rev 1 support to ARM Generic Watchdog driver. Signed-off-by: Rajesh Ravi Cc: Leif Lindholm Cc: Ard Biesheuvel --- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h | 8 ++- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c | 53 +++++++++++++= +++++-- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h b/ArmPkg/= Drivers/GenericWatchdogDxe/GenericWatchdog.h index c64bc5c4627d..ed74bcf95021 100644 --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdog.h @@ -13,12 +13,18 @@ // Control Frame: #define GENERIC_WDOG_CONTROL_STATUS_REG ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x000) -#define GENERIC_WDOG_OFFSET_REG ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x008) +#define GENERIC_WDOG_OFFSET_REG_LOW ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x008) +#define GENERIC_WDOG_OFFSET_REG_HIGH ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x00C) #define GENERIC_WDOG_COMPARE_VALUE_REG_LOW ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x010) #define GENERIC_WDOG_COMPARE_VALUE_REG_HIGH ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0x014) +#define GENERIC_WDOG_IIDR_REG ((UINTN)FixedPcdGet64 (PcdG= enericWatchdogControlBase) + 0xFCC) // Values of bit 0 of the Control/Status Register #define GENERIC_WDOG_ENABLED 1 #define GENERIC_WDOG_DISABLED 0 +#define GENERIC_WDOG_ARCH_REV_OFFSET 16 +#define GENERIC_WDOG_ARCH_REV_MASK 0xF +#define SBSA_WDOG_WOR_WIDTH 48 +#define MAX_OFFSET_REG_VAL (((UINT64)1 << 48) - 1) #endif // __GENERIC_WATCHDOG_H__ diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c b/ArmP= kg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c index f79cc9170f8a..7ef9b1ff08ab 100644 --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c @@ -35,16 +35,53 @@ STATIC UINTN mTimerFrequencyHz =3D 0; It is therefore stored here. 0 means the timer is not running. */ STATIC UINT64 mNumTimerTicks =3D 0; +STATIC UINT32 mWatchDogRev =3D 0; + +STATIC UINT64 mWatchdogMaxOffsetVal =3D MAX_UINT32; + STATIC EFI_HARDWARE_INTERRUPT2_PROTOCOL *mInterruptProtocol; STATIC EFI_WATCHDOG_TIMER_NOTIFY mWatchdogNotify; +STATIC +inline +UINT32 +WatchdogReadRevisionRegister ( + VOID + ) [SAMI] Please add doxygen style function headers. Same at other places.[/S= AMI] +{ + return MmioRead32 (GENERIC_WDOG_IIDR_REG); +} + +STATIC +inline +UINT32 +WatchdogGetRevision ( + VOID + ) +{ + UINT32 IidrRegVal; + + IidrRegVal =3D WatchdogReadRevisionRegister(); + + return ((IidrRegVal >> GENERIC_WDOG_ARCH_REV_OFFSET) & GENERIC_WDOG_ARC= H_REV_MASK); +} + STATIC VOID WatchdogWriteOffsetRegister ( - UINT32 Value + UINT64 Value ) { - MmioWrite32 (GENERIC_WDOG_OFFSET_REG, Value); + if(Value >> SBSA_WDOG_WOR_WIDTH) { [SAMI] The condition in an if statement must be a Boolean expression. Same= at other places. [/SAMI] + return; + } + + MmioWrite32 (GENERIC_WDOG_OFFSET_REG_LOW, ((UINT32)Value & MAX_UINT32))= ; + if (mWatchDogRev) { + MmioWrite32 (GENERIC_WDOG_OFFSET_REG_HIGH, (Value >> 32) & MAX_UINT32= ); + } else { + MmioWrite32 (GENERIC_WDOG_OFFSET_REG_HIGH, 0); [SAMI] According to SBSA spec v3.1, the offsets 0x00C - 0x00F are reserved= for Generic Watchdog version 0. Writing zeros may have undesirable result= s on some platforms. [/SAMI] + } } STATIC @@ -207,12 +244,12 @@ 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 > mWatchdogMaxOffsetVal) { /* We need to enable the watchdog *before* writing to the compare reg= ister, because enabling the watchdog causes an "explicit refresh", which clobbers the compare register (WCV). In order to make sure this do= esn't trigger an interrupt, set the offset to max. */ - WatchdogWriteOffsetRegister (MAX_UINT32); + WatchdogWriteOffsetRegister (MAX_OFFSET_REG_VAL); WatchdogEnable (); SystemCount =3D ArmGenericTimerGetSystemCount (); WatchdogWriteCompareRegister (SystemCount + mNumTimerTicks); @@ -319,6 +356,14 @@ GenericWatchdogEntry ( mTimerFrequencyHz =3D ArmGenericTimerGetTimerFreq (); ASSERT (mTimerFrequencyHz !=3D 0); + mWatchDogRev =3D WatchdogGetRevision(); [SAMI] Space needed between function name and opening bracket. [/SAMI] + + if (mWatchDogRev) { + mWatchdogMaxOffsetVal =3D MAX_OFFSET_REG_VAL; + } else { + mWatchdogMaxOffsetVal =3D MAX_UINT32; + } + // Install interrupt handler Status =3D mInterruptProtocol->RegisterInterruptSource (mInterruptProto= col, FixedPcdGet32 (PcdGenericWatchdogEl2Intr= Num), -- 2.17.1 IMPORTANT NOTICE: The contents of this email and any attachments are confi= dential and may also be privileged. If you are not the intended recipient, = please notify the sender immediately and do not disclose the contents to an= y other person, use it for any purpose, or store or copy the information in= any medium. Thank you.