HV: Combine the acpi loading fucntion to one place

Remove the acpi loading function from elf_loader, rawimage_loaer and
bzimage_loader, and call it together in vm_sw_loader.

Now the vm_sw_loader's job is not just loading sw, so we rename it to
prepare_os_image.

Tracked-On: #6323

Signed-off-by: Zhou, Wu <wu.zhou@intel.com>
Reviewed-by: Victor Sun <victor.sun@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Zhou, Wu 2021-08-10 16:24:49 +08:00 committed by wenlingz
parent ac2c7c4350
commit 897442bc3e
5 changed files with 7 additions and 12 deletions

View File

@ -816,7 +816,7 @@ int32_t reset_vm(struct acrn_vm *vm)
vm->arch_vm.vlapic_mode = VM_VLAPIC_XAPIC;
if (is_sos_vm(vm)) {
(void)vm_sw_loader(vm);
(void)prepare_os_image(vm);
}
reset_vm_ioreqs(vm);
@ -932,7 +932,7 @@ void prepare_vm(uint16_t vm_id, struct acrn_vm_config *vm_config)
}
}
err = vm_sw_loader(vm);
err = prepare_os_image(vm);
if (is_prelaunched_vm(vm)) {
loaded_pre_vm_nr++;

View File

@ -338,7 +338,6 @@ static void load_bzimage(struct acrn_vm *vm, struct acrn_vcpu *vcpu,
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
struct sw_module_info *bootargs_info = &(vm->sw.bootargs_info);
struct sw_module_info *ramdisk_info = &(vm->sw.ramdisk_info);
struct sw_module_info *acpi_info = &(vm->sw.acpi_info);
struct zero_page *zeropage = (struct zero_page *)sw_kernel->kernel_src_addr;
/* The bzImage file consists of three parts:
@ -379,9 +378,6 @@ static void load_bzimage(struct acrn_vm *vm, struct acrn_vcpu *vcpu,
load_sw_module(vm, bootargs_info);
/* Copy Guest OS ACPI to its load location */
load_sw_module(vm, acpi_info);
/* 32bit kernel entry is at where protected mode code loaded */
kernel_entry_offset = 0U;
if (vcpu->arch.cpu_mode == CPU_MODE_64BIT) {

View File

@ -13,7 +13,6 @@
static void load_rawimage(struct acrn_vm *vm)
{
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
struct sw_module_info *acpi_info = &(vm->sw.acpi_info);
const struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
uint64_t kernel_load_gpa;
@ -23,9 +22,6 @@ static void load_rawimage(struct acrn_vm *vm)
/* Copy the guest kernel image to its run-time location */
(void)copy_to_gpa(vm, sw_kernel->kernel_src_addr, kernel_load_gpa, sw_kernel->kernel_size);
/* Copy Guest OS ACPI to its load location */
load_sw_module(vm, acpi_info);
sw_kernel->kernel_entry_addr = (void *)vm_config->os_config.kernel_entry_addr;
}

View File

@ -22,11 +22,12 @@ void load_sw_module(struct acrn_vm *vm, struct sw_module_info *sw_module)
/**
* @pre vm != NULL
*/
int32_t vm_sw_loader(struct acrn_vm *vm)
int32_t prepare_os_image(struct acrn_vm *vm)
{
int32_t ret = -EINVAL;
/* get primary vcpu */
struct acrn_vcpu *vcpu = vcpu_from_vid(vm, BSP_CPU_ID);
struct sw_module_info *acpi_info = &(vm->sw.acpi_info);
switch (vm->sw.kernel_type) {
#ifdef CONFIG_GUEST_KERNEL_BZIMAGE
@ -45,6 +46,8 @@ int32_t vm_sw_loader(struct acrn_vm *vm)
}
if (ret == 0) {
/* Copy Guest OS ACPI to its load location */
load_sw_module(vm, acpi_info);
/* Set VCPU entry point to kernel entry */
vcpu_set_rip(vcpu, (uint64_t)vm->sw.kernel_info.kernel_entry_addr);
pr_info("%s, VM %hu VCPU %hu Entry: 0x%016lx ", __func__, vm->vm_id, vcpu->vcpu_id,

View File

@ -249,7 +249,7 @@ void create_sos_vm_e820(struct acrn_vm *vm);
void create_prelaunched_vm_e820(struct acrn_vm *vm);
uint64_t find_space_from_ve820(struct acrn_vm *vm, uint32_t size, uint64_t min_addr, uint64_t max_addr);
int32_t vm_sw_loader(struct acrn_vm *vm);
int32_t prepare_os_image(struct acrn_vm *vm);
void vrtc_init(struct acrn_vm *vm);