On Wed, 27 Apr 2011 09:03:56 +0200, Jan Kiszka <jan.kis...@web.de> 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 <aneesh.ku...@linux.vnet.ibm.com> > > --- > > 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 <aneesh.ku...@linux.vnet.ibm.com> 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 <aneesh.ku...@linux.vnet.ibm.com> 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 <aligu...@us.ibm.com> + * Paul Brook <p...@codesourcery.com> + * + * 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