From patchwork Thu Aug 16 12:12:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 144356 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp1999577ljj; Thu, 16 Aug 2018 05:13:29 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyo1dSCaBM2rmPNuTUtsPzaY2ZMlumabM5JAjfoQHz4BKhBVjPVNkkPbJSC0ZoporfW2U/c X-Received: by 2002:a63:5106:: with SMTP id f6-v6mr28103221pgb.95.1534421609087; Thu, 16 Aug 2018 05:13:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534421609; cv=none; d=google.com; s=arc-20160816; b=bcqlBmyrnAAVtjtVUDn+CT8aDkWlQfFa6Qq6SkjNvboLZ8vHX0Q4nOmKKB0zBvhSz6 O6ZEojkV/0PxJNxr9KQXwOm6CeHsdTJEP8NdyegZVtYEvXh9jBX9cTdEzc5J7NbPbyzY u9YgjOkgdrlnmDizP7fQKCN5e0qncUa5KLfMnIw2aIL5/vaEIIJl7x1xN3JUGs/Ilga/ GtjHn0lkwAcb/JiSZL/i8OXvy8hN3GCFI8YR4ZT1JJEXeQH3PLrWNtWkz4UdrPVSj+7+ UwEoUFGs5MCiF/uUhXYQ77XkCu3JvXKBFETIF6+a/hsnvcKL3bK6z5AOUwDpK5zSNzvi aaOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=SF4CwZ5Alpjx1z/vHreWgefXPIUHKzZr6v3SUK2y33A=; b=0bWaSLrOiwezJDGEQbpz+7JwvVhlEVATqlYRWcRWDg+nP2UY9KgaCp49Ai7YLK8Q8F oWP4pHPz7TsRCajQYXtk9+6DfIcQo9IwvwcQf+G6P/zx6BrauQthZFaOniB9PG8Y2MYy 2PhSsZpopZmmlaKYu6Uw58w2us8Qr38UiPaB2YnCU07rhFi13Y7vzf+HbCEsXdFtM2RF t5GyaJsG2Jjje4l6PsF4Bc/9j6YcnbgzCdFVpk7PZfOjSeYxOj1JB4NP2XPHuw9NObUt 4hR7+6hEqrBjrHY1a2Jo2mFtHcAleRGWkrUwUu8C+a9Q7TqvzOFGeJ66uecybIjqDmXn ZPgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=J9qKwDS+; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id c3-v6si20845148pld.457.2018.08.16.05.13.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 Aug 2018 05:13:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=J9qKwDS+; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id B0481210F3750; Thu, 16 Aug 2018 05:13:28 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:400e:c01::242; helo=mail-pl0-x242.google.com; envelope-from=ming.huang@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-pl0-x242.google.com (mail-pl0-x242.google.com [IPv6:2607:f8b0:400e:c01::242]) (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 39B2D210F3743 for ; Thu, 16 Aug 2018 05:13:27 -0700 (PDT) Received: by mail-pl0-x242.google.com with SMTP id s17-v6so2015261plp.7 for ; Thu, 16 Aug 2018 05:13:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CWrOXjZt3BIGOw0wxFaAwiLIZ9IbEknArKDTitub3O4=; b=J9qKwDS+QoUKFwL9Fj56bFFF+eN4Zj3WS+zQ0c2jb7y2IC6n/NJLFMF5p5HcrCKT5w 9jRT50iqfV26B9215JDeB30YEAaePrLm1Y+iC7G8WMsLGNI2sM+GYSfxOIzSdIrF0bOa lu6oNwcRTvGnXYq3bM37jHBNebL8ukAqvt1MI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CWrOXjZt3BIGOw0wxFaAwiLIZ9IbEknArKDTitub3O4=; b=SGCCjTHKiE8MR9f0uV3D/kLOjojO0cfRadm8Motqcy2OvmRee+P18aOsLOUcHEylX0 NGQu7Deir3j43S/nd7aTjk2dF+REYw33voI7Z3f8PjljulkVlgT8x409bpv4Lyu78PPz 59k6Ud5uoalCWls/hwf7SjIVOSVwoE4ldpeh7NCHm7lTtrgkGVP21eg5Po0Z5EAyDRUJ 3K27WuzODwrqYCQwaAWt1N8/jT0jLCHGpka1zrClVua2IP0Cmt3xKWBKB/TcEFQ8j+aL 6cpTJ8hx6HLQB5PDkMDxiaUirYjiq6KtBt+6hrnNc2KcKAjk2/q+jCrXgAGIToWiO8Me 48VQ== X-Gm-Message-State: AOUpUlHuW5cNr2TuRV0DBvLCYj5FVUXKphySi5pxLxjto7MWOGZvFfz5 bjHUsl9RDHCAVRlb0bwDWDApkA== X-Received: by 2002:a17:902:2f43:: with SMTP id s61-v6mr28319993plb.176.1534421606885; Thu, 16 Aug 2018 05:13:26 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id j27-v6sm46736311pfj.91.2018.08.16.05.13.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Aug 2018 05:13:26 -0700 (PDT) From: Ming Huang To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org, edk2-devel@lists.01.org, graeme.gregory@linaro.org Date: Thu, 16 Aug 2018 20:12:10 +0800 Message-Id: <20180816121239.44129-8-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180816121239.44129-1-ming.huang@linaro.org> References: <20180816121239.44129-1-ming.huang@linaro.org> Subject: [edk2] [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.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huangming23@huawei.com, xinliang.liu@linaro.org, john.garry@huawei.com, zhangjinsong2@huawei.com, guoheyi@huawei.com, huangdaode@hisilicon.com, michael.d.kinney@intel.com, lersek@redhat.com, wanghuiqiang@huawei.com MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" 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(+) -- 2.17.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel 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}} [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 @@ -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.