Commit 191b45d0 authored by Dariusz Stojaczyk's avatar Dariusz Stojaczyk Committed by Jim Harris
Browse files

rte_virtio: remove interrupt-related callbacks



Even though config change intrrupt
handlers are still required, we need
them only for real PCI devices.
They should be handled internally
in vhost_pci.

However, current QEMU implementation
doesn't ever change SCSI PCI config,
so no interrupt handler is required
for now.

We might want to add it together with
Virtio-Blk, as PCI config will change
there with each resize.

Change-Id: Iece024cd31c788857ce900385e289758ca3f5948
Signed-off-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385304


Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
parent 6a026a1e
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
@@ -201,33 +201,6 @@ modern_set_status(struct virtio_dev *dev, uint8_t status)
	spdk_mmio_write_1(&hw->common_cfg->device_status, status);
}

static uint8_t
modern_get_isr(struct virtio_dev *dev)
{
	struct virtio_hw *hw = virtio_dev_get_hw(dev);

	return spdk_mmio_read_1(hw->isr);
}

static uint16_t
modern_set_config_irq(struct virtio_dev *dev, uint16_t vec)
{
	struct virtio_hw *hw = virtio_dev_get_hw(dev);

	spdk_mmio_write_2(&hw->common_cfg->msix_config, vec);
	return spdk_mmio_read_2(&hw->common_cfg->msix_config);
}

static uint16_t
modern_set_queue_irq(struct virtio_dev *dev, struct virtqueue *vq, uint16_t vec)
{
	struct virtio_hw *hw = virtio_dev_get_hw(dev);

	spdk_mmio_write_2(&hw->common_cfg->queue_select, vq->vq_queue_index);
	spdk_mmio_write_2(&hw->common_cfg->queue_msix_vector, vec);
	return spdk_mmio_read_2(&hw->common_cfg->queue_msix_vector);
}

static uint16_t
modern_get_queue_num(struct virtio_dev *dev, uint16_t queue_id)
{
@@ -308,10 +281,7 @@ const struct virtio_pci_ops modern_ops = {
	.set_status	= modern_set_status,
	.get_features	= modern_get_features,
	.set_features	= modern_set_features,
	.get_isr	= modern_get_isr,
	.set_config_irq	= modern_set_config_irq,
	.free_vdev	= free_virtio_hw,
	.set_queue_irq  = modern_set_queue_irq,
	.get_queue_num	= modern_get_queue_num,
	.setup_queue	= modern_setup_queue,
	.del_queue	= modern_del_queue,
@@ -357,12 +327,6 @@ vtpci_get_status(struct virtio_dev *dev)
	return vtpci_ops(dev)->get_status(dev);
}

uint8_t
vtpci_isr(struct virtio_dev *dev)
{
	return vtpci_ops(dev)->get_isr(dev);
}

static void *
get_cfg_addr(struct virtio_hw *hw, struct virtio_pci_cap *cap)
{
+0 −8
Original line number Diff line number Diff line
@@ -74,14 +74,8 @@ struct virtio_pci_ops {
	 */
	int (*set_features)(struct virtio_dev *vdev, uint64_t features);

	uint8_t (*get_isr)(struct virtio_dev *hw);

	uint16_t (*set_config_irq)(struct virtio_dev *hw, uint16_t vec);

	/** Deinit and free virtio device */
	void (*free_vdev)(struct virtio_dev *vdev);
	uint16_t (*set_queue_irq)(struct virtio_dev *hw, struct virtqueue *vq,
				  uint16_t vec);

	uint16_t (*get_queue_num)(struct virtio_dev *hw, uint16_t queue_id);
	int (*setup_queue)(struct virtio_dev *hw, struct virtqueue *vq);
@@ -156,8 +150,6 @@ void vtpci_write_dev_config(struct virtio_dev *, size_t, const void *, int);

void vtpci_read_dev_config(struct virtio_dev *, size_t, void *, int);

uint8_t vtpci_isr(struct virtio_dev *);

const struct virtio_pci_ops *vtpci_ops(struct virtio_dev *dev);

void vtpci_deinit(uint32_t id);
+0 −28
Original line number Diff line number Diff line
@@ -119,31 +119,6 @@ virtio_user_set_features(struct virtio_dev *vdev, uint64_t features)
	return 0;
}

static uint8_t
virtio_user_get_isr(struct virtio_dev *vdev)
{
	/* rxq interrupts and config interrupt are separated in virtio-user,
	 * here we only report config change.
	 */
	return VIRTIO_PCI_ISR_CONFIG;
}

static uint16_t
virtio_user_set_config_irq(struct virtio_dev *vdev,
			   uint16_t vec)
{
	return 0;
}

static uint16_t
virtio_user_set_queue_irq(struct virtio_dev *vdev,
			  struct virtqueue *vq,
			  uint16_t vec)
{
	/* pretend we have done that */
	return vec;
}

/* This function is to get the queue size, aka, number of descs, of a specified
 * queue. Different with the VHOST_USER_GET_QUEUE_NUM, which is used to get the
 * max supported queues.
@@ -268,10 +243,7 @@ const struct virtio_pci_ops virtio_user_ops = {
	.set_status	= virtio_user_set_status,
	.get_features	= virtio_user_get_features,
	.set_features	= virtio_user_set_features,
	.get_isr	= virtio_user_get_isr,
	.set_config_irq	= virtio_user_set_config_irq,
	.free_vdev	= virtio_user_free,
	.set_queue_irq	= virtio_user_set_queue_irq,
	.get_queue_num	= virtio_user_get_queue_num,
	.setup_queue	= virtio_user_setup_queue,
	.del_queue	= virtio_user_del_queue,