const struct jailhouse_memory *mem)
{ return -ENOSYS; }
void arch_cell_destroy(struct cell *new_cell) {}
-void arch_config_commit(struct per_cpu *cpu_data,
- struct cell *cell_added_removed) {}
+void arch_config_commit(struct cell *cell_added_removed) {}
void *memcpy(void *dest, const void *src, unsigned long n) { return NULL; }
void arch_dbg_write(const char *msg) {}
void arch_shutdown(void) {}
vmx_cell_exit(cell);
}
-/* all root cell CPUs (except cpu_data) have to be stopped */
-void arch_config_commit(struct per_cpu *cpu_data,
- struct cell *cell_added_removed)
+/* all root cell CPUs (except the calling one) have to be suspended */
+void arch_config_commit(struct cell *cell_added_removed)
{
- unsigned int cpu;
+ unsigned int cpu, current_cpu = this_cpu_id();
- for_each_cpu_except(cpu, root_cell.cpu_set, cpu_data->cpu_id)
+ for_each_cpu_except(cpu, root_cell.cpu_set, current_cpu)
per_cpu(cpu)->flush_virt_caches = true;
if (cell_added_removed && cell_added_removed != &root_cell)
for_each_cpu_except(cpu, cell_added_removed->cpu_set,
- cpu_data->cpu_id)
+ current_cpu)
per_cpu(cpu)->flush_virt_caches = true;
vmx_invept();
arch_cell_destroy(cell);
- arch_config_commit(cpu_data, cell);
+ arch_config_commit(cell);
}
static int cell_create(struct per_cpu *cpu_data, unsigned long config_address)
goto err_destroy_cell;
}
- arch_config_commit(cpu_data, cell);
+ arch_config_commit(cell);
cell->comm_page.comm_region.cell_state = JAILHOUSE_CELL_SHUT_DOWN;
goto out_resume;
}
- arch_config_commit(cpu_data, NULL);
+ arch_config_commit(NULL);
cell->loadable = false;
}
goto out_resume;
}
- arch_config_commit(cpu_data, NULL);
+ arch_config_commit(NULL);
printk("Cell \"%s\" can be loaded\n", cell->config->name);
int arch_cell_create(struct cell *cell);
void arch_cell_destroy(struct cell *cell);
-void arch_config_commit(struct per_cpu *cpu_data,
- struct cell *cell_added_removed);
+void arch_config_commit(struct cell *cell_added_removed);
void arch_shutdown(void);
return 0;
}
-static void init_late(struct per_cpu *cpu_data)
+static void init_late(void)
{
unsigned int cpu, expected_cpus = 0;
if (error)
return;
- arch_config_commit(cpu_data, &root_cell);
+ arch_config_commit(&root_cell);
paging_dump_stats("after late setup");
}
cpu_relax();
if (!error && master) {
- init_late(cpu_data);
+ init_late();
if (!error) {
/*
* Make sure everything was committed before we signal