int arch_cell_create(struct per_cpu *cpu_data, struct cell *cell) { int err; err = vmx_cell_init(cell); if (err) return err; err = vtd_cell_init(cell); if (err) goto error_vmx_exit; err = pci_cell_init(cell); if (err) goto error_vtd_exit; ioapic_cell_init(cell); cell->comm_page.comm_region.pm_timer_address = system_config->platform_info.x86.pm_timer_address; return 0; error_vtd_exit: vtd_cell_exit(cell); error_vmx_exit: vmx_cell_exit(cell); return err; }
void arch_cell_destroy(struct per_cpu *cpu_data, struct cell *cell) { ioapic_cell_exit(cell); pci_cell_exit(cell); vtd_cell_exit(cell); vmx_cell_exit(cell); }
void arch_cell_destroy(struct per_cpu *cpu_data, struct cell *cell) { vtd_cell_exit(cell); vmx_cell_exit(cell); flush_root_cell_cpu_caches(cpu_data); }