Currently, AMD AVIC can only be enabled when creating VM in irqchip split mode, which is due to the following issues: * AMD AVIC does not support ExtINT, which is required during booting phase of Windows and FreeBSD VMs. This results in hanging in the boot loaders. * Untrap APIC EOI write for edge-trigger interrpt. Please see 67034bb9dd5e ('KVM: SVM: Add irqchip_split() checks before enabling AVIC') for more information. This restriction makes AVIC difficult to enable since it depends on the non-default QEMU's kernel_irqchip=split option. Therefore, this RFC series tries to provide workaround for the issues above, and allow AVIC to work with the option kernel_irqchip=on (QEMU default). Patch 1 fixes AVIC deactivation. Patch 2-6 introduces run-time AVIC acticate/deactivate support. Patch 7 provide workaround for untrap APIC EOI. Patch 8 removes the kernel irqchip split restriction. This series has been tested booting Linux, Windows, and FreeBSD VMs with kernel_irqchip=off/split/on. Thanks, Suravee Julian Stecklina (1): KVM: i8254: Remove need for irq ack notifier Suravee Suthikulpanit (7): svm: Fix improper check when deactivate AVIC KVM: x86: Add interface for run-time activate/de-activate APIC virtualization KVM: x86: Add callback functions for handling APIC ID, DFR and LDR update svm: Add AMD AVIC handlers for APIC ID, DFR and LDR update svm: Add support for APIC_ACCESS_PAGE_PRIVATE_MEMSLOT setup/destroy svm: Temporary deactivate AVIC during ExtINT handling svm: Allow AVIC with in-kernel irqchip mode arch/x86/include/asm/kvm_host.h | 11 +++ arch/x86/kvm/i8254.c | 22 +----- arch/x86/kvm/i8254.h | 2 - arch/x86/kvm/lapic.c | 11 ++- arch/x86/kvm/svm.c | 118 +++++++++++++++++++++++++++++--- arch/x86/kvm/x86.c | 36 ++++++++++ 6 files changed, 164 insertions(+), 36 deletions(-) -- 2.17.1