public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ming Huang <ming.huang@linaro.org>
To: leif.lindholm@linaro.org, linaro-uefi@lists.linaro.org,
	edk2-devel@lists.01.org, graeme.gregory@linaro.org
Cc: 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, Ming Huang <ming.huang@linaro.org>
Subject: [PATCH edk2-platforms v4 10/31] Silicon/Hisilicon/D06: Wait for all disk ready
Date: Fri, 24 Aug 2018 00:07:22 +0800	[thread overview]
Message-ID: <20180823160743.45638-11-ming.huang@linaro.org> (raw)
In-Reply-To: <20180823160743.45638-1-ming.huang@linaro.org>

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 <ming.huang@linaro.org>
---
 Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf |  4 +++
 Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c               | 37 ++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
index 7a53befc44..415f8ee36e 100644
--- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
@@ -36,6 +36,7 @@
 [Packages]
   MdeModulePkg/MdeModulePkg.dec
   MdePkg/MdePkg.dec
+  Silicon/Hisilicon/HisiliconNonOsi.dec
   Silicon/Hisilicon/HisiPkg.dec
 
 [LibraryClasses]
@@ -49,6 +50,7 @@
   MemoryAllocationLib
   PcdLib
   PrintLib
+  TimerLib
   UefiBootManagerLib
   UefiBootServicesTableLib
   UefiLib
@@ -67,8 +69,10 @@
 [Guids]
   gEfiEndOfDxeEventGroupGuid
   gEfiTtyTermGuid
+  gOemConfigGuid
 
 [Protocols]
   gEfiGenericMemTestProtocolGuid
   gEfiLoadedImageProtocolGuid
   gEsrtManagementProtocolGuid
+  gPlatformSasNotifyProtocolGuid
diff --git a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c
index aa6db929ca..77295d0111 100644
--- a/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c
+++ b/Silicon/Hisilicon/Library/PlatformBootManagerLib/PlatformBm.c
@@ -20,6 +20,7 @@
 #include <Library/BmcConfigBootLib.h>
 #include <Library/DevicePathLib.h>
 #include <Library/PcdLib.h>
+#include <Library/TimerLib.h>
 #include <Library/UefiBootManagerLib.h>
 #include <Library/UefiLib.h>
 #include <Protocol/DevicePath.h>
@@ -29,6 +30,7 @@
 #include <Protocol/LoadedImage.h>
 #include <Protocol/PciIo.h>
 #include <Protocol/PciRootBridgeIo.h>
+#include <Protocol/PlatformSasNotify.h>
 #include <Guid/EventGroup.h>
 #include <Guid/TtyTerm.h>
 
@@ -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.18.0



  parent reply	other threads:[~2018-08-23 16:09 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-23 16:07 [PATCH edk2-platforms v4 00/31] Upload for D06 platform Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 01/31] Silicon/Hisilicon/Acpi: Move some macro to PlatformArch.h Ming Huang
2018-08-30 18:29   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 02/31] Silicon/Hisilicon/D0x: Move RAS " Ming Huang
2018-08-30 18:29   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 03/31] Silicon/Hisilicon: Fix I2CLib enable fail issue Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 04/31] Silicon/Hisilicon: Add I2CLib delay for HNS auto config Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 05/31] Silicon/Hisilicon: Optimize I2CLib for HNS config CDR time Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 06/31] Hisilicon/D06: Add several base file for D06 Ming Huang
2018-08-30 18:14   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 07/31] Platform/Hisilicon/D06: Add M41T83RealTimeClockLib Ming Huang
2018-08-30 19:00   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 08/31] Platform/Hisilicon/D06: Add edk2-non-osi components for D06 Ming Huang
2018-08-30 18:59   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 09/31] Hisilicon/D06: Add OemMiscLibD06 Ming Huang
2018-08-23 16:07 ` Ming Huang [this message]
2018-08-30 16:51   ` [PATCH edk2-platforms v4 10/31] Silicon/Hisilicon/D06: Wait for all disk ready Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 11/31] Silicon/Hisilicon/Acpi: Unify HisiAcpiPlatformDxe Ming Huang
2018-08-30 18:39   ` Leif Lindholm
2018-08-31  2:12     ` Ming
2018-08-23 16:07 ` [PATCH edk2-platforms v4 12/31] Hisilicon/D06: Add Debug Serial Port Init Driver Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 13/31] Hisilicon/D06: Add ACPI Tables for D06 Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 14/31] Hisilicon/D06: Add Hi1620OemConfigUiLib Ming Huang
2018-08-30 18:58   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 15/31] Silicon/Hisilicon/D06: Stop watchdog Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 16/31] Silicon/Hisilicon/Setup: Add Setup Item "EnableGOP" Ming Huang
2018-08-30 18:41   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 17/31] Hisilicon/Hi1620: Add ACPI PPTT table Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 18/31] Platform/Hisilicon/D06: Enable ACPI PPTT Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 19/31] Platform/Hisilicon/D06: Add OemNicLib Ming Huang
2018-08-30 18:45   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 20/31] Platform/Hisilicon/D06: Add OemNicConfig2P Driver Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 21/31] Hisilicon/D0x: Update SMBIOS type9 info Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 22/31] Platform/Hisilicon/D06: Add EarlyConfigPeim peim Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 23/31] Platform/Hisilicon/D06: Add PciHostBridgeLib Ming Huang
2018-08-23 16:07 ` [PATCH edk2-platforms v4 24/31] Hisilicon/D06: add apei driver Ming Huang
2018-08-30 18:47   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 25/31] Platform/Hisilicon/D06: Add capsule upgrade support Ming Huang
2018-08-30 18:49   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 26/31] Silicon/Hisilicon: Modify for close slave core clock Ming Huang
2018-08-30 18:50   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 27/31] Silicon/Hisilicon: Add I2C Bus Exception handle function Ming Huang
2018-08-30 18:51   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 28/31] Silicon/Hisilicon/Setup: Support SPCR table switch Ming Huang
2018-08-30 18:52   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 29/31] Silicon/Hisilicon/setup: Enable/disable SMMU Ming Huang
2018-08-30 18:55   ` Leif Lindholm
2018-08-23 16:07 ` [PATCH edk2-platforms v4 30/31] Hisilicon/D06: Add PciPlatformLib Ming Huang
2018-08-30 16:15   ` Leif Lindholm
2018-08-31  6:17     ` Ming
2018-08-23 16:07 ` [PATCH edk2-platforms v4 31/31] Platform/Hisilicon/D0x: Update version string to 18.08 Ming Huang
2018-08-30 20:20 ` [PATCH edk2-platforms v4 00/31] Upload for D06 platform Leif Lindholm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180823160743.45638-11-ming.huang@linaro.org \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox