(2011/10/03 16:17), Gleb Natapov wrote: > On Mon, Oct 03, 2011 at 10:47:11AM +0900, Kenji Kaneshige wrote: >> (2011/10/02 17:31), Gleb Natapov wrote: >>> On Thu, Sep 22, 2011 at 09:58:58PM +0900, Kenji Kaneshige wrote: >>>> Add Local APIC NMI Structure to ACPI MADT. >>>> >>>> Signed-off-by: Kenji Kaneshige<[email protected]> >>>> --- >>>> src/acpi.c | 24 ++++++++++++++++++++++-- >>>> 1 file changed, 22 insertions(+), 2 deletions(-) >>>> >>>> Index: seabios/src/acpi.c >>>> =================================================================== >>>> --- seabios.orig/src/acpi.c >>>> +++ seabios/src/acpi.c >>>> @@ -134,6 +134,14 @@ struct madt_intsrcovr { >>>> u16 flags; >>>> } PACKED; >>>> >>>> +struct madt_local_nmi { >>>> + ACPI_SUB_HEADER_DEF >>>> + u8 processor_id; /* ACPI processor id */ >>>> + u16 flags; /* MPS INTI flags */ >>>> + u8 lint; /* Local APIC LINT# */ >>>> +} PACKED; >>>> + >>>> + >>>> /* >>>> * ACPI 2.0 Generic Address Space definition. >>>> */ >>>> @@ -288,7 +296,9 @@ build_madt(void) >>>> int madt_size = (sizeof(struct multiple_apic_table) >>>> + sizeof(struct madt_processor_apic) * MaxCountCPUs >>>> + sizeof(struct madt_io_apic) >>>> - + sizeof(struct madt_intsrcovr) * 16); >>>> + + sizeof(struct madt_intsrcovr) * 16 >>>> + + sizeof(struct madt_local_nmi) * MaxCountCPUs); >>>> + >>>> struct multiple_apic_table *madt = malloc_high(madt_size); >>>> if (!madt) { >>>> warn_noalloc(); >>>> @@ -340,7 +350,17 @@ build_madt(void) >>>> intsrcovr++; >>>> } >>>> >>>> - build_header((void*)madt, APIC_SIGNATURE, (void*)intsrcovr - >>>> (void*)madt, 1); >>>> + struct madt_local_nmi *local_nmi = (void*)intsrcovr; >>>> + for (i = 0; i< MaxCountCPUs; i++) { >>>> + local_nmi->type = APIC_LOCAL_NMI; >>>> + local_nmi->length = sizeof(*local_nmi); >>>> + local_nmi->processor_id = i; >>> Spec says that value 0xFF signifies that this applies to all processors >>> in the machine, so you need to create only one APIC_LOCAL_NMI entry with >>> 0xFF as a processor id. >> >> Thank you for your comment. Actually I had the same idea. But according >> to the revision number in FADT, seabios uses ACPI1.0 spec which doesn't >> support the value '0xFF'. Could you double check? >> > Seabios ACPI contains bits from various versions. And since 0xFF as a > wildcard destination is mention in mptable spec, which predates ACPI1.0 > by a couple of years, it is safe to assume that even for ACPI1.0 it is > correct value to use. >
Ok, thank you. I'll update the patch. Regards, Kenji Kaneshige _______________________________________________ SeaBIOS mailing list [email protected] http://www.seabios.org/mailman/listinfo/seabios
