From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Usc0F-0003QG-D8 for qemu-devel@nongnu.org; Fri, 28 Jun 2013 12:58:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Usc0D-0001et-JG for qemu-devel@nongnu.org; Fri, 28 Jun 2013 12:58:31 -0400 Received: from mail-ea0-x22e.google.com ([2a00:1450:4013:c01::22e]:50761) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Usc0D-0001ee-5n for qemu-devel@nongnu.org; Fri, 28 Jun 2013 12:58:29 -0400 Received: by mail-ea0-f174.google.com with SMTP id o10so1155391eaj.5 for ; Fri, 28 Jun 2013 09:58:28 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 28 Jun 2013 18:58:11 +0200 Message-Id: <1372438702-20491-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH v2 00/11] Memory patches, part 4: region ownership List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: jan.kiszka@siemens.com, peter.maydell@linaro.org This series, split out of the previous attempt to set owners for memory regions, adds reference counting operations to memory regions and uses them. As requested by Peter, I'm adding an argument for the owner to all memory region creation functions. The big patches to actually add the owners will come soon, since I found a decent way to split it. Paolo v1->v2: patches 7/11 redone and placed at the end of the series; refcount changes for address_space_translate left for a later series, they are not yet necessary; rebased on top of Jan's patches. Paolo Bonzini (11): memory: add owner argument to initialization functions memory: destroy phys_sections one by one exec: simplify destruction of the phys map memory: add getter for owner memory: add ref/unref memory: add ref/unref calls exec: check MRU in qemu_ram_addr_from_host exec: move qemu_ram_addr_from_host_nofail to cputlb.c memory: return MemoryRegion from qemu_ram_addr_from_host exec: reorganize address_space_map memory: ref/unref memory across address_space_map/unmap cputlb.c | 11 ++ exec.c | 218 +++++++++++++++---------------- hw/acpi/core.c | 6 +- hw/acpi/ich9.c | 6 +- hw/acpi/piix4.c | 8 +- hw/alpha/typhoon.c | 16 +-- hw/arm/armv7m.c | 8 +- hw/arm/exynos4210.c | 12 +- hw/arm/highbank.c | 6 +- hw/arm/integratorcp.c | 12 +- hw/arm/kzm.c | 6 +- hw/arm/mainstone.c | 2 +- hw/arm/musicpal.c | 22 ++-- hw/arm/omap1.c | 52 ++++---- hw/arm/omap2.c | 16 +-- hw/arm/omap_sx1.c | 14 +- hw/arm/palm.c | 10 +- hw/arm/pxa2xx.c | 30 ++--- hw/arm/pxa2xx_gpio.c | 2 +- hw/arm/pxa2xx_pic.c | 2 +- hw/arm/realview.c | 8 +- hw/arm/spitz.c | 4 +- hw/arm/stellaris.c | 8 +- hw/arm/strongarm.c | 14 +- hw/arm/tosa.c | 2 +- hw/arm/versatilepb.c | 4 +- hw/arm/vexpress.c | 12 +- hw/arm/xilinx_zynq.c | 4 +- hw/audio/ac97.c | 4 +- hw/audio/cs4231.c | 2 +- hw/audio/cs4231a.c | 2 +- hw/audio/es1370.c | 2 +- hw/audio/intel-hda.c | 2 +- hw/audio/marvell_88w8618.c | 2 +- hw/audio/milkymist-ac97.c | 2 +- hw/audio/pcspk.c | 2 +- hw/audio/pl041.c | 2 +- hw/block/fdc.c | 4 +- hw/block/nvme.c | 2 +- hw/block/onenand.c | 8 +- hw/block/pc_sysfw.c | 6 +- hw/block/pflash_cfi01.c | 3 +- hw/block/pflash_cfi02.c | 6 +- hw/char/cadence_uart.c | 2 +- hw/char/debugcon.c | 2 +- hw/char/escc.c | 2 +- hw/char/etraxfs_ser.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/lm32_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/milkymist-uart.c | 2 +- hw/char/omap_uart.c | 2 +- hw/char/parallel.c | 2 +- hw/char/pl011.c | 2 +- hw/char/serial-isa.c | 2 +- hw/char/serial-pci.c | 6 +- hw/char/serial.c | 4 +- hw/char/sh_serial.c | 6 +- hw/char/tpci200.c | 12 +- hw/char/xilinx_uartlite.c | 2 +- hw/core/empty_slot.c | 2 +- hw/core/loader.c | 1 + hw/cpu/a15mpcore.c | 2 +- hw/cpu/a9mpcore.c | 2 +- hw/cpu/arm11mpcore.c | 4 +- hw/cpu/icc_bus.c | 2 +- hw/cris/axis_dev88.c | 8 +- hw/display/cirrus_vga.c | 16 +-- hw/display/exynos4210_fimd.c | 8 +- hw/display/framebuffer.c | 12 +- hw/display/g364fb.c | 4 +- hw/display/jazz_led.c | 2 +- hw/display/milkymist-tmu2.c | 2 +- hw/display/milkymist-vgafb.c | 2 +- hw/display/omap_dss.c | 10 +- hw/display/omap_lcdc.c | 2 +- hw/display/pl110.c | 2 +- hw/display/pxa2xx_lcd.c | 2 +- hw/display/qxl.c | 10 +- hw/display/sm501.c | 8 +- hw/display/tc6393xb.c | 4 +- hw/display/tcx.c | 16 +-- hw/display/vga-isa-mm.c | 4 +- hw/display/vga-pci.c | 6 +- hw/display/vga.c | 8 +- hw/display/vmware_vga.c | 4 +- hw/dma/etraxfs_dma.c | 2 +- hw/dma/i8257.c | 4 +- hw/dma/omap_dma.c | 4 +- hw/dma/pl080.c | 2 +- hw/dma/pl330.c | 2 +- hw/dma/puv3_dma.c | 2 +- hw/dma/pxa2xx_dma.c | 2 +- hw/dma/rc4030.c | 4 +- hw/dma/sparc32_dma.c | 2 +- hw/dma/sun4m_iommu.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/gpio/omap_gpio.c | 6 +- hw/gpio/pl061.c | 2 +- hw/gpio/puv3_gpio.c | 2 +- hw/gpio/zaurus.c | 2 +- hw/i2c/bitbang_i2c.c | 2 +- hw/i2c/exynos4210_i2c.c | 2 +- hw/i2c/omap_i2c.c | 2 +- hw/i2c/pm_smbus.c | 2 +- hw/i2c/versatile_i2c.c | 2 +- hw/i386/kvm/apic.c | 2 +- hw/i386/kvm/i8254.c | 2 +- hw/i386/kvm/i8259.c | 4 +- hw/i386/kvm/ioapic.c | 2 +- hw/i386/kvm/pci-assign.c | 14 +- hw/i386/kvmvapic.c | 5 +- hw/i386/pc.c | 14 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/ide/ahci.c | 4 +- hw/ide/cmd646.c | 10 +- hw/ide/macio.c | 2 +- hw/ide/mmio.c | 4 +- hw/ide/piix.c | 6 +- hw/ide/via.c | 6 +- hw/input/milkymist-softusb.c | 6 +- hw/input/pckbd.c | 6 +- hw/input/pl050.c | 2 +- hw/input/pxa2xx_keypad.c | 2 +- hw/intc/apic.c | 2 +- hw/intc/arm_gic.c | 6 +- hw/intc/arm_gic_kvm.c | 4 +- hw/intc/armv7m_nvic.c | 6 +- hw/intc/etraxfs_pic.c | 2 +- hw/intc/exynos4210_combiner.c | 2 +- hw/intc/exynos4210_gic.c | 8 +- hw/intc/grlib_irqmp.c | 2 +- hw/intc/heathrow_pic.c | 2 +- hw/intc/i8259.c | 4 +- hw/intc/imx_avic.c | 2 +- hw/intc/ioapic.c | 2 +- hw/intc/omap_intc.c | 4 +- hw/intc/openpic.c | 4 +- hw/intc/pl190.c | 2 +- hw/intc/puv3_intc.c | 2 +- hw/intc/realview_gic.c | 2 +- hw/intc/sh_intc.c | 6 +- hw/intc/slavio_intctl.c | 4 +- hw/intc/xilinx_intc.c | 2 +- hw/isa/apm.c | 2 +- hw/isa/i82378.c | 4 +- hw/isa/isa_mmio.c | 2 +- hw/isa/lpc_ich9.c | 4 +- hw/isa/pc87312.c | 2 +- hw/isa/vt82c686.c | 6 +- hw/lm32/lm32_boards.c | 4 +- hw/lm32/milkymist.c | 2 +- hw/m68k/an5206.c | 4 +- hw/m68k/dummy_m68k.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 8 +- hw/m68k/mcf_intc.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 4 +- hw/microblaze/petalogix_s3adsp1800_mmu.c | 4 +- hw/mips/gt64xxx_pci.c | 2 +- hw/mips/mips_fulong2e.c | 4 +- hw/mips/mips_jazz.c | 12 +- hw/mips/mips_malta.c | 10 +- hw/mips/mips_mipssim.c | 4 +- hw/mips/mips_r4k.c | 6 +- hw/misc/a9scu.c | 2 +- hw/misc/applesmc.c | 4 +- hw/misc/arm_l2x0.c | 2 +- hw/misc/arm_sysctl.c | 2 +- hw/misc/debugexit.c | 2 +- hw/misc/eccmemctl.c | 4 +- hw/misc/exynos4210_pmu.c | 2 +- hw/misc/imx_ccm.c | 2 +- hw/misc/ivshmem.c | 8 +- hw/misc/lm32_sys.c | 2 +- hw/misc/macio/cuda.c | 2 +- hw/misc/macio/mac_dbdma.c | 2 +- hw/misc/macio/macio.c | 2 +- hw/misc/milkymist-hpdmc.c | 2 +- hw/misc/milkymist-pfpu.c | 2 +- hw/misc/mst_fpga.c | 2 +- hw/misc/omap_gpmc.c | 8 +- hw/misc/omap_l4.c | 2 +- hw/misc/omap_sdrc.c | 2 +- hw/misc/omap_tap.c | 2 +- hw/misc/pc-testdev.c | 8 +- hw/misc/pci-testdev.c | 4 +- hw/misc/puv3_pm.c | 2 +- hw/misc/pvpanic.c | 2 +- hw/misc/pxa2xx_pcmcia.c | 6 +- hw/misc/slavio_misc.c | 16 +-- hw/misc/vfio.c | 30 +++-- hw/misc/vmport.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/moxie/moxiesim.c | 4 +- hw/net/cadence_gem.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/e1000.c | 4 +- hw/net/eepro100.c | 6 +- hw/net/etraxfs_eth.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lance.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/milkymist-minimac2.c | 4 +- hw/net/mipsnet.c | 2 +- hw/net/ne2000.c | 2 +- hw/net/opencores_eth.c | 4 +- hw/net/pcnet-pci.c | 4 +- hw/net/rtl8139.c | 4 +- hw/net/smc91c111.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/vmxnet3.c | 6 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/nvram/ds1225y.c | 2 +- hw/nvram/fw_cfg.c | 6 +- hw/nvram/mac_nvram.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/pci-bridge/dec.c | 4 +- hw/pci-bridge/pci_bridge_dev.c | 2 +- hw/pci-host/apb.c | 8 +- hw/pci-host/bonito.c | 10 +- hw/pci-host/grackle.c | 8 +- hw/pci-host/pam.c | 8 +- hw/pci-host/piix.c | 12 +- hw/pci-host/ppce500.c | 12 +- hw/pci-host/prep.c | 8 +- hw/pci-host/q35.c | 10 +- hw/pci-host/uninorth.c | 24 ++-- hw/pci-host/versatile.c | 14 +- hw/pci/msix.c | 6 +- hw/pci/pci.c | 4 +- hw/pci/pci_bridge.c | 12 +- hw/pci/pcie_host.c | 2 +- hw/pci/shpc.c | 2 +- hw/ppc/e500.c | 4 +- hw/ppc/mac_newworld.c | 8 +- hw/ppc/mac_oldworld.c | 6 +- hw/ppc/mpc8544_guts.c | 2 +- hw/ppc/ppc405_boards.c | 18 +-- hw/ppc/ppc405_uc.c | 12 +- hw/ppc/ppc4xx_devs.c | 4 +- hw/ppc/ppc4xx_pci.c | 8 +- hw/ppc/ppce500_spin.c | 2 +- hw/ppc/prep.c | 8 +- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_iommu.c | 2 +- hw/ppc/spapr_pci.c | 10 +- hw/ppc/virtex_ml507.c | 2 +- hw/s390x/s390-virtio-ccw.c | 2 +- hw/s390x/s390-virtio.c | 2 +- hw/scsi/esp-pci.c | 2 +- hw/scsi/esp.c | 2 +- hw/scsi/lsi53c895a.c | 6 +- hw/scsi/megasas.c | 6 +- hw/scsi/vmw_pvscsi.c | 2 +- hw/sd/milkymist-memcard.c | 2 +- hw/sd/omap_mmc.c | 4 +- hw/sd/pl181.c | 2 +- hw/sd/pxa2xx_mmci.c | 2 +- hw/sd/sdhci.c | 2 +- hw/sh4/r2d.c | 4 +- hw/sh4/sh7750.c | 16 +-- hw/sh4/sh_pci.c | 4 +- hw/sh4/shix.c | 6 +- hw/sparc/leon3.c | 4 +- hw/sparc/sun4m.c | 8 +- hw/sparc64/sun4u.c | 4 +- hw/ssi/omap_spi.c | 2 +- hw/ssi/pl022.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/ssi/xilinx_spips.c | 4 +- hw/timer/arm_mptimer.c | 4 +- hw/timer/arm_timer.c | 4 +- hw/timer/cadence_ttc.c | 2 +- hw/timer/etraxfs_timer.c | 2 +- hw/timer/exynos4210_mct.c | 2 +- hw/timer/exynos4210_pwm.c | 2 +- hw/timer/exynos4210_rtc.c | 2 +- hw/timer/grlib_gptimer.c | 2 +- hw/timer/hpet.c | 2 +- hw/timer/i8254.c | 2 +- hw/timer/imx_epit.c | 2 +- hw/timer/imx_gpt.c | 2 +- hw/timer/lm32_timer.c | 2 +- hw/timer/m48t59.c | 6 +- hw/timer/mc146818rtc.c | 2 +- hw/timer/milkymist-sysctl.c | 2 +- hw/timer/omap_gptimer.c | 2 +- hw/timer/omap_synctimer.c | 2 +- hw/timer/pl031.c | 2 +- hw/timer/puv3_ost.c | 2 +- hw/timer/pxa2xx_timer.c | 2 +- hw/timer/sh_timer.c | 6 +- hw/timer/slavio_timer.c | 2 +- hw/timer/tusb6010.c | 2 +- hw/timer/xilinx_timer.c | 2 +- hw/tpm/tpm_tis.c | 2 +- hw/unicore32/puv3.c | 2 +- hw/usb/hcd-ehci-sysbus.c | 2 +- hw/usb/hcd-ehci.c | 8 +- hw/usb/hcd-ohci.c | 2 +- hw/usb/hcd-uhci.c | 2 +- hw/usb/hcd-xhci.c | 12 +- hw/virtio/dataplane/hostmem.c | 7 + hw/virtio/vhost.c | 2 + hw/virtio/virtio-balloon.c | 1 + hw/virtio/virtio-pci.c | 2 +- hw/watchdog/wdt_i6300esb.c | 2 +- hw/xen/xen_apic.c | 2 +- hw/xen/xen_platform.c | 6 +- hw/xen/xen_pt.c | 8 +- hw/xen/xen_pt_msi.c | 2 +- hw/xtensa/xtensa_lx60.c | 12 +- hw/xtensa/xtensa_sim.c | 4 +- include/exec/cpu-common.h | 3 +- include/exec/memory.h | 54 ++++++++ include/hw/virtio/dataplane/hostmem.h | 1 + ioport.c | 2 +- kvm-all.c | 2 + memory.c | 64 ++++++++- target-arm/kvm.c | 2 + target-i386/kvm.c | 4 +- target-ppc/kvm.c | 2 +- target-sparc/mmu_helper.c | 1 + xen-all.c | 10 +- 330 files changed, 1009 insertions(+), 870 deletions(-) -- 1.8.1.4