Hi All, This series implements Per-bus-Master Address spaces (PMA). It builds on the merged components of Edgar's original series:
https://lists.gnu.org/archive/html/qemu-devel/2014-02/msg01346.html And my pending MemoryRegion QOMification: https://lists.nongnu.org/archive/html/qemu-devel/2014-06/msg00029.html The approach is based on PMA as discussed KVM call 2014-05-13. MOM: http://lists.gnu.org/archive/html/qemu-devel/2014-05/msg02430.html " PM: Address space is flattended memory regions, needed for actual memory access when constructing machines, we deal with memory regions, not address spaces AF+PM: Each CPU should have its own address space ... Do busmasters get their own address space, too? PM: Yes " Patches 3-9 patch memory, exec and CPU to enable this capability generally. The basic idea is MemoryRegions are QOM/linkable, and masters create their own AddressSpace as needed from their given MRs. The PetaLogix ml605 board is converted to use the new framework as the lead example P10/11. It is tested as working. For a diagram of the real hardware setup WRT to DMA and bus master visibility: http://www.xilinx.com/support/documentation/ip_documentation/axi_dma/v6_03_a/pg021_axi_dma.pdf page 49. This series is work-in-progress and has numerous FIXMEs in it. Looking for conceptual level commentary. 2 trivials at the front of the series. Easily skipped by reviewers. Regards, Peter Peter Crosthwaite (11): microblaze: ml605: Get rid of useless ddr_base variable dma: axidma: Variablise repeated s->streams[i] sub-expr exec: Parent root MRs to the machine exec: dummy_section: Pass address space through. memory: Parent Memory Regions to their registered owners memory: address_space_init: do nothing if no root region given memory.c: Add address_space_init_shareable() qom/cpu: Add Memory Region Property exec: use per-cpu address-spaces for cpuisms microblaze: ml605: Convert to PMA dma: axidma: Convert to PMA exec.c | 23 +++++++++++------- hw/core/loader.c | 2 +- hw/dma/xilinx_axidma.c | 47 ++++++++++++++++++++++++++++++------- hw/microblaze/petalogix_ml605_mmu.c | 42 ++++++++++++++++++++++++--------- include/exec/memory.h | 2 ++ include/qom/cpu.h | 1 + memory.c | 47 +++++++++++++++++++++++++++++++++++++ qom/cpu.c | 30 +++++++++++++++++++++++ 8 files changed, 165 insertions(+), 29 deletions(-) -- 2.0.0