mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-06-08 18:14:53 +00:00
dm: virtio: remove hv_caps from virtio_ops
currently, each virtio device has their own virtio_ops implementation.
Take virtio-blk for example:
static struct virtio_ops virtio_blk_ops = {
"virtio_blk",
1,
sizeof(struct virtio_blk_config),
virtio_blk_reset,
virtio_blk_notify,
virtio_blk_cfgread,
virtio_blk_cfgwrite,
NULL,
NULL,
VIRTIO_BLK_S_HOSTCAPS,
};
If start DM with two virtio-blk, this global variable will be
assigined to two virtio-blk instances. Changing hv_caps for one
instance will affect others. But different instances may need
different capabilities.
To support this requirement, we suggest to move hv_caps to
virtio_base structure, and each instance can return their own
capabilities.
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
This commit is contained in:
@@ -168,7 +168,6 @@ static struct virtio_ops virtio_net_ops = {
|
||||
virtio_net_cfgwrite, /* write PCI config */
|
||||
virtio_net_neg_features, /* apply negotiated features */
|
||||
NULL, /* called on guest set status */
|
||||
VIRTIO_NET_S_HOSTCAPS, /* our capabilities */
|
||||
};
|
||||
|
||||
static struct ether_addr *
|
||||
@@ -914,6 +913,7 @@ virtio_net_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
|
||||
|
||||
virtio_linkup(&net->base, &virtio_net_ops, net, dev, net->queues);
|
||||
net->base.mtx = &net->mtx;
|
||||
net->base.device_caps = VIRTIO_NET_S_HOSTCAPS;
|
||||
|
||||
net->queues[VIRTIO_NET_RXQ].qsize = VIRTIO_NET_RINGSZ;
|
||||
net->queues[VIRTIO_NET_RXQ].notify = virtio_net_ping_rxq;
|
||||
|
||||
Reference in New Issue
Block a user