On Fri, 19 Jul 2024 16:50:57 -0700, Sean Christopherson wrote: > I made the mistake of expanding my testing to run with and without AVIC > enabled, and to my surprise (wow, sarcasm), x2AVIC failed hard on the > xapic_state_test due to ICR issues. > > AFAICT, the issue is that AMD splits the 64-bit ICR into the legacy ICR > and ICR2 fields when storing the ICR in the vAPIC (apparently "it's a > single 64-bit register" is open to intepretation). Aside from causing > the selftest failure and potential live migration issues, botching the > format is quite bad, as KVM will mishandle incomplete virtualized IPIs, > e.g. generate IRQs to the wrong vCPU, drop IRQs, etc. > > [...] Applied to kvm-x86 misc, thanks! [01/10] KVM: x86: Enforce x2APIC's must-be-zero reserved ICR bits https://github.com/kvm-x86/linux/commit/71bf395a276f [02/10] KVM: x86: Move x2APIC ICR helper above kvm_apic_write_nodecode() https://github.com/kvm-x86/linux/commit/d33234342f8b [03/10] KVM: x86: Re-split x2APIC ICR into ICR+ICR2 for AMD (x2AVIC) https://github.com/kvm-x86/linux/commit/73b42dc69be8 [04/10] KVM: selftests: Open code vcpu_run() equivalent in guest_printf test https://github.com/kvm-x86/linux/commit/d1c2cdca5a08 [05/10] KVM: selftests: Report unhandled exceptions on x86 as regular guest asserts https://github.com/kvm-x86/linux/commit/ed24ba6c2c34 [06/10] KVM: selftests: Add x86 helpers to play nice with x2APIC MSR #GPs https://github.com/kvm-x86/linux/commit/f2e91e874179 [07/10] KVM: selftests: Skip ICR.BUSY test in xapic_state_test if x2APIC is enabled https://github.com/kvm-x86/linux/commit/faf06a238254 [08/10] KVM: selftests: Test x2APIC ICR reserved bits https://github.com/kvm-x86/linux/commit/3426cb48adb4 [09/10] KVM: selftests: Verify the guest can read back the x2APIC ICR it wrote https://github.com/kvm-x86/linux/commit/0cb26ec32085 [10/10] KVM: selftests: Play nice with AMD's AVIC errata https://github.com/kvm-x86/linux/commit/5a7c7d148e48 -- https://github.com/kvm-x86/linux/tree/next