qemu-devel
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]