diff --git a/lib/bdev/virtio/bdev_virtio.c b/lib/bdev/virtio/bdev_virtio.c index 3234bf18a..a5c678a28 100644 --- a/lib/bdev/virtio/bdev_virtio.c +++ b/lib/bdev/virtio/bdev_virtio.c @@ -506,7 +506,7 @@ bdev_virtio_initialize(void) } /* TODO check rc, add virtio_dev_deinit() */ - eth_virtio_dev_init(hw); + virtio_init_device(hw, VIRTIO_PMD_DEFAULT_GUEST_FEATURES); virtio_dev_start(hw); base->hw = hw; diff --git a/lib/bdev/virtio/rte_virtio/virtio_dev.c b/lib/bdev/virtio/rte_virtio/virtio_dev.c index 4f1a3955a..ffe9d3b61 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_dev.c +++ b/lib/bdev/virtio/rte_virtio/virtio_dev.c @@ -294,7 +294,7 @@ virtio_negotiate_features(struct virtio_hw *hw, uint64_t req_features) } /* reset device and renegotiate features if needed */ -static int +int virtio_init_device(struct virtio_hw *hw, uint64_t req_features) { int ret; @@ -324,40 +324,6 @@ virtio_init_device(struct virtio_hw *hw, uint64_t req_features) return 0; } -static void -virtio_set_vtpci_ops(struct virtio_hw *hw) -{ - VTPCI_OPS(hw) = &virtio_user_ops; -} - -/* - * This function is based on probe() function in virtio_pci.c - * It returns 0 on success. - */ -int -eth_virtio_dev_init(struct virtio_hw *hw) -{ - int ret; - - if (rte_eal_process_type() == RTE_PROC_SECONDARY) { - virtio_set_vtpci_ops(hw); - return 0; - } - - if (!hw->virtio_user_dev) { - ret = vtpci_init(hw->pci_dev, hw); - if (ret) - return ret; - } - - /* reset device and negotiate default features */ - ret = virtio_init_device(hw, VIRTIO_PMD_DEFAULT_GUEST_FEATURES); - if (ret < 0) - return ret; - - return 0; -} - int virtio_dev_start(struct virtio_hw *hw) { @@ -392,7 +358,18 @@ static struct virtio_hw *g_pci_hw = NULL; struct virtio_hw * get_pci_virtio_hw(void) { + int ret; + printf("%s[%d] %p\n", __func__, __LINE__, g_pci_hw); + if (rte_eal_process_type() == RTE_PROC_SECONDARY) { + PMD_DRV_LOG(ERR, "rte secondary process support is not implemented yet"); + return NULL; + } + + ret = vtpci_init(g_pci_hw->pci_dev, g_pci_hw); + if (ret) + return NULL; + return g_pci_hw; } diff --git a/lib/bdev/virtio/rte_virtio/virtio_dev.h b/lib/bdev/virtio/rte_virtio/virtio_dev.h index 15c2441b4..880e8fa49 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_dev.h +++ b/lib/bdev/virtio/rte_virtio/virtio_dev.h @@ -66,7 +66,7 @@ uint16_t virtio_recv_pkts(struct virtqueue *vq, struct virtio_req **reqs, uint16_t virtio_xmit_pkts(struct virtqueue *vq, struct virtio_req *req); -int eth_virtio_dev_init(struct virtio_hw *hw); +int virtio_init_device(struct virtio_hw *hw, uint64_t req_features); int virtio_dev_start(struct virtio_hw *hw); struct virtio_hw *get_pci_virtio_hw(void);