From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqSih-0000ir-Tj for qemu-devel@nongnu.org; Mon, 08 Aug 2011 12:30:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QqSig-0002Wp-Ic for qemu-devel@nongnu.org; Mon, 08 Aug 2011 12:30:27 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:41888) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqSig-0002Wj-Dt for qemu-devel@nongnu.org; Mon, 08 Aug 2011 12:30:26 -0400 Received: by gyd12 with SMTP id 12so2297027gyd.4 for ; Mon, 08 Aug 2011 09:30:25 -0700 (PDT) Message-ID: <4E400F1D.2050907@codemonkey.ws> Date: Mon, 08 Aug 2011 11:30:21 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1312808972-1718-1-git-send-email-avi@redhat.com> In-Reply-To: <1312808972-1718-1-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v4 00/39] Memory API, batch 2: PCI devices List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" On 08/08/2011 08:08 AM, Avi Kivity wrote: > This is a mostly mindless conversion of all QEMU PCI devices to the memory API. > After this patchset is applied, it is no longer possible to create a PCI device > using the old API. > > An immediate benefit is that PCI BARs that overlap each other are now handled > correctly: currently, the sequence > > map BAR 0 > map BAR 1 at an overlapping address > unmap either BAR 0 or BAR 1 > > will leave a hole where the overlap exists. With the patchset, the memory map > is restored correctly. > > Note that overlaps of PCI BARs with memory or non-PCI resources are still not > resolved correctly; this will be fixed later on. > > The vga patches have ugly intermediate states; however the result is fairly clean. Applied all. Thanks for taking this on, the results are very nice! Regards, Anthony Liguori > > Changes from v3: > - dropped virtio-pci config patch; will be fixed outside this patchset if > necessary > - minor style fixes > > Changes from v2: > - added patch from Michael simplifying virtio-pci config setup > > Changes from v1: > - cmd646 type fix > - folded a fixlet into its parent > > Avi Kivity (39): > memory: rename PORTIO_END to PORTIO_END_OF_LIST > 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 > 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: convert 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 > > exec-memory.h | 5 + > exec.c | 10 ++ > hw/ac97.c | 88 ++++++----- > hw/apb_pci.c | 1 + > hw/bonito.c | 1 + > hw/cirrus_vga.c | 459 ++++++++++++++++----------------------------------- > hw/cuda.c | 6 +- > hw/e1000.c | 113 ++++++-------- > hw/eepro100.c | 181 ++++----------------- > hw/es1370.c | 43 +++-- > hw/escc.c | 42 +++--- > hw/escc.h | 2 +- > hw/grackle_pci.c | 8 +- > hw/gt64xxx.c | 4 +- > 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.h | 2 + > hw/isa_mmio.c | 29 ++-- > 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/msix.c | 64 +++----- > hw/msix.h | 6 +- > hw/ne2000-isa.c | 13 +-- > hw/ne2000.c | 77 ++++++--- > hw/ne2000.h | 8 +- > hw/openpic.c | 81 +++++----- > hw/openpic.h | 2 +- > hw/pc.h | 4 +- > hw/pc_piix.c | 6 +- > hw/pci.c | 133 +++++----------- > hw/pci.h | 26 ++-- > hw/pci_internals.h | 3 +- > hw/pcnet-pci.c | 74 +++++---- > hw/pcnet.h | 4 +- > hw/piix_pci.c | 14 +- > hw/ppc4xx_pci.c | 1 + > hw/ppc_mac.h | 27 ++-- > hw/ppc_newworld.c | 34 ++-- > hw/ppc_oldworld.c | 27 ++-- > hw/ppc_prep.c | 2 +- > hw/ppce500_pci.c | 7 +- > hw/prep_pci.c | 8 +- > hw/prep_pci.h | 4 +- > hw/qxl-render.c | 2 +- > hw/qxl.c | 129 ++++++---------- > hw/qxl.h | 6 +- > hw/rtl8139.c | 70 ++++---- > hw/sh_pci.c | 4 +- > hw/sun4u.c | 53 +++---- > hw/unin_pci.c | 16 ++- > hw/usb-ehci.c | 36 +--- > hw/usb-ohci.c | 2 +- > hw/usb-uhci.c | 41 +++-- > hw/versatile_pci.c | 2 +- > hw/vga-isa-mm.c | 46 ++++-- > hw/vga-isa.c | 10 +- > hw/vga-pci.c | 27 +--- > hw/vga.c | 178 +++++++------------- > hw/vga_int.h | 18 +-- > hw/virtio-pci.c | 86 ++++------ > hw/virtio-pci.h | 3 +- > hw/vmware_vga.c | 153 +++++++++--------- > hw/wdt_i6300esb.c | 43 ++++-- > hw/xen_platform.c | 82 ++++++---- > memory.h | 2 +- > 80 files changed, 1650 insertions(+), 2085 deletions(-) >