From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: [RFC v5 00/86] Memory API Date: Wed, 20 Jul 2011 19:49:10 +0300 Message-ID: <1311180636-17012-1-git-send-email-avi@redhat.com> Cc: kvm@vger.kernel.org To: qemu-devel@nongnu.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:52015 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751376Ab1GTQum (ORCPT ); Wed, 20 Jul 2011 12:50:42 -0400 Sender: kvm-owner@vger.kernel.org List-ID: 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:60571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QjaA5-0007zx-MR for qemu-devel@nongnu.org; Wed, 20 Jul 2011 13:02:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QjZys-0004tp-OT for qemu-devel@nongnu.org; Wed, 20 Jul 2011 12:50:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45315) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QjZyr-0004tM-T2 for qemu-devel@nongnu.org; Wed, 20 Jul 2011 12:50:42 -0400 From: Avi Kivity Date: Wed, 20 Jul 2011 19:49:10 +0300 Message-Id: <1311180636-17012-1-git-send-email-avi@redhat.com> Subject: [Qemu-devel] [RFC v5 00/86] Memory API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org 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