Re: [PATCH v1] ACPI: scan: Do not combine resources that overlap completely

Jarkko Sakkinen <[email protected]>
Newsgroups org.kernel.vger.linux-integrity,org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Thu, Aug 20, 2026 at 12:50:46PM +0200, Rafael J. Wysocki wrote:
> From: "Rafael J. Wysocki" <[email protected]>
> 
> Commit f234fdaae1ca ("ACPI: scan: Avoid registering platform devices
> with resource overlaps") attempted to avoid platform device registration
> errors due to overlaps of resources of the same type returned by the
> same _CRS object in the ACPI tables.  It did that by combining two or
> more overlapping resources into one, but it went too far and also
> caused resources that overlap completely to be combined which broke
> the arm-cmn driver that expects two MMIO resources to be present for
> each device it binds to and it expects those two resources to overlap
> completely.
> 
> Address this issue by adding a check for completely overlapping
> resources to acpi_platform_adjust_resources() and add a comment
> explaining what is done there.
> 
> Fixes: f234fdaae1ca ("ACPI: scan: Avoid registering platform devices with resource overlaps")
> Reported-by: Nathan Chancellor <[email protected]> 
> Tested-by: Nathan Chancellor <[email protected]> 
> Closes: https://lore.kernel.org/linux-acpi/20260819003752.GA3063251@ax162/
> Signed-off-by: Rafael J. Wysocki <[email protected]>
> ---
> 
> @Julien: I would appreciate testing this on the machine that needed
> commit f234fdaae1ca.
> 
> ---
>  drivers/acpi/acpi_platform.c |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> --- a/drivers/acpi/acpi_platform.c
> +++ b/drivers/acpi/acpi_platform.c
> @@ -85,7 +85,12 @@ static unsigned int acpi_platform_adjust
>  	for (i = 0; i < count; ) {
>  		struct resource *res = &resources[i];
>  
> -		if (resource_type(new_res) != resource_type(res) ||
> +		/*
> +		 * Look for overlaps of resources of the same type that would
> +		 * cause resource insertion to fail down the road.
> +		 */
> +		if (__resource_contains_unbound(res, new_res) ||
> +		    resource_type(new_res) != resource_type(res) ||
>  		    !resource_union(new_res, res, new_res)) {
>  			i++;
>  			continue;
> 
> 
> 

Reviewed-by: Jarkko Sakkinen <[email protected]>

BR, Jarkko
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.