Re: [PATCH v1] ACPI: scan: Do not combine resources that overlap completely
From: Rafael J. Wysocki (Intel)
Date: Fri Aug 21 2026 - 07:32:24 EST
On Fri, Aug 21, 2026 at 3:23 AM Jarkko Sakkinen <jarkko@xxxxxxxxxx> wrote:
>
> On Thu, Aug 20, 2026 at 12:50:46PM +0200, Rafael J. Wysocki wrote:
> > From: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx>
> >
> > 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 <nathan@xxxxxxxxxx>
> > Tested-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> > Closes: https://lore.kernel.org/linux-acpi/20260819003752.GA3063251@ax162/
> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> > ---
> >
> > @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 <jarkko@xxxxxxxxxx>
Thanks!
I'm assuming that the tag also applies to the v2 of the patch
https://lore.kernel.org/linux-acpi/12955564.O9o76ZdvQC@rafael.j.wysocki/
so please let me know if that's not the case.