From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [RFC PATCH 3/4] KVM: x86: Add EOI exit bitmap inference Date: Thu, 14 May 2015 09:23:09 -0600 Message-ID: <1431616989.3625.115.camel@redhat.com> References: <1431481652-27268-1-git-send-email-srutherford@google.com> <1431481652-27268-3-git-send-email-srutherford@google.com> <5553028F.1010204@redhat.com> <20150513222406.GA24121@google.com> <555468C8.8050303@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: Steve Rutherford , kvm@vger.kernel.org, ahonig@google.com To: Paolo Bonzini Return-path: Received: from mx1.redhat.com ([209.132.183.28]:45982 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934053AbbENPXL (ORCPT ); Thu, 14 May 2015 11:23:11 -0400 In-Reply-To: <555468C8.8050303@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 2015-05-14 at 11:20 +0200, Paolo Bonzini wrote: > > On 14/05/2015 00:24, Steve Rutherford wrote: > > Seems reasonable. > > > > While we're on the topic of scanning the IOAPIC, should this also > > scan the IOAPIC when (un)registering irq ack notifiers? [Which is > > currently done for the in-kernel IOAPIC.] > > Would irq_ack_notifiers be used at all with this patch set? Resampling > of IOAPIC level-triggered interrupts would be implemented in userspace. > For the same reason, assigned devices using legacy device assignment > probably would not be able to use INTX (so this feature should depend on > !KVM_DEVICE_ASSIGNMENT). Add the emulated i8254 and the last user of > irq_ack_notifiers goes away. > > Alex, how does VFIO do INTX resampling if you're using TCG or -machine > kernel_irqchip=off? (Context: this series keeps the local APIC > emulation in the kernel, thus including MSI, but moves the IOAPIC > emualtion to userspace). Without KVM irqchip, we use a rudimentary approach where we disable mmaps to the device when an interrupt occurs. This makes us trap all accesses to the device. We then handle any device access from the guest as a potential EOI and unmask the interrupt. If the interrupt re-fires, we've at least rate-limited it. If it doesn't, a timer eventually re-enables devices mmaps. It's not very efficient, but it works (for both PCI and platform devices) and avoids IRQ APIs through QEMU that get very platform/machine specific. Thanks, Alex