Message ID | 20240105075804.1228596-1-zhaotianrui@loongson.cn |
---|---|
Headers | show |
Series | Add loongarch kvm accel support | expand |
在 2024/1/5 下午3:57, Tianrui Zhao 写道: > The linux headers in this patch synchronized from linux kernel > v6.7.0-rc8, and the loongarch kvm part of this patch series > based on the header files. And the linux kernel has added the > loongarch kvm support in master branch. > > This series add loongarch kvm support, mainly implement > some interfaces used by kvm, such as kvm_arch_get/set_regs, > kvm_arch_handle_exit, kvm_loongarch_set_interrupt, etc. > > Currently, we are able to boot LoongArch KVM Linux Guests. > In loongarch VM, mmio devices and iocsr devices are emulated > in user space such as APIC, IPI, pci devices, etc, other > hardwares such as MMU, timer and csr are emulated in kernel. > > The running environment of LoongArch virt machine: > 1. Get the Linux KVM environment of LoongArch in Linux mainline. > make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- loongson3_defconfig > make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- > 2. Get the qemu source: https://github.com/loongson/qemu > git checkout kvm-loongarch > ./configure --target-list="loongarch64-softmmu" --enable-kvm > make > 3. Get uefi bios of LoongArch virt machine: > Link: https://github.com/tianocore/edk2-platforms/tree/master/Platform/Loongson/LoongArchQemuPkg#readme > 4. Also you can access the binary files we have already built: > https://github.com/yangxiaojuan-loongson/qemu-binary > > The command to boot loongarch virt machine: > $ qemu-system-loongarch64 -machine virt -m 4G -cpu la464 \ > -smp 1 -bios QEMU_EFI.fd -kernel vmlinuz.efi -initrd ramdisk \ > -serial stdio -monitor telnet:localhost:4495,server,nowait \ > -append "root=/dev/ram rdinit=/sbin/init console=ttyS0,115200" \ > --nographic > > Changes for v4: > 1. Synchronize linux headers from linux v6.7.0-rc8. > 2. Move kvm.c and kvm_loongarch.h into target/loongarch/kvm/ > directory. > 3. Add "#ifndef CONFIG_USER_ONLY" before loongarch_cpu_do_interrupt > to fix compiling issue. > 4. Remove "#ifdef CONFIG_TCG" before "#include "exec/cpu_ldst.h"" > in fpu_helper.c, As it has been changed in other patches. > > Changes for v3: > 1. Synchronize linux headers from linux v6.7.0-rc7. > 2. Fix compiling error when config enable-kvm and disable-tcg > at one time. > > Changes for v2: > 1. Synchronize linux headers from linux v6.7.0-rc6. > 2. Remove the stub function: kvm_loongarch_set_interrupt, as kvm_enabled > 3. Move the kvm function such as kvm_arch_reset_vcpu from cpu.h to > loongarch_kvm.h, and supplement "#include <cpu.h>" in loongarch_kvm.h. > > Changes for v1: > 1. Synchronous KVM headers about LoongArch KVM form linux kernel, > as the LoongArch KVM patch series have been accepted by linux kernel. > 2. Remove the KVM_GET/SET_ONE_UREG64 macro in target/loongarch, and > use the common interface kvm_get/set_one_reg to replace it. > 3. Resolve the compiling errors when LoongArch is built by other archs. > > Tianrui Zhao (9): > linux-headers: Synchronize linux headers from linux v6.7.0-rc8 > target/loongarch: Define some kvm_arch interfaces > target/loongarch: Supplement vcpu env initial when vcpu reset > target/loongarch: Implement kvm get/set registers > target/loongarch: Implement kvm_arch_init function > target/loongarch: Implement kvm_arch_init_vcpu > target/loongarch: Implement kvm_arch_handle_exit > target/loongarch: Implement set vcpu intr for kvm > target/loongarch: Add loongarch kvm into meson build > > include/standard-headers/drm/drm_fourcc.h | 2 + > include/standard-headers/linux/fuse.h | 10 +- > include/standard-headers/linux/pci_regs.h | 24 +- > include/standard-headers/linux/vhost_types.h | 7 + > .../standard-headers/linux/virtio_config.h | 5 + > include/standard-headers/linux/virtio_pci.h | 11 + > linux-headers/asm-arm64/kvm.h | 32 + > linux-headers/asm-generic/unistd.h | 14 +- > linux-headers/asm-loongarch/bitsperlong.h | 1 + > linux-headers/asm-loongarch/kvm.h | 108 +++ > linux-headers/asm-loongarch/mman.h | 1 + > linux-headers/asm-loongarch/unistd.h | 5 + > linux-headers/asm-mips/unistd_n32.h | 4 + > linux-headers/asm-mips/unistd_n64.h | 4 + > linux-headers/asm-mips/unistd_o32.h | 4 + > linux-headers/asm-powerpc/unistd_32.h | 4 + > linux-headers/asm-powerpc/unistd_64.h | 4 + > linux-headers/asm-riscv/kvm.h | 12 + > linux-headers/asm-s390/unistd_32.h | 4 + > linux-headers/asm-s390/unistd_64.h | 4 + > linux-headers/asm-x86/unistd_32.h | 4 + > linux-headers/asm-x86/unistd_64.h | 3 + > linux-headers/asm-x86/unistd_x32.h | 3 + > linux-headers/linux/iommufd.h | 180 +++- > linux-headers/linux/kvm.h | 11 + > linux-headers/linux/psp-sev.h | 1 + > linux-headers/linux/stddef.h | 9 +- > linux-headers/linux/userfaultfd.h | 9 +- > linux-headers/linux/vfio.h | 47 +- > linux-headers/linux/vhost.h | 8 + > meson.build | 3 + > target/loongarch/cpu.c | 39 +- > target/loongarch/cpu.h | 5 +- > target/loongarch/internals.h | 5 +- > target/loongarch/kvm/kvm.c | 768 ++++++++++++++++++ > target/loongarch/kvm/kvm_loongarch.h | 16 + > target/loongarch/kvm/meson.build | 1 + > target/loongarch/meson.build | 1 + > target/loongarch/trace-events | 15 + > target/loongarch/trace.h | 1 + > 40 files changed, 1348 insertions(+), 41 deletions(-) > create mode 100644 linux-headers/asm-loongarch/bitsperlong.h > create mode 100644 linux-headers/asm-loongarch/kvm.h > create mode 100644 linux-headers/asm-loongarch/mman.h > create mode 100644 linux-headers/asm-loongarch/unistd.h > create mode 100644 target/loongarch/kvm/kvm.c > create mode 100644 target/loongarch/kvm/kvm_loongarch.h > create mode 100644 target/loongarch/kvm/meson.build > create mode 100644 target/loongarch/trace-events > create mode 100644 target/loongarch/trace.h > Applied to loongarch-next. Thanks. Song Gao
Hi Song, On 10/1/24 03:46, gaosong wrote: > 在 2024/1/5 下午3:57, Tianrui Zhao 写道: >> This series add loongarch kvm support, mainly implement >> some interfaces used by kvm, such as kvm_arch_get/set_regs, >> kvm_arch_handle_exit, kvm_loongarch_set_interrupt, etc. >> Tianrui Zhao (9): >> linux-headers: Synchronize linux headers from linux v6.7.0-rc8 >> target/loongarch: Define some kvm_arch interfaces >> target/loongarch: Supplement vcpu env initial when vcpu reset >> target/loongarch: Implement kvm get/set registers >> target/loongarch: Implement kvm_arch_init function >> target/loongarch: Implement kvm_arch_init_vcpu >> target/loongarch: Implement kvm_arch_handle_exit >> target/loongarch: Implement set vcpu intr for kvm >> target/loongarch: Add loongarch kvm into meson build > Applied to loongarch-next. Sorry it took me some time to test this on a loongarch64 host. I made minor changes to patch #8, please consider the alternative: https://lore.kernel.org/qemu-devel/20240110094152.52138-1-philmd@linaro.org/ and https://lore.kernel.org/qemu-devel/20240110094152.52138-2-philmd@linaro.org/
在 2024/1/10 下午5:42, Philippe Mathieu-Daudé 写道: > Hi Song, > > On 10/1/24 03:46, gaosong wrote: >> 在 2024/1/5 下午3:57, Tianrui Zhao 写道: > >>> This series add loongarch kvm support, mainly implement >>> some interfaces used by kvm, such as kvm_arch_get/set_regs, >>> kvm_arch_handle_exit, kvm_loongarch_set_interrupt, etc. > > >>> Tianrui Zhao (9): >>> linux-headers: Synchronize linux headers from linux v6.7.0-rc8 >>> target/loongarch: Define some kvm_arch interfaces >>> target/loongarch: Supplement vcpu env initial when vcpu reset >>> target/loongarch: Implement kvm get/set registers >>> target/loongarch: Implement kvm_arch_init function >>> target/loongarch: Implement kvm_arch_init_vcpu >>> target/loongarch: Implement kvm_arch_handle_exit >>> target/loongarch: Implement set vcpu intr for kvm >>> target/loongarch: Add loongarch kvm into meson build > > >> Applied to loongarch-next. > > Sorry it took me some time to test this on a loongarch64 > host. I made minor changes to patch #8, please consider > the alternative: > https://lore.kernel.org/qemu-devel/20240110094152.52138-1-philmd@linaro.org/ > and > https://lore.kernel.org/qemu-devel/20240110094152.52138-2-philmd@linaro.org/ > Thank you , I wll apply them to loongarch-next. if no new problem with this series, I think we can merge it on this week. Thanks. Song Gao