[PATCH 2/2] efi_selftest: multi part device path to text

Ilias Apalodimas ilias.apalodimas at linaro.org
Fri Feb 19 11:15:09 CET 2021


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.glpk at 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.apalodimas at linaro.org>


More information about the U-Boot mailing list