From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42907) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TftbM-00052s-UT for qemu-devel@nongnu.org; Tue, 04 Dec 2012 09:36:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TftbF-0000qP-C8 for qemu-devel@nongnu.org; Tue, 04 Dec 2012 09:36:00 -0500 Received: from greensocs.com ([87.106.252.221]:47840 helo=s15328186.onlinehome-server.info) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TftbF-0000pq-2N for qemu-devel@nongnu.org; Tue, 04 Dec 2012 09:35:53 -0500 From: fred.konrad@greensocs.com Date: Tue, 4 Dec 2012 15:35:36 +0100 Message-Id: <1354631742-4693-1-git-send-email-fred.konrad@greensocs.com> Subject: [Qemu-devel] [RFC PATCH v5 0/6] Virtio refactoring. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, aliguori@us.ibm.com, e.voevodin@samsung.com, mark.burton@greensocs.com, stefanha@redhat.com, cornelia.huck@de.ibm.com, afaerber@suse.de, fred.konrad@greensocs.com From: KONRAD Frederic I think the global structure is good as we discuted in the V4. So, I tried to start device refactoring, and also made some little fix. For the device refactoring, what are you suggesting for replacing VirtIOBindings ? Also, the virtio_pci_init_cb(..) currently use direct access to VirtIODevice, can I just implement functions in virtio-bus to access the fields ? ( eg : get/set_nvectors ). Finally, any idea on how I can make this patch-set for not breaking anything ? The virtio-blk refactoring breaks all virtio-blk devices. This patch-set is : * Introducing a virtio-bus which extends bus-state. * Implementing a virtio-pci-bus which extends virtio-bus. * Implementing a virtio-pci device which has a virtio-pci-bus. * Implementing virtio-device which extends device-states. * Implementing a virtio-blk which extends virtio-device. The first patch is a modification of qdev-monitor.c, it forces the function qbus_find_recursive(..) to return a non-full bus, and return an error if the desired bus ( with "bus=" option ) is full. It add a max_dev field to the bus_state structure. If max_dev=0 it has no limitation, if not the maximum amount of device connected to the bus is max_dev. Changes v4 -> v5: * use ERROR_CLASS_GENERIC_ERROR in place of creating a new error type for the maximum device limitation. ( Peter ) * Removed bus_in_use function. We assume that the virtio-bus is not in use, when plugin in. ( Peter ) * Added virtio_bus_destroy_device(). * Implemented the exit function of virtio-pci. * Implemented the init callback for virtio-pci ( must be modified, it still access vdev directly. ). * Implemented the exit callback for virtio-pci. * Started virtio-device refactoring. * Started virtio-blk refactoring. Changes v3 -> v4: * Added virtio-bus.o in Makefile.objs ( accidentally dropped from v3 ). * *const* TypeInfo in virtio-bus. * Introduced virtio-pci-bus. * Reintroduced virtio-pci. * Introduced virtio-device. * Started virtio-blk refactoring. * Added an error type in qerror.h for the "bus full" error. Changes v2 -> v3: * Added VirtioBusClass. * Renamed VirtioBus -> VirtioBusState. * Renamed qbus -> parent_obj. * Plug the device only in a non-full bus. Changes v1 -> v2: * All the little fix you suggest ( License, Debug printf, naming convention, ...) * Added get_virtio_device_id(), and remove the pci_id* from the VirtioBus structure. * Added virtio_bus_reset(). * Added cast macros VIRTIO_BUS. * Added virtio_bus_plug_device. * Replaced the old-style "bus->qbus" by BUS() macro. Fred. KONRAD Frederic (6): qdev : add a maximum device allowed field for the bus. virtio-bus : Introduce virtio-bus virtio-pci-bus : Introduce virtio-pci-bus. virtio-pci : Refactor virtio-pci device. virtio-device : Refactor virtio-device. virtio-blk : Refactor virtio-blk. hw/Makefile.objs | 1 + hw/qdev-core.h | 2 + hw/qdev-monitor.c | 11 ++++ hw/virtio-blk.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++-------- hw/virtio-blk.h | 4 ++ hw/virtio-bus.c | 111 +++++++++++++++++++++++++++++++++++ hw/virtio-bus.h | 76 ++++++++++++++++++++++++ hw/virtio-pci.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++ hw/virtio-pci.h | 33 ++++++++++- hw/virtio.c | 56 ++++++++++++++++++ hw/virtio.h | 29 ++++++++++ 11 files changed, 616 insertions(+), 26 deletions(-) create mode 100644 hw/virtio-bus.c create mode 100644 hw/virtio-bus.h -- 1.7.11.7