qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

QEMU+KVM on RISC-V + Hypervisor Extension


From: Ralf Ramsauer
Subject: QEMU+KVM on RISC-V + Hypervisor Extension
Date: Sun, 13 Mar 2022 03:12:01 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0

Hi,

I'm trying to run Linux/QEMU+KVM inside an emulated
qemu-system-riscv64 VM (x86 host). On latest&greatest QEMU (1416688c53), I run Linux inside QEMU. On host side:

qemu-system-riscv64 -nographic \
        -machine virt \
        -cpu 'rv64,h=true' \
        -smp 8 -m 8G \
        -bios $latest_opensbi \
        -kernel $latest_upstream_linux \
        […snip…]

Inside that machine, I boot Linux with KVM enabled:

[…]
[    0.228939] kvm [1]: hypervisor extension available
[    0.229000] kvm [1]: using Sv48x4 G-stage page table format
[    0.229033] kvm [1]: VMID 14 bits available
[…]

KVM seems to load correctly. Inside that machine, I compiled QEMU from the same sources with the KVM accelerator enabled. When I try to start QEMU with KVM enabled, I get

./qemu-system-riscv64 -nographic \
        -monitor none \
        -machine virt \
        -smp 1 -m 1G \
        -bios ./pc-bios/opensbi-riscv64-generic-fw_dynamic.bin \
        -serial stdio \
        -enable-kvm

[ 4860.559194] kvm [9942]: VCPU exit error -95
[ 4860.584262] kvm [9942]: SEPC=0x0 SSTATUS=0x200004120 HSTATUS=0x2002001c0
[ 4860.586839] kvm [9942]: SCAUSE=0x14 STVAL=0x0 HTVAL=0x0 HTINST=0x0

on the ringbuffer, together with a register dump of qemu [1] on the console. Needless to say, but without -enable-kvm, it works fine.

As far as I see that, SCAUSE=0x14 reports a 'Instruction Guest PF', which would be kind of correct, if the guest's PC really tries to execute at phys 0x0. DRAM of the 'virt' machine definition should start at 0x80000000, where OpenSBI resides. So I wonder if an erroneous reset PC might be the culprit…

Before digging deeper into that issue, I wanted to ask if Qemu/KVM inside an emulated riscv64+H-extension is actually supported, or if this is a known bug and has some ongoing work.

Thanks
  Ralf

[1]

 pc       0000000000000000
 mhartid  0000000000000000
 mstatus  0000000200000000
 mip      0000000000000000
 mie      0000000000000000
 mideleg  0000000000000000
 medeleg  0000000000000000
 mtvec    0000000000000000
 stvec    0000000000000000
 mepc     0000000000000000
 sepc     0000000000000000
 mcause   0000000000000000
 scause   0000000000000000
 mtval    0000000000000000
 stval    0000000000000000
 mscratch 0000000000000000
 sscratch 0000000000000000
 satp     0000000000000000
x0/zero 0000000000000000 x1/ra 0000000000000000 x2/sp 0000000000000000 x3/gp 0000000000000000 x4/tp 0000000000000000 x5/t0 0000000000000000 x6/t1 0000000000000000 x7/t2 0000000000000000 x8/s0 0000000000000000 x9/s1 0000000000000000 x10/a0 0000000000000000 x11/a1 00000000bf000000 x12/a2 0000000000000000 x13/a3 0000000000000000 x14/a4 0000000000000000 x15/a5 0000000000000000 x16/a6 0000000000000000 x17/a7 0000000000000000 x18/s2 0000000000000000 x19/s3 0000000000000000 x20/s4 0000000000000000 x21/s5 0000000000000000 x22/s6 0000000000000000 x23/s7 0000000000000000 x24/s8 0000000000000000 x25/s9 0000000000000000 x26/s10 0000000000000000 x27/s11 0000000000000000 x28/t3 0000000000000000 x29/t4 0000000000000000 x30/t5 0000000000000000 x31/t6 0000000000000000



reply via email to

[Prev in Thread] Current Thread [Next in Thread]