qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Qemu and Linux/i8259 interaction.


From: Jean-Christophe Dubois
Subject: [Qemu-devel] Qemu and Linux/i8259 interaction.
Date: Wed, 11 Jan 2006 15:58:51 +0100
User-agent: KMail/1.8.3

Hello,

I did some search on the list and didn't find the answer to a problem I am 
experiencing. So sorry if this is a "known" issue.

Here is the deal:

I have added a custom PCI device to qemu (0.8.0) for some need I have. This 
new device works great in qemu and I can access it from Windows or Linux 
(running in Qemu). I can generate interrupts from the device and so forth so 
everything seems to be good.

However I have one problem when running Linux inside Qemu. For some reason 
Linux (2.6.13.4) resets the 8259 at init time and does not necessarily 
reprogram it correctly thereafter. Therefore all the interrupts are falling 
back to the default configuration of the Qemu 8259, and in particular they 
are all falling back to edge triggered state.

Everything continues to work correctly but this is wrong for a PCI devices. 
PCI devices are level triggered. So for example if I don't acknowledge my 
interrupt in the interrupt handler I would expect to be called back 
immediately by the kernel. But because all the 8259 interrupts are back to 
the default state (edge triggered) I will never be called again.

I understand that this is more like a Linux problem and as a matter of fact 
WindowsXP running in the same qemu is careful to reprogram the 8259 in level 
sensitive mode (where needed) after it resets it and with XP I got the 
expected result (being called again immediately if I forget to acknowledge my 
interrupt).

I am just wondering if this is something that is known or if somebody could 
have some hint/trick in the way to generate Linux to avoid this kind of 
behavior. It doesn't seem logical to me that all the PCI boards (including 
the ethernet realtek board) are handled in edge triggered mode. Do I miss 
something?

For info I tried most boot line options on Linux ([no]lapic, [no]acpi, ...) 
without much change in behavior in regards to the 8259 ("info pic" in the 
monitor always shows both elcr to 0).

Thanks for any help/hint you might have.

Regards

JC








reply via email to

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