[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/2] seabios: Add Local APIC NMI Structure to AC
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [PATCH 1/2] seabios: Add Local APIC NMI Structure to ACPI MADT |
Date: |
Fri, 28 Oct 2011 14:19:20 +0200 |
On Fri, Oct 28, 2011 at 09:08:18PM +0900, Kenji Kaneshige wrote:
> Avi, Jan,
>
> Could you comment on these patches?
>
> Inject-NMI doesn't work on Windows guest without these patches. Windows seems
> to setup LVT based on ACPI NMI structure information which is missing in
> current
> seabios. LVT LINT1 are never unmasked by Windows guest without the patches.
>
> Those patches were already reviewed by seabios people, but need ack from
> qemu/kvm
> side.
>
> Regards,
> Kenji Kaneshige
>
>
>
Acked-by: Gleb Natapov <address@hidden>
> (2011/10/10 15:06), Lai Jiangshan wrote:
> > From: Kenji Kaneshige<address@hidden>
> >
> > ACPI NMI Structure describes LINT pin (LINT0 or LINT1) information to
> > which NMI is connected, and it is needed by OS to initialize local APIC.
> >
> > Signed-off-by: Kenji Kaneshige<address@hidden>
> > Reviewed-by: Lai Jiangshan<address@hidden>
> > ---
> > src/acpi.c | 22 ++++++++++++++++++++--
> > 1 file changed, 20 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));
> > +
> > struct multiple_apic_table *madt = malloc_high(madt_size);
> > if (!madt) {
> > warn_noalloc();
> > @@ -340,7 +350,15 @@ build_madt(void)
> > intsrcovr++;
> > }
> >
> > - build_header((void*)madt, APIC_SIGNATURE, (void*)intsrcovr -
> > (void*)madt, 1);
> > + struct madt_local_nmi *local_nmi = (void*)intsrcovr;
> > + local_nmi->type = APIC_LOCAL_NMI;
> > + local_nmi->length = sizeof(*local_nmi);
> > + local_nmi->processor_id = 0xff; /* all processors */
> > + local_nmi->flags = 0;
> > + local_nmi->lint = 1; /* LINT1 */
> > + local_nmi++;
> > +
> > + build_header((void*)madt, APIC_SIGNATURE, (void*)local_nmi -
> > (void*)madt, 1);
> > return madt;
> > }
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > the body of a message to address@hidden
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
> >
--
Gleb.