Re: [PATCH 0/8] x86, acpi: Move acpi_initrd_override() earlier.

Toshi Kani
2013-08-22T15:53:40Z

Hello Tejun,

On Wed, 2013-08-21 at 23:32 -0400, Tejun Heo wrote:
> On Wed, Aug 21, 2013 at 04:36:35PM -0600, Toshi Kani wrote:
> > I agree that ACPI is rather complicated stuff. But in my experience,
> > the majority complication comes from ACPI namespace and methods, not
> > from ACPI tables. Do you really think ACPI table init is that risky? I
> > consider ACPI tables are part of the minimum config info, esp. for
> > legacy-free platforms.
>
> It's just that we're talking about the very first stage of boot. We
> really don't do much there and pulling in ACPI code into that stage is
> a lot by comparison. If that's gonna happen, it needs pretty strong
> justification.

It moves up the ACPI table init code, which itself is simple. And ACPI
tables are defined to be pursed at early boot-time, which is why they
exist in addition to ACPI namespace/methods. They are similar to EFI
memory table. Firmware publishes tables in one way or the other.

I understand that you are concerned about stability of the ACPI stuff,
which I think is a valid point, but most of (if not all) of the
ACPI-related issues come from ACPI namespace/methods, which is a very
different thing. Please do not mix up those two. The ACPI
namespace/methods stuff remains the same and continues to be initialized
at very late in the boot sequence.

What's making the patchset complicated is acpi_initrd_override(), which
is intended for developers and allows overwriting ACPI bits at their own
risk. This feature won't be used by regular users.

> > earlyprintk is just another example to this SRAT issue. The local page
> > table is yet another example. My hope here is for us to be able to
> > utilize ACPI tables properly without hitting this kind of ordering
> > issues again and again, which requires considerable time & effort to
> > address.
>
> So, the two things brought up at this point are early parsing of SRAT,
> which can't really solve the problem at hand anyway,

If you are referring the issue of kernel image location, it is a
limitation in the current implementation, not a technical limitation. I
know other OS that supports movable memory and puts the kernel image
into a movable memory with SRAT by changing the bootloader.

Also, how do you support local page tables without pursing SRAT early?

> and earlyprintk
> which should be implemented in minimal way which is not activated
> unless specifically enabled with earlyprintk boot param. Neither
> seems to justify pulling in full ACPI into early boot, right?

Initializing page tables on large systems may take a long time, and I do
think that earlyprink needs to be available before that point.

Thanks,
-Toshi