qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/9] Add loongarch kvm accel support
@ 2024-01-05  7:57 Tianrui Zhao
  2024-01-05  7:57 ` [PATCH v4 1/9] linux-headers: Synchronize linux headers from linux v6.7.0-rc8 Tianrui Zhao
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: Tianrui Zhao @ 2024-01-05  7:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: gaosong, maobibo, zhaotianrui, mst, cohuck, pbonzini,
	marcandre.lureau, berrange, thuth, philmd, richard.henderson,
	peter.maydell, yangxiaojuan

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

-- 
2.39.1



^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2024-01-11  8:25 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-05  7:57 [PATCH v4 0/9] Add loongarch kvm accel support Tianrui Zhao
2024-01-05  7:57 ` [PATCH v4 1/9] linux-headers: Synchronize linux headers from linux v6.7.0-rc8 Tianrui Zhao
2024-01-05  7:57 ` [PATCH v4 2/9] target/loongarch: Define some kvm_arch interfaces Tianrui Zhao
2024-01-05  7:57 ` [PATCH v4 3/9] target/loongarch: Supplement vcpu env initial when vcpu reset Tianrui Zhao
2024-01-05  7:57 ` [PATCH v4 4/9] target/loongarch: Implement kvm get/set registers Tianrui Zhao
2024-01-05  7:58 ` [PATCH v4 5/9] target/loongarch: Implement kvm_arch_init function Tianrui Zhao
2024-01-05  7:58 ` [PATCH v4 6/9] target/loongarch: Implement kvm_arch_init_vcpu Tianrui Zhao
2024-01-05  7:58 ` [PATCH v4 7/9] target/loongarch: Implement kvm_arch_handle_exit Tianrui Zhao
2024-01-05  7:58 ` [PATCH v4 8/9] target/loongarch: Implement set vcpu intr for kvm Tianrui Zhao
2024-01-10  9:20   ` Philippe Mathieu-Daudé
2024-01-10  9:41   ` [PATCH v4 8/9a] target/loongarch: Restrict TCG-specific code Philippe Mathieu-Daudé
2024-01-10  9:41   ` [PATCH v4 8/9b] target/loongarch: Implement set vcpu intr for kvm Philippe Mathieu-Daudé
2024-01-11  2:29     ` gaosong
2024-01-11  8:24       ` Philippe Mathieu-Daudé
2024-01-05  7:58 ` [PATCH v4 9/9] target/loongarch: Add loongarch kvm into meson build Tianrui Zhao
2024-01-10  2:36   ` gaosong
2024-01-10  2:46 ` [PATCH v4 0/9] Add loongarch kvm accel support gaosong
2024-01-10  9:42   ` Philippe Mathieu-Daudé
2024-01-10 10:05     ` gaosong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).