vcpu_cell_exit(cell);
}
-/* all root cell CPUs (except the calling one) have to be suspended */
void arch_config_commit(struct cell *cell_added_removed)
{
- arch_flush_cell_vcpu_caches(&root_cell);
- if (cell_added_removed && cell_added_removed != &root_cell)
- arch_flush_cell_vcpu_caches(cell_added_removed);
-
iommu_config_commit(cell_added_removed);
pci_config_commit(cell_added_removed);
ioapic_config_commit(cell_added_removed);
return 0;
}
+/**
+ * Apply system configuration changes.
+ * @param cell_added_removed Cell that was added or removed to/from the
+ * system or NULL.
+ *
+ * @see arch_config_commit
+ * @see pci_config_commit
+ */
+void config_commit(struct cell *cell_added_removed)
+{
+ arch_flush_cell_vcpu_caches(&root_cell);
+ if (cell_added_removed && cell_added_removed != &root_cell)
+ arch_flush_cell_vcpu_caches(cell_added_removed);
+
+ arch_config_commit(cell_added_removed);
+}
+
static bool address_in_region(unsigned long addr,
const struct jailhouse_memory *region)
{
arch_cell_destroy(cell);
- arch_config_commit(cell);
+ config_commit(cell);
}
static int cell_create(struct per_cpu *cpu_data, unsigned long config_address)
goto err_destroy_cell;
}
- arch_config_commit(cell);
+ config_commit(cell);
cell->comm_page.comm_region.cell_state = JAILHOUSE_CELL_SHUT_DOWN;
goto out_resume;
}
- arch_config_commit(NULL);
+ config_commit(NULL);
cell->loadable = false;
}
goto out_resume;
}
- arch_config_commit(NULL);
+ config_commit(NULL);
printk("Cell \"%s\" can be loaded\n", cell->config->name);
int check_mem_regions(const struct jailhouse_cell_desc *config);
int cell_init(struct cell *cell);
+void config_commit(struct cell *cell_added_removed);
+
long hypercall(unsigned long code, unsigned long arg1, unsigned long arg2);
void __attribute__((noreturn)) panic_stop(void);
* @param cell_added_removed Cell that was added or removed to/from the
* system or NULL.
*
+ * @see config_commit
* @see pci_config_commit
*/
void arch_config_commit(struct cell *cell_added_removed);