X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fvhost%2Fiotlb.c;h=5a5ba8b82a61b6b92eefb34ea11e2176338d80f1;hb=a2dfcd1ff609f5a4fd3b65774618a35c5c9f73c6;hp=82bdb84526ea29c9b3d5b785870e70125b7826e5;hpb=c47d7b90a1911202c131ccf3d3f430e441621e5e;p=dpdk.git diff --git a/lib/vhost/iotlb.c b/lib/vhost/iotlb.c index 82bdb84526..5a5ba8b82a 100644 --- a/lib/vhost/iotlb.c +++ b/lib/vhost/iotlb.c @@ -62,7 +62,7 @@ vhost_user_iotlb_pending_miss(struct vhost_virtqueue *vq, uint64_t iova, } void -vhost_user_iotlb_pending_insert(struct vhost_virtqueue *vq, +vhost_user_iotlb_pending_insert(struct virtio_net *dev, struct vhost_virtqueue *vq, uint64_t iova, uint8_t perm) { struct vhost_iotlb_entry *node; @@ -70,14 +70,18 @@ vhost_user_iotlb_pending_insert(struct vhost_virtqueue *vq, ret = rte_mempool_get(vq->iotlb_pool, (void **)&node); if (ret) { - VHOST_LOG_CONFIG(DEBUG, "IOTLB pool empty, clear entries\n"); + VHOST_LOG_CONFIG(DEBUG, + "(%s) IOTLB pool %s empty, clear entries for pending insertion\n", + dev->ifname, vq->iotlb_pool->name); if (!TAILQ_EMPTY(&vq->iotlb_pending_list)) vhost_user_iotlb_pending_remove_all(vq); else vhost_user_iotlb_cache_random_evict(vq); ret = rte_mempool_get(vq->iotlb_pool, (void **)&node); if (ret) { - VHOST_LOG_CONFIG(ERR, "IOTLB pool still empty, failure\n"); + VHOST_LOG_CONFIG(ERR, + "(%s) IOTLB pool %s still empty, pending insertion failure\n", + dev->ifname, vq->iotlb_pool->name); return; } } @@ -156,22 +160,27 @@ vhost_user_iotlb_cache_random_evict(struct vhost_virtqueue *vq) } void -vhost_user_iotlb_cache_insert(struct vhost_virtqueue *vq, uint64_t iova, - uint64_t uaddr, uint64_t size, uint8_t perm) +vhost_user_iotlb_cache_insert(struct virtio_net *dev, struct vhost_virtqueue *vq, + uint64_t iova, uint64_t uaddr, + uint64_t size, uint8_t perm) { struct vhost_iotlb_entry *node, *new_node; int ret; ret = rte_mempool_get(vq->iotlb_pool, (void **)&new_node); if (ret) { - VHOST_LOG_CONFIG(DEBUG, "IOTLB pool empty, clear entries\n"); + VHOST_LOG_CONFIG(DEBUG, + "(%s) IOTLB pool %s empty, clear entries for cache insertion\n", + dev->ifname, vq->iotlb_pool->name); if (!TAILQ_EMPTY(&vq->iotlb_list)) vhost_user_iotlb_cache_random_evict(vq); else vhost_user_iotlb_pending_remove_all(vq); ret = rte_mempool_get(vq->iotlb_pool, (void **)&new_node); if (ret) { - VHOST_LOG_CONFIG(ERR, "IOTLB pool still empty, failure\n"); + VHOST_LOG_CONFIG(ERR, + "(%s) IOTLB pool %s still empty, cache insertion failed\n", + dev->ifname, vq->iotlb_pool->name); return; } } @@ -311,12 +320,11 @@ vhost_user_iotlb_init(struct virtio_net *dev, int vq_index) snprintf(pool_name, sizeof(pool_name), "iotlb_%u_%d_%d", getpid(), dev->vid, vq_index); - VHOST_LOG_CONFIG(DEBUG, "IOTLB cache name: %s\n", pool_name); + VHOST_LOG_CONFIG(DEBUG, "(%s) IOTLB cache name: %s\n", dev->ifname, pool_name); /* If already created, free it and recreate */ vq->iotlb_pool = rte_mempool_lookup(pool_name); - if (vq->iotlb_pool) - rte_mempool_free(vq->iotlb_pool); + rte_mempool_free(vq->iotlb_pool); vq->iotlb_pool = rte_mempool_create(pool_name, IOTLB_CACHE_SIZE, sizeof(struct vhost_iotlb_entry), 0, @@ -324,9 +332,8 @@ vhost_user_iotlb_init(struct virtio_net *dev, int vq_index) RTE_MEMPOOL_F_NO_CACHE_ALIGN | RTE_MEMPOOL_F_SP_PUT); if (!vq->iotlb_pool) { - VHOST_LOG_CONFIG(ERR, - "Failed to create IOTLB cache pool (%s)\n", - pool_name); + VHOST_LOG_CONFIG(ERR, "(%s) Failed to create IOTLB cache pool %s\n", + dev->ifname, pool_name); return -1; }