On 11 Jul 2024, at 5:22 PM, Sandesh Patel <sandesh.pa...@nutanix.com> wrote:
Thanks David for all the analysis. Looking at the Linux guest support, it seems to look just at the HyperV CPUID leaves 0x40000081 and 0x40000082. QEMU knows of those only for SYNDBG; Sandesh do you want to try setting the HYPERV_VS_PROPERTIES_EAX_EXTENDED_IOAPIC_RTE bit that Linux looks for, and see how that affects Windows guests (with no emulated IOMMU)? I am enabling same bit (BIT(2) under HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES (0x40000082) with simple kvm patch (need to check how do we switch to 15 bit destination id when enabling this)- diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 04cca46fed1e..b9e74b791247 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -2567,6 +2567,7 @@ int kvm_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, case HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES: ent->eax |= HV_X64_SYNDBG_CAP_ALLOW_KERNEL_DEBUGGING; + ent->eax |= HYPERV_VS_PROPERTIES_EAX_EXTENDED_IOAPIC_RTE; break; default: diff --git a/arch/x86/kvm/hyperv.h b/arch/x86/kvm/hyperv.h index 1030b1b50552..384585a1f165 100644 --- a/arch/x86/kvm/hyperv.h +++ b/arch/x86/kvm/hyperv.h @@ -41,6 +41,7 @@ * These are HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES.EAX bits. */ #define HV_X64_SYNDBG_CAP_ALLOW_KERNEL_DEBUGGING BIT(1) +#define HYPERV_VS_PROPERTIES_EAX_EXTENDED_IOAPIC_RTE BIT(2) /* Hyper-V Synthetic debug options MSR */ #define HV_X64_MSR_SYNDBG_CONTROL 0x400000F1 I am hitting an issue where the Windows guest is not booting (guest reset in loop) when adding hv-syndbg hyperv feature (or using hv-passthrough). Possibly an occurrence of - https://patchew.org/QEMU/20230612084201.294248-1-vkuzn...@redhat.com/ Anything special to take care here? Regards, Sandesh