From a9019da2238cf70b817eb8295c7742a3644fe3e7 Mon Sep 17 00:00:00 2001 From: XiakaiPan <13212017962@163.com> Date: Sat, 9 Jul 2022 21:09:37 +0800 Subject: [PATCH 1/2] article: 20220708-kvm-linux.md --- articles/20220708-kvm-linux.md | 1125 +++++++++++++++++ .../20220708-kvm-linux/kvm-hypervisor.png | Bin 0 -> 210502 bytes 2 files changed, 1125 insertions(+) create mode 100644 articles/20220708-kvm-linux.md create mode 100644 articles/images/20220708-kvm-linux/kvm-hypervisor.png diff --git a/articles/20220708-kvm-linux.md b/articles/20220708-kvm-linux.md new file mode 100644 index 0000000..0c2c7be --- /dev/null +++ b/articles/20220708-kvm-linux.md @@ -0,0 +1,1125 @@ +> Author: ���Ŀ� <13212017962@163.com>
+> Date: 2022/07/09
+> Revisor: ABC
+> Project: [RISC-V Linux �ں�����](https://gitee.com/tinylab/riscv-linux)
+> Proposal: [RISC-V ��� ⻯ �������������](https://gitee.com/tinylab/riscv-linux/issues/I5E4VB) + +# �� QEMU/Spike+KVM ���� Host/Guest Linux + +���Ļ��� QEMU �� Spike ģ���������� RISCV-KVM �ɹ�ʵ�������� Host Linux ����ϵͳ�������Ѿ����������� Linux ��ʵ������� ⻯ ������ Guest Linux�� + +## ǰ�ԣ��������һ������ϵͳ + +### ���� + +����������һ������ϵͳ�Ĺ��̿��Լ򵥵ؿ�������һ�����̣���Ӳ����CPU���ڴ�ȣ��ӵ 磬 ���ض���λ�ü�����Ϊ�̶��ij���Boot loader����ɶ���Ӳ����״̬�����ò��������ϵͳ��OS������ʹ֮���С���ν��� ⻯ ���������ؽ���Ϊ��Ӳ����Դ��װ��������� ⻯ ���Ӷ�ʹ֧֮�ֱ������������ Guest OS �����á� + +### ������ + +#### ����ģ������Ӳ����Hardware in Simulator�� + +Spike��QEMU ͨ��������ģ��Ӳ�����ɴ��ṩ��һ���ɹ����ڵ���ϵͳ���������������Եͳɱ��Ľ�������� + +#### �̼���������Boot loader�� + +һ����ԣ���¼�� ROM �ϵ�һЩ�߱��ض����ܵij��򱻳�Ϊ`boot loader`����Ӳ���ӵ������󣬸öγ���Ĭ�Ͽ�ʼִ�����ʼ������� OS ���������������RISC-V �����н�Ϊ���õ��� BBL��Berkeley Boot Loader����OpenSBI��from Western Digital����uboot��������Ƕ��ʽ������������ RustSBI��SBI ��׼�� Rust ʵ�֣��ȡ� + +#### ����ϵͳ��OS�� + +- �ںˣ�Kernel�� +- �ļ�ϵͳ��FileSystem�� + +#### ��� ⻯ ���ߣ�Hypervisor�� + +��Ӳ��֧����� ⻯ �Ļ���֮�ϣ�HS-mode in RISC-V������Ҫ����Э������������� ⻯ �Ĺ��̣�һ�ֿ��е�ʵ�־���ʵ��һ�� Hypervisor ��Ϊ Host �� Guest ���м� 㣬 ���ڹ��������� ⻯ ��ʵ�����������KVM ��������֮һ�� + +### KVM ��� + +[KVM](https://github.com/kvm-riscv/howto/wiki)��Kernel-based Virtual Machine����һ����Դ�Ļ����ں˵������ʵ�֣�Hypervisor����KVM ��ʵ�ְ��� **�ں�ģ� 飨 kernel module** �� **�û����ߣ�userspace kvmtool��** �������֣� + +- �ں�ģ� 飨 KVM kernel Module�� + - һ���ɹ����뵽 Linux �ں˵�ģ� 飬 �ܹ��ṩ CPU���ڴ 桢 �жϵ���� ⻯ ������һ�� Linux kernel ����Ϊһ�� Hypervisor�� +- �û����ߣ�KVM user-space tool�� + + - �����û�����������ͻ���ʵ����Guest Instances������������������ṩ��ÿ�� Guest �İ�װ������֤ Guest һ���̶����ܹ������������ζ��� Host һ�����С� + +- KVM ��� ⻯ ͼʾ������ riscv-v�� + ![kvm](./images/20220708-kvm-linux/kvm-hypervisor.png) + +## ʵ� 黷 �� + +### ����� 汾 ˵�� + +�õ��������Լ�� 汾 ��Ϣ�������£� + +| Software | commit ID or version No. | +| ------------------------ | ---------------------------------------- | +| Docker Desktop | 4.10.1 (82475) | +| container image | Ubuntu:20.04 | +| QEMU | a74c66b1b933b37248dd4a3f70a14f779f8825ba | +| Spike | ac466a21df442c59962589ba296c702631e041b5 | +| OpenSBI | 4489876e933d8ba0d8bc6c64bae71e295d45faac | +| Kernel | 5.19-rc5 | +| Busybox(to build RootFS) | 1.33.1 | + +### �������������� + +���ڱ�����ʾ��������������������±���ʾ�� + +����ָ������� docker �����»��� Ubuntu:20.04 ����image��������������container��������ͨ���� + +| Item | Products | Comments | +| -------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| QEMU(Simulator) | `./qemu/build/qemu-system-riscv64` | QEMU system emulator | +| Spike(Simulator) | ./riscv-isa-sim/spike | spike simulator | +| **Firmware**(OpenSBI) | `./opensbi/build/platform/generic/firmware/fw_jump.bin`(`fw_jump.elf`) | M-mode runtime firmware (`-bios .../*.bin` for QEMU; `.../*.elf` for Spike) | +| **Kernel Image** | `build-riscv64/arch/riscv/boot/Image`;`build-riscv64/arch/riscv/kvm/kvm.ko` | `--kernel`;`Image` as OS kernel, `kvm.ko` KVM kernel module; | +| userspace **kvmtool** | `./kvmtool/lkvm-static` | userspace kvmtool | +| **RootFS**(use Busybox to build) | `./rootfs_kvm_riscv64.img` | `--initrd` | + +### ��������׼�� + +�ڿ���֮ǰ��������Ҫ��׼���û��� Docker container �Ļ���ʵ� 黷 ���� + +```docker +# download image if it doesnot exist, create container kvm based on this image and start it interactively +docker run -it --name kvm ubuntu:20.04 /bin/bash +# install necessary toolchain and dependency (if the below is not enough, feel free to install what you want) +root@0152fed4b28d:~# apt install gcc gcc-riscv64-linux-gnu wget flex cpio +``` + +--- + +## QEMU/Spike+KVM ���� Linux + +### ģ�������ر��� + +#### [QEMU ���ر���](https://www.qemu.org/download/) + +���Դӹ���ֱ������ + +``` +shell wget https://download.qemu.org/qemu-7.0.0.tar.xz tar xvJf qemu-7.0.0.tar.xz cd qemu-7.0.0 +``` + +Ҳ���Դ� GitLab ���� + +``` +shell git clone https://gitlab.com/qemu-project/qemu.git cd qemu git submodule init git submodule update --recursive +``` + +���루�ο�[�ٷ��ĵ� 1](https://wiki.qemu.org/Hosts/Linux),[�ٷ��ĵ� 2](https://wiki.qemu.org/Documentation/Platforms/RISCV)�� + +��װ**����**��` apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build` + +ָ��֧�ֵ� ISA �� **build** + +```shell +./configure --target-list="riscv32-softmmu riscv64-softmmu" && make -j`nproc` +# ./qemu/build/qemu-system-riscv64 +``` + +#### Spike ���ذ�װ + +```shell +apt-get install device-tree-compiler +git clone https://github.com/riscv-software-src/riscv-isa-sim && cd riscv-isa-sim +./configure +make +# ./riscv-isa-sim/spike will be the built Spike simulator in later use +``` + +### ���� OpenSBI �̼� + +```shell +git clone https://github.com/riscv/opensbi.git +cd opensbi +export CROSS_COMPILE=riscv64-linux-gnu- +make PLATFORM=generic -j`nproc` +# ./opensbi/build/platform/generic/firmware/fw_jump.bin as M-mode runtime firmware +``` + +### ���� Linux �ں� + +- �޸��ں˴���ʹ֧֮���� Host Linux ����`rmmod kvm`��ָ��**ж�� kvm module** + + ```C + root@0152fed4b28d:~/linux# git diff + diff --git a/arch/riscv/kvm/main.c b/arch/riscv/kvm/main.c + index 1549205fe5fe..d8e91a7b1a72 100644 + --- a/arch/riscv/kvm/main.c + +++ b/arch/riscv/kvm/main.c + @@ -122,6 +122,12 @@ void kvm_arch_exit(void) + { + } + + +static void riscv_kvm_exit(void) + +{ + + kvm_exit(); + +} + +module_exit(riscv_kvm_exit); + + + static int riscv_kvm_init(void) + { + return kvm_init(NULL, sizeof(struct kvm_vcpu), 0, THIS_MODULE); + root@0152fed4b28d:~/linux# + ``` + +- ���� + `git clone https://github.com/kvm-riscv/linux.git # the mirror of the newest kernel version in kvm-riscv howto` + + - ��ʾ + + - � 汾 ��Linux �ں����ؿ���ͨ��[�ں˹���](https://www.kernel.org/)ѡ���Ӧ� 汾 ���أ����� 2022 �� 7 �� 6 �����°��ں�Ϊ`2022-07-03 5.19-rc5`���˰ 汾 ��`howto`�е�[�ں˾���ֿ�](https://github.com/kvm-riscv/linux.git)� 汾 һ�� + - ��ʱ������ϴ����غ�ʱ���ܻ�ܳ������жϣ�������ʹ�� git clone ʱ�� + + - ���ñ���ѡ�� + + - ��������������λ�� + ```shell + export ARCH=riscv + export CROSS_COMPILE=riscv64-linux-gnu- + mkdir build-riscv64 + ``` + - �ں˱���ѡ������ + + - ���°� Linux �ں�Ĭ�Ϲر� RISCV SBI ���ѡ���Ҫͨ�����������ֶ����ÿ�����������۲μ���[issue](https://github.com/kvm-riscv/howto/issues/9)������ϸ�ڲμ�[����](https://zhuanlan.zhihu.com/p/539390400) + - ���뼰ִ�н������ָ�������Ŀ¼������һ��`.config` �ļ� + + ```shell + make -C linux O=`pwd`/build-riscv64 menuconfig # change options of kernel compiling to generate build-riscv64/.config (output dir) + ``` + + - build + + ```shell + make -C linux O=`pwd`/build-riscv64 -j`nproc` + + # build-riscv64/arch/riscv/boot/Image as kernel + # build-riscv64/arch/riscv/kvm/kvm.ko as KVM RISC-V kernel module + ``` + +### ���� kvmtools + +- ׼��������`libfdt`�Ⲣ�������ӵ�����������λ�õ� sysroot �ļ����� + + ```cmake + git clone git://git.kernel.org/pub/scm/utils/dtc/dtc.git + cd dtc + export ARCH=riscv + export CROSS_COMPILE=riscv64-linux-gnu- + export CC="${CROSS_COMPILE}gcc -mabi=lp64d -march=rv64gc" # riscv toolchain should be configured with --enable-multilib to support the most common -march/-mabi options if you build it from source code + TRIPLET=$($CC -dumpmachine) + SYSROOT=$($CC -print-sysroot) + make libfdt -j`nproc` + make NO_PYTHON=1 NO_YAML=1 DESTDIR=$SYSROOT PREFIX=/usr LIBDIR=/usr/lib64/lp64d install-lib install-includes -j`nproc` + cd .. + + # install cross-compiled libfdt library at $SYSROOT/usr/lib64/lp64d directory of cross-compile toolchain + ``` + +- ���� + ``` + git clone https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git + cd kvmtool + export ARCH=riscv + export CROSS_COMPILE=riscv64-linux-gnu- + cd kvmtool + make lkvm-static -j`nproc` + ${CROSS_COMPILE}strip lkvm-static + cd .. + ``` + +### ���� RootFS + +RootFS ����`KVM kernel module, userspace kvmtools, kernel image`�����֡� + +``` +export ARCH=riscv +export CROSS_COMPILE=riscv64-linux-gnu- +git clone https://github.com/kvm-riscv/howto.git +wget https://busybox.net/downloads/busybox-1.33.1.tar.bz2 +tar -C . -xvf ./busybox-1.33.1.tar.bz2 +mv ./busybox-1.33.1 ./busybox-1.33.1-kvm-riscv64 +cp -f ./howto/configs/busybox-1.33.1_defconfig busybox-1.33.1-kvm-riscv64/.config +make -C busybox-1.33.1-kvm-riscv64 oldconfig +make -C busybox-1.33.1-kvm-riscv64 install +mkdir -p busybox-1.33.1-kvm-riscv64/_install/etc/init.d +mkdir -p busybox-1.33.1-kvm-riscv64/_install/dev +mkdir -p busybox-1.33.1-kvm-riscv64/_install/proc +mkdir -p busybox-1.33.1-kvm-riscv64/_install/sys +mkdir -p busybox-1.33.1-kvm-riscv64/_install/apps +ln -sf /sbin/init busybox-1.33.1-kvm-riscv64/_install/init +cp -f ./howto/configs/busybox/fstab busybox-1.33.1-kvm-riscv64/_install/etc/fstab +cp -f ./howto/configs/busybox/rcS busybox-1.33.1-kvm-riscv64/_install/etc/init.d/rcS +cp -f ./howto/configs/busybox/motd busybox-1.33.1-kvm-riscv64/_install/etc/motd +cp -f ./kvmtool/lkvm-static busybox-1.33.1-kvm-riscv64/_install/apps +cp -f ./build-riscv64/arch/riscv/boot/Image busybox-1.33.1-kvm-riscv64/_install/apps +cp -f ./build-riscv64/arch/riscv/kvm/kvm.ko busybox-1.33.1-kvm-riscv64/_install/apps +cd busybox-1.33.1-kvm-riscv64/_install; find ./ | cpio -o -H newc > ../../rootfs_kvm_riscv64.img; cd - +``` + +### QEMU+KVM ���� + +#### ���� Host Linux + +```bash +./qemu/build/riscv64-softmmu/qemu-system-riscv64 -cpu rv64 -M virt -m 512M -nographic -bios opensbi/build/platform/generic/firmware/fw_jump.bin -kernel ./build-riscv64/arch/riscv/boot/Image -initrd ./rootfs_kvm_riscv64.img -append "root=/dev/ram rw console=ttyS0 earlycon=sbi" +``` + +���ܳ��ֵ����⣺`[ 0.629637] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---`: initrd (������һ��)δʹ�� riscv ������ + +#### ���� Guest Machine + +����һ���򿪵ķ�� 滷 ����ִ�����²��� + +- ���� KVM kernel module��`insmod apps/kvm.ko` +- ʹ�� KVM userspace kvmtool ���� Guest Linux��`./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlycon=uart8250,mmio,0x3f8" -k ./apps/Image --debug` + +#### �����־ + +``` +root@0152fed4b28d:~# ./qemu/build/qemu-system-riscv64 -cpu rv64 -M virt -m 512M -nographic -bios opensbi/build/platform/generic/firmware/fw_jump.bin -kernel ./build-riscv64/arch/riscv/boot/Image -initrd ./rootfs_kvm_riscv64.img -append "root=/dev/ram rw console=ttyS0 earlycon=sbi" + +OpenSBI v1.1 + ____ _____ ____ _____ + / __ \ / ____| _ \_ _| + | | | |_ __ ___ _ __ | (___ | |_) || | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | + | |__| | |_) | __/ | | |____) | |_) || |_ + \____/| .__/ \___|_| |_|_____/|____/_____| + | | + |_| + +Platform Name : riscv-virtio,qemu +Platform Features : medeleg +Platform HART Count : 1 +Platform IPI Device : aclint-mswi +Platform Timer Device : aclint-mtimer @ 10000000Hz +Platform Console Device : uart8250 +Platform HSM Device : --- +Platform Reboot Device : sifive_test +Platform Shutdown Device : sifive_test +Firmware Base : 0x80000000 +Firmware Size : 284 KB +Runtime SBI Version : 1.0 + +Domain0 Name : root +Domain0 Boot HART : 0 +Domain0 HARTs : 0* +Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I) +Domain0 Region01 : 0x0000000080000000-0x000000008007ffff () +Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X) +Domain0 Next Address : 0x0000000080200000 +Domain0 Next Arg1 : 0x0000000082200000 +Domain0 Next Mode : S-mode +Domain0 SysReset : yes + +Boot HART ID : 0 +Boot HART Domain : root +Boot HART Priv Version : v1.12 +Boot HART Base ISA : rv64imafdch +Boot HART ISA Extensions : time +Boot HART PMP Count : 16 +Boot HART PMP Granularity : 4 +Boot HART PMP Address Bits: 54 +Boot HART MHPM Count : 16 +Boot HART MIDELEG : 0x0000000000001666 +Boot HART MEDELEG : 0x0000000000f0b509 +[ 0.000000] Linux version 5.19.0-rc5-dirty (root@0152fed4b28d) (riscv64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #5 SMP Fri Jul 8 14:48:33 CST 2022 +[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 +[ 0.000000] Machine model: riscv-virtio,qemu +[ 0.000000] earlycon: sbi0 at I/O port 0x0 (options '') +[ 0.000000] printk: bootconsole [sbi0] enabled +[ 0.000000] efi: UEFI not found. +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] SBI specification v1.0 detected +[ 0.000000] SBI implementation ID=0x1 Version=0x10001 +[ 0.000000] SBI TIME extension detected +[ 0.000000] SBI IPI extension detected +[ 0.000000] SBI RFENCE extension detected +[ 0.000000] SBI SRST extension detected +[ 0.000000] SBI HSM extension detected +[ 0.000000] riscv: base ISA extensions acdfhim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: Embedded 18 pages/cpu s34104 r8192 d31432 u73728 +[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 128775 +[ 0.000000] Kernel command line: root=/dev/ram rw console=ttyS0 earlycon=sbi +[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Virtual kernel memory layout: +[ 0.000000] fixmap : 0xff1bfffffee00000 - 0xff1bffffff000000 (2048 kB) +[ 0.000000] pci io : 0xff1bffffff000000 - 0xff1c000000000000 ( 16 MB) +[ 0.000000] vmemmap : 0xff1c000000000000 - 0xff20000000000000 (1024 TB) +[ 0.000000] vmalloc : 0xff20000000000000 - 0xff60000000000000 (16384 TB) +[ 0.000000] lowmem : 0xff60000000000000 - 0xff6000001fe00000 ( 510 MB) +[ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) +[ 0.000000] Memory: 471456K/522240K available (6518K kernel code, 4864K rwdata, 4096K rodata, 2172K init, 397K bss, 50784K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1. +[ 0.000000] rcu: RCU debug extended QS entry/exit. +[ 0.000000] Tracing variant of Tasks RCU enabled. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: plic@c000000: mapped 96 interrupts with 1 handlers for 2 contexts. +[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. +[ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0] +[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000142] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns +[ 0.015542] Console: colour dummy device 80x25 +[ 0.020750] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000) +[ 0.025722] pid_max: default: 32768 minimum: 301 +[ 0.031495] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.034808] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.074794] cblist_init_generic: Setting adjustable number of callback queues. +[ 0.078104] cblist_init_generic: Setting shift to 0 and lim to 1. +[ 0.081658] riscv: ELF compat mode supported +[ 0.082496] ASID allocator using 16 bits (65536 entries) +[ 0.087668] rcu: Hierarchical SRCU implementation. +[ 0.095219] EFI services will not be available. +[ 0.102311] smp: Bringing up secondary CPUs ... +[ 0.104772] smp: Brought up 1 node, 1 CPU +[ 0.615904] devtmpfs: initialized +[ 0.626513] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.630962] futex hash table entries: 256 (order: 2, 16384 bytes, linear) +[ 0.640986] NET: Registered PF_NETLINK/PF_ROUTE protocol family +[ 0.652546] cpuidle: using governor menu +[ 0.689614] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages +[ 0.702174] iommu: Default domain type: Translated +[ 0.706376] iommu: DMA domain TLB invalidation policy: strict mode +[ 0.711015] SCSI subsystem initialized +[ 0.716260] usbcore: registered new interface driver usbfs +[ 0.719412] usbcore: registered new interface driver hub +[ 0.722271] usbcore: registered new device driver usb +[ 0.745275] vgaarb: loaded +[ 0.747591] clocksource: Switched to clocksource riscv_clocksource +[ 0.771282] NET: Registered PF_INET protocol family +[ 0.774681] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) +[ 0.782381] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 8192 bytes, linear) +[ 0.786971] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) +[ 0.790377] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear) +[ 0.795760] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear) +[ 0.797898] TCP: Hash tables configured (established 4096 bind 4096) +[ 0.803091] UDP hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.806493] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.811071] NET: Registered PF_UNIX/PF_LOCAL protocol family +[ 0.818711] RPC: Registered named UNIX socket transport module. +[ 0.821977] RPC: Registered udp transport module. +[ 0.824307] RPC: Registered tcp transport module. +[ 0.826181] RPC: Registered tcp NFSv4.1 backchannel transport module. +[ 0.829536] PCI: CLS 0 bytes, default 64 +[ 0.845435] Unpacking initramfs... +[ 0.868143] workingset: timestamp_bits=62 max_order=17 bucket_order=0 +[ 0.909149] NFS: Registering the id_resolver key type +[ 0.910778] Key type id_resolver registered +[ 0.912817] Key type id_legacy registered +[ 0.915129] nfs4filelayout_init: NFSv4 File Layout Driver Registering... +[ 0.918431] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... +[ 0.935866] 9p: Installing v9fs 9p2000 file system support +[ 0.941894] NET: Registered PF_ALG protocol family +[ 0.945951] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) +[ 0.950035] io scheduler mq-deadline registered +[ 0.952344] io scheduler kyber registered +[ 0.989260] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 ranges: +[ 0.993242] pci-host-generic 30000000.pci: IO 0x0003000000..0x000300ffff -> 0x0000000000 +[ 0.996812] pci-host-generic 30000000.pci: MEM 0x0040000000..0x007fffffff -> 0x0040000000 +[ 1.000530] pci-host-generic 30000000.pci: MEM 0x0400000000..0x07ffffffff -> 0x0400000000 +[ 1.004671] pci-host-generic 30000000.pci: Memory resource size exceeds max for 32 bits +[ 1.009984] pci-host-generic 30000000.pci: ECAM at [mem 0x30000000-0x3fffffff] for [bus 00-ff] +[ 1.016744] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00 +[ 1.020444] pci_bus 0000:00: root bus resource [bus 00-ff] +[ 1.022890] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] +[ 1.026181] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff] +[ 1.029150] pci_bus 0000:00: root bus resource [mem 0x400000000-0x7ffffffff] +[ 1.032837] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000 +[ 1.112920] Freeing initrd memory: 22232K +[ 1.235256] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled +[ 1.249547] printk: console [ttyS0] disabled +[ 1.253150] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 1, base_baud = 230400) is a 16550A +[ 1.258759] printk: console [ttyS0] enabled +[ 1.258759] printk: console [ttyS0] enabled +[ 1.262596] printk: bootconsole [sbi0] disabled +[ 1.262596] printk: bootconsole [sbi0] disabled +[ 1.291214] loop: module loaded +[ 1.297228] e1000e: Intel(R) PRO/1000 Network Driver +[ 1.298424] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 1.300433] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 1.301964] ehci-pci: EHCI PCI platform driver +[ 1.303655] ehci-platform: EHCI generic platform driver +[ 1.305293] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 1.306182] ohci-pci: OHCI PCI platform driver +[ 1.308204] ohci-platform: OHCI generic platform driver +[ 1.311540] usbcore: registered new interface driver uas +[ 1.313508] usbcore: registered new interface driver usb-storage +[ 1.316431] mousedev: PS/2 mouse device common for all mice +[ 1.322220] goldfish_rtc 101000.rtc: registered as rtc0 +[ 1.324960] goldfish_rtc 101000.rtc: setting system clock to 2022-07-08T06:58:09 UTC (1657263489) +[ 1.331663] syscon-poweroff soc:poweroff: pm_power_off already claimed for sbi_srst_power_off +[ 1.333780] syscon-poweroff: probe of soc:poweroff failed with error -16 +[ 1.338818] sdhci: Secure Digital Host Controller Interface driver +[ 1.340662] sdhci: Copyright(c) Pierre Ossman +[ 1.342121] sdhci-pltfm: SDHCI platform and OF driver helper +[ 1.345732] usbcore: registered new interface driver usbhid +[ 1.348886] usbhid: USB HID core driver +[ 1.351700] riscv-pmu-sbi: SBI PMU extension is available +[ 1.353803] riscv-pmu-sbi: 16 firmware and 18 hardware counters +[ 1.355525] riscv-pmu-sbi: Perf sampling/filtering is not supported as sscof extension is not available +[ 1.365361] NET: Registered PF_INET6 protocol family +[ 1.381090] Segment Routing with IPv6 +[ 1.382406] In-situ OAM (IOAM) with IPv6 +[ 1.384585] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver +[ 1.391094] NET: Registered PF_PACKET protocol family +[ 1.394654] 9pnet: Installing 9P2000 support +[ 1.396662] Key type dns_resolver registered +[ 1.401846] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers +[ 1.454064] Freeing unused kernel image (initmem) memory: 2172K +[ 1.460808] Run /init as init process + _ _ + | ||_| + | | _ ____ _ _ _ _ + | || | _ \| | | |\ \/ / + | || | | | | |_| |/ \ + |_||_|_| |_|\____|\_/\_/ + + Busybox Rootfs + +Please press Enter to activate this console. +/ # insmod apps/kvm.ko +[ 13.404010] kvm [48]: hypervisor extension available +[ 13.405257] kvm [48]: using Sv57x4 G-stage page table format +[ 13.406316] kvm [48]: VMID 14 bits available +/ # ./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlyco +n=uart8250,mmio,0x3f8" -k ./apps/Image --debug + # lkvm run -k ./apps/Image -m 128 -c 2 --name guest-49 + Info: (riscv/kvm.c) kvm__arch_load_kernel_image:125: Loaded kernel to 0x80200000 (19789312 bytes) + Info: (riscv/kvm.c) kvm__arch_load_kernel_image:136: Placing fdt at 0x81c00000 - 0x87ffffff + # Warning: The maximum recommended amount of VCPUs is 1 + Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000000:5 + Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000200:6 + Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000400:7 +[ 0.000000] Linux version 5.19.0-rc5-dirty (root@0152fed4b28d) (riscv64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #5 SMP Fri Jul 8 14:48:33 CST 2022 +[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 +[ 0.000000] Machine model: linux,dummy-virt +[ 0.000000] earlycon: uart8250 at MMIO 0x00000000000003f8 (options '') +[ 0.000000] printk: bootconsole [uart8250] enabled +[ 0.000000] efi: UEFI not found. +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] SBI specification v0.3 detected +[ 0.000000] SBI implementation ID=0x3 Version=0x51300 +[ 0.000000] SBI TIME extension detected +[ 0.000000] SBI IPI extension detected +[ 0.000000] SBI RFENCE extension detected +[ 0.000000] SBI SRST extension detected +[ 0.000000] SBI HSM extension detected +[ 0.000000] riscv: base ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: Embedded 18 pages/cpu s34104 r8192 d31432 u73728 +[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 31815 +[ 0.000000] Kernel command line: console=ttyS0 rw rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p init=/virt/init ip=dhcp console=ttyS0 earlycon=uart8250,mmio,0x3f8 +[ 0.000000] Dentry cache hash table entries: 16384 (order: 5, 131072 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Virtual kernel memory layout: +[ 0.000000] fixmap : 0xff1bfffffee00000 - 0xff1bffffff000000 (2048 kB) +[ 0.000000] pci io : 0xff1bffffff000000 - 0xff1c000000000000 ( 16 MB) +[ 0.000000] vmemmap : 0xff1c000000000000 - 0xff20000000000000 (1024 TB) +[ 0.000000] vmalloc : 0xff20000000000000 - 0xff60000000000000 (16384 TB) +[ 0.000000] lowmem : 0xff60000000000000 - 0xff60000007e00000 ( 126 MB) +[ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) +[ 0.000000] Memory: 106368K/129024K available (6518K kernel code, 4864K rwdata, 4096K rodata, 2172K init, 397K bss, 22656K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. +[ 0.000000] rcu: RCU debug extended QS entry/exit. +[ 0.000000] Tracing variant of Tasks RCU enabled. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@0c000000: mapped 1023 interrupts with 2 handlers for 4 contexts. +[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. +[ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0] +[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000132] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns +[ 0.058657] Console: colour dummy device 80x25 +[ 0.095279] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000) +[ 0.164253] pid_max: default: 32768 minimum: 301 +[ 0.224586] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.277689] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 1.368094] cblist_init_generic: Setting adjustable number of callback queues. +[ 1.411153] cblist_init_generic: Setting shift to 1 and lim to 1. +[ 1.446243] riscv: ELF compat mode supported +[ 1.448377] ASID allocator using 16 bits (65536 entries) +[ 1.499701] rcu: Hierarchical SRCU implementation. +[ 1.531291] EFI services will not be available. +[ 2.491551] smp: Bringing up secondary CPUs ... +[ 2.551252] smp: Brought up 1 node, 2 CPUs +[ 2.650149] devtmpfs: initialized +[ 2.711053] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 2.781423] futex hash table entries: 512 (order: 3, 32768 bytes, linear) +[ 3.678845] NET: Registered PF_NETLINK/PF_ROUTE protocol family +[ 3.738055] cpuidle: using governor menu +[ 3.894209] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages +[ 3.970099] iommu: Default domain type: Translated +[ 4.001139] iommu: DMA domain TLB invalidation policy: strict mode +[ 4.063992] SCSI subsystem initialized +[ 4.121977] usbcore: registered new interface driver usbfs +[ 4.179208] usbcore: registered new interface driver hub +[ 4.219538] usbcore: registered new device driver usb +[ 4.613374] vgaarb: loaded +[ 4.653564] clocksource: Switched to clocksource riscv_clocksource +[ 4.926025] NET: Registered PF_INET protocol family +[ 4.974051] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) +[ 5.058030] tcp_listen_portaddr_hash hash table entries: 128 (order: 0, 4096 bytes, linear) +[ 5.148512] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) +[ 5.209568] TCP established hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 5.276291] TCP bind hash table entries: 1024 (order: 3, 32768 bytes, linear) +[ 5.341897] TCP: Hash tables configured (established 1024 bind 1024) +[ 5.406785] UDP hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 5.466837] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 5.535911] NET: Registered PF_UNIX/PF_LOCAL protocol family +[ 5.624395] RPC: Registered named UNIX socket transport module. +[ 5.670725] RPC: Registered udp transport module. +[ 5.700296] RPC: Registered tcp transport module. +[ 5.728202] RPC: Registered tcp NFSv4.1 backchannel transport module. +[ 5.772245] PCI: CLS 0 bytes, default 64 +[ 5.827469] workingset: timestamp_bits=62 max_order=15 bucket_order=0 +[ 6.735634] NFS: Registering the id_resolver key type +[ 6.774655] Key type id_resolver registered +[ 6.802063] Key type id_legacy registered +[ 6.831186] nfs4filelayout_init: NFSv4 File Layout Driver Registering... +[ 6.875372] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... +[ 6.929106] 9p: Installing v9fs 9p2000 file system support +[ 6.977877] NET: Registered PF_ALG protocol family +[ 7.006556] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) +[ 7.057411] io scheduler mq-deadline registered +[ 7.086547] io scheduler kyber registered +[ 7.143818] pci-host-generic 30000000.pci: host bridge /smb/pci ranges: +[ 7.196469] pci-host-generic 30000000.pci: IO 0x0000000000..0x000000ffff -> 0x0000000000 +[ 7.275220] pci-host-generic 30000000.pci: MEM 0x0040000000..0x007fffffff -> 0x0040000000 +[ 7.350731] pci-host-generic 30000000.pci: ECAM at [mem 0x30000000-0x3fffffff] for [bus 00-01] +[ 7.414455] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00 +[ 7.460026] pci_bus 0000:00: root bus resource [bus 00-01] +[ 7.498065] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] +[ 7.540312] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff] +[ 8.638643] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled +[ 8.709733] printk: console [ttyS0] disabled +[ 8.762750] 3f8.U6_16550A: ttyS0 at MMIO 0x3f8 (irq = 1, base_baud = 115200) is a 16550A +[ 8.823902] printk: console [ttyS0] enabled +[ 8.823902] printk: console [ttyS0] enabled +[ 8.886645] printk: bootconsole [uart8250] disabled +[ 8.886645] printk: bootconsole [uart8250] disabled +[ 8.968186] 2f8.U6_16550A: ttyS1 at MMIO 0x2f8 (irq = 2, base_baud = 115200) is a 16550A +[ 9.036636] 3e8.U6_16550A: ttyS2 at MMIO 0x3e8 (irq = 3, base_baud = 115200) is a 16550A +[ 9.108624] 2e8.U6_16550A: ttyS3 at MMIO 0x2e8 (irq = 4, base_baud = 115200) is a 16550A +[ 11.046849] loop: module loaded +[ 11.170238] net eth0: Fail to set guest offload. +[ 11.210647] virtio_net virtio2 eth0: set_features() failed (-22); wanted 0x0000000000134829, left 0x0080000000134829 +[ 11.330906] e1000e: Intel(R) PRO/1000 Network Driver +[ 11.389219] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 11.430344] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 11.486294] ehci-pci: EHCI PCI platform driver +[ 11.515628] ehci-platform: EHCI generic platform driver +[ 11.551281] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 11.598433] ohci-pci: OHCI PCI platform driver +[ 11.634790] ohci-platform: OHCI generic platform driver +[ 11.705856] usbcore: registered new interface driver uas +[ 11.742504] usbcore: registered new interface driver usb-storage +[ 11.783699] mousedev: PS/2 mouse device common for all mice +[ 11.831074] sdhci: Secure Digital Host Controller Interface driver +[ 11.870880] sdhci: Copyright(c) Pierre Ossman +[ 11.899942] sdhci-pltfm: SDHCI platform and OF driver helper +[ 11.940434] usbcore: registered new interface driver usbhid +[ 11.991571] usbhid: USB HID core driver +[ 12.035816] NET: Registered PF_INET6 protocol family +[ 12.148551] Segment Routing with IPv6 +[ 12.179554] In-situ OAM (IOAM) with IPv6 +[ 12.211655] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver +[ 12.274482] NET: Registered PF_PACKET protocol family +[ 12.314503] 9pnet: Installing 9P2000 support +[ 12.379475] Key type dns_resolver registered +[ 12.443790] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers +[ 12.728184] Legacy PMU implementation is available +[ 12.853858] Sending DHCP requests ., OK +[ 12.930786] IP-Config: Got DHCP answer from 192.168.33.1, my address is 192.168.33.15 +[ 13.022571] IP-Config: Complete: +[ 13.050310] device=eth0, hwaddr=02:15:15:15:15:15, ipaddr=192.168.33.15, mask=255.255.255.0, gw=192.168.33.1 +[ 13.158329] host=192.168.33.15, domain=, nis-domain=(none) +[ 13.211725] bootserver=192.168.33.1, rootserver=0.0.0.0, rootpath= +[ 13.211943] nameserver0=192.168.33.1 +[ 13.394327] VFS: Mounted root (9p filesystem) on device 0:15. +[ 13.451710] devtmpfs: mounted +[ 13.579633] Freeing unused kernel image (initmem) memory: 2172K +[ 13.642610] Run /virt/init as init process +Mounting... +/ # poweroff -f +[ 30.712083] reboot: Power down + + # KVM session ended normally. +/ # rmmod kvm +/ # poweoff -f +-/bin/sh: poweoff: not found +/ # poweroff -f +[ 80.496454] reboot: Power down +root@0152fed4b28d:~# +``` + +### Spike+KVM ���� + +#### ���� Host Linux + +```shell +# Run Host Linux +./riscv-isa-sim/spike -m512 --isa rv64gch --kernel ./build-riscv64/arch/riscv/boot/Image --initrd ./rootfs_kvm_riscv64.img opensbi/build/platform/generic/firmware/fw_jump.elf +``` + +#### ���� Guest Machine + +``` +# insert kvm kernel module +insmod apps/kvm.ko +``` + +``` +./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlycon=uart8250,mmio,0x3f8" -k ./apps/Image --debug + +``` + +#### �����־ + +``` + +root@0152fed4b28d:~# ./riscv-isa-sim/spike -m512 --isa rv64gch --kernel ./build-riscv64/arch/riscv/boot/Image --initrd ./rootfs_kvm_riscv64.img opensbi/build/platform/generic/firmware/fw_jump.elf + +OpenSBI v1.1 + +--- + +/ ** \ / \_\_**| _ \_ _| +| | | |\_ ** \_** \_ ** | (\_** | |_) || | +| | | | '_ \ / _ \ '_ \ \_** \| \_ < | | +| |**| | |_) | **/ | | |\_\_**) | |_) || |\_ +\_**\_/| .**/ \_**|_| |_|\_\_\_**/|\_**\_/\_\_\_**| +| | +|\_| + +Platform Name : ucbbar,spike-bare +Platform Features : medeleg +Platform HART Count : 1 +Platform IPI Device : aclint-mswi +Platform Timer Device : aclint-mtimer @ 10000000Hz +Platform Console Device : htif +Platform HSM Device : --- +Platform Reboot Device : htif +Platform Shutdown Device : htif +Firmware Base : 0x80000000 +Firmware Size : 284 KB +Runtime SBI Version : 1.0 + +Domain0 Name : root +Domain0 Boot HART : 0 +Domain0 HARTs : 0\* +Domain0 Region00 : 0x0000000002080000-0x00000000020bffff (I) +Domain0 Region01 : 0x0000000002000000-0x000000000207ffff (I) +Domain0 Region02 : 0x0000000080000000-0x000000008007ffff () +Domain0 Region03 : 0x0000000000000000-0xffffffffffffffff (R,W,X) +Domain0 Next Address : 0x0000000080200000 +Domain0 Next Arg1 : 0x0000000082200000 +Domain0 Next Mode : S-mode +Domain0 SysReset : yes + +Boot HART ID : 0 +Boot HART Domain : root +Boot HART Priv Version : v1.12 +Boot HART Base ISA : rv64imafdch +Boot HART ISA Extensions : none +Boot HART PMP Count : 16 +Boot HART PMP Granularity : 4 +Boot HART PMP Address Bits: 54 +Boot HART MHPM Count : 0 +Boot HART MIDELEG : 0x0000000000001666 +Boot HART MEDELEG : 0x0000000000f0b509 +[ 0.000000] Linux version 5.19.0-rc5-dirty (root@0152fed4b28d) (riscv64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #5 SMP Fri Jul 8 14:48:33 CST 2022 +[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 +[ 0.000000] Machine model: ucbbar,spike-bare +[ 0.000000] earlycon: sbi0 at I/O port 0x0 (options '') +[ 0.000000] printk: bootconsole [sbi0] enabled +[ 0.000000] efi: UEFI not found. +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000009fffffff] +[ 0.000000] SBI specification v1.0 detected +[ 0.000000] SBI implementation ID=0x1 Version=0x10001 +[ 0.000000] SBI TIME extension detected +[ 0.000000] SBI IPI extension detected +[ 0.000000] SBI RFENCE extension detected +[ 0.000000] SBI SRST extension detected +[ 0.000000] SBI HSM extension detected +[ 0.000000] riscv: base ISA extensions acdfhim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: Embedded 18 pages/cpu s34104 r8192 d31432 u73728 +[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 128775 +[ 0.000000] Kernel command line: root=/dev/ram console=hvc0 earlycon=sbi +[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Virtual kernel memory layout: +[ 0.000000] fixmap : 0xff1bfffffee00000 - 0xff1bffffff000000 (2048 kB) +[ 0.000000] pci io : 0xff1bffffff000000 - 0xff1c000000000000 ( 16 MB) +[ 0.000000] vmemmap : 0xff1c000000000000 - 0xff20000000000000 (1024 TB) +[ 0.000000] vmalloc : 0xff20000000000000 - 0xff60000000000000 (16384 TB) +[ 0.000000] lowmem : 0xff60000000000000 - 0xff6000001fe00000 ( 510 MB) +[ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) +[ 0.000000] Memory: 471476K/522240K available (6518K kernel code, 4864K rwdata, 4096K rodata, 2172K init, 397K bss, 50764K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU restricting CPUs from NR*CPUS=8 to nr_cpu_ids=1. +[ 0.000000] rcu: RCU debug extended QS entry/exit. +[ 0.000000] Tracing variant of Tasks RCU enabled. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. +[ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0] +[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000005] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns +[ 0.000655] Console: colour dummy device 80x25 +[ 0.000925] printk: console [hvc0] enabled +[ 0.000925] printk: console [hvc0] enabled +[ 0.001415] printk: bootconsole [sbi0] disabled +[ 0.001415] printk: bootconsole [sbi0] disabled +[ 0.001975] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000) +[ 0.002585] pid_max: default: 32768 minimum: 301 +[ 0.002990] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.003425] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.005160] cblist_init_generic: Setting adjustable number of callback queues. +[ 0.005590] cblist_init_generic: Setting shift to 0 and lim to 1. +[ 0.006065] riscv: ELF compat mode failed +[ 0.006085] ASID allocator using 16 bits (65536 entries) +[ 0.006760] rcu: Hierarchical SRCU implementation. +[ 0.007290] EFI services will not be available. +[ 0.007820] smp: Bringing up secondary CPUs ... +[ 0.008095] smp: Brought up 1 node, 1 CPU +[ 0.008650] devtmpfs: initialized +[ 0.009465] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.010040] futex hash table entries: 256 (order: 2, 16384 bytes, linear) +[ 0.011760] NET: Registered PF_NETLINK/PF_ROUTE protocol family +[ 0.012380] cpuidle: using governor menu +[ 0.018845] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages +[ 0.019490] iommu: Default domain type: Translated +[ 0.019785] iommu: DMA domain TLB invalidation policy: strict mode +[ 0.020335] SCSI subsystem initialized +[ 0.020840] usbcore: registered new interface driver usbfs +[ 0.021190] usbcore: registered new interface driver hub +[ 0.021525] usbcore: registered new device driver usb +[ 0.022330] vgaarb: loaded +[ 0.022580] clocksource: Switched to clocksource riscv_clocksource +[ 0.030525] NET: Registered PF_INET protocol family +[ 0.031090] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) +[ 0.033000] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 8192 bytes, linear) +[ 0.033505] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) +[ 0.033970] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear) +[ 0.034475] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear) +[ 0.035070] TCP: Hash tables configured (established 4096 bind 4096) +[ 0.035475] UDP hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.035890] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.036415] NET: Registered PF_UNIX/PF_LOCAL protocol family +[ 0.037185] RPC: Registered named UNIX socket transport module. +[ 0.037540] RPC: Registered udp transport module. +[ 0.037825] RPC: Registered tcp transport module. +[ 0.038110] RPC: Registered tcp NFSv4.1 backchannel transport module. +[ 0.038495] PCI: CLS 0 bytes, default 64 +[ 0.039390] Unpacking initramfs... +[ 0.046680] workingset: timestamp_bits=62 max_order=17 bucket_order=0 +[ 0.052835] NFS: Registering the id_resolver key type +[ 0.053175] Key type id_resolver registered +[ 0.053430] Key type id_legacy registered +[ 0.053730] nfs4filelayout_init: NFSv4 File Layout Driver Registering... +[ 0.054130] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... +[ 0.058645] 9p: Installing v9fs 9p2000 file system support +[ 0.059215] NET: Registered PF_ALG protocol family +[ 0.059525] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) +[ 0.059965] io scheduler mq-deadline registered +[ 0.060240] io scheduler kyber registered +[ 0.140120] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled +[ 0.151730] loop: module loaded +[ 0.152920] e1000e: Intel(R) PRO/1000 Network Driver +[ 0.153220] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.153620] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.154010] ehci-pci: EHCI PCI platform driver +[ 0.154300] ehci-platform: EHCI generic platform driver +[ 0.154690] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.155060] ohci-pci: OHCI PCI platform driver +[ 0.155345] ohci-platform: OHCI generic platform driver +[ 0.155885] usbcore: registered new interface driver uas +[ 0.156230] usbcore: registered new interface driver usb-storage +[ 0.156730] mousedev: PS/2 mouse device common for all mice +[ 0.157300] sdhci: Secure Digital Host Controller Interface driver +[ 0.157670] sdhci: Copyright(c) Pierre Ossman +[ 0.157940] sdhci-pltfm: SDHCI platform and OF driver helper +[ 0.158380] usbcore: registered new interface driver usbhid +[ 0.158765] usbhid: USB HID core driver +[ 0.159060] riscv-pmu-sbi: SBI PMU extension is available +[ 0.159490] riscv-pmu-sbi: 16 firmware and 2 hardware counters +[ 0.159840] riscv-pmu-sbi: Perf sampling/filtering is not supported as sscof extension is not available +[ 0.171790] Freeing initrd memory: 22232K +[ 0.172505] NET: Registered PF_INET6 protocol family +[ 0.173680] Segment Routing with IPv6 +[ 0.173980] In-situ OAM (IOAM) with IPv6 +[ 0.174255] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver +[ 0.175035] NET: Registered PF_PACKET protocol family +[ 0.175445] 9pnet: Installing 9P2000 support +[ 0.175750] Key type dns_resolver registered +[ 0.176315] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers +[ 0.179125] Freeing unused kernel image (initmem) memory: 2172K +[ 0.186640] Run /init as init process +* _ +| ||_| +| | _ \_\_\_\_ _ \_ \_ _ +| || | _ \| | | |\ \/ / +| || | | | | |_| |/ \ + |_||_|_| |\_|\_\_\_\_|\_/\_/ + + Busybox Rootfs + +Please press Enter to activate this console. + +/ # insmod apps/kvm.ko +insmod apps/kvm.ko +[ 3.104495] kvm [48]: hypervisor extension available +[ 3.104795] kvm [48]: using Sv57x4 G-stage page table format +[ 3.105135] kvm [48]: VMID 14 bits available +/ # ./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlycon=uart8250,mmio,0x3f8" -k ./apps/Image --debug +./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlyco +n=uart8250,mmio,0x3f8" -k ./apps/Image --debug + +# lkvm run -k ./apps/Image -m 128 -c 2 --name guest-49 + +Info: (riscv/kvm.c) kvm**arch_load_kernel_image:125: Loaded kernel to 0x80200000 (19789312 bytes) +Info: (riscv/kvm.c) kvm**arch_load_kernel_image:136: Placing fdt at 0x81c00000 - 0x87ffffff + +# Warning: The maximum recommended amount of VCPUs is 1 + +Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000000:5 +Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000200:6 +Info: (virtio/mmio.c) virtio_mmio_init:197: virtio-mmio.devices=0x200@0x10000400:7 +[ 0.000000] Linux version 5.19.0-rc5-dirty (root@0152fed4b28d) (riscv64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #5 SMP Fri Jul 8 14:48:33 CST 2022 +[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 +[ 0.000000] Machine model: linux,dummy-virt +[ 0.000000] earlycon: uart8250 at MMIO 0x00000000000003f8 (options '') +[ 0.000000] printk: bootconsole [uart8250] enabled +[ 0.000000] efi: UEFI not found. +[ 0.000000] Zone ranges: +[ 0.000000] DMA32 [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] Normal empty +[ 0.000000] Movable zone start for each node +[ 0.000000] Early memory node ranges +[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x0000000087ffffff] +[ 0.000000] SBI specification v0.3 detected +[ 0.000000] SBI implementation ID=0x3 Version=0x51300 +[ 0.000000] SBI TIME extension detected +[ 0.000000] SBI IPI extension detected +[ 0.000000] SBI RFENCE extension detected +[ 0.000000] SBI SRST extension detected +[ 0.000000] SBI HSM extension detected +[ 0.000000] riscv: base ISA extensions acdfim +[ 0.000000] riscv: ELF capabilities acdfim +[ 0.000000] percpu: Embedded 18 pages/cpu s34104 r8192 d31432 u73728 +[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 31815 +[ 0.000000] Kernel command line: console=ttyS0 rw rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p init=/virt/init ip=dhcp console=ttyS0 earlycon=uart8250,mmio,0x3f8 +[ 0.000000] Dentry cache hash table entries: 16384 (order: 5, 131072 bytes, linear) +[ 0.000000] Inode-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) +[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off +[ 0.000000] Virtual kernel memory layout: +[ 0.000000] fixmap : 0xff1bfffffee00000 - 0xff1bffffff000000 (2048 kB) +[ 0.000000] pci io : 0xff1bffffff000000 - 0xff1c000000000000 ( 16 MB) +[ 0.000000] vmemmap : 0xff1c000000000000 - 0xff20000000000000 (1024 TB) +[ 0.000000] vmalloc : 0xff20000000000000 - 0xff60000000000000 (16384 TB) +[ 0.000000] lowmem : 0xff60000000000000 - 0xff60000007e00000 ( 126 MB) +[ 0.000000] kernel : 0xffffffff80000000 - 0xffffffffffffffff (2047 MB) +[ 0.000000] Memory: 106368K/129024K available (6518K kernel code, 4864K rwdata, 4096K rodata, 2172K init, 397K bss, 22656K reserved, 0K cma-reserved) +[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 +[ 0.000000] rcu: Hierarchical RCU implementation. +[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. +[ 0.000000] rcu: RCU debug extended QS entry/exit. +[ 0.000000] Tracing variant of Tasks RCU enabled. +[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 +[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 +[ 0.000000] riscv-intc: 64 local interrupts mapped +[ 0.000000] plic: interrupt-controller@0c000000: mapped 1023 interrupts with 2 handlers for 4 contexts. +[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention. +[ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0] +[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000005] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 4398046511100ns +[ 0.004335] Console: colour dummy device 80x25 +[ 0.006480] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000) +[ 0.011385] pid_max: default: 32768 minimum: 301 +[ 0.013850] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.017275] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear) +[ 0.023840] cblist_init_generic: Setting adjustable number of callback queues. +[ 0.027255] cblist_init_generic: Setting shift to 1 and lim to 1. +[ 0.030260] riscv: ELF compat mode failed +[ 0.030340] ASID allocator using 16 bits (65536 entries) +[ 0.034930] rcu: Hierarchical SRCU implementation. +[ 0.037605] EFI services will not be available. +[ 0.040310] smp: Bringing up secondary CPUs ... +[ 0.052190] smp: Brought up 1 node, 2 CPUs +[ 0.072570] devtmpfs: initialized +[ 0.088375] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.092995] futex hash table entries: 512 (order: 3, 32768 bytes, linear) +[ 0.098035] NET: Registered PF_NETLINK/PF_ROUTE protocol family +[ 0.101505] cpuidle: using governor menu +[ 0.140230] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages +[ 0.148305] iommu: Default domain type: Translated +[ 0.150565] iommu: DMA domain TLB invalidation policy: strict mode +[ 0.153930] SCSI subsystem initialized +[ 0.168475] usbcore: registered new interface driver usbfs +[ 0.171075] usbcore: registered new interface driver hub +[ 0.173665] usbcore: registered new device driver usb +[ 0.177200] vgaarb: loaded +[ 0.196220] clocksource: Switched to clocksource riscv_clocksource +[ 0.215040] NET: Registered PF_INET protocol family +[ 0.217650] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) +[ 0.221960] tcp_listen_portaddr_hash hash table entries: 128 (order: 0, 4096 bytes, linear) +[ 0.225880] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) +[ 0.229695] TCP established hash table entries: 1024 (order: 1, 8192 bytes, linear) +[ 0.233315] TCP bind hash table entries: 1024 (order: 3, 32768 bytes, linear) +[ 0.236955] TCP: Hash tables configured (established 1024 bind 1024) +[ 0.240205] UDP hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.243335] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear) +[ 0.247060] NET: Registered PF_UNIX/PF_LOCAL protocol family +[ 0.276940] RPC: Registered named UNIX socket transport module. +[ 0.279680] RPC: Registered udp transport module. +[ 0.282130] RPC: Registered tcp transport module. +[ 0.284350] RPC: Registered tcp NFSv4.1 backchannel transport module. +[ 0.287330] PCI: CLS 0 bytes, default 64 +[ 0.308310] workingset: timestamp_bits=62 max_order=15 bucket_order=0 +[ 0.328680] NFS: Registering the id_resolver key type +[ 0.331080] Key type id_resolver registered +[ 0.333260] Key type id_legacy registered +[ 0.335215] nfs4filelayout_init: NFSv4 File Layout Driver Registering... +[ 0.338360] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering... +[ 0.342220] 9p: Installing v9fs 9p2000 file system support +[ 0.345165] NET: Registered PF_ALG protocol family +[ 0.347420] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) +[ 0.351105] io scheduler mq-deadline registered +[ 0.353245] io scheduler kyber registered +[ 0.367710] pci-host-generic 30000000.pci: host bridge /smb/pci ranges: +[ 0.370855] pci-host-generic 30000000.pci: IO 0x0000000000..0x000000ffff -> 0x0000000000 +[ 0.375075] pci-host-generic 30000000.pci: MEM 0x0040000000..0x007fffffff -> 0x0040000000 +[ 0.379170] pci-host-generic 30000000.pci: ECAM at [mem 0x30000000-0x3fffffff] for [bus 00-01] +[ 0.383465] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00 +[ 0.386645] pci_bus 0000:00: root bus resource [bus 00-01] +[ 0.389405] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] +[ 0.392305] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff] +[ 0.514900] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled +[ 0.519605] printk: console [ttyS0] disabled +[ 0.521705] 3f8.U6_16550A: ttyS0 at MMIO 0x3f8 (irq = 1, base_baud = 115200) is a 16550A +[ 0.525850] printk: console [ttyS0] enabled +[ 0.525850] printk: console [ttyS0] enabled +[ 0.529820] printk: bootconsole [uart8250] disabled +[ 0.529820] printk: bootconsole [uart8250] disabled +[ 0.535435] 2f8.U6_16550A: ttyS1 at MMIO 0x2f8 (irq = 2, base_baud = 115200) is a 16550A +[ 0.540065] 3e8.U6_16550A: ttyS2 at MMIO 0x3e8 (irq = 3, base_baud = 115200) is a 16550A +[ 0.544995] 2e8.U6_16550A: ttyS3 at MMIO 0x2e8 (irq = 4, base_baud = 115200) is a 16550A +[ 0.560955] loop: module loaded +[ 0.568400] net eth0: Fail to set guest offload. +[ 0.570600] virtio_net virtio2 eth0: set_features() failed (-22); wanted 0x0000000000134829, left 0x0080000000134829 +[ 0.578025] e1000e: Intel(R) PRO/1000 Network Driver +[ 0.580570] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. +[ 0.583430] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver +[ 0.586660] ehci-pci: EHCI PCI platform driver +[ 0.588985] ehci-platform: EHCI generic platform driver +[ 0.591500] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver +[ 0.594535] ohci-pci: OHCI PCI platform driver +[ 0.596885] ohci-platform: OHCI generic platform driver +[ 0.612240] usbcore: registered new interface driver uas +[ 0.614790] usbcore: registered new interface driver usb-storage +[ 0.618010] mousedev: PS/2 mouse device common for all mice +[ 0.621095] sdhci: Secure Digital Host Controller Interface driver +[ 0.624020] sdhci: Copyright(c) Pierre Ossman +[ 0.626300] sdhci-pltfm: SDHCI platform and OF driver helper +[ 0.629240] usbcore: registered new interface driver usbhid +[ 0.631880] usbhid: USB HID core driver +[ 0.634485] NET: Registered PF_INET6 protocol family +[ 0.652825] Segment Routing with IPv6 +[ 0.654670] In-situ OAM (IOAM) with IPv6 +[ 0.656770] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver +[ 0.660020] NET: Registered PF_PACKET protocol family +[ 0.662705] 9pnet: Installing 9P2000 support +[ 0.667280] Key type dns_resolver registered +[ 0.670095] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers +[ 0.796380] Legacy PMU implementation is available +[ 0.836255] Sending DHCP requests ., OK +[ 0.838685] IP-Config: Got DHCP answer from 192.168.33.1, my address is 192.168.33.15 +[ 0.842520] IP-Config: Complete: +[ 0.844075] device=eth0, hwaddr=02:15:15:15:15:15, ipaddr=192.168.33.15, mask=255.255.255.0, gw=192.168.33.1 +[ 0.849185] host=192.168.33.15, domain=, nis-domain=(none) +[ 0.851985] bootserver=192.168.33.1, rootserver=0.0.0.0, rootpath= +[ 0.851995] nameserver0=192.168.33.1 +[ 0.859605] VFS: Mounted root (9p filesystem) on device 0:15. +[ 0.868885] devtmpfs: mounted +[ 0.875665] Freeing unused kernel image (initmem) memory: 2172K +[ 0.892250] Run /virt/init as init process +Mounting... +/ # rmmod kvm +rmmod kvm +rmmod: remove 'kvm': No such file or directory +/ # poweroff -f +poweroff -f +[ 7.716205] reboot: Power down + +# KVM session ended normally. + +/ # rmmod kvm +rmmod kvm +/ # +/ # poweroff -f +poweroff -f +[ 46.367045] reboot: Power down +root@0152fed4b28d:~# + +``` + +## �ܽ� + +�������� Docker �����¶�[`kvm-riscv howto wiki`](https://github.com/kvm-riscv/howto/wiki)��[KVM RISCV64 on QEMU](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-QEMU)��[KVM RISCV64 on Spike](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-Spike#7-run-risc-v-kvm-on-spike)��ƪ���� KVM ���� Host/Guest Linux �����µ���֤�Ͳ�� 䡣 + +## �ο����� + +[Cloud Lab](https://gitee.com/tinylab/cloud-lab) + +[Linux Lab](https://gitee.com/tinylab/linux-lab) + +[RISC-V Linux](https://gitee.com/tinylab/linux-lab) + +[RISC-V KVM Howto](https://github.com/kvm-riscv/howto/wiki) + +[Spike RISC-V ISA Simulator](https://github.com/kvm-riscv/howto/wiki) + +[QEMU](https://www.qemu.org/) + +[kvmtools](https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git) diff --git a/articles/images/20220708-kvm-linux/kvm-hypervisor.png b/articles/images/20220708-kvm-linux/kvm-hypervisor.png new file mode 100644 index 0000000000000000000000000000000000000000..04f479ceb185c54420f6af5aef68d0ef05644d67 GIT binary patch literal 210502 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

K?eBgXDyNoo{)DM4;_8y;h_Od&CGJJZrMk)g5p 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�l*sj8h&4qn9EBlzDYxqWlsPO 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 Date: Sat, 9 Jul 2022 21:33:09 +0800 Subject: [PATCH 2/2] article: 20220708-kvm-linux.md --- articles/20220708-kvm-linux.md | 148 ++++++++++++++++----------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/articles/20220708-kvm-linux.md b/articles/20220708-kvm-linux.md index 0c2c7be..eed2b83 100644 --- a/articles/20220708-kvm-linux.md +++ b/articles/20220708-kvm-linux.md @@ -1,56 +1,56 @@ -> Author: ���Ŀ� <13212017962@163.com>
+> Author: 潘夏凯 <13212017962@163.com>
> Date: 2022/07/09
> Revisor: ABC
-> Project: [RISC-V Linux �ں�����](https://gitee.com/tinylab/riscv-linux)
-> Proposal: [RISC-V ��� ⻯ �������������](https://gitee.com/tinylab/riscv-linux/issues/I5E4VB) +> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux)
+> Proposal: [RISC-V 虚拟化技术调研与分析](https://gitee.com/tinylab/riscv-linux/issues/I5E4VB) -# �� QEMU/Spike+KVM ���� Host/Guest Linux +# 用 QEMU/Spike+KVM 运行 Host/Guest Linux -���Ļ��� QEMU �� Spike ģ���������� RISCV-KVM �ɹ�ʵ�������� Host Linux ����ϵͳ�������Ѿ����������� Linux ��ʵ������� ⻯ ������ Guest Linux�� +本文基于 QEMU 和 Spike 模拟器,借助 RISCV-KVM 成功实现了引导 Host Linux 操作系统,并在已经引导起来的 Linux 上实现了虚拟化以运行 Guest Linux。 -## ǰ�ԣ��������һ������ϵͳ +## 前言:如何运行一个操作系统 -### ���� +### 概览 -����������һ������ϵͳ�Ĺ��̿��Լ򵥵ؿ�������һ�����̣���Ӳ����CPU���ڴ�ȣ��ӵ 磬 ���ض���λ�ü�����Ϊ�̶��ij���Boot loader����ɶ���Ӳ����״̬�����ò��������ϵͳ��OS������ʹ֮���С���ν��� ⻯ ���������ؽ���Ϊ��Ӳ����Դ��װ��������� ⻯ ���Ӷ�ʹ֧֮�ֱ������������ Guest OS �����á� +启动并运行一个操作系统的过程可以简单地看作这样一个过程,即硬件(CPU,内存等)加电,从特定的位置加载行为固定的程序(Boot loader)完成对于硬件的状态的设置并载入操作系统(OS)最终使之运行。所谓虚拟化则可以形象地解释为将硬件资源包装起来(虚拟化)从而使之支持被多个程序(如多个 Guest OS )调用。 -### ������ +### 组件简介 -#### ����ģ������Ӳ����Hardware in Simulator�� +#### 基于模拟器的硬件(Hardware in Simulator) -Spike��QEMU ͨ��������ģ��Ӳ�����ɴ��ṩ��һ���ɹ����ڵ���ϵͳ���������������Եͳɱ��Ľ�������� +Spike,QEMU 通过软件来模拟硬件,由此提供了一个可供用于调试系统级软件及外设的相对低成本的解决方案。 -#### �̼���������Boot loader�� +#### 固件与引导(Boot loader) -һ����ԣ���¼�� ROM �ϵ�һЩ�߱��ض����ܵij��򱻳�Ϊ`boot loader`����Ӳ���ӵ������󣬸öγ���Ĭ�Ͽ�ʼִ�����ʼ������� OS ���������������RISC-V �����н�Ϊ���õ��� BBL��Berkeley Boot Loader����OpenSBI��from Western Digital����uboot��������Ƕ��ʽ������������ RustSBI��SBI ��׼�� Rust ʵ�֣��ȡ� +一般而言,烧录在 ROM 上的一些具备特定功能的程序被称为`boot loader`,当硬件加电启动后,该段程序默认开始执行其初始化与加载 OS 等其他程序的任务。RISC-V 开发中较为常用的有 BBL(Berkeley Boot Loader),OpenSBI(from Western Digital),uboot(多用于嵌入式开发),还有 RustSBI(SBI 标准的 Rust 实现)等。 -#### ����ϵͳ��OS�� +#### 操作系统(OS) -- �ںˣ�Kernel�� -- �ļ�ϵͳ��FileSystem�� +- 内核(Kernel) +- 文件系统(FileSystem) -#### ��� ⻯ ���ߣ�Hypervisor�� +#### 虚拟化工具(Hypervisor) -��Ӳ��֧����� ⻯ �Ļ���֮�ϣ�HS-mode in RISC-V������Ҫ����Э������������� ⻯ �Ĺ��̣�һ�ֿ��е�ʵ�־���ʵ��һ�� Hypervisor ��Ϊ Host �� Guest ���м� 㣬 ���ڹ��������� ⻯ ��ʵ�����������KVM ��������֮һ�� +在硬件支持虚拟化的基础之上(HS-mode in RISC-V),需要软件协助管理整个虚拟化的过程,一种可行的实现就是实现一个 Hypervisor 作为 Host 与 Guest 的中间层,用于管理诸多虚拟化的实例和虚拟机,KVM 则是其中之一。 -### KVM ��� +### KVM 简介 -[KVM](https://github.com/kvm-riscv/howto/wiki)��Kernel-based Virtual Machine����һ����Դ�Ļ����ں˵������ʵ�֣�Hypervisor����KVM ��ʵ�ְ��� **�ں�ģ� 飨 kernel module** �� **�û����ߣ�userspace kvmtool��** �������֣� +[KVM](https://github.com/kvm-riscv/howto/wiki)(Kernel-based Virtual Machine)是一个开源的基于内核的虚拟层实现(Hypervisor)。KVM 的实现包含 **内核模块(kernel module** 和 **用户工具(userspace kvmtool)** 两个部分: -- �ں�ģ� 飨 KVM kernel Module�� - - һ���ɹ����뵽 Linux �ں˵�ģ� 飬 �ܹ��ṩ CPU���ڴ 桢 �жϵ���� ⻯ ������һ�� Linux kernel ����Ϊһ�� Hypervisor�� -- �û����ߣ�KVM user-space tool�� +- 内核模块(KVM kernel Module) + - 一个可供载入到 Linux 内核的模块,能够提供 CPU、内存、中断的虚拟化。即将一个 Linux kernel 修饰为一个 Hypervisor。 +- 用户工具(KVM user-space tool) - - �����û�����������ͻ���ʵ����Guest Instances������������������ṩ��ÿ�� Guest �İ�װ������֤ Guest һ���̶����ܹ������������ζ��� Host һ�����С� + - 帮助用户创建与管理客户端实例(Guest Instances)如虚拟机。类似于提供给每个 Guest 的包装器,保证 Guest 一定程度上能够无视上述修饰而像 Host 一样运行。 -- KVM ��� ⻯ ͼʾ������ riscv-v�� +- KVM 虚拟化图示(基于 riscv-v) ![kvm](./images/20220708-kvm-linux/kvm-hypervisor.png) -## ʵ� 黷 �� +## 实验环境 -### ����� 汾 ˵�� +### 软件版本说明 -�õ��������Լ�� 汾 ��Ϣ�������£� +用到的软件以及版本信息汇总如下: | Software | commit ID or version No. | | ------------------------ | ---------------------------------------- | @@ -62,11 +62,11 @@ Spike��QEMU ͨ��������ģ��Ӳ�����ɴ��ṩ | Kernel | 5.19-rc5 | | Busybox(to build RootFS) | 1.33.1 | -### �������������� +### 组件构建结果速览 -���ڱ�����ʾ��������������������±���ʾ�� +基于本文演示,所有软件构建结果如下表所示: -����ָ������� docker �����»��� Ubuntu:20.04 ����image��������������container��������ͨ���� +所有指令均已在 docker 环境下基于 Ubuntu:20.04 镜像(image)创建的容器(container)中运行通过。 | Item | Products | Comments | | -------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | @@ -77,9 +77,9 @@ Spike��QEMU ͨ��������ģ��Ӳ�����ɴ��ṩ | userspace **kvmtool** | `./kvmtool/lkvm-static` | userspace kvmtool | | **RootFS**(use Busybox to build) | `./rootfs_kvm_riscv64.img` | `--initrd` | -### ��������׼�� +### 基础环境准备 -�ڿ���֮ǰ��������Ҫ��׼���û��� Docker container �Ļ���ʵ� 黷 ���� +在开工之前,我们需要先准备好基于 Docker container 的基础实验环境: ```docker # download image if it doesnot exist, create container kvm based on this image and start it interactively @@ -90,36 +90,36 @@ root@0152fed4b28d:~# apt install gcc gcc-riscv64-linux-gnu wget flex cpio --- -## QEMU/Spike+KVM ���� Linux +## QEMU/Spike+KVM 启动 Linux -### ģ�������ر��� +### 模拟器下载编译 -#### [QEMU ���ر���](https://www.qemu.org/download/) +#### [QEMU 下载编译](https://www.qemu.org/download/) -���Դӹ���ֱ������ +可以从官网直接下载 ``` shell wget https://download.qemu.org/qemu-7.0.0.tar.xz tar xvJf qemu-7.0.0.tar.xz cd qemu-7.0.0 ``` -Ҳ���Դ� GitLab ���� +也可以从 GitLab 下载 ``` shell git clone https://gitlab.com/qemu-project/qemu.git cd qemu git submodule init git submodule update --recursive ``` -���루�ο�[�ٷ��ĵ� 1](https://wiki.qemu.org/Hosts/Linux),[�ٷ��ĵ� 2](https://wiki.qemu.org/Documentation/Platforms/RISCV)�� +编译(参考[官方文档 1](https://wiki.qemu.org/Hosts/Linux),[官方文档 2](https://wiki.qemu.org/Documentation/Platforms/RISCV)) -��װ**����**��` apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build` +安装**依赖**:` apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build` -ָ��֧�ֵ� ISA �� **build** +指定支持的 ISA 并 **build** ```shell ./configure --target-list="riscv32-softmmu riscv64-softmmu" && make -j`nproc` # ./qemu/build/qemu-system-riscv64 ``` -#### Spike ���ذ�װ +#### Spike 下载安装 ```shell apt-get install device-tree-compiler @@ -129,7 +129,7 @@ make # ./riscv-isa-sim/spike will be the built Spike simulator in later use ``` -### ���� OpenSBI �̼� +### 编译 OpenSBI 固件 ```shell git clone https://github.com/riscv/opensbi.git @@ -139,9 +139,9 @@ make PLATFORM=generic -j`nproc` # ./opensbi/build/platform/generic/firmware/fw_jump.bin as M-mode runtime firmware ``` -### ���� Linux �ں� +### 编译 Linux 内核 -- �޸��ں˴���ʹ֧֮���� Host Linux ����`rmmod kvm`��ָ��**ж�� kvm module** +- 修改内核代码使之支持在 Host Linux 中以`rmmod kvm`的指令**卸载 kvm module** ```C root@0152fed4b28d:~/linux# git diff @@ -165,26 +165,26 @@ make PLATFORM=generic -j`nproc` root@0152fed4b28d:~/linux# ``` -- ���� +- 下载 `git clone https://github.com/kvm-riscv/linux.git # the mirror of the newest kernel version in kvm-riscv howto` - - ��ʾ + - 提示 - - � 汾 ��Linux �ں����ؿ���ͨ��[�ں˹���](https://www.kernel.org/)ѡ���Ӧ� 汾 ���أ����� 2022 �� 7 �� 6 �����°��ں�Ϊ`2022-07-03 5.19-rc5`���˰ 汾 ��`howto`�е�[�ں˾���ֿ�](https://github.com/kvm-riscv/linux.git)� 汾 һ�� - - ��ʱ������ϴ����غ�ʱ���ܻ�ܳ������жϣ�������ʹ�� git clone ʱ�� + - 版本:Linux 内核下载可以通过[内核官网](https://www.kernel.org/)选择对应版本下载,截至 2022 年 7 月 6 日最新版内核为`2022-07-03 5.19-rc5`,此版本与`howto`中的[内核镜像仓库](https://github.com/kvm-riscv/linux.git)版本一致 + - 用时:镜像较大,下载耗时可能会很长甚至中断(尤其是使用 git clone 时) - - ���ñ���ѡ�� + - 配置编译选项 - - ��������������λ�� + - 环境变量与生成位置 ```shell export ARCH=riscv export CROSS_COMPILE=riscv64-linux-gnu- mkdir build-riscv64 ``` - - �ں˱���ѡ������ + - 内核编译选项配置 - - ���°� Linux �ں�Ĭ�Ϲر� RISCV SBI ���ѡ���Ҫͨ�����������ֶ����ÿ�����������۲μ���[issue](https://github.com/kvm-riscv/howto/issues/9)������ϸ�ڲμ�[����](https://zhuanlan.zhihu.com/p/539390400) - - ���뼰ִ�н������ָ�������Ŀ¼������һ��`.config` �ļ� + - 最新版 Linux 内核默认关闭 RISCV SBI 相关选项,需要通过以下命令手动配置开启,相关讨论参见该[issue](https://github.com/kvm-riscv/howto/issues/9),具体细节参见[此文](https://zhuanlan.zhihu.com/p/539390400) + - 代码及执行结果:在指定的输出目录下生成一个`.config` 文件 ```shell make -C linux O=`pwd`/build-riscv64 menuconfig # change options of kernel compiling to generate build-riscv64/.config (output dir) @@ -199,9 +199,9 @@ make PLATFORM=generic -j`nproc` # build-riscv64/arch/riscv/kvm/kvm.ko as KVM RISC-V kernel module ``` -### ���� kvmtools +### 编译 kvmtools -- ׼��������`libfdt`�Ⲣ�������ӵ�����������λ�õ� sysroot �ļ����� +- 准备:编译`libfdt`库并将其添加到工具链所在位置的 sysroot 文件夹中 ```cmake git clone git://git.kernel.org/pub/scm/utils/dtc/dtc.git @@ -218,7 +218,7 @@ make PLATFORM=generic -j`nproc` # install cross-compiled libfdt library at $SYSROOT/usr/lib64/lp64d directory of cross-compile toolchain ``` -- ���� +- 编译 ``` git clone https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git cd kvmtool @@ -230,9 +230,9 @@ make PLATFORM=generic -j`nproc` cd .. ``` -### ���� RootFS +### 编译 RootFS -RootFS ����`KVM kernel module, userspace kvmtools, kernel image`�����֡� +RootFS 包括`KVM kernel module, userspace kvmtools, kernel image`三部分。 ``` export ARCH=riscv @@ -259,24 +259,24 @@ cp -f ./build-riscv64/arch/riscv/kvm/kvm.ko busybox-1.33.1-kvm-riscv64/_install/ cd busybox-1.33.1-kvm-riscv64/_install; find ./ | cpio -o -H newc > ../../rootfs_kvm_riscv64.img; cd - ``` -### QEMU+KVM ���� +### QEMU+KVM 运行 -#### ���� Host Linux +#### 启动 Host Linux ```bash ./qemu/build/riscv64-softmmu/qemu-system-riscv64 -cpu rv64 -M virt -m 512M -nographic -bios opensbi/build/platform/generic/firmware/fw_jump.bin -kernel ./build-riscv64/arch/riscv/boot/Image -initrd ./rootfs_kvm_riscv64.img -append "root=/dev/ram rw console=ttyS0 earlycon=sbi" ``` -���ܳ��ֵ����⣺`[ 0.629637] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---`: initrd (������һ��)δʹ�� riscv ������ +可能出现的问题:`[ 0.629637] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---`: initrd (来自上一步)未使用 riscv 工具链 -#### ���� Guest Machine +#### 启动 Guest Machine -����һ���򿪵ķ�� 滷 ����ִ�����²��� +在上一步打开的仿真环境中执行以下步骤 -- ���� KVM kernel module��`insmod apps/kvm.ko` -- ʹ�� KVM userspace kvmtool ���� Guest Linux��`./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlycon=uart8250,mmio,0x3f8" -k ./apps/Image --debug` +- 加入 KVM kernel module:`insmod apps/kvm.ko` +- 使用 KVM userspace kvmtool 运行 Guest Linux:`./apps/lkvm-static run -m 128 -c2 --console serial -p "console=ttyS0 earlycon=uart8250,mmio,0x3f8" -k ./apps/Image --debug` -#### �����־ +#### 结果日志 ``` root@0152fed4b28d:~# ./qemu/build/qemu-system-riscv64 -cpu rv64 -M virt -m 512M -nographic -bios opensbi/build/platform/generic/firmware/fw_jump.bin -kernel ./build-riscv64/arch/riscv/boot/Image -initrd ./rootfs_kvm_riscv64.img -append "root=/dev/ram rw console=ttyS0 earlycon=sbi" @@ -680,16 +680,16 @@ Mounting... root@0152fed4b28d:~# ``` -### Spike+KVM ���� +### Spike+KVM 运行 -#### ���� Host Linux +#### 启动 Host Linux ```shell # Run Host Linux ./riscv-isa-sim/spike -m512 --isa rv64gch --kernel ./build-riscv64/arch/riscv/boot/Image --initrd ./rootfs_kvm_riscv64.img opensbi/build/platform/generic/firmware/fw_jump.elf ``` -#### ���� Guest Machine +#### 启动 Guest Machine ``` # insert kvm kernel module @@ -701,7 +701,7 @@ insmod apps/kvm.ko ``` -#### �����־ +#### 结果日志 ``` @@ -1104,11 +1104,11 @@ root@0152fed4b28d:~# ``` -## �ܽ� +## 总结 -�������� Docker �����¶�[`kvm-riscv howto wiki`](https://github.com/kvm-riscv/howto/wiki)��[KVM RISCV64 on QEMU](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-QEMU)��[KVM RISCV64 on Spike](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-Spike#7-run-risc-v-kvm-on-spike)��ƪ���� KVM ���� Host/Guest Linux �����µ���֤�Ͳ�� 䡣 +本文是在 Docker 环境下对[`kvm-riscv howto wiki`](https://github.com/kvm-riscv/howto/wiki)中[KVM RISCV64 on QEMU](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-QEMU)和[KVM RISCV64 on Spike](https://github.com/kvm-riscv/howto/wiki/KVM-RISCV64-on-Spike#7-run-risc-v-kvm-on-spike)两篇基于 KVM 运行 Host/Guest Linux 的文章的验证和补充。 -## �ο����� +## 参考资料 [Cloud Lab](https://gitee.com/tinylab/cloud-lab) -- Gitee