From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4864:20::343; helo=mail-wm1-x343.google.com; envelope-from=leif.lindholm@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id ACEE62119FF42 for ; Wed, 19 Dec 2018 08:26:03 -0800 (PST) Received: by mail-wm1-x343.google.com with SMTP id a62so6679124wmh.4 for ; Wed, 19 Dec 2018 08:26:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=n2LSr5xbVBlGvqdETB4H0nEDALHrclqz1h2cl1nLvhI=; b=iNPhVlmrtEYHtMnoEBAp5D1AvkpKrzQef/isLoVBErIjPAbwJ252I5XPh/dFEIqZ1d MpQaiNU61e+LQudjxH12jZZwYQjOCWSaZoAX8hVka7AfqSFbBMB4lScYulf8YNbSHWmc zMnLVhpOX6UR2vxQmKoUAj49q71/MYvDgK2I8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=n2LSr5xbVBlGvqdETB4H0nEDALHrclqz1h2cl1nLvhI=; b=LpTP3TYZrs4V7WV1ObZf8bJIAG+3gBLGAqCINYEAJ/3VHUc8ncaTEgATcvdbee2Jvu oUr1iWJvHm4QUYDGAIGMm3QP8X5H539J4DlszA+1mY59wf4ayW1LZD989b9qaqFGI16A EOfSRPRDLn0IQ5dVNY6965dovQ68ecXixq36csNyQEv5e8SZvR+QGKLn3uzOI/lxsWGj Q1SSURkwwp3SNEhTCPwLO9e6qZonsiwtYy1TlkE2/V48cywBBnI1E/LFpEXM8IWU6YiO k7SxBhclDTLQ0zqQULs8zyeH6b6gUK3yGJYv+fJnbs9eHV1LCjSKC2CPd3zEfy+wURPq fXeA== X-Gm-Message-State: AA+aEWYNxOv4K/Hvw6w63gdq0VJhN4YELZnwVXpM6fuC6wO2mJ77EIeS vUpPx+k5auDhrESMHbaZFOmUCw== X-Google-Smtp-Source: AFSGD/Uc86S4PoHdtOANwW6fucivXo5tQzsitZdwKDNjX/X3lZJCtQy7T7oyz+BKbPPhVEotQrNEsQ== X-Received: by 2002:a1c:8548:: with SMTP id h69mr7456890wmd.11.1545236761675; Wed, 19 Dec 2018 08:26:01 -0800 (PST) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id t12sm9132710wrr.65.2018.12.19.08.26.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 19 Dec 2018 08:26:00 -0800 (PST) Date: Wed, 19 Dec 2018 16:25:59 +0000 From: Leif Lindholm To: Ard Biesheuvel Cc: edk2-devel@lists.01.org, sami.mujawar@arm.com, Thomas Panakamattam Abraham Message-ID: <20181219162559.5wsnkuxrtmf6qay3@bivouac.eciton.net> References: <20181218164621.19072-1-ard.biesheuvel@linaro.org> MIME-Version: 1.0 In-Reply-To: <20181218164621.19072-1-ard.biesheuvel@linaro.org> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [PATCH] Platform/FVP-AArch64: switch to the SBSA watchdog X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Dec 2018 16:26:04 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Dec 18, 2018 at 05:46:21PM +0100, Ard Biesheuvel wrote: > On the FVP Foundation model, the SP805 watchdog appears to be 'wired' > incorrectly, resulting in a watchdog counter that decrements at the > APB clock rate of 24 MHz instead of the usual 32 kHz. Since the > timer start value is only 32-bits wide, this makes the watchdog > unusable in UEFI, since the default timeout set by the DXE core is > 5 minutes, which is not representable in 32-bit at this clock rate. > > So switch to the SBSA watchdog instead, which is wired up to the > generic timer, and ticks at the correct rate. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel >>From my point of view: Reviewed-by: Leif Lindholm But I'd like a nod from Sami or Thomas (added to cc) as well. > --- > Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc | 7 ++++--- > Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf | 2 +- > Platform/ARM/VExpressPkg/Include/Platform/RTSM/ArmPlatform.h | 3 +++ > Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf | 3 +++ > Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c | 7 ++++++- > 5 files changed, 17 insertions(+), 5 deletions(-) > > diff --git a/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc b/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc > index 7db1c675c3d9..0941edeaf53c 100644 > --- a/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc > +++ b/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.dsc > @@ -133,9 +133,10 @@ > gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000 > > ## SBSA Watchdog Count > -!ifndef DISABLE_SBSA_WATCHDOG > gArmPlatformTokenSpaceGuid.PcdWatchdogCount|1 > -!endif > + gArmTokenSpaceGuid.PcdGenericWatchdogControlBase|0x2a440000 > + gArmTokenSpaceGuid.PcdGenericWatchdogRefreshBase|0x2a450000 > + gArmTokenSpaceGuid.PcdGenericWatchdogEl2IntrNum|59 > > !ifdef EDK2_ENABLE_PL111 > ## PL111 Versatile Express Motherboard controller > @@ -265,7 +266,7 @@ > !ifdef EDK2_ENABLE_PL111 > ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf > !endif > - ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf > + ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf > > # SMBIOS Support > > diff --git a/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf b/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf > index 239029d05cf1..c3e573e1bb4f 100644 > --- a/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf > +++ b/Platform/ARM/VExpressPkg/ArmVExpress-FVP-AArch64.fdf > @@ -116,7 +116,7 @@ FvNameGuid = 87940482-fc81-41c3-87e6-399cf85ac8a0 > !ifdef EDK2_ENABLE_PL111 > INF ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/LcdGraphicsOutputDxe.inf > !endif > - INF ArmPlatformPkg/Drivers/SP805WatchdogDxe/SP805WatchdogDxe.inf > + INF ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf > > # > # Semi-hosting filesystem > diff --git a/Platform/ARM/VExpressPkg/Include/Platform/RTSM/ArmPlatform.h b/Platform/ARM/VExpressPkg/Include/Platform/RTSM/ArmPlatform.h > index d856b6daa1d7..e267912ef5f5 100644 > --- a/Platform/ARM/VExpressPkg/Include/Platform/RTSM/ArmPlatform.h > +++ b/Platform/ARM/VExpressPkg/Include/Platform/RTSM/ArmPlatform.h > @@ -76,4 +76,7 @@ > #define PL111_CLCD_MOTHERBOARD_VIDEO_MODE_OSC_ID 1 > #define PL111_CLCD_CORE_TILE_VIDEO_MODE_OSC_ID 1 > > +#define SBSA_WATCHDOG_BASE 0x2a440000 > +#define SBSA_WATCHDOG_SIZE (2 * SIZE_64KB) > + > #endif > diff --git a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf > index 53898c5e957e..511a2ac99b75 100644 > --- a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf > +++ b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf > @@ -60,5 +60,8 @@ > gArmPlatformTokenSpaceGuid.PcdArmMaliDpBase > gArmPlatformTokenSpaceGuid.PcdArmMaliDpMemoryRegionLength > > + gArmTokenSpaceGuid.PcdGenericWatchdogControlBase > + gArmTokenSpaceGuid.PcdGenericWatchdogRefreshBase > + > [Ppis] > gArmMpCoreInfoPpiGuid > diff --git a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > index c8eefa0cf28b..eb8f6a48cd02 100644 > --- a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > +++ b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > @@ -23,7 +23,7 @@ > #define DP_BASE_DESCRIPTOR ((FixedPcdGet64 (PcdArmMaliDpBase) != 0) ? 1 : 0) > > // Number of Virtual Memory Map Descriptors > -#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS (9 + DP_BASE_DESCRIPTOR) > +#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS (10 + DP_BASE_DESCRIPTOR) > > // DDR attributes > #define DDR_ATTRIBUTES_CACHED ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK > @@ -175,6 +175,11 @@ ArmPlatformGetVirtualMemoryMap ( > VirtualMemoryTable[Index].Attributes = CacheAttributes; > } > > + VirtualMemoryTable[++Index].PhysicalBase = SBSA_WATCHDOG_BASE; > + VirtualMemoryTable[Index].VirtualBase = SBSA_WATCHDOG_BASE; > + VirtualMemoryTable[Index].Length = SBSA_WATCHDOG_SIZE; > + VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; > + > // End of Table > VirtualMemoryTable[++Index].PhysicalBase = 0; > VirtualMemoryTable[Index].VirtualBase = 0; > -- > 2.17.1 >