diff --git a/src/vnet/devices/virtio/cli.c b/src/vnet/devices/virtio/cli.c
index dbc2ad2..7291f17 100644
--- a/src/vnet/devices/virtio/cli.c
+++ b/src/vnet/devices/virtio/cli.c
@@ -186,8 +186,6 @@
 clib_error_t *
 virtio_pci_cli_init (vlib_main_t * vm)
 {
-  virtio_main_t *vim = &virtio_main;
-  vim->log_default = vlib_log_register_class ("virtio-pci", 0);
   return 0;
 }
 
diff --git a/src/vnet/devices/virtio/device.c b/src/vnet/devices/virtio/device.c
index e560c29..f9a1677 100644
--- a/src/vnet/devices/virtio/device.c
+++ b/src/vnet/devices/virtio/device.c
@@ -46,27 +46,6 @@
 #undef _
 };
 
-#ifndef CLIB_MARCH_VARIANT
-u8 *
-format_virtio_device_name (u8 * s, va_list * args)
-{
-  u32 dev_instance = va_arg (*args, u32);
-  virtio_main_t *mm = &virtio_main;
-  virtio_if_t *vif = pool_elt_at_index (mm->interfaces, dev_instance);
-
-  if (vif->type == VIRTIO_IF_TYPE_TAP)
-    s = format (s, "tap%u", vif->id);
-  else if (vif->type == VIRTIO_IF_TYPE_PCI)
-    s = format (s, "virtio-%x/%x/%x/%x", vif->pci_addr.domain,
-		vif->pci_addr.bus, vif->pci_addr.slot,
-		vif->pci_addr.function);
-  else
-    s = format (s, "virtio-%lu", vif->dev_instance);
-
-  return s;
-}
-#endif /* CLIB_MARCH_VARIANT */
-
 static u8 *
 format_virtio_device (u8 * s, va_list * args)
 {
diff --git a/src/vnet/devices/virtio/format.c b/src/vnet/devices/virtio/format.c
new file mode 100644
index 0000000..729635d
--- /dev/null
+++ b/src/vnet/devices/virtio/format.c
@@ -0,0 +1,66 @@
+/*
+ *------------------------------------------------------------------
+ * Copyright (c) 2018 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *------------------------------------------------------------------
+ */
+#include <vlib/vlib.h>
+#include <vlib/unix/unix.h>
+#include <vlib/pci/pci.h>
+#include <vnet/ethernet/ethernet.h>
+#include <vnet/ip/ip4_packet.h>
+#include <vnet/ip/ip6_packet.h>
+#include <vnet/devices/virtio/virtio.h>
+#include <vnet/devices/virtio/pci.h>
+
+u8 *
+format_virtio_device_name (u8 * s, va_list * args)
+{
+  u32 dev_instance = va_arg (*args, u32);
+  virtio_main_t *mm = &virtio_main;
+  virtio_if_t *vif = pool_elt_at_index (mm->interfaces, dev_instance);
+
+  if (vif->type == VIRTIO_IF_TYPE_TAP)
+    s = format (s, "tap%u", vif->id);
+  else if (vif->type == VIRTIO_IF_TYPE_PCI)
+    s = format (s, "virtio-%x/%x/%x/%x", vif->pci_addr.domain,
+		vif->pci_addr.bus, vif->pci_addr.slot,
+		vif->pci_addr.function);
+  else
+    s = format (s, "virtio-%lu", vif->dev_instance);
+
+  return s;
+}
+
+u8 *
+format_virtio_log_name (u8 * s, va_list * args)
+{
+  virtio_if_t *vif = va_arg (*args, virtio_if_t *);
+
+  if (vif->type == VIRTIO_IF_TYPE_TAP)
+    s = format (s, "tap%u", vif->id);
+  else if (vif->type == VIRTIO_IF_TYPE_PCI)
+    s = format (s, "%U", format_vlib_pci_addr, &vif->pci_addr);
+  else
+    s = format (s, "virtio-%lu", vif->dev_instance);
+
+  return s;
+}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/src/vnet/devices/virtio/pci.c b/src/vnet/devices/virtio/pci.c
index d83df99..1f569ac 100644
--- a/src/vnet/devices/virtio/pci.c
+++ b/src/vnet/devices/virtio/pci.c
@@ -247,7 +247,6 @@
 static clib_error_t *
 virtio_pci_get_max_virtqueue_pairs (vlib_main_t * vm, virtio_if_t * vif)
 {
-  virtio_main_t *vim = &virtio_main;
   virtio_net_config_t config;
   clib_error_t *error = 0;
   u16 max_queue_pairs = 1;
@@ -261,7 +260,7 @@
       max_queue_pairs = config.max_virtqueue_pairs;
     }
 
-  virtio_log_debug (vim, vif, "max queue pair is %x", max_queue_pairs);
+  virtio_log_debug (vif, "max queue pair is %x", max_queue_pairs);
   if (max_queue_pairs < 1 || max_queue_pairs > 0x8000)
     return clib_error_return (error, "max queue pair is %x", max_queue_pairs);
 
@@ -463,7 +462,6 @@
 virtio_pci_send_ctrl_msg (vlib_main_t * vm, virtio_if_t * vif,
 			  struct virtio_ctrl_msg *data, u32 len)
 {
-  virtio_main_t *vim = &virtio_main;
   virtio_vring_t *vring = vif->cxq_vring;
   virtio_net_ctrl_ack status = VIRTIO_NET_ERR;
   struct virtio_ctrl_msg result;
@@ -550,7 +548,7 @@
   CLIB_MEMORY_BARRIER ();
   clib_memcpy (&result, vlib_buffer_get_current (b),
 	       sizeof (struct virtio_ctrl_msg));
-  virtio_log_debug (vim, vif, "ctrl-queue: status %u", result.status);
+  virtio_log_debug (vif, "ctrl-queue: status %u", result.status);
   status = result.status;
   vlib_buffer_free (vm, &buffer_index, 1);
   return status;
@@ -559,7 +557,6 @@
 static int
 virtio_pci_enable_gso (vlib_main_t * vm, virtio_if_t * vif)
 {
-  virtio_main_t *vim = &virtio_main;
   struct virtio_ctrl_msg gso_hdr;
   virtio_net_ctrl_ack status = VIRTIO_NET_ERR;
 
@@ -573,7 +570,7 @@
   clib_memcpy (gso_hdr.data, &offloads, sizeof (offloads));
 
   status = virtio_pci_send_ctrl_msg (vm, vif, &gso_hdr, sizeof (offloads));
-  virtio_log_debug (vim, vif, "enable gso");
+  virtio_log_debug (vif, "enable gso");
   return status;
 }
 
@@ -581,7 +578,6 @@
 virtio_pci_enable_multiqueue (vlib_main_t * vm, virtio_if_t * vif,
 			      u16 num_queues)
 {
-  virtio_main_t *vim = &virtio_main;
   struct virtio_ctrl_msg mq_hdr;
   virtio_net_ctrl_ack status = VIRTIO_NET_ERR;
 
@@ -591,7 +587,7 @@
   clib_memcpy (mq_hdr.data, &num_queues, sizeof (num_queues));
 
   status = virtio_pci_send_ctrl_msg (vm, vif, &mq_hdr, sizeof (num_queues));
-  virtio_log_debug (vim, vif, "multi-queue enable %u queues", num_queues);
+  virtio_log_debug (vif, "multi-queue enable %u queues", num_queues);
   return status;
 }
 
@@ -610,7 +606,6 @@
 			       u16 queue_num)
 {
   clib_error_t *error = 0;
-  virtio_main_t *vim = &virtio_main;
   u16 queue_size = 0;
   virtio_vring_t *vring;
   struct vring vr;
@@ -650,7 +645,7 @@
   ASSERT (vring->buffers == 0);
 
   vring->size = queue_size;
-  virtio_log_debug (vim, vif, "control-queue: number %u, size %u", queue_num,
+  virtio_log_debug (vif, "control-queue: number %u, size %u", queue_num,
 		    queue_size);
   virtio_pci_legacy_setup_queue (vm, vif, queue_num, ptr);
   vring->kick_fd = -1;
@@ -662,7 +657,6 @@
 virtio_pci_vring_init (vlib_main_t * vm, virtio_if_t * vif, u16 queue_num)
 {
   clib_error_t *error = 0;
-  virtio_main_t *vim = &virtio_main;
   vlib_thread_main_t *vtm = vlib_get_thread_main ();
   u16 queue_size = 0;
   virtio_vring_t *vring;
@@ -717,12 +711,12 @@
   vec_validate_aligned (vring->buffers, queue_size, CLIB_CACHE_LINE_BYTES);
   if (queue_num % 2)
     {
-      virtio_log_debug (vim, vif, "tx-queue: number %u, size %u", queue_num,
+      virtio_log_debug (vif, "tx-queue: number %u, size %u", queue_num,
 			queue_size);
     }
   else
     {
-      virtio_log_debug (vim, vif, "rx-queue: number %u, size %u", queue_num,
+      virtio_log_debug (vif, "rx-queue: number %u, size %u", queue_num,
 			queue_size);
     }
   vring->size = queue_size;
@@ -825,14 +819,13 @@
 virtio_pci_read_caps (vlib_main_t * vm, virtio_if_t * vif)
 {
   clib_error_t *error = 0;
-  virtio_main_t *vim = &virtio_main;
   struct virtio_pci_cap cap;
   u8 pos, common_cfg = 0, notify_base = 0, dev_cfg = 0, isr = 0, pci_cfg = 0;
   vlib_pci_dev_handle_t h = vif->pci_dev_handle;
 
   if ((error = vlib_pci_read_config_u8 (vm, h, PCI_CAPABILITY_LIST, &pos)))
     {
-      virtio_log_error (vim, vif, "error in reading capabilty list position");
+      virtio_log_error (vif, "error in reading capabilty list position");
       clib_error_return (error, "error in reading capabilty list position");
     }
   while (pos)
@@ -841,7 +834,7 @@
 	   vlib_pci_read_write_config (vm, h, VLIB_READ, pos, &cap,
 				       sizeof (cap))))
 	{
-	  virtio_log_error (vim, vif, "%s [%2x]",
+	  virtio_log_error (vif, "%s [%2x]",
 			    "error in reading the capability at", pos);
 	  clib_error_return (error,
 			     "error in reading the capability at [%2x]", pos);
@@ -859,29 +852,29 @@
 			       pos + 2);
 
 	  table_size = flags & table_size_mask;
-	  virtio_log_debug (vim, vif, "flags:0x%x %s 0x%x", flags,
+	  virtio_log_debug (vif, "flags:0x%x %s 0x%x", flags,
 			    "msix interrupt vector table-size", table_size);
 
 	  if (flags & PCI_MSIX_ENABLE)
 	    {
-	      virtio_log_debug (vim, vif, "msix interrupt enabled");
+	      virtio_log_debug (vif, "msix interrupt enabled");
 	      vif->msix_enabled = VIRTIO_MSIX_ENABLED;
 	    }
 	  else
 	    {
-	      virtio_log_debug (vim, vif, "msix interrupt disabled");
+	      virtio_log_debug (vif, "msix interrupt disabled");
 	      vif->msix_enabled = VIRTIO_MSIX_DISABLED;
 	    }
 	}
 
       if (cap.cap_vndr != PCI_CAP_ID_VNDR)
 	{
-	  virtio_log_debug (vim, vif, "[%2x] %s %2x ", pos,
+	  virtio_log_debug (vif, "[%2x] %s %2x ", pos,
 			    "skipping non VNDR cap id:", cap.cap_vndr);
 	  goto next;
 	}
 
-      virtio_log_debug (vim, vif,
+      virtio_log_debug (vif,
 			"[%4x] cfg type: %u, bar: %u, offset: %04x, len: %u",
 			pos, cap.cfg_type, cap.bar, cap.offset, cap.length);
       switch (cap.cfg_type)
@@ -909,14 +902,14 @@
 
   if (common_cfg == 0 || notify_base == 0 || dev_cfg == 0 || isr == 0)
     {
-      virtio_log_debug (vim, vif, "legacy virtio pci device found");
+      virtio_log_debug (vif, "legacy virtio pci device found");
       return error;
     }
 
   if (!pci_cfg)
     clib_error_return (error, "modern virtio pci device found");
 
-  virtio_log_debug (vim, vif, "transitional virtio pci device found");
+  virtio_log_debug (vif, "transitional virtio pci device found");
   return error;
 }
 
@@ -925,7 +918,6 @@
 			virtio_pci_create_if_args_t * args)
 {
   clib_error_t *error = 0;
-  virtio_main_t *vim = &virtio_main;
   u8 status = 0;
 
   if ((error = virtio_pci_read_caps (vm, vif)))
@@ -933,7 +925,7 @@
 
   if (virtio_pci_reset_device (vm, vif) < 0)
     {
-      virtio_log_error (vim, vif, "Failed to reset the device");
+      virtio_log_error (vif, "Failed to reset the device");
       clib_error_return (error, "Failed to reset the device");
     }
   /*
@@ -949,7 +941,7 @@
   status = virtio_pci_legacy_get_status (vm, vif);
   if (!(status & VIRTIO_CONFIG_STATUS_FEATURES_OK))
     {
-      virtio_log_error (vim, vif,
+      virtio_log_error (vif,
 			"error encountered: Device doesn't support requested features");
       clib_error_return (error, "Device doesn't support requested features");
     }
@@ -983,7 +975,7 @@
     {
       if ((error = virtio_pci_vring_init (vm, vif, RX_QUEUE (i))))
 	{
-	  virtio_log_warning (vim, vif, "%s (%u) %s", "error in rxq-queue",
+	  virtio_log_warning (vif, "%s (%u) %s", "error in rxq-queue",
 			      RX_QUEUE (i), "initialization");
 	}
       else
@@ -993,7 +985,7 @@
 
       if ((error = virtio_pci_vring_init (vm, vif, TX_QUEUE (i))))
 	{
-	  virtio_log_warning (vim, vif, "%s (%u) %s", "error in txq-queue",
+	  virtio_log_warning (vif, "%s (%u) %s", "error in txq-queue",
 			      TX_QUEUE (i), "initialization");
 	}
       else
@@ -1007,8 +999,7 @@
       if ((error =
 	   virtio_pci_control_vring_init (vm, vif, vif->max_queue_pairs * 2)))
 	{
-	  virtio_log_warning (vim, vif, "%s (%u) %s",
-			      "error in control-queue",
+	  virtio_log_warning (vif, "%s (%u) %s", "error in control-queue",
 			      vif->max_queue_pairs * 2, "initialization");
 	  if (vif->features & VIRTIO_FEATURE (VIRTIO_NET_F_MQ))
 	    vif->features &= ~VIRTIO_FEATURE (VIRTIO_NET_F_MQ);
@@ -1016,7 +1007,7 @@
     }
   else
     {
-      virtio_log_debug (vim, vif, "control queue is not available");
+      virtio_log_debug (vif, "control queue is not available");
       vif->cxq_vring = NULL;
     }
 
@@ -1027,10 +1018,10 @@
     {
       if (virtio_pci_legacy_set_config_irq (vm, vif, 1) ==
 	  VIRTIO_MSI_NO_VECTOR)
-	virtio_log_warning (vim, vif, "config vector 1 is not set");
+	virtio_log_warning (vif, "config vector 1 is not set");
       if (virtio_pci_legacy_set_queue_irq (vm, vif, 0, 0) ==
 	  VIRTIO_MSI_NO_VECTOR)
-	virtio_log_warning (vim, vif, "queue vector 0 is not set");
+	virtio_log_warning (vif, "queue vector 0 is not set");
     }
 
   /*
@@ -1088,17 +1079,17 @@
   vif->pci_dev_handle = h;
   vlib_pci_set_private_data (vm, h, vif->dev_instance);
   vif->numa_node = vlib_pci_get_numa_node (vm, h);
+  vif->type = VIRTIO_IF_TYPE_PCI;
 
   if ((error = vlib_pci_bus_master_enable (vm, h)))
     {
-      virtio_log_error (vim, vif,
-			"error encountered on pci bus master enable");
+      virtio_log_error (vif, "error encountered on pci bus master enable");
       goto error;
     }
 
   if ((error = vlib_pci_io_region (vm, h, 0)))
     {
-      virtio_log_error (vim, vif, "error encountered on pci io region");
+      virtio_log_error (vif, "error encountered on pci io region");
       goto error;
     }
 
@@ -1107,26 +1098,25 @@
       if ((error = vlib_pci_register_msix_handler (vm, h, 0, 1,
 						   &virtio_pci_irq_0_handler)))
 	{
-	  virtio_log_error (vim, vif,
+	  virtio_log_error (vif,
 			    "error encountered on pci register msix handler 0");
 	  goto error;
 	}
       if ((error = vlib_pci_register_msix_handler (vm, h, 1, 1,
 						   &virtio_pci_irq_1_handler)))
 	{
-	  virtio_log_error (vim, vif,
+	  virtio_log_error (vif,
 			    "error encountered on pci register msix handler 1");
 	  goto error;
 	}
 
       if ((error = vlib_pci_enable_msix_irq (vm, h, 0, 2)))
 	{
-	  virtio_log_error (vim, vif,
-			    "error encountered on pci enable msix irq");
+	  virtio_log_error (vif, "error encountered on pci enable msix irq");
 	  goto error;
 	}
       vif->support_int_mode = 1;
-      virtio_log_debug (vim, vif, "device supports msix interrupts");
+      virtio_log_debug (vif, "device supports msix interrupts");
     }
   else if (vlib_pci_get_num_msix_interrupts (vm, h) == 1)
     {
@@ -1136,12 +1126,12 @@
       if ((error =
 	   vlib_pci_register_intx_handler (vm, h, &virtio_pci_irq_handler)))
 	{
-	  virtio_log_error (vim, vif,
+	  virtio_log_error (vif,
 			    "error encountered on pci register interrupt handler");
 	  goto error;
 	}
       vif->support_int_mode = 1;
-      virtio_log_debug (vim, vif, "pci register interrupt handler");
+      virtio_log_debug (vif, "pci register interrupt handler");
     }
   else
     {
@@ -1150,23 +1140,21 @@
        * Please don't use interrupt mode with UIO driver.
        */
       vif->support_int_mode = 0;
-      virtio_log_debug (vim, vif, "driver is configured in poll mode only");
+      virtio_log_debug (vif, "driver is configured in poll mode only");
     }
 
   if ((error = vlib_pci_intr_enable (vm, h)))
     {
-      virtio_log_error (vim, vif,
-			"error encountered on pci interrupt enable");
+      virtio_log_error (vif, "error encountered on pci interrupt enable");
       goto error;
     }
 
   if ((error = virtio_pci_device_init (vm, vif, args)))
     {
-      virtio_log_error (vim, vif, "error encountered on device init");
+      virtio_log_error (vif, "error encountered on device init");
       goto error;
     }
 
-  vif->type = VIRTIO_IF_TYPE_PCI;
   /* create interface */
   error = ethernet_register_interface (vnm, virtio_device_class.index,
 				       vif->dev_instance, vif->mac_addr,
@@ -1175,7 +1163,7 @@
 
   if (error)
     {
-      virtio_log_error (vim, vif,
+      virtio_log_error (vif,
 			"error encountered on ethernet register interface");
       goto error;
     }
@@ -1213,7 +1201,7 @@
 	{
 	  if (virtio_pci_enable_gso (vm, vif))
 	    {
-	      virtio_log_warning (vim, vif, "gso is not enabled");
+	      virtio_log_warning (vif, "gso is not enabled");
 	    }
 	  else
 	    {
@@ -1225,7 +1213,7 @@
       if (vif->features & VIRTIO_FEATURE (VIRTIO_NET_F_MQ))
 	{
 	  if (virtio_pci_enable_multiqueue (vm, vif, vif->max_queue_pairs))
-	    virtio_log_warning (vim, vif, "multiqueue is not set");
+	    virtio_log_warning (vif, "multiqueue is not set");
 	}
     }
   return;
diff --git a/src/vnet/devices/virtio/pci.h b/src/vnet/devices/virtio/pci.h
index b1e2916..4c62885 100644
--- a/src/vnet/devices/virtio/pci.h
+++ b/src/vnet/devices/virtio/pci.h
@@ -132,27 +132,6 @@
 
 #define VIRTIO_PCI_VRING_ALIGN 4096
 
-#define virtio_log_debug(vim, vif, f, ...)			\
-{								\
-  vlib_log(VLIB_LOG_LEVEL_DEBUG, vim->log_default, "%U: " f,	\
-           format_vlib_pci_addr, &vif->pci_addr,		\
-           ##__VA_ARGS__);					\
-};
-
-#define virtio_log_warning(vim, vif, f, ...)			\
-{								\
-  vlib_log(VLIB_LOG_LEVEL_WARNING, vim->log_default, "%U: " f,	\
-           format_vlib_pci_addr, &vif->pci_addr,		\
-           ##__VA_ARGS__);					\
-};
-
-#define virtio_log_error(vim, vif, f, ...)			\
-{								\
-  vlib_log(VLIB_LOG_LEVEL_ERR, vim->log_default, "%U: " f,	\
-           format_vlib_pci_addr, &vif->pci_addr,		\
-           ##__VA_ARGS__);					\
-};
-
 typedef enum
 {
   VIRTIO_MSIX_NONE = 0,
diff --git a/src/vnet/devices/virtio/virtio.c b/src/vnet/devices/virtio/virtio.c
index 90adf97..da4f755 100644
--- a/src/vnet/devices/virtio/virtio.c
+++ b/src/vnet/devices/virtio/virtio.c
@@ -474,6 +474,20 @@
 
 }
 
+static clib_error_t *
+virtio_init (vlib_main_t * vm)
+{
+  virtio_main_t *vim = &virtio_main;
+  clib_error_t *error = 0;
+
+  vim->log_default = vlib_log_register_class ("virtio", 0);
+  vlib_log_debug (vim->log_default, "initialized");
+
+  return error;
+}
+
+VLIB_INIT_FUNCTION (virtio_init);
+
 /*
  * fd.io coding-style-patch-verification: ON
  *
diff --git a/src/vnet/devices/virtio/virtio.h b/src/vnet/devices/virtio/virtio.h
index dcbf865..2cf1653 100644
--- a/src/vnet/devices/virtio/virtio.h
+++ b/src/vnet/devices/virtio/virtio.h
@@ -82,7 +82,7 @@
 
 typedef enum
 {
-  VIRTIO_IF_TYPE_TAP,
+  VIRTIO_IF_TYPE_TAP = 1,
   VIRTIO_IF_TYPE_PCI,
   VIRTIO_IF_N_TYPES,
 } virtio_if_type_t;
@@ -212,6 +212,7 @@
 extern void virtio_pci_legacy_notify_queue (vlib_main_t * vm,
 					    virtio_if_t * vif, u16 queue_id);
 format_function_t format_virtio_device_name;
+format_function_t format_virtio_log_name;
 
 static_always_inline void
 virtio_kick (vlib_main_t * vm, virtio_vring_t * vring, virtio_if_t * vif)
@@ -228,6 +229,28 @@
     }
 }
 
+
+#define virtio_log_debug(vif, f, ...)				\
+{								\
+  vlib_log(VLIB_LOG_LEVEL_DEBUG, virtio_main.log_default,	\
+	   "%U: " f, format_virtio_log_name, vif,		\
+           ##__VA_ARGS__);					\
+};
+
+#define virtio_log_warning(vif, f, ...)				\
+{								\
+  vlib_log(VLIB_LOG_LEVEL_WARNING, virtio_main.log_default,	\
+	   "%U: " f, format_virtio_log_name, vif,		\
+           ##__VA_ARGS__);					\
+};
+
+#define virtio_log_error(vif, f, ...)				\
+{								\
+  vlib_log(VLIB_LOG_LEVEL_ERR, virtio_main.log_default,		\
+	   "%U: " f, format_virtio_log_name, vif,		\
+           ##__VA_ARGS__);					\
+};
+
 #endif /* _VNET_DEVICES_VIRTIO_VIRTIO_H_ */
 
 /*
