Add logging to vfio code 17/15017/2
authorDamjan Marion <damarion@cisco.com>
Thu, 27 Sep 2018 12:54:49 +0000 (14:54 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 27 Sep 2018 18:35:35 +0000 (18:35 +0000)
Change-Id: Iacdff0a5006a0617e3c9559ce7b258f26e256abb
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/linux/vfio.c
src/vlib/linux/vfio.h

index 956b4ab..53eed8b 100644 (file)
@@ -38,6 +38,7 @@ static int
 map_regions (vlib_main_t * vm, int fd)
 {
   vlib_physmem_main_t *vpm = &physmem_main;
+  linux_vfio_main_t *lvm = &vfio_main;
   vlib_physmem_region_t *pr;
   struct vfio_iommu_type1_dma_map dm = { 0 };
   int i;
@@ -54,8 +55,17 @@ map_regions (vlib_main_t * vm, int fd)
          dm.vaddr = pointer_to_uword (pr->mem) + (i << pr->log2_page_size);
          dm.size = 1 << pr->log2_page_size;
          dm.iova = dm.vaddr;
+         vlib_log_debug (lvm->log_default, "map DMA va:0x%lx iova:%lx "
+                         "size:0x%lx", dm.vaddr, dm.iova, dm.size);
+
          if ((rv = ioctl (fd, VFIO_IOMMU_MAP_DMA, &dm)))
-           return rv;
+           {
+             vlib_log_err (lvm->log_default, "map DMA va:0x%lx iova:%lx "
+                           "size:0x%lx failed, error %s (errno %d)",
+                           dm.vaddr, dm.iova, dm.size, strerror (errno),
+                           errno);
+             return rv;
+           }
         }
     });
   /* *INDENT-ON* */
@@ -220,6 +230,8 @@ linux_vfio_init (vlib_main_t * vm)
   linux_vfio_main_t *lvm = &vfio_main;
   int fd;
 
+  lvm->log_default = vlib_log_register_class ("vfio", 0);
+
   fd = open ("/dev/vfio/vfio", O_RDWR);
 
   /* check if iommu is available */
@@ -233,9 +245,15 @@ linux_vfio_init (vlib_main_t * vm)
       else
        {
          if (ioctl (fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU) == 1)
-           lvm->flags |= LINUX_VFIO_F_HAVE_IOMMU;
+           {
+             lvm->flags |= LINUX_VFIO_F_HAVE_IOMMU;
+             vlib_log_info (lvm->log_default, "type 1 IOMMU mode supported");
+           }
          if (ioctl (fd, VFIO_CHECK_EXTENSION, VFIO_NOIOMMU_IOMMU) == 1)
-           lvm->flags |= LINUX_VFIO_F_HAVE_NOIOMMU;
+           {
+             lvm->flags |= LINUX_VFIO_F_HAVE_NOIOMMU;
+             vlib_log_info (lvm->log_default, "NOIOMMU mode supported");
+           }
        }
     }
 
index 82490d8..7fe3ef8 100644 (file)
@@ -39,6 +39,8 @@ typedef struct
   /* iommu group pool index by group id  hash */
   uword *iommu_pool_index_by_group;
 
+  /* logging */
+  vlib_log_class_t log_default;
 } linux_vfio_main_t;
 
 extern linux_vfio_main_t vfio_main;