qemu/hw/ppc
Alexander Graf cb3778a045 PPC: e500 pci host: Add support for ATMUs
The e500 PCI controller has configurable windows that allow a guest OS
to selectively map parts of the PCI bus space to CPU address space and
to selectively map parts of the CPU address space for DMA requests into
PCI visible address ranges.

So far, we've simply assumed that this mapping is 1:1 and ignored it.

However, the PCICSRBAR (CCSR mapped in PCI bus space) always has to live
inside the first 32bits of address space. This means if we always treat
all mappings as 1:1, this map will collide with our RAM map from the CPU's
point of view.

So this patch adds proper ATMU support which allows us to keep the PCICSRBAR
below 32bits local to the PCI bus and have another, different window to PCI
BARs at the upper end of address space. We leverage this on e500plat though,
mpc8544ds stays virtually 1:1 like it was before, but now also goes via ATMU.

With this patch, I can run guests with lots of RAM and not coincidently access
MSI-X mappings while I really want to access RAM.

Signed-off-by: Alexander Graf <agraf@suse.de>
2015-01-07 16:16:24 +01:00
..
e500-ccsr.h
e500.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
e500.h PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
e500plat.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
mac_newworld.c fw_cfg: move boards to fw_cfg_init_io() / fw_cfg_init_mem() 2014-12-22 23:39:15 +00:00
mac_oldworld.c fw_cfg: move boards to fw_cfg_init_io() / fw_cfg_init_mem() 2014-12-22 23:39:15 +00:00
mac.h block: Rename BlockDriverAIOCB* to BlockAIOCB* 2014-10-20 13:41:27 +02:00
Makefile.objs target-ppc: virtex-ml507 machine type should depend on CONFIG_XILINX 2014-11-04 23:26:11 +01:00
mpc8544_guts.c cpu: Replace cpu_single_env with CPUState current_cpu 2013-07-09 21:20:28 +02:00
mpc8544ds.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
ppc4xx_devs.c SCSI changes that enable sending vendor-specific commands via virtio-scsi. 2014-08-19 13:00:57 +01:00
ppc4xx_pci.c hw/pci/ppc4xx_pci.c: Remove unused pci4xx_cfgaddr_read/write/ops 2014-11-04 23:26:12 +01:00
ppc405_boards.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
ppc405_uc.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
ppc405.h
ppc440_bamboo.c hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
ppc_booke.c hw/ppc: Avoid shifting left into sign bit 2014-03-27 19:22:49 +04:00
ppc.c spapr: Add support for time base offset migration 2014-06-16 13:24:35 +02:00
ppce500_spin.c ppce500_spin: Initialize struct properly 2014-04-08 11:20:05 +02:00
prep.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
spapr_events.c spapr: Move interrupt allocator to xics 2014-06-27 13:48:26 +02:00
spapr_hcall.c hw/ppc/spapr_hcall.c: Fix typo in function names 2014-09-08 12:50:47 +02:00
spapr_iommu.c iommu: add is_write as a parameter to the translate function of MemoryRegionIOMMUOps 2014-08-28 23:10:22 +02:00
spapr_pci_vfio.c vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00
spapr_pci.c hw/ppc/spapr_pci.c: Avoid functions not in glib 2.12 (g_hash_table_iter_*) 2014-11-04 23:26:13 +01:00
spapr_rtas.c ppc: spapr-rtas - implement os-term rtas call 2014-09-08 12:50:45 +02:00
spapr_vio.c spapr: Move interrupt allocator to xics 2014-06-27 13:48:26 +02:00
spapr.c machine: remove qemu_machine_opts global list 2014-12-22 23:12:27 +00:00
virtex_ml507.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00