From 6d9b9bbb6148831de2ca545994f31e27b3d4c675 Mon Sep 17 00:00:00 2001 From: Dandan Bi Date: Fri, 12 Oct 2018 10:18:26 +0800 Subject: [PATCH] MdePkg: Handle Sata device path when optional para is not specified REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1243 Sata device path format:Sata(HPN, PMPN, LUN) According to UEFI Spec, the PMPN is an integer between 0 and 65535 and is optional. If not provided, the default is 0xFFFF. This commit is to do the enhancement for Sata device path when optional para is not specified. Cc: Ruiyu Ni Cc: Michael D Kinney Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi Reviewed-by: Ruiyu Ni --- MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c index 49da8268eb..ca912b4eb0 100644 --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c @@ -3416,7 +3416,15 @@ DevPathFromTextSata ( (UINT16) sizeof (SATA_DEVICE_PATH) ); Sata->HBAPortNumber = (UINT16) Strtoi (Param1); - Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2); + + // + // According to UEFI spec, if PMPN is not provided, the default is 0xFFFF + // + if (*Param2 == L'\0' ) { + Sata->PortMultiplierPortNumber = 0xFFFF; + } else { + Sata->PortMultiplierPortNumber = (UINT16) Strtoi (Param2); + } Sata->Lun = (UINT16) Strtoi (Param3); return (EFI_DEVICE_PATH_PROTOCOL *) Sata;