[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/2] Add Interrupt Source Override Structure to
From: |
Beth Kon |
Subject: |
Re: [Qemu-devel] [PATCH 1/2] Add Interrupt Source Override Structure to BIOS |
Date: |
Mon, 27 Oct 2008 14:30:47 -0400 |
On Mon, 2008-10-27 at 14:20 -0400, Beth Kon wrote:
> Looking into a problem with getting the HPET to work for both Windows
> and Linux revealed what appears to be a problem with QEMU's interrupt
> generation.
>
> Since QEMU supports both APIC and dual 8259 mode (as indicated by bit 0
> of the MADT flags - PCAT COMPAT), the BIOS should include the Interrupt
> Source Override structure to inform the OS that IRQ0 is mapped to
> interrupt 2 in APIC mode, which is the standard scheme for the PIT.
>
> What must be happening is that Linux is abiding by what the BIOS says
> and expecting INTI0 from the APIC (since there is no Interrupt Source
> Override). Windows must be ignoring the Interrupt Source Override
> information and just expecting to see the timer interrupt on INTI2. So
> the HPET had to raise both 0 and 2 to keep them both happy.
>
> Patch 1 adds the Interrupt Source Override to BIOS, and Patch 2 modifies
> ioapic_set_irq to change vector 0 to 2.
>
> Making this change allowed Windows and Linux to both work with HPET code
> that just raised IRQ0.
>
> That said, I don't understand why the PIT was working with the code as
> it was in the case of Windows, unless in that case windows was honoring
> the Interrupt Source Override (or the lack of one, I should say). I'm
> not sure these patches are the right solution for all cases, but they
> work for the HPET. I should add that KVM does have an Interrupt Source
> Override structure in their BIOS but they do not remap 0 to 2, so maybe
> I'm missing something here. Comments appreciated.
>
Forgot ....
Signed-off-by Beth Kon <address@hidden>
--
Elizabeth Kon (Beth)
IBM Linux Technology Center
Open Hypervisor Team
email: address@hidden