The issue is related to how qemu TCG threads wake up due to an interrupt
pending at any privilege level.
target/riscv/cpu.c
bool riscv_cpu_has_work(CPUState *cs)
{
RISCVCPU *cpu = RISCV_CPU(cs);
CPURISCVState *env = &cpu->env;
/*
* Definition of the WFI instruction requires it to ignore the privilege
* mode and delegation registers, but respect individual enables
*/
return riscv_cpu_all_pending(env) != 0 ||
riscv_cpu_sirq_pending(env) != RISCV_EXCP_NONE ||
riscv_cpu_vsirq_pending(env) != RISCV_EXCP_NONE;
}
However, KVM doesn't reset the VSTIMECMP during vmexit. So the qemu tcg
thread keeps waking up due to previously programmed timer via vstimecmp.
There is no VM running hence the interrupt is not served.
--- a/arch/riscv/kvm/vcpu_timer.c
+++ b/arch/riscv/kvm/vcpu_timer.c
@@ -346,6 +346,12 @@ void kvm_riscv_vcpu_timer_save(struct kvm_vcpu *vcpu)
* The vstimecmp CSRs are saved by kvm_riscv_vcpu_timer_sync()
* upon every VM exit so no need to save here.
*/
+#if defined(CONFIG_32BIT)
+ t->next_cycles = ncsr_swap(CSR_VSTIMECMP, -1UL);
+ t->next_cycles |= (u64)ncsr_swap(CSR_VSTIMECMPH, -1UL) << 32;
+#else
+ t->next_cycles = ncsr_swap(CSR_VSTIMECMP, -1UL);
+#endif
/* timer should be enabled for the remaining operations */
if (unlikely(!t->init_done))
This fixes the host cpu usage issue in cases where AIA is not in use.
However, we are seeing rcu stalls with AIA enabled with this fix. We
(Anup & I) are debugging the the root cause behind it.
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2112578
Title:
riscv64: KVM does not release harts
Status in linux package in Ubuntu:
New
Status in qemu package in Ubuntu:
Invalid
Bug description:
In the 6.14.0-13-generic kernel there seems to be a problem with KVM.
On my amd64 machine I am running a riscv64 machine using QEMU 10 with
16 cores. Inside the VM I spin up a further machine with 2 cores. Once
KVM emulation is started the load of my amd64 machine rises to > 14/16
cores for qemu-system-riscv64. KVM seems not to release cores that
were ever used. Top in 1st VM shows 0.25 cores used for 2nd VM.
The usage on my amd64 machine only drops when unloading the kvm module in the
first VM.
---
ProblemType: Bug
ApportVersion: 2.32.0-0ubuntu5
Architecture: riscv64
AudioDevicesInUse:
USER PID ACCESS COMMAND
/dev/snd/controlC0: zfsdt 2105 F.... wireplumber
/dev/snd/seq: zfsdt 2103 F.... pipewire
CasperMD5json:
{
"result": "skip"
}
CurrentDesktop: XFCE
DistroRelease: Ubuntu 25.10
InstallationDate: Installed on 2025-03-17 (80 days ago)
InstallationMedia: Ubuntu-Server 25.04 "Plucky Puffin" - Daily riscv64
(20250316)
Lsusb:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd QEMU Tablet
Bus 001 Device 003: ID 0627:0001 Adomax Technology Co., Ltd QEMU Tablet
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
MachineType: QEMU QEMU Virtual Machine
Package: linux (not installed)
ProcEnviron:
LANG=en_US.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm-256color
ProcFB: 0 virtio_gpudrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.14.0-13-generic
root=UUID=af336ba2-ea81-4dd5-bada-b3e8e7fb1c58 ro
crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M
ProcVersionSignature: Ubuntu 6.14.0-13.13.2-generic 6.14.0
PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: No
PulseAudio daemon running, or not running as session daemon.
RelatedPackageVersions:
linux-restricted-modules-6.14.0-13-generic N/A
linux-backports-modules-6.14.0-13-generic N/A
linux-firmware 20250317.git1d4c88ee-0ubuntu1
RfKill:
Tags: questing
Uname: Linux 6.14.0-13-generic riscv64
UpgradeStatus: Upgraded to questing on 2025-05-17 (19 days ago)
UserGroups: N/A
_MarkForUpload: True
acpidump:
dmi.bios.date: 05/13/2025
dmi.bios.release: 0.0
dmi.bios.vendor: Ubuntu distribution of EDK II
dmi.bios.version: 2025.02-8
dmi.chassis.type: 1
dmi.chassis.vendor: QEMU
dmi.chassis.version: virt
dmi.modalias:
dmi:bvnUbuntudistributionofEDKII:bvr2025.02-8:bd05/13/2025:br0.0:svnQEMU:pnQEMUVirtualMachine:pvrvirt:cvnQEMU:ct1:cvrvirt:sku:
dmi.product.name: QEMU Virtual Machine
dmi.product.version: virt
dmi.sys.vendor: QEMU
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2112578/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp