On 28/01/2022 03:43, Xiaojuan Yang wrote:
> Signed-off-by: Xiaojuan Yang <yangxiaojuan@loongson.cn>
> Signed-off-by: Song Gao <gaosong@loongson.cn>
> ---
> docs/system/loongarch/loongson3.rst | 78 +++++++++++++++++++++++++++++
> target/loongarch/README | 28 +++++++++++
> 2 files changed, 106 insertions(+)
> create mode 100644 docs/system/loongarch/loongson3.rst
>
> diff --git a/docs/system/loongarch/loongson3.rst b/docs/system/loongarch/loongson3.rst
> new file mode 100644
> index 0000000000..1840ec5e75
> --- /dev/null
> +++ b/docs/system/loongarch/loongson3.rst
> @@ -0,0 +1,78 @@
> +loongson3-ls7a generic platform (``loongson3-ls7a``)
> +====================================================
> +
> +Use ``loongson3-ls7a`` machine type to emulate the loongson7a board.
> +There are some devices on loongson7a board, such as RTC device,
> +IOAPIC device, ACPI device and so on.
> +
> +Supported devices
> +-----------------
> +
> +The ``loongson3-ls7a`` machine supports:
> +- PCI/PCIe devices
> +- Memory device
> +- CPU device
> +- Ls7a host bridge
> +- Ls7a RTC device
> +- Ls7a IOAPIC device
> +- Ls7a ACPI device
> +- Fw_cfg device
> +- CPU device. Type: Loongson-3A5000.
> +
> +CPU and machine Type
> +--------------------
> +
> +The ``qemu-system-loongarch64`` provides emulation for loongson7a
> +machine. You can specify the machine type ``loongson3-ls7a`` and
> +cpu type ``Loongson-3A5000``.
> +
> +Boot options
> +------------
> +
> +Now the ``loongson3-ls7a`` machine can start using -bios parameter:
> +
> +.. code-block:: bash
> +
> + $ qemu-system-loongarch64 -M loongson3-ls7a -cpu Loongson-3A5000 -smp 2 -m 1G \
> + -display none -serial stdio \
> + -bios loongarch_bios.bini
> +
> +Info mtree
> +----------
> +address-space: memory
> + 0000000000000000-ffffffffffffffff (prio 0, i/o): system
> + 0000000000000000-ffffffffffffffff (prio 0, i/o): ls7a_mmio
> + 00000000000a0000-00000000000bffff (prio 1, i/o): cirrus-lowmem-container
> + 00000000000a0000-00000000000bffff (prio 0, i/o): cirrus-low-memory
> + 0000000000000000-000000000fffffff (prio 0, ram): alias loongarch.lowram @loongarch.ram 0000000000000000-000000000fffffff
> + 0000000010000000-00000000100000ff (prio 0, i/o): loongarch_pch_pic.reg32_part1
> + 0000000010000100-000000001000039f (prio 0, i/o): loongarch_pch_pic.reg8
> + 00000000100003a0-0000000010000fff (prio 0, i/o): loongarch_pch_pic.reg32_part2
> + 000000001001041c-000000001001041f (prio -1000, i/o): pci-dma-cfg
> + 0000000010013ffc-0000000010013fff (prio -1000, i/o): mmio fallback 1
> + 00000000100d0000-00000000100d00ff (prio 0, i/o): ls7a_pm
> + 00000000100d000c-00000000100d0013 (prio 0, i/o): acpi-evt
> + 00000000100d0014-00000000100d0017 (prio 0, i/o): acpi-cnt
> + 00000000100d0018-00000000100d001b (prio 0, i/o): acpi-tmr
> + 00000000100d0028-00000000100d002f (prio 0, i/o): acpi-gpe0
> + 00000000100d0030-00000000100d0033 (prio 0, i/o): acpi-reset
> + 00000000100d0100-00000000100d01ff (prio 0, i/o): ls7a_rtc
> + 0000000018000000-0000000018003fff (prio 0, i/o): alias isa-io @io 0000000000000000-0000000000003fff
> + 0000000018004000-000000001800ffff (prio 0, i/o): alias ls7a-pci-io @io 0000000000004000-000000000000ffff
> + 000000001a000000-000000001bffffff (prio 0, i/o): ls7a_pci_conf
> + 000000001c000000-000000001c3fffff (prio 0, rom): loongarch.bios
> + 000000001e020000-000000001e020001 (prio 0, i/o): fwcfg.ctl
> + 000000001e020008-000000001e02000f (prio 0, i/o): fwcfg.data
> + 000000001fe001e0-000000001fe001e7 (prio 0, i/o): serial
> + 0000000020000000-0000000027ffffff (prio 0, i/o): pcie-mmcfg-mmio
> + 000000002ff00000-000000002ff00007 (prio 0, i/o): loongarch_pch_msi
> + 0000000090000000-000000017fffffff (prio 0, ram): alias loongarch.highmem @loongarch.ram 0000000010000000-00000000ffffffff
> +
> +address-space: IOCSR
> + 0000000000000000-ffffffffffffffff (prio 0, i/o): iocsr
> + 0000000000000008-0000000000000427 (prio 0, i/o): iocsr_misc
> + 0000000000001000-00000000000010ff (prio 0, i/o): loongarch_ipi
> + 0000000000001400-00000000000014bf (prio 0, i/o): loongarch_extioi.nodetype
> + 00000000000014c0-000000000000167f (prio 0, i/o): loongarch_extioi.ipmap_enable
> + 0000000000001680-0000000000001bff (prio 0, i/o): loongarch_extioi.bounce_coreisr
> + 0000000000001c00-0000000000001cff (prio 0, i/o): loongarch_extioi.coremap
> diff --git a/target/loongarch/README b/target/loongarch/README
> index 383db6cc15..de44d39561 100644
> --- a/target/loongarch/README
> +++ b/target/loongarch/README
> @@ -71,6 +71,34 @@
> ./qemu-loongarch64 /opt/clfs/usr/bin/pwd
> ...
>
> +- 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/loongson3.rst.
> +
> + You can compile the binaries by youself or just get all required binaries from the github for testing.
> +
> + 1.Download kernel and the cross-tools.(vmlinux)
> +
> + https://github.com/loongson/linux/tree/loongarch-next
> + https://github.com/loongson/build-tools/releases/latest/download/loongarch64-clfs-20211202-cross-tools.tar.xz
> +
> + 2.Download uefi code.(loongarch_bios.bin)
> +
> + https://github.com/loongson/edk2/tree/LoongArch
> + https://github.com/loongson/edk2-platforms
> +
> + 3.Download the clfs-system and make a ramdisk with busybox.(ramdisk)
> +
> + 4.Run with command,eg:
> +
> + ./build/qemu-system-loongarch64 -m 4G -smp 4 --cpu Loongson-3A5000 --machine loongson3-ls7a -kernel ./vmlinux -initrd ./ramdisk -append "root=/dev/ram console=ttyS0,115200 rdinit=/sbin/init loglevel=8" -monitor tcp::4000,server,nowait -nographic
> +
> +All binaries can get from here directly:
> + git clone https://github.com/yangxiaojuan-loongson/qemu-binary
>
> - Note.
> We can get the latest LoongArch documents or LoongArch tools at https://github.com/loongson/
I should add that my request for the "info mtree" output was to help review the
patches without having to download them, so thank you. It is up to you if you wish to
include the "info mtree" output in this documentation as often things like this can
get out of date quickly.
For me the most important part of this documentation is knowing which devices are
present on the "virt" board.
ATB,
Mark.