xref: /qemu/docs/system/loongarch/virt.rst (revision 5eb0849562c9b6988b620493dbea6421e31bfc33)
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