Message ID | 1193cf07fbfa67f94ebad9bd897358f248f703cb.1728141040.git.chao.liu@yeah.net |
---|---|
State | New |
Headers | show |
Series | Drop ignore_memory_transaction_failures for xilink_zynq | expand |
On Sat, 5 Oct 2024 at 17:06, Chao Liu <chao.liu@yeah.net> wrote: > > Add xilinx zynq board memory mapping is implemented in the device. > > Remove a ignore_memory_transaction_failures concurrently. > > Source: Zynq-7000 SoC Data Sheet: Overview, Chapter: Memory Map > > See: https://www.mouser.com/datasheet/2/903/ds190_Zynq_7000_Overview-1595492.pdf > Signed-off-by: Chao Liu <chao.liu@yeah.net> > --- > hw/arm/xilinx_zynq.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c > index 37c234f5ab..77010bebeb 100644 > --- a/hw/arm/xilinx_zynq.c > +++ b/hw/arm/xilinx_zynq.c > @@ -34,6 +34,7 @@ > #include "hw/net/cadence_gem.h" > #include "hw/cpu/a9mpcore.h" > #include "hw/qdev-clock.h" > +#include "hw/misc/unimp.h" > #include "sysemu/reset.h" > #include "qom/object.h" > #include "exec/tswap.h" > @@ -229,6 +230,16 @@ static void zynq_init(MachineState *machine) > zynq_machine->cpu[n] = ARM_CPU(cpuobj); > } > > + /* PL AXI */ > + create_unimplemented_device("zynq.pl-axi.port0", 0x40000000, 1 * GiB); > + create_unimplemented_device("zynq.pl-axi.port1", 0x80000000, 1 * GiB); > + > + /* IOP devices */ > + create_unimplemented_device("zynq.iop-devices", 0xE0000000, 256 * MiB); These clearly are not devices, they are covering a big range of memory space. What is the behaviour of the real hardware if you access these address space ranges? > + /* Programmable register access via AMBA APB bus */ > + create_unimplemented_device("zynq.amba", 0xF8000000, 32 * MiB); > + > /* DDR remapped to address zero. */ > memory_region_add_subregion(address_space_mem, 0, machine->ram); > > @@ -394,7 +405,6 @@ static void zynq_machine_class_init(ObjectClass *oc, void *data) > mc->init = zynq_init; > mc->max_cpus = ZYNQ_MAX_CPUS; > mc->no_sdcard = 1; > - mc->ignore_memory_transaction_failures = true; As I've said in my review on the previous series, there is no point in adding big "unimplemented device" ranges merely in order to remove the setting of ignore_memory_transaction_failures. thanks -- PMM
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 37c234f5ab..77010bebeb 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -34,6 +34,7 @@ #include "hw/net/cadence_gem.h" #include "hw/cpu/a9mpcore.h" #include "hw/qdev-clock.h" +#include "hw/misc/unimp.h" #include "sysemu/reset.h" #include "qom/object.h" #include "exec/tswap.h" @@ -229,6 +230,16 @@ static void zynq_init(MachineState *machine) zynq_machine->cpu[n] = ARM_CPU(cpuobj); } + /* PL AXI */ + create_unimplemented_device("zynq.pl-axi.port0", 0x40000000, 1 * GiB); + create_unimplemented_device("zynq.pl-axi.port1", 0x80000000, 1 * GiB); + + /* IOP devices */ + create_unimplemented_device("zynq.iop-devices", 0xE0000000, 256 * MiB); + + /* Programmable register access via AMBA APB bus */ + create_unimplemented_device("zynq.amba", 0xF8000000, 32 * MiB); + /* DDR remapped to address zero. */ memory_region_add_subregion(address_space_mem, 0, machine->ram); @@ -394,7 +405,6 @@ static void zynq_machine_class_init(ObjectClass *oc, void *data) mc->init = zynq_init; mc->max_cpus = ZYNQ_MAX_CPUS; mc->no_sdcard = 1; - mc->ignore_memory_transaction_failures = true; mc->valid_cpu_types = valid_cpu_types; mc->default_ram_id = "zynq.ext_ram"; prop = object_class_property_add_str(oc, "boot-mode", NULL,
Add xilinx zynq board memory mapping is implemented in the device. Remove a ignore_memory_transaction_failures concurrently. Source: Zynq-7000 SoC Data Sheet: Overview, Chapter: Memory Map See: https://www.mouser.com/datasheet/2/903/ds190_Zynq_7000_Overview-1595492.pdf Signed-off-by: Chao Liu <chao.liu@yeah.net> --- hw/arm/xilinx_zynq.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)