From 191b45d0560cabe5cc1504cbd5c6906a8c2d3558 Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Wed, 1 Nov 2017 14:41:54 +0100 Subject: [PATCH] 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: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/385304 Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris Tested-by: SPDK Automated Test System --- lib/bdev/virtio/rte_virtio/virtio_pci.c | 36 ------------------------ lib/bdev/virtio/rte_virtio/virtio_pci.h | 8 ------ lib/bdev/virtio/rte_virtio/virtio_user.c | 28 ------------------ 3 files changed, 72 deletions(-) diff --git a/lib/bdev/virtio/rte_virtio/virtio_pci.c b/lib/bdev/virtio/rte_virtio/virtio_pci.c index 952c30c5d..35221d0a1 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_pci.c +++ b/lib/bdev/virtio/rte_virtio/virtio_pci.c @@ -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) { diff --git a/lib/bdev/virtio/rte_virtio/virtio_pci.h b/lib/bdev/virtio/rte_virtio/virtio_pci.h index 397a89655..5e00b38a7 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_pci.h +++ b/lib/bdev/virtio/rte_virtio/virtio_pci.h @@ -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); diff --git a/lib/bdev/virtio/rte_virtio/virtio_user.c b/lib/bdev/virtio/rte_virtio/virtio_user.c index c5940d7ff..ac5c0b33d 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_user.c +++ b/lib/bdev/virtio/rte_virtio/virtio_user.c @@ -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,