From patchwork Tue Jul 24 07:08:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Huang X-Patchwork-Id: 142711 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp6931171ljj; Tue, 24 Jul 2018 00:12:43 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeT/sQ911ZBVdtj1buZowdaZ79Xtam9trWx+ClkcBo/p2uL8mldDqCi59uLh61QZGcemorC X-Received: by 2002:a63:1f4d:: with SMTP id q13-v6mr15278353pgm.241.1532416363104; Tue, 24 Jul 2018 00:12:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532416363; cv=none; d=google.com; s=arc-20160816; b=XFqwFHqkn16T3o9B+p1n9LWZh8QalNQeRU/ky64PqX2b17HnLy2t6DMN/9qpvuL5HB ojExLxq5OEsETywLbiZzLPHEXf0YzEX2Q2Nnx90M29yNK1KPGJyIn3J/xAvFcnDnmn1r hzgynupyPkC5AYSoyx/4Lo1Qon7bwtuA7PW20x6MMRkWXb7biHXJaESi0b93ZyGNmWob lPY8lGPrQAgDM7kJeY8b2oAuiPqg7x7Ybb1AcEt8m2Z/XZ5SUPKca3M2JcdVU7fOXtZI C3u345YR1KKkgEqrdfzhlS5VYbZuPXh0VgpBuaP5/Skv7D7dMhd2eKr3HBb9jicH3bQP kFSQ== 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=ZyLhxBXn91Vu4FHE/Z+8dliiLsb8JXkLtVQlBlmCzJM=; b=fsW4MbETvqPLXIbHuyH0e2VLnc2U8zxzGgdeEszhPDSxlyB2CuZdmJwYGv4O+cyqF9 pNcTB4Cr9RVnPNh3cypevsUqOISKszKnSE2ky89akxnH7enWBBeuFg4Ih5ag35EAUyFG 6DpY+0AU4O46JNc17AnhTWI/hmXySop5BPKq9iNuIdLMdQVxSWfMWeuchQvRVjUgkWLS EflhixXoEF+zjVh02u1rvfgijTqfT9fXGCccbNXp3CctFArUVxuag6QU7ypX3NvwdjWt SDwRg/3OZdd55UW0I/hBY7rFelKr/SqDUVc04BtwU6Q65bVjZiomd3riO+mJk8iXV/JS v0pA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JvlQ6lFx; 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 f7-v6si10418448pfe.291.2018.07.24.00.12.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Jul 2018 00:12:43 -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=JvlQ6lFx; 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 9FEA7210C1234; Tue, 24 Jul 2018 00:12:42 -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 B62C7210C1226 for ; Tue, 24 Jul 2018 00:12:40 -0700 (PDT) Received: by mail-pl0-x242.google.com with SMTP id z7-v6so1342933plo.9 for ; Tue, 24 Jul 2018 00:12:40 -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=96ACGAvqL1bDwTUppxmDIqOB11evBf9gr8OSNjPxEYM=; b=JvlQ6lFxZ6GTL+wTXGVUzsb3jQHhtVxD4lH46Kg2SEBcqDkAryx9Cn67LsiQgB4XTE mm5lscTP0st+duQj4GuCyprk0h4cYEjhIqnlRA10MkjEhmcXKja6P0sePGoJ9aB+iA9x x/7DZPxil3PqVZ3whWdEbxzjsVlz3sGGPuLRs= 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=96ACGAvqL1bDwTUppxmDIqOB11evBf9gr8OSNjPxEYM=; b=dLgz2c31pJ/dyAdueeILc4ITMrSURGZwgMdfPXQuZzy12G4o8euS+rp2R6vg6L92aa Lm+eg14NEebOYoy+F6rGY12TlsoLIqNUIf/lohq0rdFDNJ4Rm97bl7i+goq13o+umRPi HT8mxyppdiP/els8EgbRzsLlHCJQVhBoqp3SWILPxG4kkhBcrxh6HOYma3ZBNqaA7BPG kaRyJzxWBwKkXT5iwcEFrROVg2xOP+Jpdhc/DvgleV1WafPLYS+yGAw3vLplLnkVCpm5 d+R6R0hQKyYKVTpmX2RidTHNtI5Eu2Mxxi4mBPIV/Jt2GOWL9UJKRDM/XiXEQRkq61Ak RgvA== X-Gm-Message-State: AOUpUlEdmEgNKmxSqHT4G17AmjKOv2ugNTIkIO80tjEtkRVvkNlSqJTr CgtWGX4c0wVcoJ3faZ4hTWSi+Q== X-Received: by 2002:a17:902:9a8a:: with SMTP id w10-v6mr14854954plp.14.1532416360408; Tue, 24 Jul 2018 00:12:40 -0700 (PDT) Received: from localhost.localdomain ([120.31.149.194]) by smtp.gmail.com with ESMTPSA id t14-v6sm11449788pgu.0.2018.07.24.00.12.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Jul 2018 00:12:39 -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: Tue, 24 Jul 2018 15:08:51 +0800 Message-Id: <20180724070922.63362-8-ming.huang@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180724070922.63362-1-ming.huang@linaro.org> References: <20180724070922.63362-1-ming.huang@linaro.org> Subject: [edk2] [PATCH edk2-platforms v1 07/38] 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, huangdaode@hisilicon.com, guoheyi@huawei.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 30S at most. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang Signed-off-by: Heyi Guo --- Silicon/Hisilicon/HisiPkg.dec | 1 + Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c | 43 ++++++++++++++++++++ Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf | 2 + 3 files changed, 46 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..b56a6a6af7 100644 --- a/Silicon/Hisilicon/HisiPkg.dec +++ b/Silicon/Hisilicon/HisiPkg.dec @@ -45,6 +45,7 @@ gHisiEfiMemoryMapGuid = {0xf8870015, 0x6994, 0x4b98, {0x95, 0xa2, 0xbd, 0x56, 0xda, 0x91, 0xc0, 0x7f}} gVersionInfoHobGuid = {0xe13a14c, 0x859c, 0x4f22, {0x82, 0xbd, 0x18, 0xe, 0xe1, 0x42, 0x12, 0xbf}} + gHisiOemVariableGuid = {0xac62b9a5, 0x9939, 0x41d3, {0xff, 0x5c, 0xc5, 0x80, 0x32, 0x7d, 0x9b, 0x29}} gOemBootVariableGuid = {0xb7784577, 0x5aaf, 0x4557, {0xa1, 0x99, 0xd4, 0xa4, 0x2f, 0x45, 0x06, 0xf8}} gEfiHisiSocControllerGuid = {0xee369cc3, 0xa743, 0x5382, {0x75, 0x64, 0x53, 0xe4, 0x31, 0x19, 0x38, 0x35}} diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c index 7dd5ba615c..f7536bfea3 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 @@ -554,6 +555,47 @@ PlatformBootManagerBeforeConsole ( PlatformRegisterOptionsAndKeys (); } +STATIC +VOID +WaitForDiskReady ( + ) +{ + EFI_STATUS Status; + UINT32 Index; + UINTN DataSize; + UINT32 DiskInfo; + UINT8 IsFinished; + + Status = EFI_NOT_FOUND; + DataSize = sizeof (UINT32); + // Wait for 30 seconds at most. + for (Index=0; Index<30; Index++) { + Status = gRT->GetVariable ( + L"SASDiskInfo", + &gHisiOemVariableGuid, + NULL, + &DataSize, + &DiskInfo + ); + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "Get DiskInfo:%r\n", Status)); + break; + } + + IsFinished = (UINT8)(DiskInfo >> 24); + if (IsFinished) { + break; + } + DEBUG ((DEBUG_ERROR, "%a", Index == 0 ? "Wait for disk." : ".")); + MicroSecondDelay(1000*1000); // 1S + } + + if (!EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "DiskInfo:%x\n", DiskInfo)); + EfiBootManagerConnectAll (); + } +} + /** Do the platform specific action after the console is ready Possible things that can be done in PlatformBootManagerAfterConsole: @@ -583,6 +625,7 @@ PlatformBootManagerAfterConsole ( // Connect the rest of the devices. // EfiBootManagerConnectAll (); + WaitForDiskReady (); // // Enumerate all possible boot options. diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index 7a53befc44..a093f13fb0 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,6 +68,7 @@ [Guids] gEfiEndOfDxeEventGroupGuid gEfiTtyTermGuid + gHisiOemVariableGuid [Protocols] gEfiGenericMemTestProtocolGuid