[RFC v5 00/86] Memory API

Avi Kivity
2011-07-20T16:50:42Z

New in this version:
- more mindless conversions; I believe there are no longer any destructive
operations in the tree (IO_MEM_UNASSIGNED)
- fix memory map generation bug (patch 13)
- proper 440FX PAM/SMRAM and PCI holes

Caveats:
- some devices (mostly boards) still grab a global memory region instead of
inheriting it from their bus. Seen in the code as #include "exec-memory.h"
- pc RAM initialization is a mess - needs to be refactored; this is because
memory is set up before the memory controller.

Avi Kivity (86):
xen: fix xen-mapcache build on non-Xen capable targets
Hierarchical memory region API
memory: implement dirty tracking
memory: merge adjacent segments of a single memory region
Internal interfaces for memory API
memory: abstract address space operations
memory: rename MemoryRegion::has_ram_addr to ::terminates
memory: late initialization of ram_addr
memory: I/O address space support
memory: add backward compatibility for old portio registration
memory: add backward compatibility for old mmio registration
memory: add ioeventfd support
memory: separate building the final memory map into two steps
exec.c: initialize memory map
ioport: register ranges by byte aligned addresses always
pc: grab system_memory
pc: convert pc_memory_init() to memory API
pc: move global memory map out of pc_init1() and into its callers
pci: pass address space to pci bus when created
pci: add MemoryRegion based BAR management API
sysbus: add MemoryRegion based memory management API
usb-ohci: convert to MemoryRegion
pci: add API to get a BAR's mapped address
vmsvga: don't remember pci BAR address in callback any more
vga: convert vga and its derivatives to the memory API
cirrus: simplify mmio BAR access functions
cirrus: simplify bitblt BAR access functions
cirrus: simplify vga window mmio access functions
vga: simplify vga window mmio access functions
cirrus: simplify linear framebuffer access functions
Integrate I/O memory regions into qemu
exec.c: fix initialization of system I/O memory region
pci: pass I/O address space to new PCI bus
pci: allow I/O BARs to be registered with pci_register_bar_region()
rtl8139: convert to memory API
ac97: convert to memory API
e1000: convert to memory API
eepro100: convert to memory API
es1370: convert to memory API
ide: convert to memory API
ivshmem: convert to memory API
virtio-pci: convert to memory API
ahci: convert to memory API
intel-hda: convert to memory API
lsi53c895a: convert to memory API
ppc: convert to memory API
ne2000: convert to memory API
pcnet: convert to memory API
i6300esb: convert to memory API
isa-mmio: concert to memory API
sun4u: convert to memory API
ehci: convert to memory API
uhci: convert to memory API
xen-platform: convert to memory API
msix: convert to memory API
pci: remove pci_register_bar_simple()
pci: convert pci rom to memory API
pci: remove pci_register_bar()
pci: fold BAR mapping function into its caller
pci: rename pci_register_bar_region() to pci_register_bar()
pci: remove support for pre memory API BARs
Introduce QEMU_NEW()
apb_pci: convert to memory API
apic: convert to memory API
arm_gic: convert to memory API
arm_sysctl: convert to memory API
arm_timer: convert to memory API
armv7m: convert to memory API
gt64xxx.c: convert to memory API
tusb6010: move declarations to new file tusb6010.h
omap_gpmc/nseries/tusb6010: convert to memory API
onenand: convert to memory API
pcie_host: convert to memory API
ppc405_uc: convert to memory API
ppc4xx_sdram: convert to memory API
stellaris_enet: convert to memory API
sysbus: add a variant of sysbus_init_mmio_cb with an unmap callback
sh_pci: convert to memory API
arm11mpcore: use sysbus_init_mmio_cb2
versatile_pci: convert to memory API
ppce500_pci: convert to sysbus_init_mmio_cb2()
sysbus: remove sysbus_init_mmio_cb()
isa: add isa_address_space()
pci: add pci_address_space()
vga: drop get_system_memory() from vga devices and derivatives
440fx: fix PAM, PCI holes

Makefile.target | 1 +
exec-memory.h | 28 ++
exec.c | 29 ++
hw/ac97.c | 88 +++--
hw/apb_pci.c | 86 ++---
hw/apic.c | 25 +-
hw/arm11mpcore.c | 7 +-
hw/arm_gic.c | 22 +-
hw/arm_sysctl.c | 27 +-
hw/arm_timer.c | 55 +--
hw/armv7m.c | 24 +-
hw/armv7m_nvic.c | 4 +-
hw/bonito.c | 5 +-
hw/cirrus_vga.c | 469 +++++++---------------
hw/cuda.c | 6 +-
hw/devices.h | 7 -
hw/e1000.c | 113 +++---
hw/eepro100.c | 181 ++-------
hw/es1370.c | 43 ++-
hw/escc.c | 42 +-
hw/escc.h | 2 +-
hw/grackle_pci.c | 9 +-
hw/gt64xxx.c | 42 +-
hw/heathrow_pic.c | 29 +-
hw/ide.h | 2 +-
hw/ide/ahci.c | 31 +-
hw/ide/ahci.h | 2 +-
hw/ide/cmd646.c | 204 ++++++----
hw/ide/ich.c | 3 +-
hw/ide/macio.c | 36 +-
hw/ide/pci.c | 25 +-
hw/ide/pci.h | 19 +-
hw/ide/piix.c | 63 +++-
hw/ide/via.c | 64 +++-
hw/intel-hda.c | 35 +-
hw/isa-bus.c | 7 +
hw/isa.h | 3 +
hw/isa_mmio.c | 30 +-
hw/ivshmem.c | 158 +++-----
hw/lance.c | 31 +-
hw/lsi53c895a.c | 257 +++----------
hw/mac_dbdma.c | 32 +-
hw/mac_dbdma.h | 4 +-
hw/mac_nvram.c | 39 +--
hw/macio.c | 73 ++--
hw/mips_jazz.c | 4 +-
hw/mpcore.c | 37 +-
hw/msix.c | 64 +--
hw/msix.h | 6 +-
hw/ne2000-isa.c | 14 +-
hw/ne2000.c | 77 +++--
hw/ne2000.h | 8 +-
hw/nseries.c | 1 +
hw/omap.h | 3 +-
hw/omap_gpmc.c | 54 ++--
hw/onenand.c | 70 ++--
hw/openpic.c | 81 ++--
hw/openpic.h | 2 +-
hw/pc.c | 71 +++-
hw/pc.h | 27 +-
hw/pc_piix.c | 43 ++-
hw/pci.c | 113 +++---
hw/pci.h | 32 +-
hw/pci_host.h | 1 +
hw/pci_internals.h | 2 +
hw/pcie_host.c | 98 ++----
hw/pcie_host.h | 12 +-
hw/pcnet-pci.c | 74 ++--
hw/pcnet.h | 4 +-
hw/piix_pci.c | 123 +++++--
hw/ppc405.h | 9 +-
hw/ppc405_boards.c | 18 +-
hw/ppc405_uc.c | 129 +++----
hw/ppc440.c | 7 +-
hw/ppc4xx.h | 2 +
hw/ppc4xx_devs.c | 51 ++-
hw/ppc4xx_pci.c | 6 +-
hw/ppc_mac.h | 30 +-
hw/ppc_newworld.c | 35 +-
hw/ppc_oldworld.c | 28 +-
hw/ppc_prep.c | 3 +-
hw/ppce500_pci.c | 19 +-
hw/prep_pci.c | 9 +-
hw/prep_pci.h | 5 +-
hw/qxl-render.c | 2 +-
hw/qxl.c | 131 +++----
hw/qxl.h | 6 +-
hw/realview_gic.c | 38 +-
hw/rtl8139.c | 70 ++--
hw/sh_pci.c | 69 +++-
hw/stellaris_enet.c | 29 +-
hw/sun4u.c | 53 +--
hw/sysbus.c | 36 ++-
hw/sysbus.h | 8 +-
hw/tusb6010.c | 32 +-
hw/tusb6010.h | 13 +
hw/unin_pci.c | 18 +-
hw/usb-ehci.c | 36 +--
hw/usb-ohci.c | 42 +--
hw/usb-uhci.c | 41 ++-
hw/versatile_pci.c | 96 +++---
hw/vga-isa-mm.c | 55 ++-
hw/vga-isa.c | 11 +-
hw/vga-pci.c | 31 +--
hw/vga.c | 180 +++------
hw/vga_int.h | 23 +-
hw/virtio-pci.c | 89 ++---
hw/virtio-pci.h | 3 +-
hw/vmware_vga.c | 160 ++++----
hw/wdt_i6300esb.c | 43 ++-
hw/xen_platform.c | 82 +++--
ioport.c | 4 +-
memory.c | 1112 +++++++++++++++++++++++++++++++++++++++++++++++++++
memory.h | 251 ++++++++++++
qemu-common.h | 3 +
xen-mapcache.h | 32 ++
116 files changed, 3916 insertions(+), 2717 deletions(-)
create mode 100644 exec-memory.h
create mode 100644 hw/tusb6010.h
create mode 100644 memory.c
create mode 100644 memory.h

--
1.7.5.3