All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@bugzilla.kernel.org
To: kvm@vger.kernel.org
Subject: [Bug 203327] New: qemu kvm acceleration broken on 5.0.6 and 5.0.7
Date: Mon, 15 Apr 2019 09:51:19 +0000	[thread overview]
Message-ID: <bug-203327-28872@https.bugzilla.kernel.org/> (raw)

https://bugzilla.kernel.org/show_bug.cgi?id=203327

            Bug ID: 203327
           Summary: qemu kvm acceleration broken on 5.0.6 and 5.0.7
           Product: Virtualization
           Version: unspecified
    Kernel Version: 5.0.6  5.0.7
          Hardware: x86-64
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: kvm
          Assignee: virtualization_kvm@kernel-bugs.osdl.org
          Reporter: balducci@units.it
        Regression: No

hello

running on AMD Athlon(tm) X4 860K Quad Core Processor
(complete specs enclosed below)

5.0.6 and 5.0.7 break kvm acceleration for qemu on my machines: an old
windows XP guest, which has worked for 4 years without problems,
suddenly doesn't boot any more.

I'm running qemu like this:

    /usr/bin/qemu -m 2G /opt/windog  \
              -accel kvm,thread=multi \
              -netdev user,id=net0,smb=/home/balducci \
              -device rtl8139,netdev=net0


Facts

```
=>  If I run without kvm acceleration: no problems
    (but then the guest is so slow to be utterly unusable)
=>  problem happens with 5.0.6 and 5.0.7: previous kernels are fine:
            GOOD      BAD
            4.20.14   5.0.6
            5.0.2     5.0.7
            5.0.3     
            5.0.4
            5.0.5
=>  #> zcat /proc/config.gz|egrep KVM
    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

    (I can send the whole .config file, if needed)

=>  #> dmesg|egrep -i kvm
    [    0.297108] kvm: Nested Virtualization enabled
    [    0.297149] kvm: Nested Paging enabled

=>  #> strace -o strace.out /usr/bin/qemu -m 2G /opt/windog  \
              -accel kvm,thread=multi \
              -netdev user,id=net0,smb=/home/balducci \
              -device rtl8139,netdev=net0
    #> egrep -i kvm strace.out|uniq
    execve("/usr/bin/qemu", ["/usr/bin/qemu", "-m", "2G", "/opt/windog",
"-accel", "kvm,thread=multi", "-netdev", "user,id=net0,smb=/home/balducci",
"-device", "rtl8139,netdev=net0"], 0x7ffe38ab37d8 /* 112 vars */) = 0
    openat(AT_FDCWD, "/dev/kvm", O_RDWR|O_CLOEXEC) = 16
    ioctl(16, KVM_GET_API_VERSION, 0)       = 12
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IMMEDIATE_EXIT) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_NR_MEMSLOTS) = 509
    ioctl(16, KVM_CREATE_VM, 0)             = 18
    ioctl(18, KVM_CHECK_EXTENSION, KVM_CAP_NR_VCPUS) = 240
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS) = 288
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_USER_MEMORY) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_DESTROY_MEMORY_REGION_WORKS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_JOIN_MEMORY_REGIONS_WORKS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_SET_TSS_ADDR) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_EXT_CPUID) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_MP_STATE) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_COALESCED_MMIO) = 2
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_COALESCED_PIO) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_VCPU_EVENTS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_X86_ROBUST_SINGLESTEP) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_DEBUGREGS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_SIGNAL_MSI) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_PCI_2_3) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_INJECT_STATUS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_READONLY_MEM) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IOEVENTFD) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQFD) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQFD_RESAMPLE) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_VM_ATTRIBUTES) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IOEVENTFD_ANY_LENGTH) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_XSAVE) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_XCRS) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_PIT_STATE2) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_HYPERV_VP_INDEX) = 1
    ioctl(16, KVM_GET_MSR_INDEX_LIST, 0x7fff07b89a40) = -1 E2BIG (Argument list
too long)
    ioctl(16, KVM_GET_MSR_INDEX_LIST, 0x5570914ab630) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_GET_MSR_FEATURES) = 1
    ioctl(16, KVM_GET_MSR_FEATURE_INDEX_LIST, 0x7fff07b89a40) = -1 E2BIG
(Argument list too long)
    ioctl(16, KVM_GET_MSR_FEATURE_INDEX_LIST, 0x5570914a76e0) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_SET_IDENTITY_MAP_ADDR) = 1
    ioctl(18, KVM_SET_IDENTITY_MAP_ADDR, 0x7fff07b899c8) = 0
    ioctl(18, KVM_SET_TSS_ADDR, 0xfeffd000) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_X86_SMM) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQCHIP) = 1
    ioctl(18, KVM_CREATE_IRQCHIP, 0)        = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_ROUTING) = 4096
    ioctl(18, KVM_IOEVENTFD, 0x7fff07b89b80) = 0
    ioctl(18, KVM_CHECK_EXTENSION, KVM_CAP_SYNC_MMU) = 1
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f140) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f180) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f1e0) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f140) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f290) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, 0x55709151f520) = -1 E2BIG (Argument
list too long)
    ioctl(16, KVM_GET_SUPPORTED_CPUID, {nent=49, entries=[...]}) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_TSC_DEADLINE_TIMER) = 1
    ioctl(16, KVM_GET_MSRS, 0x7fff07b89950) = 1
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_ROUTING) = 4096
    ioctl(18, KVM_GET_CLOCK, 0x7fff07b899c0) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_ADJUST_CLOCK) = 2
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_ROUTING) = 4096
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=0, flags=0, guest_phys_addr=0,
memory_size=2147483648, userspace_addr=0x7f070fe00000}) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_ROUTING) = 4096
    access("kvmvapic.bin", R_OK)            = -1 ENOENT (No such file or
directory)
   
access("/opt/stow.d/versions/qemu-4.0.0-rc3/usr/share/qemu-firmware/kvmvapic.bin",
R_OK) = -1 ENOENT (No such file or directory)
    access("/opt/stow.d/versions/qemu-4.0.0-rc3/usr/share/qemu/kvmvapic.bin",
R_OK) = 0
    openat(AT_FDCWD,
"/opt/stow.d/versions/qemu-4.0.0-rc3/usr/share/qemu/kvmvapic.bin", O_RDONLY) =
20
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_IRQ_ROUTING) = 4096
    ioctl(18, KVM_SET_GSI_ROUTING, 0x55709174d6d0) = 0
    ioctl(18, KVM_REGISTER_COALESCED_MMIO, 0x7fff07b898d0) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=1, flags=KVM_MEM_READONLY,
guest_phys_addr=0xfffc0000, memory_size=262144, userspace_addr=0x7f07a4c00000})
= 0
    ioctl(18, KVM_REGISTER_COALESCED_MMIO, 0x7fff07b896e0) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=0, flags=0, guest_phys_addr=0,
memory_size=0, userspace_addr=0x7f070fe00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=0, flags=0, guest_phys_addr=0,
memory_size=786432, userspace_addr=0x7f070fe00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=2, flags=KVM_MEM_READONLY,
guest_phys_addr=0xc0000, memory_size=131072, userspace_addr=0x7f07a4a00000}) =
0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=3, flags=KVM_MEM_READONLY,
guest_phys_addr=0xe0000, memory_size=131072, userspace_addr=0x7f07a4c20000}) =
0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=4, flags=0,
guest_phys_addr=0x100000, memory_size=2146435072,
userspace_addr=0x7f070ff00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=0, flags=0, guest_phys_addr=0,
memory_size=0, userspace_addr=0x7f070fe00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=0, flags=0, guest_phys_addr=0,
memory_size=655360, userspace_addr=0x7f070fe00000}) = 0
    ioctl(18, KVM_REGISTER_COALESCED_MMIO, 0x7fff07b897f0) = 0
    ioctl(18, KVM_REGISTER_COALESCED_MMIO, 0x7fff07b89870) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_PIT2) = 1
    ioctl(18, KVM_CREATE_PIT2, 0x7fff07b899a0) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89960) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_X86_SMM) = 1
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=65536, flags=0,
guest_phys_addr=0, memory_size=786432, userspace_addr=0x7f070fe00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=65537, flags=KVM_MEM_READONLY,
guest_phys_addr=0xc0000, memory_size=131072, userspace_addr=0x7f07a4a00000}) =
0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=65538, flags=KVM_MEM_READONLY,
guest_phys_addr=0xe0000, memory_size=131072, userspace_addr=0x7f07a4c20000}) =
0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=65539, flags=0,
guest_phys_addr=0x100000, memory_size=2146435072,
userspace_addr=0x7f070ff00000}) = 0
    ioctl(18, KVM_SET_USER_MEMORY_REGION, {slot=65540, flags=KVM_MEM_READONLY,
guest_phys_addr=0xfffc0000, memory_size=262144, userspace_addr=0x7f07a4c00000})
= 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89cb0) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89c60) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89c80) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89c60) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89c80) = 0
    ioctl(18, KVM_IRQ_LINE_STATUS, 0x7fff07b89c30) = 0
    ioctl(18, KVM_GET_PIT2, 0x7fff07b89bb0) = 0
    ioctl(18, KVM_SET_PIT2, 0x7fff07b89bd0) = 0
    ioctl(18, KVM_SET_IRQCHIP, 0x7fff07b89a80) = 0
    ioctl(18, KVM_SET_PIT2, 0x7fff07b89ac0) = 0
    ioctl(18, KVM_SET_IRQCHIP, 0x7fff07b89940) = 0
    ioctl(19, KVM_SET_VAPIC_ADDR, 0x7fff07b89c80) = 0
    ioctl(18, KVM_SET_PIT2, 0x7fff07b89c20) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_KVMCLOCK_CTRL) = 1
    ioctl(18, KVM_SET_CLOCK, 0x7fff07b89c60) = 0
    ioctl(18, KVM_GET_DIRTY_LOG, 0x7fff07b899b0) = 0
    ioctl(18, KVM_GET_PIT2, 0x7fff07b89c30) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_KVMCLOCK_CTRL) = 1
    ioctl(18, KVM_GET_CLOCK, 0x7fff07b89bf0) = 0
    ioctl(16, KVM_CHECK_EXTENSION, KVM_CAP_ADJUST_CLOCK) = 2


This problem might be related to 202189, but for me 4.20.14 and 5.0.[2-5]
all work fine

I'm sorry not being able to go deeper than this into the issue...

Thanks
ciao
-gabriele

=====================================================================
                               My specs
=====================================================================

#> uname -sr
Linux 5.0.7

#> cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 21
model           : 16
model name      : AMD Athlon(tm) X4 740 Quad Core Processor
stepping        : 1
microcode       : 0x6001116
cpu MHz         : 3500.044
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 cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save
tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs            : fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2
spec_store_bypass
bogomips        : 6400.08
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

[...cpus 1 2 3 omitted...]
```

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

             reply	other threads:[~2019-04-15  9:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-15  9:51 bugzilla-daemon [this message]
2019-04-26 14:19 ` [Bug 203327] qemu kvm acceleration broken on 5.0.6 and 5.0.7 bugzilla-daemon
2019-04-26 15:07 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-203327-28872@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@bugzilla.kernel.org \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.