From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqRdr-0000jh-QH for qemu-devel@nongnu.org; Mon, 08 Aug 2011 11:21:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QqRdp-0002cz-KK for qemu-devel@nongnu.org; Mon, 08 Aug 2011 11:21:23 -0400 Received: from mail-pz0-f42.google.com ([209.85.210.42]:64594) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqRdp-0002cS-CV for qemu-devel@nongnu.org; Mon, 08 Aug 2011 11:21:21 -0400 Received: by pzk37 with SMTP id 37so3164038pzk.29 for ; Mon, 08 Aug 2011 08:21:20 -0700 (PDT) Message-ID: <4E3FFEEB.8000509@codemonkey.ws> Date: Mon, 08 Aug 2011 10:21:15 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1312808972-1718-1-git-send-email-avi@redhat.com> <1312808972-1718-21-git-send-email-avi@redhat.com> In-Reply-To: <1312808972-1718-21-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v4 20/39] virtio-pci: convert to memory API 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:09 AM, Avi Kivity wrote: > except msix. > > [jan: fix build] This actually breaks the build: CC libhw64/virtio-pci.o cc1: warnings being treated as errors /home/anthony/git/qemu/hw/virtio-pci.c: In function ‘virtio_write_config’: /home/anthony/git/qemu/hw/virtio-pci.c:496:19: error: unused variable ‘vdev’ make[1]: *** [virtio-pci.o] Error 1 make: *** [subdir-libhw64] Error 2 > > Reviewed-by: Richard Henderson > Reviewed-by: Anthony Liguori > Signed-off-by: Avi Kivity > --- > hw/virtio-pci.c | 71 +++++++++++++++++++++---------------------------------- > hw/virtio-pci.h | 2 +- > 2 files changed, 28 insertions(+), 45 deletions(-) > > diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c > index f3b3293..5df380d 100644 > --- a/hw/virtio-pci.c > +++ b/hw/virtio-pci.c > @@ -162,7 +162,8 @@ static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy, > { > VirtQueue *vq = virtio_get_queue(proxy->vdev, n); > EventNotifier *notifier = virtio_queue_get_host_notifier(vq); > - int r; > + int r = 0; > + > if (assign) { > r = event_notifier_init(notifier, 1); > if (r< 0) { > @@ -170,24 +171,11 @@ static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy, > __func__, r); > return r; > } > - r = kvm_set_ioeventfd_pio_word(event_notifier_get_fd(notifier), > - proxy->addr + VIRTIO_PCI_QUEUE_NOTIFY, > - n, assign); > - if (r< 0) { > - error_report("%s: unable to map ioeventfd: %d", > - __func__, r); > - event_notifier_cleanup(notifier); > - } > + memory_region_add_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2, > + true, n, event_notifier_get_fd(notifier)); > } else { > - r = kvm_set_ioeventfd_pio_word(event_notifier_get_fd(notifier), > - proxy->addr + VIRTIO_PCI_QUEUE_NOTIFY, > - n, assign); > - if (r< 0) { > - error_report("%s: unable to unmap ioeventfd: %d", > - __func__, r); > - return r; > - } > - > + memory_region_del_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2, > + true, n, event_notifier_get_fd(notifier)); > /* Handle the race condition where the guest kicked and we deassigned > * before we got around to handling the kick. > */ > @@ -424,7 +412,6 @@ static uint32_t virtio_pci_config_readb(void *opaque, uint32_t addr) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) > return virtio_ioport_read(proxy, addr); > addr -= config; > @@ -435,7 +422,6 @@ static uint32_t virtio_pci_config_readw(void *opaque, uint32_t addr) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) > return virtio_ioport_read(proxy, addr); > addr -= config; > @@ -446,7 +432,6 @@ static uint32_t virtio_pci_config_readl(void *opaque, uint32_t addr) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) > return virtio_ioport_read(proxy, addr); > addr -= config; > @@ -457,7 +442,6 @@ static void virtio_pci_config_writeb(void *opaque, uint32_t addr, uint32_t val) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) { > virtio_ioport_write(proxy, addr, val); > return; > @@ -470,7 +454,6 @@ static void virtio_pci_config_writew(void *opaque, uint32_t addr, uint32_t val) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) { > virtio_ioport_write(proxy, addr, val); > return; > @@ -483,7 +466,6 @@ static void virtio_pci_config_writel(void *opaque, uint32_t addr, uint32_t val) > { > VirtIOPCIProxy *proxy = opaque; > uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev); > - addr -= proxy->addr; > if (addr< config) { > virtio_ioport_write(proxy, addr, val); > return; > @@ -492,30 +474,26 @@ static void virtio_pci_config_writel(void *opaque, uint32_t addr, uint32_t val) > virtio_config_writel(proxy->vdev, addr, val); > } > > -static void virtio_map(PCIDevice *pci_dev, int region_num, > - pcibus_t addr, pcibus_t size, int type) > -{ > - VirtIOPCIProxy *proxy = container_of(pci_dev, VirtIOPCIProxy, pci_dev); > - VirtIODevice *vdev = proxy->vdev; > - unsigned config_len = VIRTIO_PCI_REGION_SIZE(pci_dev) + vdev->config_len; > - > - proxy->addr = addr; > - > - register_ioport_write(addr, config_len, 1, virtio_pci_config_writeb, proxy); > - register_ioport_write(addr, config_len, 2, virtio_pci_config_writew, proxy); > - register_ioport_write(addr, config_len, 4, virtio_pci_config_writel, proxy); > - register_ioport_read(addr, config_len, 1, virtio_pci_config_readb, proxy); > - register_ioport_read(addr, config_len, 2, virtio_pci_config_readw, proxy); > - register_ioport_read(addr, config_len, 4, virtio_pci_config_readl, proxy); > +const MemoryRegionPortio virtio_portio[] = { > + { 0, 0x10000, 1, .write = virtio_pci_config_writeb, }, > + { 0, 0x10000, 2, .write = virtio_pci_config_writew, }, > + { 0, 0x10000, 4, .write = virtio_pci_config_writel, }, > + { 0, 0x10000, 1, .read = virtio_pci_config_readb, }, > + { 0, 0x10000, 2, .read = virtio_pci_config_readw, }, > + { 0, 0x10000, 4, .read = virtio_pci_config_readl, }, > + PORTIO_END_OF_LIST() > +}; > > - if (vdev->config_len) > - vdev->get_config(vdev, vdev->config); > -} > +static const MemoryRegionOps virtio_pci_config_ops = { > + .old_portio = virtio_portio, > + .endianness = DEVICE_LITTLE_ENDIAN, > +}; > > static void virtio_write_config(PCIDevice *pci_dev, uint32_t address, > uint32_t val, int len) > { > VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev); > + VirtIODevice *vdev = proxy->vdev; This variable isn't needed. I'll remove it. Regards, Anthony Liguori