Loongarch docs update

-----BEGIN PGP SIGNATURE-----
 
 iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmL4/I8dHHJpY2hhcmQu
 aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/kCQf9HTiK6VSrbJXdOLQi
 iGfXwZTcRDxG4brzj+GQ2/nuag2Dg9McADUxs1/3zlb965+CuQdfqtjSzgfxCjzX
 iVvHq3wtCoOQZ5/T+XrFCaew0djkT6N/hBsa33oORXg5o5mAzCIFObuTMnusvjTu
 VPXWe65fxTv3dsHZgjWekRZLu8Bn/anLypJxHzzFbXL3+RTKJ5u6GGVMn0DEcvEq
 ooHYhETBEXmdKCbj2QpRmG1sldiKSMEcBQ6OXPM6ehOgWoucR00/LyKi1ucQq5JP
 gJIEhV4iCKfPHykoTiBcMlz8zqphcn6GgU71Ekv1GGmYxBWBLAj3tfmX4yiFh33p
 x25afA==
 =gfY0
 -----END PGP SIGNATURE-----

Merge tag 'pull-la-20220814' of https://gitlab.com/rth7680/qemu into staging

Loongarch docs update

# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmL4/I8dHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/kCQf9HTiK6VSrbJXdOLQi
# iGfXwZTcRDxG4brzj+GQ2/nuag2Dg9McADUxs1/3zlb965+CuQdfqtjSzgfxCjzX
# iVvHq3wtCoOQZ5/T+XrFCaew0djkT6N/hBsa33oORXg5o5mAzCIFObuTMnusvjTu
# VPXWe65fxTv3dsHZgjWekRZLu8Bn/anLypJxHzzFbXL3+RTKJ5u6GGVMn0DEcvEq
# ooHYhETBEXmdKCbj2QpRmG1sldiKSMEcBQ6OXPM6ehOgWoucR00/LyKi1ucQq5JP
# gJIEhV4iCKfPHykoTiBcMlz8zqphcn6GgU71Ekv1GGmYxBWBLAj3tfmX4yiFh33p
# x25afA==
# =gfY0
# -----END PGP SIGNATURE-----
# gpg: Signature made Sun 14 Aug 2022 08:45:51 AM CDT
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate]

* tag 'pull-la-20220814' of https://gitlab.com/rth7680/qemu:
  docs/system/loongarch: Update the LoongArch document

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-08-14 08:48:10 -05:00
commit d102b8162a
2 changed files with 97 additions and 56 deletions

View File

@ -15,27 +15,115 @@ The ``virt`` machine supports:
- Gpex host bridge
- Ls7a RTC device
- Ls7a IOAPIC device
- Ls7a ACPI device
- ACPI GED device
- Fw_cfg device
- PCI/PCIe devices
- Memory device
- CPU device. Type: Loongson-3A5000.
- CPU device. Type: la464-loongarch-cpu.
CPU and machine Type
--------------------
The ``qemu-system-loongarch64`` provides emulation for virt
machine. You can specify the machine type ``virt`` and
cpu type ``Loongson-3A5000``.
cpu type ``la464-loongarch-cpu``.
Boot options
------------
Now the ``virt`` machine can run test program in ELF format and the
method of compiling is in target/loongarch/README.
We can boot the LoongArch virt machine by specifying the uefi bios,
initrd, and linux kernel. And those source codes and binary files
can be accessed by following steps.
(1) booting command:
.. code-block:: bash
$ qemu-system-loongarch64 -machine virt -m 4G -cpu Loongson-3A5000 \
-smp 1 -kernel hello -monitor none -display none \
-chardev file,path=hello.out,id=output -serial chardev:output
$ qemu-system-loongarch64 -machine virt -m 4G -cpu la464-loongarch-cpu \
-smp 1 -bios QEMU_EFI.fd -kernel vmlinuz.efi -initrd initrd.img \
-append "root=/dev/ram rdinit=/sbin/init consol e=ttyS0,115200" \
--nographic
Note: The running speed may be a little slow, as the performance of our
qemu and uefi bios is not perfect, and it is being fixed.
(2) cross compiler tools:
.. code-block:: bash
wget https://github.com/loongson/build-tools/releases/download/ \
2022.05.29/loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz
tar -vxf loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz
(3) qemu compile configure option:
.. code-block:: bash
./configure --disable-rdma --disable-pvrdma --prefix=usr \
--target-list="loongarch64-softmmu" \
--disable-libiscsi --disable-libnfs --disable-libpmem \
--disable-glusterfs --enable-libusb --enable-usb-redir \
--disable-opengl --disable-xen --enable-spice \
--enable-debug --disable-capstone --disable-kvm \
--enable-profiler
make
(4) uefi bios source code and compile method:
.. code-block:: bash
git clone https://github.com/loongson/edk2-LoongarchVirt.git
cd edk2-LoongarchVirt
git submodule update --init
export PATH=$YOUR_COMPILER_PATH/bin:$PATH
export WORKSPACE=`pwd`
export PACKAGES_PATH=$WORKSPACE/edk2-LoongarchVirt
export GCC5_LOONGARCH64_PREFIX=loongarch64-unknown-linux-gnu-
edk2-LoongarchVirt/edksetup.sh
make -C edk2-LoongarchVirt/BaseTools
build --buildtarget=DEBUG --tagname=GCC5 --arch=LOONGARCH64 --platform=OvmfPkg/LoongArchQemu/Loongson.dsc
build --buildtarget=RELEASE --tagname=GCC5 --arch=LOONGARCH64 --platform=OvmfPkg/LoongArchQemu/Loongson.dsc
The efi binary file path:
Build/LoongArchQemu/DEBUG_GCC5/FV/QEMU_EFI.fd
Build/LoongArchQemu/RELEASE_GCC5/FV/QEMU_EFI.fd
(5) linux kernel source code and compile method:
.. code-block:: bash
git clone https://github.com/loongson/linux.git
export PATH=$YOUR_COMPILER_PATH/bin:$PATH
export LD_LIBRARY_PATH=$YOUR_COMPILER_PATH/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$YOUR_COMPILER_PATH/loongarch64-unknown-linux-gnu/lib/:$LD_LIBRARY_PATH
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- loongson3_defconfig
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu-
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- install
make ARCH=loongarch CROSS_COMPILE=loongarch64-unknown-linux-gnu- modules_install
Note: The branch of linux source code is loongarch-next.
(6) initrd file:
You can use busybox tool and the linux modules to make a initrd file. Or you can access the
binary files: https://github.com/yangxiaojuan-loongson/qemu-binary

View File

@ -11,54 +11,7 @@
- System emulation
Mainly emulate a virt 3A5000 board and ls7a bridge that is not exactly the same as the host.
3A5000 support multiple interrupt cascading while here we just emulate the extioi interrupt
cascading. LS7A1000 host bridge support multiple devices, such as sata, gmac, uart, rtc
and so on. But we just realize the rtc. Others use the qemu common devices. It does not affect
the general use. We also introduced the emulation of devices at docs/system/loongarch/virt.rst.
This version only supports running binary files in ELF format, and does not depend on BIOS and kernel file.
You can compile the test program with 'make & make check-tcg' and run the test case with the following command:
1. Install LoongArch cross-tools on X86 machines.
Download cross-tools.
wget https://github.com/loongson/build-tools/releases/download/2022.05.29/loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz
tar -vxf loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz -C /opt
Config cross-tools env.
. setenv.sh
setenv.sh:
#!/bin/sh
set -x
CC_PREFIX=/opt/cross-tools
export PATH=$CC_PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$CC_PREFIX/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$CC_PREFIX/loongarch64-unknown-linux-gnu/lib/:$LD_LIBRARY_PATH
set +x
2. Test tests/tcg/multiarch.
./configure --disable-rdma --disable-pvrdma --prefix=/usr \
--target-list="loongarch64-softmmu" \
--disable-libiscsi --disable-libnfs --disable-libpmem \
--disable-glusterfs --enable-libusb --enable-usb-redir \
--disable-opengl --disable-xen --enable-spice --disable-werror \
--enable-debug --disable-capstone --disable-kvm --enable-profiler
cd build/
make && make check-tcg
or
./build/qemu-system-loongarch64 -machine virt -m 4G -cpu Loongson-3A5000 -smp 1 -kernel build/tests/tcg/loongarch64-softmmu/hello -monitor none -display none -chardev file,path=hello.out,id=output -serial chardev:output
You can reference docs/system/loongarch/loongson3.rst to get the information about system emulation of LoongArch.
- Linux-user emulation