Hi, thank you for your prompt reply, it's a great encouragement to me! Based on your review suggestions, I have improved the v1 patch.
By using create_unimplemented_device() during the initialization phase, I added a "znyq.umip" device early on, which covers the 32-bit address space of GPA. This can better serve as a replacement for the effect of the ignore_memory_transaction_failures flag. Since create_unimplemented_device() sets the priority of the memory region (mr) to -100, normally created devices will override the address segments corresponding to the unimplemented devices. Even if our test set is not sufficiently comprehensive, we can create an unimp_device for the maximum address space allowed by the board. This prevents the guest system from triggering unexpected exceptions when accessing unimplemented devices or regions. Additionally, I still use create_unimplemented_device() for other unimplemented devices. This makes it easier to debug when these devices are added later. Finally, here are my testing steps: Step 1, Referring to the Xilinx Wiki, I compiled a Linux kernel binary image for convenience in testing. You can directly obtain it via: git clone https://github.com/zevorn/QEMU_CPUFreq_Zynq.git Step 2, Use the following command to run the QEMU: ./qemu/build/qemu-system-arm -M xilinx-zynq-a9 \ -serial /dev/null \ -serial mon:stdio \ -display none \ -kernel QEMU_CPUFreq_Zynq/Prebuilt_functional/kernel_standard_linux/uImage \ -dtb QEMU_CPUFreq_Zynq/Prebuilt_functional/my_devicetree.dtb \ --initrd QEMU_CPUFreq_Zynq/Prebuilt_functional/umy_ramdisk.image.gz If there are no issues during execution and it boots successfully into the terminal, for example: ... PetaLinux 2016.4 zedboard-zynq7 /dev/ttyPS0 zedboard-zynq7 login: root root@zedboard-zynq7:~# Chao Liu (2): xilink_zynq: Add various missing unimplemented devices xilink-zynq-devcfg: Fix up for memory address range size not set correctly hw/arm/xilinx_zynq.c | 46 ++++++++++++++++++++++++++++++++++++++- hw/dma/xlnx-zynq-devcfg.c | 2 +- 2 files changed, 46 insertions(+), 2 deletions(-) -- 2.46.1