On Mon, Nov 19, 2018 at 04:55:13PM -0500, Bandan Das wrote: > baldu...@units.it writes: > > > hello > > > > I'm building qemu from source and happily using it since a bit > > (2.3.0) > > > > Since 3.1.0-rc0 (including latest 3.1.0-rc1) I'm no more able to start > > qemu, getting: > > > > ----8<---- > > install:115> qemu > > qemu: error: failed to set MSR 0x10a to 0x0 > > qemu: > > /home/balducci/tmp/install-us-d/qemu-3.1.0-rc1.d/qemu-3.1.0-rc0/target/i386/kvm.c:2185: > > kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed. > > Aborted > > ---->8---- > > > I believe the check on whether MSR_IA32_ARCH_CAPABILITIES is present is > incomplete because it can return 0 for data. Can you try this: > > diff --git a/target/i386/kvm.c b/target/i386/kvm.c > index f524e7d929..4878ffb90b 100644 > --- a/target/i386/kvm.c > +++ b/target/i386/kvm.c > @@ -2002,14 +2002,9 @@ static int kvm_put_msrs(X86CPU *cpu, int level) > #endif > > /* If host supports feature MSR, write down. */ > - if (kvm_feature_msrs) { > - int i; > - for (i = 0; i < kvm_feature_msrs->nmsrs; i++) > - if (kvm_feature_msrs->indices[i] == MSR_IA32_ARCH_CAPABILITIES) { > - kvm_msr_entry_add(cpu, MSR_IA32_ARCH_CAPABILITIES, > + if (kvm_arch_get_supported_msr_feature(kvm_state, > MSR_IA32_ARCH_CAPABILITIES)) { > + kvm_msr_entry_add(cpu, MSR_IA32_ARCH_CAPABILITIES, > env->features[FEAT_ARCH_CAPABILITIES]);
kvm_arch_get_supported_msr_feature() will return the value of the MSR on the host side (kvm/x86.c:kvm_get_msr_feature()). Having it return non-zero doesn't mean KVM's svm_set_msr(MSR_IA32_ARCH_CAPABILITIES) will work. If the MSR doesn't work on KVM_SET_MSRS, it is not supposed to appear on KVM_GET_MSR_INDEX_LIST (even if it appears on KVM_GET_MSR_FEATURE_INDEX_LIST). QEMU must check KVM_GET_MSR_INDEX_LIST too before including the MSR on the KVM_SET_MSRS call. > - break; > - } > } > > /* > > > > I have no idea about what the reason might be, apologies. > > > > Actually, I have found a recent (2018-10-16) post which might be > > related to this (it mentions the same error message from qemu): > > https://lkml.org/lkml/2018/10/16/440; but I'm not in the position to > > go through. AFAICS, the commit mentioned in the link is present in the > > 4.19.2 kernel I'm using, so...? > > > > I can add that 3.0.0 works nicely (everything else unchanged, > > including running kernel 4.19.2) > > > > OTOH, 3.1.0-rc0 dumps the same error message if I boot into 4.17.14 or > > 4.18.16 kernels. > > > > I enclose my specs hoping that somebody can spot where the problem > > might be. I will be happy to send any other detail which might be > > useful. > > > > I suspect that this might be some problem on my side, as I couldn't > > find any similar report (apart some old (qemu-2.8.50) threads, that > > didn't help) > > > > > > thanks a lot in advance for any hint/help > > > > ciao > > gabriele > > > > > > Here are my specs: > > > > # -------------------------------- > > # command to run qemu is: > > qemu -m 2G /opt/windog \ > > -accel kvm,thread=multi \ > > -netdev user,id=net0,smb=/home/balducci \ > > -device rtl8139,netdev=net0 > > > > # -------------------------------- > > # qemu build configuration: > > --prefix=/opt/stow.d/versions/qemu-3.1.0-rc1/usr > > --libdir=/opt/stow.d/versions/qemu-3.1.0-rc1/usr/lib64 > > --sysconfdir=/opt/stow.d/versions/qemu-3.1.0-rc1/etc > > --localstatedir=/var/run > > --docdir=/opt/stow.d/versions/qemu-3.1.0-rc1/usr/share/doc/qemu > > --target-list=x86_64-softmmu > > --audio-drv-list=alsa > > > > > > # -------------------------------- > > install:154> uname -sr > > Linux 4.19.2 > > > > # -------------------------------- > > install:155> cat /proc/cpuinfo > > processor : 0 > > vendor_id : AuthenticAMD > > cpu family : 21 > > model : 48 > > model name : AMD Athlon(tm) X4 860K Quad Core Processor > > stepping : 1 > > microcode : 0x6003106 > > cpu MHz : 3473.492 > > cache size : 2048 KB > > physical id : 0 > > siblings : 4 > > core id : 0 > > cpu cores : 2 > > apicid : 16 > > initial apicid : 0 > > fpu : yes > > fpu_exception : yes > > cpuid level : 13 > > wp : yes > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca > > cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt > > pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid > > aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes > > xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a > > misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr > > tbm topoext perfctr_core perfctr_nb bpext ptsc cpb hw_pstate ssbd vmmcall > > fsgsbase bmi1 xsaveopt arat npt lbrv svm_lock nrip_save tsc_scale > > vmcb_clean flushbyasid decodeassists pausefilter pfthreshold overflow_recov > > bugs : fxsave_leak sysret_ss_attrs null_seg spectre_v1 > > spectre_v2 spec_store_bypass > > bogomips : 7380.73 > > TLB size : 1536 4K pages > > clflush size : 64 > > cache_alignment : 64 > > address sizes : 48 bits physical, 48 bits virtual > > power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro [13] > > > > [...cpus 1 2 3 omitted...] > > > > > > # -------------------------------- > > install:156> egrep KVM .config-4.19.2 > > CONFIG_HAVE_KVM=y > > CONFIG_HAVE_KVM_IRQCHIP=y > > CONFIG_HAVE_KVM_IRQFD=y > > CONFIG_HAVE_KVM_IRQ_ROUTING=y > > CONFIG_HAVE_KVM_EVENTFD=y > > CONFIG_KVM_MMIO=y > > CONFIG_KVM_ASYNC_PF=y > > CONFIG_HAVE_KVM_MSI=y > > CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y > > CONFIG_KVM_VFIO=y > > CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y > > CONFIG_KVM_COMPAT=y > > CONFIG_HAVE_KVM_IRQ_BYPASS=y > > CONFIG_KVM=y > > # CONFIG_KVM_INTEL is not set > > CONFIG_KVM_AMD=y > > > > [of course, I can send the whole kernel configuration file, if needed] -- Eduardo