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

Julien <[email protected]>
Newsgroups org.kernel.vger.linux-acpi,org.kernel.vger.linux-integrity,org.kernel.vger.linux-kernel
Message-ID <CAJOGg3x4nMtSJeiLa2nsBFFuG4GRyvj7MbErcdOgxyuXCkr_og@mail.gmail.com>
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?
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.