From patchwork Wed Apr 27 10:33:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 93027 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 7EFEEB6EEA for ; Wed, 27 Apr 2011 20:33:42 +1000 (EST) Received: from localhost ([::1]:51153 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QF23t-0006j8-Jl for incoming@patchwork.ozlabs.org; Wed, 27 Apr 2011 06:33:37 -0400 Received: from eggs.gnu.org ([140.186.70.92]:46950) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QF23h-0006ix-8Z for qemu-devel@nongnu.org; Wed, 27 Apr 2011 06:33:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QF23d-0001p2-0K for qemu-devel@nongnu.org; Wed, 27 Apr 2011 06:33:25 -0400 Received: from e28smtp03.in.ibm.com ([122.248.162.3]:49945) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QF23c-0001ou-2f for qemu-devel@nongnu.org; Wed, 27 Apr 2011 06:33:20 -0400 Received: from d28relay03.in.ibm.com (d28relay03.in.ibm.com [9.184.220.60]) by e28smtp03.in.ibm.com (8.14.4/8.13.1) with ESMTP id p3RAXFNd026057 for ; Wed, 27 Apr 2011 16:03:15 +0530 Received: from d28av04.in.ibm.com (d28av04.in.ibm.com [9.184.220.66]) by d28relay03.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p3RAXAf52261164 for ; Wed, 27 Apr 2011 16:03:15 +0530 Received: from d28av04.in.ibm.com (loopback [127.0.0.1]) by d28av04.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p3RG312u026103 for ; Thu, 28 Apr 2011 02:03:01 +1000 Received: from skywalker.linux.vnet.ibm.com ([9.77.207.106]) by d28av04.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p3RG2x2e025986; Thu, 28 Apr 2011 02:03:00 +1000 From: "Aneesh Kumar K.V" To: Jan Kiszka In-Reply-To: <4DB7BFDC.6050801@web.de> References: <1303887233-6668-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <4DB7BFDC.6050801@web.de> User-Agent: Notmuch/0.5-66-g70c5e2c (http://notmuchmail.org) Emacs/23.2.1 (i686-pc-linux-gnu) Date: Wed, 27 Apr 2011 16:03:07 +0530 Message-ID: <874o5kx9uk.fsf@linux.vnet.ibm.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 122.248.162.3 Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org Subject: Re: [Qemu-devel] [PATCH] virtio-9p: move 9p files around X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org On Wed, 27 Apr 2011 09:03:56 +0200, Jan Kiszka wrote: > On 2011-04-27 08:53, Aneesh Kumar K.V wrote: > > Now that we start adding more files related to 9pfs > > it make sense to move them to a separate directory > > > > Signed-off-by: Aneesh Kumar K.V > > --- > > Makefile.objs | 10 +++++++--- > > Makefile.target | 6 ++++-- > > configure | 2 ++ > > {hw => fsdev}/file-op-9p.h | 0 > > fsdev/qemu-fsdev.h | 2 +- > > hw/{ => 9pfs}/virtio-9p-debug.c | 0 > > hw/{ => 9pfs}/virtio-9p-debug.h | 0 > > hw/{ => 9pfs}/virtio-9p-local.c | 0 > > hw/{ => 9pfs}/virtio-9p-posix-acl.c | 2 +- > > hw/{ => 9pfs}/virtio-9p-xattr-user.c | 2 +- > > hw/{ => 9pfs}/virtio-9p-xattr.c | 2 +- > > hw/{ => 9pfs}/virtio-9p-xattr.h | 0 > > hw/{ => 9pfs}/virtio-9p.c | 0 > > hw/{ => 9pfs}/virtio-9p.h | 2 +- > > 14 files changed, 18 insertions(+), 10 deletions(-) > > rename {hw => fsdev}/file-op-9p.h (100%) > > rename hw/{ => 9pfs}/virtio-9p-debug.c (100%) > > rename hw/{ => 9pfs}/virtio-9p-debug.h (100%) > > rename hw/{ => 9pfs}/virtio-9p-local.c (100%) > > rename hw/{ => 9pfs}/virtio-9p-posix-acl.c (99%) > > rename hw/{ => 9pfs}/virtio-9p-xattr-user.c (98%) > > rename hw/{ => 9pfs}/virtio-9p-xattr.c (99%) > > rename hw/{ => 9pfs}/virtio-9p-xattr.h (100%) > > rename hw/{ => 9pfs}/virtio-9p.c (100%) > > That's a good chance to split up this file, move virtio_9p_get_config > into a separate one and build the large virtio-9p.c as part of hwlib > while keeping the new file target-specific. I've some hack for this > lying around, but now that you are already at it... > How about doing the below patch also and move all those device specific stuff to virtio-9p-device.c and rest in virtio-9p.c ? commit 9de1857114dac1dcd0c6399d91036c279373b2d0 Author: Aneesh Kumar K.V Date: Thu Oct 21 13:50:05 2010 +0530 virtio-9p: Move 9p device registration into virtio-9p.c This patch move the 9p device registration into its own file Signed-off-by: Aneesh Kumar K.V diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c index daade77..11e87a3 100644 --- a/hw/virtio-9p.c +++ b/hw/virtio-9p.c @@ -14,6 +14,7 @@ #include "virtio.h" #include "pc.h" #include "qemu_socket.h" +#include "virtio-pci.h" #include "virtio-9p.h" #include "fsdev/qemu-fsdev.h" #include "virtio-9p-debug.h" @@ -3741,3 +3742,37 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf) return &s->vdev; } + +static int virtio_9p_init_pci(PCIDevice *pci_dev) +{ + VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev); + VirtIODevice *vdev; + + vdev = virtio_9p_init(&pci_dev->qdev, &proxy->fsconf); + virtio_init_pci(proxy, vdev, + PCI_VENDOR_ID_REDHAT_QUMRANET, + 0x1009, + 0x2, + 0x00); + + return 0; +} + +static PCIDeviceInfo virtio_9p_info = { + .qdev.name = "virtio-9p-pci", + .qdev.size = sizeof(VirtIOPCIProxy), + .init = virtio_9p_init_pci, + .qdev.props = (Property[]) { + DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), + DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag), + DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id), + DEFINE_PROP_END_OF_LIST(), + } +}; + +static void virtio_9p_register_devices(void) +{ + pci_qdev_register(&virtio_9p_info); +} + +device_init(virtio_9p_register_devices) diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c index 729917d..f1377b1 100644 --- a/hw/virtio-pci.c +++ b/hw/virtio-pci.c @@ -25,6 +25,7 @@ #include "loader.h" #include "kvm.h" #include "blockdev.h" +#include "virtio-pci.h" /* from Linux's linux/virtio_pci.h */ @@ -90,26 +91,6 @@ */ #define wmb() do { } while (0) -/* PCI bindings. */ - -typedef struct { - PCIDevice pci_dev; - VirtIODevice *vdev; - uint32_t bugs; - uint32_t addr; - uint32_t class_code; - uint32_t nvectors; - BlockConf block; - NICConf nic; - uint32_t host_features; -#ifdef CONFIG_LINUX - V9fsConf fsconf; -#endif - /* Max. number of ports we can have for a the virtio-serial device */ - uint32_t max_virtserial_ports; - virtio_net_conf net; -} VirtIOPCIProxy; - /* virtio device */ static void virtio_pci_notify(void *opaque, uint16_t vector) @@ -518,7 +499,7 @@ static const VirtIOBindings virtio_pci_bindings = { .set_guest_notifiers = virtio_pci_set_guest_notifiers, }; -static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev, +void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev, uint16_t vendor, uint16_t device, uint16_t class_code, uint8_t pif) { @@ -677,23 +658,6 @@ static int virtio_balloon_init_pci(PCIDevice *pci_dev) return 0; } -#ifdef CONFIG_VIRTFS -static int virtio_9p_init_pci(PCIDevice *pci_dev) -{ - VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev); - VirtIODevice *vdev; - - vdev = virtio_9p_init(&pci_dev->qdev, &proxy->fsconf); - virtio_init_pci(proxy, vdev, - PCI_VENDOR_ID_REDHAT_QUMRANET, - 0x1009, - 0x2, - 0x00); - - return 0; -} -#endif - static PCIDeviceInfo virtio_info[] = { { .qdev.name = "virtio-blk-pci", @@ -752,20 +716,7 @@ static PCIDeviceInfo virtio_info[] = { DEFINE_PROP_END_OF_LIST(), }, .qdev.reset = virtio_pci_reset, - },{ -#ifdef CONFIG_VIRTFS - .qdev.name = "virtio-9p-pci", - .qdev.size = sizeof(VirtIOPCIProxy), - .init = virtio_9p_init_pci, - .qdev.props = (Property[]) { - DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), - DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag), - DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id), - DEFINE_PROP_END_OF_LIST(), - }, - }, { -#endif - /* end of list */ + }, { /* end of list */ } }; diff --git a/hw/virtio-pci.h b/hw/virtio-pci.h new file mode 100644 index 0000000..d9bf683 --- /dev/null +++ b/hw/virtio-pci.h @@ -0,0 +1,42 @@ +/* + * Virtio PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + */ + +#ifndef QEMU_VIRTIO_PCI_H +#define QEMU_VIRTIO_PCI_H + +#include "virtio-net.h" + +typedef struct { + PCIDevice pci_dev; + VirtIODevice *vdev; + uint32_t bugs; + uint32_t addr; + uint32_t class_code; + uint32_t nvectors; + BlockConf block; + NICConf nic; + uint32_t host_features; +#ifdef CONFIG_LINUX + V9fsConf fsconf; +#endif + /* Max. number of ports we can have for a the virtio-serial device */ + uint32_t max_virtserial_ports; + virtio_net_conf net; +} VirtIOPCIProxy; + +extern void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev, + uint16_t vendor, uint16_t device, + uint16_t class_code, uint8_t pif); + +#endif