2004-10-29 01:57:35

by Moore, Robert

[permalink] [raw]
Subject: Why ACPI is in the kernel, notes from 2001

Here's some notes from 2001:

Why ACPI is in the kernel

ACPI and the AML interpreter are required very early during kernel
initialization, before the device drivers are loaded. Control methods
are executed by the interpreter at this time (such as all device _INI
methods).

ACPI owns the ACPI hardware and ACPI interrupt (SCI), and therefore this
part of the ACPI subsystem is similar to a device driver.

Control methods that are executed via the AML interpreter are allowed
direct access to all of physical memory, all I/O space, and all PCI
configuration space (via Operation Regions.)

Device drivers such as the Embedded Controller, Battery, and Thermal use
ACPI services and execute AML control methods during their operation.

Device driver callback routines are invoked directly from the AML
interpreter when the ASL Notify operation is executed.

ACPI and the AML interpreter cannot be paged out. How do you wake up
the disk used for paging? Not a good idea for other device drivers to
depend on code that may be paged out.

Also,

As of May 2000, the AML interpreter was in acpid! Shortly after that, we
made a conscious decision to move it into the driver for the reasons
above. The code may be large (for Linux), but it is necessary and must
remain resident (it is non-pageable).

Bob

> -----Original Message-----
> From: [email protected] [mailto:acpi-devel-
> [email protected]] On Behalf Of Moore, Robert
> Sent: Thursday, October 28, 2004 2:42 PM
> To: Theodore Ts'o; Brown, Len; Grover, Andrew; Therien, Guy
> Cc: Yu, Luming; Bjorn Helgaas; Alex Williamson; linux-kernel; acpi-
> [email protected]
> Subject: [ACPI] RE: Userspace ACPI interpreter
>
>
> I've been working on the ACPI CA project for over 6 years, and trust
me,
> this has been tried before. There are significant reasons for having
> the interpreter in the kernel.
>
> You don't really want to page out the interpreter when you are using
it
> for things like suspend/resume, thermal control, and many other
things.
>
> I think we have a list around somewhere with many of the reasons, I
will
> look for it.
>
> Bob
>
>
> > -----Original Message-----
> > From: Theodore Ts'o [mailto:[email protected]] On Behalf Of Theodore
> Ts'o
> > Sent: Thursday, October 28, 2004 8:24 AM
> > To: Brown, Len
> > Cc: Yu, Luming; Bjorn Helgaas; Moore, Robert; Alex Williamson;
linux-
> > kernel; [email protected]
> > Subject: Re: Userspace ACPI interpreter ( was RE: [ACPI] [RFC]
> dev_acpi:
> > support for userspace access to acpi)
> >
> > On Thu, Oct 28, 2004 at 01:37:52AM -0400, Len Brown wrote:
> > > One way to experiment with a user-mode ACPI interpreter would be
to
> > > continue to use the kernel-mode interpreter for boot up , and cut
> over
> > > to the user-mode interpreter at /sbin/init. The kernel-mode
> interpreter
> > > could be sent the way of free_initmem() which is called just
before
> > > /sbin/init is invoked.
> >
> > Is there a significant advantage to doing having a user-mode ACPI
> > interpreter? The only advantage I can think of is that the ACPI
> > interpreter could now live in pageable memory. Are there any
others?
> >
> > - Ted
>
>
> -------------------------------------------------------
> This Newsletter Sponsored by: Macrovision
> For reliable Linux application installations, use the industry's
leading
> setup authoring tool, InstallShield X. Learn more and evaluate
> today. http://clk.atdmt.com/MSI/go/ins0030000001msi/direct/01/
> _______________________________________________
> Acpi-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/acpi-devel


2004-10-29 04:06:23

by Jeff Garzik

[permalink] [raw]
Subject: Re: Why ACPI is in the kernel, notes from 2001

Moore, Robert wrote:
> Here's some notes from 2001:
>
> Why ACPI is in the kernel
>
> ACPI and the AML interpreter are required very early during kernel
> initialization, before the device drivers are loaded. Control methods
> are executed by the interpreter at this time (such as all device _INI
> methods).
>
> ACPI owns the ACPI hardware and ACPI interrupt (SCI), and therefore this
> part of the ACPI subsystem is similar to a device driver.
>
> Control methods that are executed via the AML interpreter are allowed
> direct access to all of physical memory, all I/O space, and all PCI
> configuration space (via Operation Regions.)
>
> Device drivers such as the Embedded Controller, Battery, and Thermal use
> ACPI services and execute AML control methods during their operation.
>
> Device driver callback routines are invoked directly from the AML
> interpreter when the ASL Notify operation is executed.
>
> ACPI and the AML interpreter cannot be paged out. How do you wake up
> the disk used for paging? Not a good idea for other device drivers to
> depend on code that may be paged out.
>
> Also,
>
> As of May 2000, the AML interpreter was in acpid! Shortly after that, we
> made a conscious decision to move it into the driver for the reasons
> above. The code may be large (for Linux), but it is necessary and must
> remain resident (it is non-pageable).


None of this implies that the interpreter cannot be in initramfs-like
userspace, which neither requires a device driver nor will ever be paged
out.

Jeff


2004-10-29 06:17:10

by Oliver Neukum

[permalink] [raw]
Subject: Re: Why ACPI is in the kernel, notes from 2001

Am Freitag, 29. Oktober 2004 06:06 schrieb Jeff Garzik:
> None of this implies that the interpreter cannot be in initramfs-like
> userspace, which neither requires a device driver nor will ever be paged
> out.

Suspend/resume. User space is halted first.

Regards
Oliver