physmem: keep only one physmem_main 63/10963/2
authorDamjan Marion <damarion@cisco.com>
Mon, 5 Mar 2018 19:08:28 +0000 (20:08 +0100)
committerDamjan Marion <dmarion.lists@gmail.com>
Mon, 5 Mar 2018 20:02:41 +0000 (20:02 +0000)
We don't need per vlib_main physmem_main, so keep it separatelly instead
of trying to keep them in sync.

Change-Id: I0fbeecf4d9672d31af7a43c640a7d8f05dd6e46f
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/linux/physmem.c
src/vlib/linux/vfio.c
src/vlib/main.h
src/vlib/physmem.h
src/vlib/physmem_funcs.h
src/vlib/unix/main.c

index f60a6f7..b370338 100644 (file)
@@ -114,7 +114,7 @@ unix_physmem_region_alloc (vlib_main_t * vm, char *name, u32 size,
                           u8 numa_node, u32 flags,
                           vlib_physmem_region_index_t * idx)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   vlib_physmem_region_t *pr;
   clib_error_t *error = 0;
   clib_mem_vm_alloc_t alloc = { 0 };
@@ -208,7 +208,7 @@ done:
 static void
 unix_physmem_region_free (vlib_main_t * vm, vlib_physmem_region_index_t idx)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   vlib_physmem_region_t *pr = vlib_physmem_get_region (vm, idx);
 
   if (pr->fd > 0)
@@ -221,7 +221,7 @@ unix_physmem_region_free (vlib_main_t * vm, vlib_physmem_region_index_t idx)
 clib_error_t *
 unix_physmem_init (vlib_main_t * vm)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   linux_vfio_main_t *lvm = &vfio_main;
   clib_error_t *error = 0;
   u64 *pt = 0;
@@ -254,7 +254,7 @@ static clib_error_t *
 show_physmem (vlib_main_t * vm,
              unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   vlib_physmem_region_t *pr;
 
   /* *INDENT-OFF* */
index dffe49c..e39bf01 100644 (file)
@@ -57,7 +57,7 @@ linux_vfio_main_t vfio_main;
 static int
 map_regions (vlib_main_t * vm, int fd)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   vlib_physmem_region_t *pr;
   struct vfio_iommu_type1_dma_map dm = { 0 };
   int i;
index 28412e8..2eec930 100644 (file)
@@ -105,8 +105,6 @@ typedef struct vlib_main_t
 
   vlib_buffer_main_t *buffer_main;
 
-  vlib_physmem_main_t physmem_main;
-
   /* Allocate/free buffer memory for DMA transfers, descriptor rings, etc.
      buffer memory is guaranteed to be cache-aligned. */
 
index e99db7d..2f54938 100644 (file)
@@ -73,6 +73,8 @@ typedef struct
   vlib_physmem_region_t *regions;
 } vlib_physmem_main_t;
 
+extern vlib_physmem_main_t physmem_main;
+
 #endif /* included_vlib_physmem_h */
 
 /*
index 0013c2f..bff66aa 100644 (file)
@@ -43,7 +43,7 @@
 always_inline vlib_physmem_region_t *
 vlib_physmem_get_region (vlib_main_t * vm, u8 index)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   return pool_elt_at_index (vpm->regions, index);
 }
 
@@ -129,7 +129,7 @@ always_inline u64
 vlib_physmem_virtual_to_physical (vlib_main_t * vm,
                                  vlib_physmem_region_index_t idx, void *mem)
 {
-  vlib_physmem_main_t *vpm = &vm->physmem_main;
+  vlib_physmem_main_t *vpm = &physmem_main;
   vlib_physmem_region_t *pr = pool_elt_at_index (vpm->regions, idx);
   uword o = mem - pr->mem;
   return vlib_physmem_offset_to_physical (vm, idx, o);
index 7e868f9..786addf 100644 (file)
@@ -61,6 +61,7 @@ char *vlib_default_runtime_dir = "vlib";
 
 unix_main_t unix_main;
 clib_file_main_t file_main;
+vlib_physmem_main_t physmem_main;
 
 static clib_error_t *
 unix_main_init (vlib_main_t * vm)