mbox series

[v3,0/2] Drop ignore_memory_transaction_failures for xilink_zynq

Message ID cover.1728141040.git.chao.liu@yeah.net
Headers show
Series Drop ignore_memory_transaction_failures for xilink_zynq | expand

Message

Chao Liu Oct. 5, 2024, 4:06 p.m. UTC
Hi all,

Following the Zynq-7000 SoC Data Sheet's "Memory Map" section (referenced at [1]),

We have identified the need to create placeholders for unimplemented devices
across the entire range of Zynq-7000 series boards.

This effort aims at ensuring maximum compatibility with different models
within the series.

The following table summarizes the relevant memory map addresses
for the Zynq-7000:

    Start Address  Size (MB)       Description
    0x0000_0000    1,024           DDR DRAM and on-chip memory (OCM)
    0x4000_0000    1,024           PL AXI slave port #0
    0x8000_0000    1,024           PL AXI slave port #1
    0xE000_0000    256             IOP devices
    0xF000_0000    128             Reserved
    0xF800_0000    32              Programmable registers access via AMBA APB bus
    0xFA00_0000    32              Reserved
    0xFC00_0000    64 MB - 256 KB  Quad-SPI linear address base address (except
                                   to 256 KB which is in OCM), 64 MB reserved,
                                   only 32 MB is currently supported
    0xFFFC_0000    256 KB          OCM when mapped to high address space

For the purposes of this patch, we will not be creating placeholders for
DRAM and any reserved regions of the address space.

A test script has been developed that covers the most common board types of
the Zynq-7000 series.

The test script obtained all linux binary images of the zynq-7000 series boards
from xilinx-wiki for script testing(referenced at [2]).

The steps to run the test are as follows:

    a) Clone the repository.
    git clone -b xilinx-zynq-test https://github.com/gevico/qemu-board.git

    b) Apply the patch attached to this email and compile QEMU.

    c) Set the environment variable for the path to your QEMU.
    export QEMU_PATH=<your qemu path>

    d) Execute the testing script.
    ./qemu-zynq-test

    e) Check the results.
    If successful, the output should resemble the following:

    Test Project: <your path>/qemu-board/hw/arm/xilinx-zynq
        Start 1: xilinx-zynq.zc702
    1/3 Test #1: xilinx-zynq.zc702 ......................   Passed
        Start 2: xilinx-zynq.zc706
    2/3 Test #2: xilinx-zynq.zc706 ......................   Passed
        Start 3: xilinx-zynq.zed  
    3/3 Test #3: xilinx-zynq.zed   ......................   Passed

    All tests passed

See:
[1]: https://www.amd.com/content/dam/xilinx/support/documents/data_sheets/ds190-Zynq-7000-Overview.pdf
[2]: http://www.wiki.xilinx.com/Zynq+2016.2+Release

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      | 12 +++++++++++-
 hw/dma/xlnx-zynq-devcfg.c |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)