MdeModulePkg/NvmExpressDxe: Report StatusCode for device init failure
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1408 According to the information of the above BZ-1408 and other platform owners, NVM Express devices are becoming more likely to be a critical part during the boot process. This commit will add the calls to 'REPORT_STATUS_CODE' when there is a failure happens during the NVM Express controller/device initialization process. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Bret Barkelew <brbarkel@microsoft.com> Cc: Jian J Wang <jian.j.wang@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
@ -3,7 +3,7 @@
|
|||||||
NVM Express specification.
|
NVM Express specification.
|
||||||
|
|
||||||
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
|
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
|
||||||
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -45,6 +45,7 @@
|
|||||||
#include <Library/MemoryAllocationLib.h>
|
#include <Library/MemoryAllocationLib.h>
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
#include <Library/ReportStatusCodeLib.h>
|
||||||
|
|
||||||
typedef struct _NVME_CONTROLLER_PRIVATE_DATA NVME_CONTROLLER_PRIVATE_DATA;
|
typedef struct _NVME_CONTROLLER_PRIVATE_DATA NVME_CONTROLLER_PRIVATE_DATA;
|
||||||
typedef struct _NVME_DEVICE_PRIVATE_DATA NVME_DEVICE_PRIVATE_DATA;
|
typedef struct _NVME_DEVICE_PRIVATE_DATA NVME_DEVICE_PRIVATE_DATA;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# NvmExpressDxe driver is used to manage non-volatile memory subsystem which follows
|
# NvmExpressDxe driver is used to manage non-volatile memory subsystem which follows
|
||||||
# NVM Express specification.
|
# NVM Express specification.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -59,6 +59,7 @@
|
|||||||
UefiBootServicesTableLib
|
UefiBootServicesTableLib
|
||||||
UefiLib
|
UefiLib
|
||||||
PrintLib
|
PrintLib
|
||||||
|
ReportStatusCodeLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiPciIoProtocolGuid ## TO_START
|
gEfiPciIoProtocolGuid ## TO_START
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
NvmExpressDxe driver is used to manage non-volatile memory subsystem which follows
|
NvmExpressDxe driver is used to manage non-volatile memory subsystem which follows
|
||||||
NVM Express specification.
|
NVM Express specification.
|
||||||
|
|
||||||
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -379,6 +379,10 @@ NvmeDisableController (
|
|||||||
|
|
||||||
if (Index == 0) {
|
if (Index == 0) {
|
||||||
Status = EFI_DEVICE_ERROR;
|
Status = EFI_DEVICE_ERROR;
|
||||||
|
REPORT_STATUS_CODE (
|
||||||
|
(EFI_ERROR_CODE | EFI_ERROR_MAJOR),
|
||||||
|
(EFI_IO_BUS_SCSI | EFI_IOB_EC_INTERFACE_ERROR)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG ((EFI_D_INFO, "NVMe controller is disabled with status [%r].\n", Status));
|
DEBUG ((EFI_D_INFO, "NVMe controller is disabled with status [%r].\n", Status));
|
||||||
@ -449,6 +453,10 @@ NvmeEnableController (
|
|||||||
|
|
||||||
if (Index == 0) {
|
if (Index == 0) {
|
||||||
Status = EFI_TIMEOUT;
|
Status = EFI_TIMEOUT;
|
||||||
|
REPORT_STATUS_CODE (
|
||||||
|
(EFI_ERROR_CODE | EFI_ERROR_MAJOR),
|
||||||
|
(EFI_IO_BUS_SCSI | EFI_IOB_EC_INTERFACE_ERROR)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG ((EFI_D_INFO, "NVMe controller is enabled with status [%r].\n", Status));
|
DEBUG ((EFI_D_INFO, "NVMe controller is enabled with status [%r].\n", Status));
|
||||||
|
Reference in New Issue
Block a user