From 003534f8f03c72a9b3a76559378584ab256ca7af Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Wed, 12 Feb 2020 10:03:31 -0700 Subject: [PATCH] MdeModulePkg/BmBootDesciption: Improve device descriptions Add device type prefixes for USB, IDE, SATA, and NVMe drives. Remove UEFI prefix, remove serial numbers. Signed-off-by: Matt DeVillier --- .../UefiBootManagerLib/BmBootDescription.c | 80 ++++++------------- 1 file changed, 23 insertions(+), 57 deletions(-) diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c index aa891feb17..25a6f23c9b 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c @@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define PRODUCT_IDENTIFICATION_LENGTH 16 CONST UINT16 mBmUsbLangId = 0x0409; // English -CHAR16 mBmUefiPrefix[] = L"UEFI "; LIST_ENTRY mPlatformBootDescriptionHandlers = INITIALIZE_LIST_HEAD_VARIABLE (mPlatformBootDescriptionHandlers); @@ -144,9 +143,8 @@ BmGetDescriptionFromDiskInfo ( EFI_ATAPI_IDENTIFY_DATA IdentifyData; EFI_SCSI_INQUIRY_DATA InquiryData; CHAR16 *Description; - UINTN Length; + CHAR16 *DescTemp; CONST UINTN ModelNameLength = 40; - CONST UINTN SerialNumberLength = 20; CHAR8 *StrPtr; UINT8 Temp; EFI_DEVICE_PATH_PROTOCOL *DevicePath; @@ -171,25 +169,24 @@ BmGetDescriptionFromDiskInfo ( &BufferSize ); if (!EFI_ERROR (Status)) { - Description = AllocateZeroPool ((ModelNameLength + SerialNumberLength + 2) * sizeof (CHAR16)); + Description = AllocateZeroPool (StrSize (L"SATA: ") + ModelNameLength * sizeof (CHAR16)); ASSERT (Description != NULL); for (Index = 0; Index + 1 < ModelNameLength; Index += 2) { Description[Index] = (CHAR16) IdentifyData.ModelName[Index + 1]; Description[Index + 1] = (CHAR16) IdentifyData.ModelName[Index]; } - - Length = Index; - Description[Length++] = L' '; - - for (Index = 0; Index + 1 < SerialNumberLength; Index += 2) { - Description[Length + Index] = (CHAR16) IdentifyData.SerialNo[Index + 1]; - Description[Length + Index + 1] = (CHAR16) IdentifyData.SerialNo[Index]; - } - Length += Index; - Description[Length++] = L'\0'; - ASSERT (Length == ModelNameLength + SerialNumberLength + 2); - + Description[Index] = L'\0'; BmEliminateExtraSpaces (Description); + + DescTemp = AllocateZeroPool (0x60); + if (CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoAhciInterfaceGuid)) { + StrCatS (DescTemp, 0x60 / sizeof (CHAR16), L"SATA: "); + } else { + StrCatS (DescTemp, 0x60 / sizeof (CHAR16), L"IDE: "); + } + StrCatS (DescTemp, 0x60 / sizeof (CHAR16), Description); + StrCpyS(Description, StrSize (DescTemp) / sizeof (CHAR16), DescTemp); + FreePool (DescTemp); } } else if (CompareGuid (&DiskInfo->Interface, &gEfiDiskInfoScsiInterfaceGuid)) { BufferSize = sizeof (EFI_SCSI_INQUIRY_DATA); @@ -268,7 +265,6 @@ BmGetUsbDescription ( CHAR16 NullChar; CHAR16 *Manufacturer; CHAR16 *Product; - CHAR16 *SerialNumber; CHAR16 *Description; EFI_USB_DEVICE_DESCRIPTOR DevDesc; UINTN DescMaxSize; @@ -309,44 +305,28 @@ BmGetUsbDescription ( Product = &NullChar; } - Status = UsbIo->UsbGetStringDescriptor ( - UsbIo, - mBmUsbLangId, - DevDesc.StrSerialNumber, - &SerialNumber - ); - if (EFI_ERROR (Status)) { - SerialNumber = &NullChar; - } - if ((Manufacturer == &NullChar) && - (Product == &NullChar) && - (SerialNumber == &NullChar) - ) { + (Product == &NullChar)) { return NULL; } - DescMaxSize = StrSize (Manufacturer) + StrSize (Product) + StrSize (SerialNumber); + DescMaxSize = StrSize (L"USB: ") + StrSize (Manufacturer) + StrSize (Product); Description = AllocateZeroPool (DescMaxSize); ASSERT (Description != NULL); + StrCatS (Description, DescMaxSize/sizeof(CHAR16), L"USB: "); StrCatS (Description, DescMaxSize/sizeof(CHAR16), Manufacturer); StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" "); StrCatS (Description, DescMaxSize/sizeof(CHAR16), Product); StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" "); - StrCatS (Description, DescMaxSize/sizeof(CHAR16), SerialNumber); - if (Manufacturer != &NullChar) { FreePool (Manufacturer); } if (Product != &NullChar) { FreePool (Product); } - if (SerialNumber != &NullChar) { - FreePool (SerialNumber); - } - + BmEliminateExtraSpaces (Description); return Description; @@ -564,6 +544,7 @@ BmGetNvmeDescription ( EFI_NVM_EXPRESS_COMPLETION Completion; NVME_ADMIN_CONTROLLER_DATA ControllerData; CHAR16 *Description; + CHAR16 *DescTemp; CHAR16 *Char; UINTN Index; @@ -630,16 +611,12 @@ BmGetNvmeDescription ( for (Index = 0; Index < ARRAY_SIZE (ControllerData.Mn); Index++) { *(Char++) = (CHAR16) ControllerData.Mn[Index]; } - *(Char++) = L' '; - for (Index = 0; Index < ARRAY_SIZE (ControllerData.Sn); Index++) { - *(Char++) = (CHAR16) ControllerData.Sn[Index]; - } - *(Char++) = L' '; - UnicodeValueToStringS ( - Char, sizeof (CHAR16) * (MAXIMUM_VALUE_CHARACTERS + 1), - 0, DevicePath.NvmeNamespace->NamespaceId, 0 - ); BmEliminateExtraSpaces (Description); + DescTemp = AllocateZeroPool (0x60); + StrCatS (DescTemp, 0x60 / sizeof (CHAR16), L"NVMe: "); + StrCatS (DescTemp, 0x60 / sizeof (CHAR16), Description); + StrCpyS(Description, StrSize (DescTemp) / sizeof (CHAR16), DescTemp); + FreePool (DescTemp); } return Description; @@ -771,7 +748,6 @@ BmGetBootDescription ( BM_BOOT_DESCRIPTION_ENTRY *Entry; CHAR16 *Description; CHAR16 *DefaultDescription; - CHAR16 *Temp; UINTN Index; // @@ -781,16 +757,6 @@ BmGetBootDescription ( for (Index = 0; Index < ARRAY_SIZE (mBmBootDescriptionHandlers); Index++) { DefaultDescription = mBmBootDescriptionHandlers[Index] (Handle); if (DefaultDescription != NULL) { - // - // Avoid description confusion between UEFI & Legacy boot option by adding "UEFI " prefix - // ONLY for core provided boot description handler. - // - Temp = AllocatePool (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)); - ASSERT (Temp != NULL); - StrCpyS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), mBmUefiPrefix); - StrCatS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), DefaultDescription); - FreePool (DefaultDescription); - DefaultDescription = Temp; break; } }