From: Sam Edwards <cfsworks@gmail.com>
To: Linus Walleij <linus.walleij@linaro.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <lenb@kernel.org>,
Robert Moore <robert.moore@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Dan Williams <dan.j.williams@intel.com>,
Hanjun Guo <guohanjun@huawei.com>, Arnd Bergmann <arnd@arndb.de>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
linux-acpi@vger.kernel.org, acpica-devel@lists.linux.dev,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ACPI: acenv: Permit compilation from within the kernel
Date: Tue, 14 Nov 2023 11:09:37 -0700 [thread overview]
Message-ID: <b2354c21-3a1a-c446-fee0-db0c78d05c71@gmail.com> (raw)
In-Reply-To: <20231114-arm-build-bug-v1-1-458745fe32a4@linaro.org>
On 11/13/23 16:08, Linus Walleij wrote:
> After commit a103f46633fd the kernel stopped compiling for
> several ARM32 platforms that I am building with a bare metal
> compiler. Bare metal compilers (arm-none-eabi-) don't
> define __linux__.
Hi Linus,
I saw the same baremetal-compiler error here on the ARM64 side of the
fence, and narrowed the problem to the same commit as you.
>
> This is because the header <acpi/platform/acenv.h> is now
> in the include path for <linux/irq.h>:
More generally, I think it's because of this addition to linux/acpi.h:
+#include <linux/fw_table.h>
linux/acpi.h is supposed to ensure _LINUX is defined (if it isn't
already done by a non-baremetal compiler) before we start pulling in
ACPICA includes, so that ACPICA knows the platform. But because
fw_table.h contains:
#include <linux/acpi.h>
#include <acpi/acpi.h>
...the circular include does nothing (linux/acpi.h's include guard stops
the include before _LINUX is defined) and we end up pulling in
acpi/acpi.h before we're ready.
>
> CC arch/arm/kernel/irq.o
> CC kernel/sysctl.o
> CC crypto/api.o
> In file included from ../include/acpi/acpi.h:22,
> from ../include/linux/fw_table.h:29,
> from ../include/linux/acpi.h:18,
> from ../include/linux/irqchip.h:14,
> from ../arch/arm/kernel/irq.c:25:
> ../include/acpi/platform/acenv.h:218:2: error: #error Unknown target environment
> 218 | #error Unknown target environment
> | ^~~~~
>
> One solution to make compilation with a bare metal compiler
> work again is to say the file is used with Linux from within
> the kernel if __KERNEL__ is defined so I did that.
I am not an ACPI subsystem maintainer, but my understanding is that the
files in include/acpi/ are copied verbatim from ACPICA, so any change to
those files will have to be sent to the ACPICA project and wouldn't be
accepted here.
More likely, we'd want to do something about the circular-include
situation between linux/fw_table.h<->linux/acpi.h. That may have further
consequences down the road than just our problem here. Perhaps just
dropping both #includes from fw_table.h, and lowering the fw_table.h
include from within linux/acpi.h to be below <acpi/acpi.h>, is the way
to go?
Kind regards,
Sam
next prev parent reply other threads:[~2023-11-14 18:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-13 23:08 [PATCH] ACPI: acenv: Permit compilation from within the kernel Linus Walleij
2023-11-14 18:09 ` Sam Edwards [this message]
2023-11-14 20:20 ` Linus Walleij
2023-11-20 15:25 ` Sam Protsenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b2354c21-3a1a-c446-fee0-db0c78d05c71@gmail.com \
--to=cfsworks@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=acpica-devel@lists.linux.dev \
--cc=arnd@arndb.de \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=guohanjun@huawei.com \
--cc=lenb@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=robert.moore@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).