mirror of https://github.com/xqemu/xqemu.git
virtio-9p: remove PCI dependencies from hw/9pfs/
Also move the 9p.h file to 9pfs/virtio-9p-device.h, for consistency with the corresponding .c file. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7e6b14dfb5
commit
60653b28f5
|
@ -14,9 +14,9 @@
|
||||||
#include "hw/virtio.h"
|
#include "hw/virtio.h"
|
||||||
#include "hw/pc.h"
|
#include "hw/pc.h"
|
||||||
#include "qemu/sockets.h"
|
#include "qemu/sockets.h"
|
||||||
#include "hw/virtio-pci.h"
|
|
||||||
#include "virtio-9p.h"
|
#include "virtio-9p.h"
|
||||||
#include "fsdev/qemu-fsdev.h"
|
#include "fsdev/qemu-fsdev.h"
|
||||||
|
#include "virtio-9p-device.h"
|
||||||
#include "virtio-9p-xattr.h"
|
#include "virtio-9p-xattr.h"
|
||||||
#include "virtio-9p-coth.h"
|
#include "virtio-9p-coth.h"
|
||||||
|
|
||||||
|
@ -136,54 +136,3 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf)
|
||||||
|
|
||||||
return &s->vdev;
|
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);
|
|
||||||
vdev->nvectors = proxy->nvectors;
|
|
||||||
virtio_init_pci(proxy, vdev);
|
|
||||||
/* make the actual value visible */
|
|
||||||
proxy->nvectors = vdev->nvectors;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Property virtio_9p_properties[] = {
|
|
||||||
DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
|
|
||||||
DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
|
|
||||||
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_class_init(ObjectClass *klass, void *data)
|
|
||||||
{
|
|
||||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
|
||||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
|
||||||
|
|
||||||
k->init = virtio_9p_init_pci;
|
|
||||||
k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
|
|
||||||
k->device_id = PCI_DEVICE_ID_VIRTIO_9P;
|
|
||||||
k->revision = VIRTIO_PCI_ABI_VERSION;
|
|
||||||
k->class_id = 0x2;
|
|
||||||
dc->props = virtio_9p_properties;
|
|
||||||
dc->reset = virtio_pci_reset;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const TypeInfo virtio_9p_info = {
|
|
||||||
.name = "virtio-9p-pci",
|
|
||||||
.parent = TYPE_PCI_DEVICE,
|
|
||||||
.instance_size = sizeof(VirtIOPCIProxy),
|
|
||||||
.class_init = virtio_9p_class_init,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void virtio_9p_register_types(void)
|
|
||||||
{
|
|
||||||
type_register_static(&virtio_9p_info);
|
|
||||||
virtio_9p_set_fd_limit();
|
|
||||||
}
|
|
||||||
|
|
||||||
type_init(virtio_9p_register_types)
|
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef QEMU_9P_H
|
#ifndef QEMU_VIRTIO_9P_DEVICE_H
|
||||||
#define QEMU_9P_H
|
#define QEMU_VIRTIO_9P_DEVICE_H
|
||||||
|
|
||||||
typedef struct V9fsConf
|
typedef struct V9fsConf
|
||||||
{
|
{
|
|
@ -14,7 +14,6 @@
|
||||||
#include "hw/virtio.h"
|
#include "hw/virtio.h"
|
||||||
#include "hw/pc.h"
|
#include "hw/pc.h"
|
||||||
#include "qemu/sockets.h"
|
#include "qemu/sockets.h"
|
||||||
#include "hw/virtio-pci.h"
|
|
||||||
#include "virtio-9p.h"
|
#include "virtio-9p.h"
|
||||||
#include "fsdev/qemu-fsdev.h"
|
#include "fsdev/qemu-fsdev.h"
|
||||||
#include "virtio-9p-xattr.h"
|
#include "virtio-9p-xattr.h"
|
||||||
|
@ -3269,7 +3268,7 @@ void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
|
||||||
free_pdu(s, pdu);
|
free_pdu(s, pdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
void virtio_9p_set_fd_limit(void)
|
static void __attribute__((__constructor__)) virtio_9p_set_fd_limit(void)
|
||||||
{
|
{
|
||||||
struct rlimit rlim;
|
struct rlimit rlim;
|
||||||
if (getrlimit(RLIMIT_NOFILE, &rlim) < 0) {
|
if (getrlimit(RLIMIT_NOFILE, &rlim) < 0) {
|
||||||
|
|
|
@ -389,7 +389,6 @@ static inline uint8_t v9fs_request_cancelled(V9fsPDU *pdu)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq);
|
extern void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq);
|
||||||
extern void virtio_9p_set_fd_limit(void);
|
|
||||||
extern void v9fs_reclaim_fd(V9fsPDU *pdu);
|
extern void v9fs_reclaim_fd(V9fsPDU *pdu);
|
||||||
extern void v9fs_path_init(V9fsPath *path);
|
extern void v9fs_path_init(V9fsPath *path);
|
||||||
extern void v9fs_path_free(V9fsPath *path);
|
extern void v9fs_path_free(V9fsPath *path);
|
||||||
|
|
|
@ -255,7 +255,7 @@ static void virtio_pci_stop_ioeventfd(VirtIOPCIProxy *proxy)
|
||||||
proxy->ioeventfd_started = false;
|
proxy->ioeventfd_started = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void virtio_pci_reset(DeviceState *d)
|
static void virtio_pci_reset(DeviceState *d)
|
||||||
{
|
{
|
||||||
VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
|
VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
|
||||||
virtio_pci_stop_ioeventfd(proxy);
|
virtio_pci_stop_ioeventfd(proxy);
|
||||||
|
@ -1313,6 +1313,51 @@ static const TypeInfo virtio_scsi_info = {
|
||||||
.class_init = virtio_scsi_class_init,
|
.class_init = virtio_scsi_class_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#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);
|
||||||
|
vdev->nvectors = proxy->nvectors;
|
||||||
|
virtio_init_pci(proxy, vdev);
|
||||||
|
/* make the actual value visible */
|
||||||
|
proxy->nvectors = vdev->nvectors;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Property virtio_9p_properties[] = {
|
||||||
|
DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
|
||||||
|
DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
|
||||||
|
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_class_init(ObjectClass *klass, void *data)
|
||||||
|
{
|
||||||
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
|
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||||
|
|
||||||
|
k->init = virtio_9p_init_pci;
|
||||||
|
k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
|
||||||
|
k->device_id = PCI_DEVICE_ID_VIRTIO_9P;
|
||||||
|
k->revision = VIRTIO_PCI_ABI_VERSION;
|
||||||
|
k->class_id = 0x2;
|
||||||
|
dc->props = virtio_9p_properties;
|
||||||
|
dc->reset = virtio_pci_reset;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const TypeInfo virtio_9p_info = {
|
||||||
|
.name = "virtio-9p-pci",
|
||||||
|
.parent = TYPE_PCI_DEVICE,
|
||||||
|
.instance_size = sizeof(VirtIOPCIProxy),
|
||||||
|
.class_init = virtio_9p_class_init,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* virtio-pci: This is the PCIDevice which has a virtio-pci-bus.
|
* virtio-pci: This is the PCIDevice which has a virtio-pci-bus.
|
||||||
*/
|
*/
|
||||||
|
@ -1475,6 +1520,9 @@ static void virtio_pci_register_types(void)
|
||||||
type_register_static(&virtio_rng_info);
|
type_register_static(&virtio_rng_info);
|
||||||
type_register_static(&virtio_pci_bus_info);
|
type_register_static(&virtio_pci_bus_info);
|
||||||
type_register_static(&virtio_pci_info);
|
type_register_static(&virtio_pci_info);
|
||||||
|
#ifdef CONFIG_VIRTFS
|
||||||
|
type_register_static(&virtio_9p_info);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(virtio_pci_register_types)
|
type_init(virtio_pci_register_types)
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "virtio-serial.h"
|
#include "virtio-serial.h"
|
||||||
#include "virtio-scsi.h"
|
#include "virtio-scsi.h"
|
||||||
#include "virtio-bus.h"
|
#include "virtio-bus.h"
|
||||||
|
#include "9pfs/virtio-9p-device.h"
|
||||||
|
|
||||||
typedef struct VirtIOPCIProxy VirtIOPCIProxy;
|
typedef struct VirtIOPCIProxy VirtIOPCIProxy;
|
||||||
|
|
||||||
|
@ -90,7 +91,6 @@ struct VirtIOPCIProxy {
|
||||||
};
|
};
|
||||||
|
|
||||||
void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev);
|
void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev);
|
||||||
void virtio_pci_reset(DeviceState *d);
|
|
||||||
void virtio_pci_bus_new(VirtioBusState *bus, VirtIOPCIProxy *dev);
|
void virtio_pci_bus_new(VirtioBusState *bus, VirtIOPCIProxy *dev);
|
||||||
|
|
||||||
/* Virtio ABI version, if we increment this, we break the guest driver. */
|
/* Virtio ABI version, if we increment this, we break the guest driver. */
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include "sysemu/sysemu.h"
|
#include "sysemu/sysemu.h"
|
||||||
#include "qemu/event_notifier.h"
|
#include "qemu/event_notifier.h"
|
||||||
#ifdef CONFIG_VIRTFS
|
#ifdef CONFIG_VIRTFS
|
||||||
#include "9p.h"
|
#include "9pfs/virtio-9p-device.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* from Linux's linux/virtio_config.h */
|
/* from Linux's linux/virtio_config.h */
|
||||||
|
|
Loading…
Reference in New Issue