1:orphan: 2 3========================================== 4loongson3 virt generic platform (``virt``) 5========================================== 6 7The ``virt`` machine use gpex host bridge, and there are some 8emulated devices on virt board, such as loongson7a RTC device, 9IOAPIC device, ACPI device and so on. 10 11Supported devices 12----------------- 13 14The ``virt`` machine supports: 15 16* Gpex host bridge 17* Ls7a RTC device 18* Ls7a IOAPIC device 19* ACPI GED device 20* Fw_cfg device 21* PCI/PCIe devices 22* Memory device 23* CPU device. Type: la464. 24 25CPU and machine Type 26-------------------- 27 28The ``qemu-system-loongarch64`` provides emulation for virt 29machine. You can specify the machine type ``virt`` and 30cpu type ``la464``. 31 32Boot options 33------------ 34 35We can boot the LoongArch virt machine by specifying the uefi bios, 36initrd, and linux kernel. And those source codes and binary files 37can be accessed by following steps. 38 39(1) Build qemu-system-loongarch64: 40 41.. code-block:: bash 42 43 ./configure --target-list="loongarch64-softmmu" 44 make -j8 45 46(2) Set cross tools: 47 48.. code-block:: bash 49 50 wget https://github.com/loongson/build-tools/releases/download/2022.09.06/loongarch64-clfs-6.3-cross-tools-gcc-glibc.tar.xz 51 tar -vxf loongarch64-clfs-6.3-cross-tools-gcc-glibc.tar.xz -C /opt 52 export PATH=/opt/cross-tools/bin:$PATH 53 export LD_LIBRARY_PATH=/opt/cross-tools/lib:$LD_LIBRARY_PATH 54 export LD_LIBRARY_PATH=/opt/cross-tools/loongarch64-unknown-linux-gnu/lib/:$LD_LIBRARY_PATH 55 56Note: You need get the latest cross-tools at https://github.com/loongson/build-tools 57 58(3) Build BIOS: 59 60 See: https://github.com/tianocore/edk2/tree/master/OvmfPkg/LoongArchVirt#readme 61 62Note: To build the release version of the bios, set --buildtarget=RELEASE, 63 the bios file path: Build/LoongArchQemu/RELEASE_GCC5/FV/QEMU_EFI.fd 64 65(4) Build kernel: 66 67.. code-block:: bash 68 69 git clone https://github.com/loongson/linux.git 70 cd linux 71 git checkout loongarch-next 72 make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- loongson3_defconfig 73 make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- -j32 74 75Note: The branch of linux source code is loongarch-next. 76 the kernel file: arch/loongarch/boot/vmlinuz.efi 77 78(5) Get initrd: 79 80 You can use busybox tool and the linux modules to make a initrd file. Or you can access the 81 binary files: https://github.com/yangxiaojuan-loongson/qemu-binary 82 83.. code-block:: bash 84 85 git clone https://github.com/yangxiaojuan-loongson/qemu-binary 86 87Note: the initrd file is ramdisk 88 89(6) Booting LoongArch: 90 91.. code-block:: bash 92 93 $ ./build/qemu-system-loongarch64 -machine virt -m 4G -cpu la464 \ 94 -smp 1 -bios QEMU_EFI.fd -kernel vmlinuz.efi -initrd ramdisk \ 95 -serial stdio -monitor telnet:localhost:4495,server,nowait \ 96 -append "root=/dev/ram rdinit=/sbin/init console=ttyS0,115200" \ 97 --nographic 98