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

From: Geert Uytterhoeven
Date: Wed Oct 16 2019 - 05:15:57 EST


Hi Rafael,

On Tue, Oct 15, 2019 at 1:27 PM Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote:
> On Tuesday, October 15, 2019 1:16:50 AM CEST Stephen Rothwell wrote:
> > On Tue, 15 Oct 2019 10:08:55 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> =
> > 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?

Looks like that never warned because acpi_dev_put() is located after

static inline struct acpi_device *
acpi_dev_get_first_match_dev(const char *hid, const char *uid, s64 hrv)
{
return NULL;
}

Moving acpi_dev_hid_uid_match() down gets rid of the warning, too.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds