On Tue, 2024-07-16 at 05:13 +0000, Sandesh Patel wrote: > > > > On 11 Jul 2024, at 5:22 PM, Sandesh Patel <[email protected]> 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/[email protected] > / > Anything special to take care here?
As a simple test, have you tried just *not* setting the ALLOW_KERNEL_DEBUGGING bit? Just comment that line out? So we're only setting the magic value in 0x40000081 and then the extended I/OAPIC RTE bit in 0x40000082? Although we've heard separately that this *isn't* implemented in Windows, so we guess it isn't going to work.
smime.p7s
Description: S/MIME cryptographic signature
