Re: [PATCH v2 2/7] PCI: ACPI: PM: Do not use pci_platform_pm_ops for ACPI

From: Nathan Chancellor
Date: Wed Sep 29 2021 - 15:08:15 EST


On Mon, Sep 20, 2021 at 09:17:08PM +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>
> Using struct pci_platform_pm_ops for ACPI adds unnecessary
> indirection to the interactions between the PCI core and ACPI PM,
> which is also subject to retpolines.
>
> Moreover, it is not particularly clear from the current code that,
> as far as PCI PM is concerned, "platform" really means just ACPI
> except for the special casess when Intel MID PCI PM is used or when
> ACPI support is disabled (through the kernel config or command line,
> or because there are no usable ACPI tables on the system).
>
> To address the above, rework the PCI PM code to invoke ACPI PM
> functions directly as needed and drop the acpi_pci_platform_pm
> object that is not necessary any more.
>
> Accordingly, update some of the ACPI PM functions in question to do
> extra checks in case the ACPI support is disabled (which previously
> was taken care of by avoiding to set the pci_platform_ops pointer
> in those cases).
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>

This patch as commit 9896a58cdd59 ("PCI: ACPI: PM: Do not use
pci_platform_pm_ops for ACPI") in -next causes the following build error
when compiling x86_64 allmodconfig with clang:

drivers/pci/pci-acpi.c:1125:7: error: variable 'adev' is uninitialized when used here [-Werror,-Wuninitialized]
if (!adev || !acpi_device_power_manageable(adev))
^~~~
drivers/pci/pci-acpi.c:1110:26: note: initialize the variable 'adev' to silence this warning
struct acpi_device *adev;
^
= NULL
1 error generated.

Should the adev assignment be moved up or is there a different fix
necessary?

Cheers,
Nathan