]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
driver/core: Remove size field from hypervisor header
authorJan Kiszka <jan.kiszka@siemens.com>
Mon, 10 Mar 2014 14:26:07 +0000 (15:26 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Mon, 10 Mar 2014 14:26:07 +0000 (15:26 +0100)
The size field in the hypervisor header is redundant to the information
stored in the system configuration. Change its users and remove the
field.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
driver.c
hypervisor/include/jailhouse/header.h
hypervisor/paging.c

index 1638c7c1af27cdc4fe6f41308483bcbeeca965b5..79764615124097c50b91acdf7bbb3413e0782766 100644 (file)
--- a/driver.c
+++ b/driver.c
@@ -335,7 +335,6 @@ static int jailhouse_enable(struct jailhouse_system __user *arg)
               hv_mem->size - hypervisor->size);
 
        header = (struct jailhouse_header *)hypervisor_mem;
-       header->size = hv_mem->size;
        header->page_offset =
                (unsigned long)hypervisor_mem - hv_mem->phys_start;
        header->possible_cpus = num_possible_cpus();
index 782737ce6eac3eafca39c4484658cee9ffb3141b..cccdcb786f1139b930b312c97b3b8e0567d8e629 100644 (file)
@@ -20,7 +20,6 @@ struct jailhouse_header {
        int (*entry)(unsigned int);
 
        /* filled by loader */
-       unsigned long size;
        unsigned long page_offset;
        unsigned int possible_cpus;
        unsigned int online_cpus;
index 97a96c6d2d27d6ec02e2e804646ec03d3aa9a089..3e19ff9e393f77be7b59c5b1220b685bb5b21331 100644 (file)
@@ -330,17 +330,18 @@ int paging_init(void)
        unsigned long n;
        int err;
 
-       mem_pool.pages = (hypervisor_header.size -
-               (__page_pool - (u8 *)&hypervisor_header)) / PAGE_SIZE;
        per_cpu_pages = hypervisor_header.possible_cpus *
                sizeof(struct per_cpu) / PAGE_SIZE;
-       bitmap_pages = (mem_pool.pages + BITS_PER_PAGE - 1) / BITS_PER_PAGE;
 
        system_config = (struct jailhouse_system *)
                (__page_pool + per_cpu_pages * PAGE_SIZE);
        config_pages = (jailhouse_system_config_size(system_config) +
                        PAGE_SIZE - 1) / PAGE_SIZE;
 
+       mem_pool.pages = (system_config->hypervisor_memory.size -
+               (__page_pool - (u8 *)&hypervisor_header)) / PAGE_SIZE;
+       bitmap_pages = (mem_pool.pages + BITS_PER_PAGE - 1) / BITS_PER_PAGE;
+
        if (mem_pool.pages <= per_cpu_pages + config_pages + bitmap_pages)
                goto error_nomem;
 
@@ -369,7 +370,7 @@ int paging_init(void)
        /* Replicate hypervisor mapping of Linux */
        err = page_map_create(&hv_paging_structs,
                              page_map_hvirt2phys(&hypervisor_header),
-                             hypervisor_header.size,
+                             system_config->hypervisor_memory.size,
                              (unsigned long)&hypervisor_header,
                              PAGE_DEFAULT_FLAGS, PAGE_MAP_NON_COHERENT);
        if (err)