On Thu, Feb 18, 2021 at 06:30:44PM +0100, Heinrich Schuchardt wrote: > Test EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDevicePathToText() for a multi > part device path. > > Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de> > --- > lib/efi_selftest/efi_selftest_devicepath.c | 65 ++++++++++++++++++++++ > 1 file changed, 65 insertions(+) > > diff --git a/lib/efi_selftest/efi_selftest_devicepath.c > b/lib/efi_selftest/efi_selftest_devicepath.c > index 4ce3fad895..d87b9f7dcd 100644 > --- a/lib/efi_selftest/efi_selftest_devicepath.c > +++ b/lib/efi_selftest/efi_selftest_devicepath.c > @@ -45,6 +45,55 @@ static u8 *dp1; > static u8 *dp2; > static u8 *dp3; > > +static struct { > + struct efi_device_path_sd_mmc_path sd1; > + struct efi_device_path sep1; > + struct efi_device_path_sd_mmc_path sd2; > + struct efi_device_path sep2; > + struct efi_device_path_sd_mmc_path sd3; > + struct efi_device_path end; > +} multi_part_dp = { > + { > + { > + DEVICE_PATH_TYPE_MESSAGING_DEVICE, > + DEVICE_PATH_SUB_TYPE_MSG_SD, > + sizeof(struct efi_device_path_sd_mmc_path), > + }, > + 0, > + }, > + { > + DEVICE_PATH_TYPE_END, > + DEVICE_PATH_SUB_TYPE_INSTANCE_END, > + sizeof(struct efi_device_path), > + }, > + { > + { > + DEVICE_PATH_TYPE_MESSAGING_DEVICE, > + DEVICE_PATH_SUB_TYPE_MSG_SD, > + sizeof(struct efi_device_path_sd_mmc_path), > + }, > + 1, > + }, > + { > + DEVICE_PATH_TYPE_END, > + DEVICE_PATH_SUB_TYPE_INSTANCE_END, > + sizeof(struct efi_device_path), > + }, > + { > + { > + DEVICE_PATH_TYPE_MESSAGING_DEVICE, > + DEVICE_PATH_SUB_TYPE_MSG_SD, > + sizeof(struct efi_device_path_sd_mmc_path), > + }, > + 2, > + }, > + { > + DEVICE_PATH_TYPE_END, > + DEVICE_PATH_SUB_TYPE_END, > + sizeof(struct efi_device_path), > + }, > +}; > + > struct efi_device_path_to_text_protocol *device_path_to_text; > > /* > @@ -340,6 +389,22 @@ static int execute(void) > return EFI_ST_FAILURE; > } > > + string = device_path_to_text->convert_device_path_to_text( > + (struct efi_device_path *)&multi_part_dp, true, false); > + if (efi_st_strcmp_16_8( > + string, > + "/SD(0),/SD(1),/SD(2)") > + ) { > + efi_st_printf("multi_part_dp: %ps\n", string); > + efi_st_error("Incorrect text from ConvertDevicePathToText\n"); > + return EFI_ST_FAILURE; > + } > + ret = boottime->free_pool(string); > + if (ret != EFI_SUCCESS) { > + efi_st_error("FreePool failed\n"); > + return EFI_ST_FAILURE; > + } > + > /* Test ConvertDeviceNodeToText */ > string = device_path_to_text->convert_device_node_to_text( > (struct efi_device_path *)&dp_node, true, false); > -- > 2.30.0 >
Acked-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>