[SeaBIOS] Alt SeaBIOS SSDT cpu hotplug

Gleb Natapov gleb at redhat.com
Wed Jul 7 12:22:49 CEST 2010


On Wed, Jul 07, 2010 at 12:57:05AM -0400, Kevin O'Connor wrote:
> Hi,
> 
> I've been playing with the cpu hotplug SSDT changes.  Attached is a
> proposal for an alternative method of adding ACPI support.
> 
> The idea is to continue to build a dynamic SSDT based on CountCPUs and
> MaxCountCPUs.  The dynamic SSDT entries just call methods in the main
> DSDT.
> 
If it is doable and remains to be debugable it is great.

> This is completely untested.  Hopefully the patch will demonstrate the
> idea though.
> 
> The objective is to dynamically build an SSDT that looks something
> like:
> 
> ===========================================================
> {
>     Scope (_SB) {
>         External(CPMA, MethodObj)
>         External(CPST, MethodObj)
>         External(CPEJ, MethodObj)
> #define DefCPU(nr)                                      \
>         Processor (CP##nr, 0x##nr, 0x0000b010, 0x06) {  \
>             Name (_HID, "ACPI0007")                     \
>             Name (ID, 0x##nr)                           \
>             Method(_MAT, 0) {                           \
>                 Return(CPMA(ID))                        \
>             }                                           \
>             Method (_STA) {                             \
>                 Return(CPST(ID))                        \
>             }                                           \
>             Method (_EJ0, 1, NotSerialized) {           \
>                 Return(CPEJ(ID, Arg0))                  \
>             }                                           \
>         }
>         DefCPU(00)
>         DefCPU(01)
>         DefCPU(02)
>         DefCPU(03)
>         DefCPU(AA)
>         Name(CPUS, Package() {
>             CP00, CP01, CP02, CP03, CPAA,
>         })
>         Name(CPON, Package() {
>             One, One, One, Zero, Zero
>         })
>     }
> }
> ===========================================================
> 
> with a dynamic number of cpus.
> 
> The "CPUS" package stores references to the Processor objects, and the
> "CPON" package stores the state of which cpus are active.  With this
> info, hopefully there is no need to update the MADT tables.
> 
The way you wrote it acpi_id is always equal to lapic_id which is not
alway true. By using MADT from memory we remove this dependency from
DSDT code.

--
			Gleb.



More information about the SeaBIOS mailing list