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

Jarkko Sakkinen <[email protected]>
Newsgroups org.kernel.vger.linux-acpi,org.kernel.vger.linux-integrity,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sat, Aug 29, 2026 at 12:43:30AM +0200, Julien wrote:
> On Thu, Aug 20, 2026 at 9:11 PM Rafael J. Wysocki <[email protected]> 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 checks 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]>
> > ---
> >
> > v1 -> v2:
> >    * It is better to check for complete overlaps both ways as suggested
> >      by Sashiko.
> >
> > @Julien: I would appreciate testing this on the machine that needed
> > commit f234fdaae1ca.
> >
> > ---
> >  drivers/acpi/acpi_platform.c |    8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > --- a/drivers/acpi/acpi_platform.c
> > +++ b/drivers/acpi/acpi_platform.c
> > @@ -85,7 +85,13 @@ 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_contains_unbound(new_res, res) ||
> > +                   resource_type(new_res) != resource_type(res) ||
> >                     !resource_union(new_res, res, new_res)) {
> >                         i++;
> >                         continue;
> >
> >
> >
> 
> I have tested this on commit 1b78070aaef6. It seems the patch is
> already included in it.
> 
> TPM device still works. Here are the logs.
> acpi MSFT0101:00: [mem 0xfed40000-0xfed4103f] expanded due to overlap
> tpm_crb_acpi MSFT0101:00: [Firmware Bug]: Bad ACPI memory layout
> 
> If in the future if I need to make tests again, should I do them on
> the Linus Torvalds' branch?

What was the hardware where this happens?

Sorry, if I've ignored it (if it was mentioned previously).

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.