Subject: Re: linux-next: build failure after merge of the pm tree (Was: linux-next: build warning after merge of the pm tree)

From: "Rafael J. Wysocki" <[email-masked]>
Date: Tue, 15 Oct 2019 12:04:08 +0200

On Tuesday, October 15, 2019 1:16:50 AM CEST Stephen Rothwell wrote:
> 
> --Sig_/6GS1h5au_w04qPbsgg/ztsa
> Content-Type: text/plain; charset=US-ASCII
> Content-Transfer-Encoding: quoted-printable
> 
> Hi all,
> 
> On Tue, 15 Oct 2019 10:08:55 +1100 Stephen Rothwell <[email-masked]> =
> wrote:
> >
> > After merging the pm tree, today's linux-next build (arm
> > multi_v7_defconfig) produced this warning:
> >=20
> > In file included from include/linux/irqchip.h:14,
> >                  from arch/arm/kernel/irq.c:26:
> > include/linux/acpi.h:682:31: warning: 'struct acpi_device' declared insid=
> e parameter list will not be visible outside of this definition or declarat=
> ion
> >   682 | acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2=
> , const char *uid2)
> >       |                               ^~~~~~~~~~~
> >=20
> > and many more.
> >=20
> > Introduced by commit
> >=20
> >   d1748b57dc88 ("ACPI / utils: Introduce acpi_dev_hid_uid_match() helper")
> >=20
> > CONFIG_ACPI is not set for this build.
> 
> This became a build failure for the powerpc ppc64_allmodconfig build:
> 
> In file included from include/linux/i2c.h:13,
>                  from arch/powerpc/platforms/pasemi/misc.c:14:
> include/linux/acpi.h:682:31: error: 'struct acpi_device' declared inside pa=
> rameter list will not be visible outside of this definition or declaration =
> [-Werror]
>   682 | acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, =
> const char *uid2)
>       |                               ^~~~~~~~~~~
> cc1: all warnings being treated as errors
> 
> (and many more)
> 
> I have used the pm tree from next-20191014 for today.

So this looks weird, because there is an acpi_dev_put() stub in
include/linux/acpi.h too in the same #else block and it takes a
(struct acpi_device *) pointer too and it has not been touched by
the commit in question.  So why has it built successfully so far?

Also I wonder why 0-day didn't warn about that commit.

Anyway, I've added an extra declaration of struct acpi_device to the #else
block in question to suppress the warning(s).