Gregory Haskins wrote: > On Wed, 2007-06-20 at 15:43 +0800, Dong, Eddie wrote: >> As we discussed, if we move APIC to kernel while leaving PIC in user >> level, we have ABI level holes if the interrupt a user level qemu >> injected is not immediately injected to guest for some reason. \ > > Hi Eddie, > > I know you worked hard on this, but I still do not agree with this > statement. I agree that v9 introduced an issue related to a) > premature IRR->ISR assignment, and b) lack of support for clearing > pending ISR with IMR changes (and thank you for pointing it out!).
Achitectually not only that. A premature IRR->ISR will cause guest OS confuse in many place. A guest (say BIOS) may turn from interrupt enabled mode to polling mode which polls IRR to detect if there is pending IRQ to handle. In this case we have trouble. > However, as I mentioned we can fix that issue with just a few new > lines of > code and by > reverting the userspace injection model to the one used in prior > releases without having to implement an entire in-kernel PIC to do it. In-kernel PIC gives us a full in kernel irqchip solution and performance gain. Some OSes may use PIC only. > > I think moving the PIC into the kernel has the advantage of allowing > us to move the PIT into the kernel too (which is huge, IMHO), but Not very big, I just want to do one by one. we have done the code in Xen already. > that is its sole advantage. Don't get me wrong: I am in favor of > doing it. However, I wanted to point out that this particular > solution to the problem you found essentially is invalidating > "level-1" mode by only supporting level-0 or level-2, not fixing it. Not exactly understand level-0/1/2 meaning? Do u mean we mixed irqchip mode is a feature requirement? I didn't see the necessity, maybe I am wrong. But isn't both PIC and APIC in kernel much nature and simple for us? If you really think supporting mixed irqchip mode is a must, we need to introduce an intack I/F to notify user level irqchip if the irq is really ACKed or not. We can do that but I doubt the necessity. > Perhaps we are "ok" with that, but I was under the distinct > impression from Avi et. al. that these variable levels of support > were a design goal for debugging purposes. > > I would prefer that we just fix level-1 mode with the changes I > mentioned instead of just disabling it (in addition to adding level-2 > mode as Eddie is working on). > >> >> This patch fixes this by introducing new VM level IOCTL >> KVM_SET_ISA_IRQ_LEVEL & KVM_CREATE_PIC to avoid the ABI hole. The >> original KVM_INTERRUPT is still there to be backward compatible. >> >> WIth this patch, old Qemu, new qemu (after this patch), old kvm, new >> kvm can work in any combination. Both user level code and kernel >> code will automatically decide the irq source base on irqchip >> location (user or kernel). >> >> Some known issues (TODO): >> 1: SVM support is on going. >> The code for VMX to inject irq is same with Xen now since the >> situation is same now (irqchip in hyprevisor), SVM code should be >> able to directly reuse from Xen too. >> 2: live migration break. >> 3: Temply APIC support is removed in CPUID to wait for the merge >> of in kernel APIC patch > > Note that you will need more than just the APIC patch. My patch only > moves the LAPIC down. The IOAPIC and 8259s are still in userspace. > Your patch only moves the 8259s down. This means there is a gap where > the IOAPIC used to be that still needs to be addressed. Why do u think I/O APIC must be moved down too? A new IOCTL like KVM_IOAPIC_MESSAGE can solve the interface issue IMO and quit natual. Thx, Eddie ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel