[PATCH v1] ACPI/IORT: fix IORT Reserved Memory Range node mapping error

Lorenzo Pieralisi lpieralisi at kernel.org
Mon Jul 17 04:00:55 PDT 2023


This is v2, not v1.

Please update the subject.

"ACPI/IORT: Remove erroneous id_count check in iort_node_get_rmr_info()"

On Mon, Jul 17, 2023 at 06:18:58PM +0800, Guanghui Feng wrote:
> In the ARM IORT specifications DEN 0049E.d, the recommended ID mapping format:
> Field		Note Description
> --------------------------------
> Input base	The lowest value in the input range
> Number of IDs	The number of IDs in the range "minus" one
> 
> When there is only one id mapping in the Reserved Memory Range
> (RMR) node, the node filed: "Number of IDs" is zero and
> iort_node_get_rmr_info will not analyse id mapping. This is
> not in compliance with the regulations.

Please replace this commit log with:

"According to the ARM IORT specifications DEN 0049 issue E,
the "Number of IDs" field in the ID mapping format reports
the number of IDs in the mapping range minus one.

In iort_node_get_rmr_info(), we erroneously skip ID mappings
whose "Number of IDs" equal to 0, resulting in valid mapping
nodes with a single ID to map being skipped, which is wrong.

Fix iort_node_get_rmr_info() by removing the bogus id_count
check".

Add a:

Fixes: 491cf4a6735a ("ACPI/IORT: Add support to retrieve IORT RMR reserved regions")

Bump version up to v3 and resend.

Thanks,
Lorenzo

> 
> Signed-off-by: Guanghui Feng <guanghuifeng at linux.alibaba.com>
> ---
>  drivers/acpi/arm64/iort.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
> index 3631230..56d8873 100644
> --- a/drivers/acpi/arm64/iort.c
> +++ b/drivers/acpi/arm64/iort.c
> @@ -1007,9 +1007,6 @@ static void iort_node_get_rmr_info(struct acpi_iort_node *node,
>  	for (i = 0; i < node->mapping_count; i++, map++) {
>  		struct acpi_iort_node *parent;
>  
> -		if (!map->id_count)
> -			continue;
> -
>  		parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
>  				      map->output_reference);
>  		if (parent != iommu)
> -- 
> 1.8.3.1
> 



More information about the linux-arm-kernel mailing list