From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=2607:f8b0:4001:c06::244; helo=mail-io0-x244.google.com; envelope-from=mw@semihalf.com; receiver=edk2-devel@lists.01.org Received: from mail-io0-x244.google.com (mail-io0-x244.google.com [IPv6:2607:f8b0:4001:c06::244]) (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 0AC6F210C42DD for ; Thu, 2 Aug 2018 08:12:58 -0700 (PDT) Received: by mail-io0-x244.google.com with SMTP id i18-v6so2155858ioj.13 for ; Thu, 02 Aug 2018 08:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=ByudfkDVTS718dZ+oB4Zv3LvZ6SrGCr6rpmOUix+wD4=; b=Q4ID7MFSfgb40ukDnRuTkosIias4+kyYF0BHymnMJsIg+QlqZVi2Iz7efmE/QeaAUd /WPxuuT2zG2KbviNawiFZ8iL4c1LN8sdLHvjCZyENt0v/rKc+cMSWqGf+59adrELzFR8 MQJ1wJB2qwxukOhhN2pA8JlkUvbDUeuR03tKN+fBISVLSMrg2a6D/3zXpVWA8QumZ3sn gMCpGOqgl6cabrTC4xjf15ZxRPDdNFdpndPukFYGng9RzfUIupf+ElDlOh2UdKjVpmTi Wnd8fzI9l99sJo5yK7vgwILjmcr+JSCrio2a46u2U5WvR5iVvMAcjSri71thb5M1Oqx1 y3jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=ByudfkDVTS718dZ+oB4Zv3LvZ6SrGCr6rpmOUix+wD4=; b=UAZ6aM4Bf64Rzf+PRV//OM9+bNSA8UnUHRMmX0S2bU/Q49YrSebJPnN6ayE1oFXPUg RrvkUbTk1R0w1Nbu3ZFxLVMAv0SXhoQfE+WQS1dXMc8GpB+0Yfo01nPIT8fU8HI4UUdg aqa5bdq/K/+7/OJYwA0z4R38sSKy8cM6TyWsTuAH1gU2dc2J02X1DRUP9Loa49jsEDZs FfVLpV3/r+JFwcegZt6bGKcue9m3Ze9GWggyIypXnLM+V1Z9v2WvcSjkKvbewRzA9Ijm LKs/aQxg89+LhvLF+2r6IUBie/fJZkmWD0e1LarTElE2JQAU1gi6EDx1vpkLCUjazdBP ++Kg== X-Gm-Message-State: AOUpUlG6DvjEt3+YarvaoXJSXY1Jq2EW8+0iVWTedjgRfPltoermRlyz CQyWDgb3dFrLlRnqqSicuju8r3wyKRCcttzEng/vZw== X-Google-Smtp-Source: AA+uWPyYfNaqeZ6RwjfBE0kiPIoW8CpmvEhbW2mF8wryaHlAaj2Qp9klulObzPO3zUPAjCvuwAJjxFI1sMM8JkW41Sg= X-Received: by 2002:a6b:8e8d:: with SMTP id q135-v6mr2659978iod.248.1533222777999; Thu, 02 Aug 2018 08:12:57 -0700 (PDT) MIME-Version: 1.0 References: <1533221396-11620-1-git-send-email-mw@semihalf.com> In-Reply-To: From: Marcin Wojtas Date: Thu, 2 Aug 2018 17:12:47 +0200 Message-ID: To: Ard Biesheuvel Cc: edk2-devel-01 , "Tian, Feng" , "Kinney, Michael D" , "Gao, Liming" , Leif Lindholm , nadavh@marvell.com, "jsd@semihalf.com" Subject: Re: [PATCH] ArmPkg/GenericWatchdogDxe: Split 64bit register write to 2x32bit X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Aug 2018 15:12:59 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable czw., 2 sie 2018 o 16:59 Ard Biesheuvel napisa= =C5=82(a): > > On 2 August 2018 at 16:49, Marcin Wojtas wrote: > > EDK2 code uses a single 64bit write to update SBSA watchdog > > compare registers, however an access to mmio registers should > > be 32bit for some SoCs. Current usage of MmioWrite64 resulted > > in an unpredicted behavior. Fix this by modifying > > WatchdogWriteCompareRegister routine to use two consecutive > > 32bit writes to Watchdog Compare Register Low and High. > > > > You describe it as if this is generally the case, but this is just a > silicon bug, right? Not sure if it's a bug, or simply SoC characterisctics to place SoC registers to allow only mmio32 access to 32-bit registers. In any way, even updated routine should be fine also for the ones capable of mmio64 registers access. Do you have strong objections to the change? Marcin > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Marcin Wojtas > > --- > > ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c b/A= rmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c > > index 3180f01..b25d210 100644 > > --- a/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c > > +++ b/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c > > @@ -56,7 +56,11 @@ WatchdogWriteCompareRegister ( > > UINT64 Value > > ) > > { > > - MmioWrite64 (GENERIC_WDOG_COMPARE_VALUE_REG, Value); > > + MmioWrite32 (GENERIC_WDOG_COMPARE_VALUE_REG, Value & MAX_UINT32); > > + MmioWrite32 ( > > + GENERIC_WDOG_COMPARE_VALUE_REG + sizeof (UINT32), > > + (Value >> 32) & MAX_UINT32 > > + ); > > } > > > > VOID > > -- > > 2.7.4 > >