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::441; helo=mail-wr1-x441.google.com; envelope-from=leif.lindholm@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) (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 6246B210FBEFA for ; Wed, 22 Aug 2018 03:25:19 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id k5-v6so1157934wre.10 for ; Wed, 22 Aug 2018 03:25:19 -0700 (PDT) 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=I0tC8O+v1OmaXvqxRh9enhvDlV5XVfM9gGxa43Aj+18=; b=Am90cZ5cvBUcHMPXP63GvWY+msXUM1nmfBcohrd6jtgl6FA1KtR8Z/q1oM2Cy5BeC8 TS62Ag3+azkR7aCvX4YWq2azgJLyuFulyxB9HWos7o8S1bGoi0tpavMzlvaGYm5W7GqV 2Ub6Ra+65YV4Fd3+km8vgoNo0JYIwxG+sP6fI= 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=I0tC8O+v1OmaXvqxRh9enhvDlV5XVfM9gGxa43Aj+18=; b=KXSyOLN7wYTPGlIOglt5ZCPMFdHoQqfY41BSh1QZF7TpUQnOLOffoR7I6B2xLbRjl3 AW9Qw8bhh5NxdYhM5CUtVkDLv5AWR79EnswTgGLSajFqiKAZEC8UX87kq5aguREqZQ5l sh1pQWXgQpqOZpg0fE6xnXmXNQmn2yaNVnMN+dduk3DdO4UuHo5fjKBKPmzkud63Z+5t yFkd5fjo5CxqakMtVreFUPYH+3TdyUYfXS6b1EU6649v0eEVXqKPhbVxGEIBwFl7YWpy CAsigXGr5kw6+YKraSTAIiQtTW8dOk6VUlWnZxsbc36+fGU1pk3rnBMRSwidZ5Nz79M+ SJZw== X-Gm-Message-State: APzg51Cel3UDvTPGmtEGLIiK6P0OYj5RSMY6xR3pkBoMlc2ESHqPM2gV OIHFfrunkVRRFdGctT3O7/edcw== X-Google-Smtp-Source: ANB0VdZAn8iT+di/2+rRe2IOoYRl/OqWCNk1K87HComjqvn61CZES2UPfN+Bep0BiY3uGOc2xZuY8Q== X-Received: by 2002:adf:aa06:: with SMTP id p6-v6mr1862614wrd.56.1534933517648; Wed, 22 Aug 2018 03:25:17 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id l16-v6sm1161840wmc.38.2018.08.22.03.25.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 22 Aug 2018 03:25:16 -0700 (PDT) Date: Wed, 22 Aug 2018 11:25:15 +0100 From: Leif Lindholm To: Ming Huang Cc: linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org, ard.biesheuvel@linaro.org, michael.d.kinney@intel.com, lersek@redhat.com, guoheyi@huawei.com, wanghuiqiang@huawei.com, huangming23@huawei.com, zhangjinsong2@huawei.com, huangdaode@hisilicon.com, john.garry@huawei.com, xinliang.liu@linaro.org Message-ID: <20180822102515.a5zts3sz42m6om3q@bivouac.eciton.net> References: <20180816121239.44129-1-ming.huang@linaro.org> <20180816121239.44129-8-ming.huang@linaro.org> MIME-Version: 1.0 In-Reply-To: <20180816121239.44129-8-ming.huang@linaro.org> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [PATCH edk2-platforms v3 07/36] Silicon/Hisilicon/D06: Wait for all disk ready 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, 22 Aug 2018 10:25:19 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline (Commenting on the v3 patch since I know it supersedes the v2 patch.) On Thu, Aug 16, 2018 at 08:12:10PM +0800, Ming Huang wrote: > This patch is relative to D06 SasDxe driver. The SasDxe set a > variable to notice this libray. Here Wait for all disk ready > for 15S at most. > > D06: > For using straight-through hard disk backboard, some disk need > 15 seconds to ready. Actually, wait less 15 seconds here(minus > the time from end of SAS driver to here). > For using expander backboard, wait less 6 seconds here(minus > the time from end of SAS driver to here). > > D03/D05: > As Sas driver don't install PLATFORM_SAS_NOTIFY Protocol, D03/D05 > will skip waiting here. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ming Huang > --- > Silicon/Hisilicon/HisiPkg.dec | 1 + > Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 3 ++ > Silicon/Hisilicon/Include/Protocol/PlatformSasNotify.h | 27 ++++++++++++++ > Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 37 ++++++++++++++++++++ > 4 files changed, 68 insertions(+) > > diff --git a/Silicon/Hisilicon/HisiPkg.dec b/Silicon/Hisilicon/HisiPkg.dec > index 35bea970ec..0595790df8 100644 > --- a/Silicon/Hisilicon/HisiPkg.dec > +++ b/Silicon/Hisilicon/HisiPkg.dec > @@ -39,6 +39,7 @@ > gPlatformSasProtocolGuid = {0x40e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x5d}} > gHisiPlatformSasProtocolGuid = {0x20e9829f, 0x3a2c, 0x479a, {0x9a, 0x93, 0x45, 0x7d, 0x13, 0x50, 0x96, 0x6d}} > gHisiSnpPlatformProtocolGuid = {0x81321f27, 0xff58, 0x4a1d, {0x99, 0x97, 0xd, 0xcc, 0xfa, 0x82, 0xf4, 0x6f}} > + gPlatformSasNotifyProtocolGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}} Ideally, I would like to see a new package declaration file added in edk2-non-osi/Silicon/Hisilicon. Maybe HisiliconNonOsi.dec. And this guid added there. > > [Guids] > gHisiTokenSpaceGuid = {0xc8bc553e, 0x12bf, 0x11e6, {0x97, 0x4f, 0x87, 0xf7, 0x7c, 0xfd, 0x52, 0x1d}} > diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > index 7a53befc44..96a46da8c5 100644 > --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > @@ -49,6 +49,7 @@ > MemoryAllocationLib > PcdLib > PrintLib > + TimerLib > UefiBootManagerLib > UefiBootServicesTableLib > UefiLib > @@ -67,8 +68,10 @@ > [Guids] > gEfiEndOfDxeEventGroupGuid > gEfiTtyTermGuid > + gOemConfigGuid > > [Protocols] > gEfiGenericMemTestProtocolGuid > gEfiLoadedImageProtocolGuid > gEsrtManagementProtocolGuid > + gPlatformSasNotifyProtocolGuid > diff --git a/Silicon/Hisilicon/Include/Protocol/PlatformSasNotify.h b/Silicon/Hisilicon/Include/Protocol/PlatformSasNotify.h > new file mode 100644 > index 0000000000..54fd30fc68 > --- /dev/null > +++ b/Silicon/Hisilicon/Include/Protocol/PlatformSasNotify.h And similarly, this file added under edk2-non-osi/Silicon/Hisilicon/Include/Protocol. Other than that, I am happy with this patch. (Yes, I know we have not enforced this in the past, but it is way cleaner and makes API-updates a single patch in a single repository.) / Leif > @@ -0,0 +1,27 @@ > +/** @file > +* > +* Copyright (c) 2018, Hisilicon Limited. All rights reserved. > +* Copyright (c) 2018, Linaro Limited. All rights reserved. > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#ifndef _PLATFORM_SAS_NOTIFY_H_ > +#define _PLATFORM_SAS_NOTIFY_H_ > + > +typedef struct _PLATFORM_SAS_NOTIFY PLATFORM_SAS_NOTIFY; > + > +struct _PLATFORM_SAS_NOTIFY { > + EFI_EVENT WaitDiskEvent; > +}; > + > +extern EFI_GUID gPlatformSasNotifyProtocolGuid; > + > +#endif > diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c > index 7dd5ba615c..eaa6ce78d0 100644 > --- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c > +++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -29,6 +30,7 @@ > #include > #include > #include > +#include > #include > #include > > @@ -554,6 +556,40 @@ PlatformBootManagerBeforeConsole ( > PlatformRegisterOptionsAndKeys (); > } > > +STATIC > +VOID > +WaitForDiskReady ( > + VOID > + ) > +{ > + EFI_STATUS Status; > + UINT32 Index; > + PLATFORM_SAS_NOTIFY *SasNotify; > + > + Status = gBS->LocateProtocol ( > + &gPlatformSasNotifyProtocolGuid, > + NULL, > + (VOID **)&SasNotify); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_INFO, "Locate SasPlatformNotify:%r\n", Status)); > + return; > + } > + > + // Wait for 30 seconds at most. > + for (Index = 0; Index < 30; Index++) { > + Status = gBS->CheckEvent (SasNotify->WaitDiskEvent); > + if (!EFI_ERROR (Status)) { > + DEBUG ((DEBUG_INFO, "WaitDiskEvent is signaled.\n")); > + EfiBootManagerConnectAll (); > + break; > + } > + DEBUG ((DEBUG_ERROR, "%a", Index == 0 ? "Wait for disk." : ".")); > + MicroSecondDelay (1000 * 1000); > + } > + > + return; > +} > + > /** > Do the platform specific action after the console is ready > Possible things that can be done in PlatformBootManagerAfterConsole: > @@ -583,6 +619,7 @@ PlatformBootManagerAfterConsole ( > // Connect the rest of the devices. > // > EfiBootManagerConnectAll (); > + WaitForDiskReady (); > > // > // Enumerate all possible boot options. > -- > 2.17.0 >