mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-23 05:57:33 +00:00
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:
parent
ac2c7c4350
commit
897442bc3e
@ -816,7 +816,7 @@ int32_t reset_vm(struct acrn_vm *vm)
|
|||||||
vm->arch_vm.vlapic_mode = VM_VLAPIC_XAPIC;
|
vm->arch_vm.vlapic_mode = VM_VLAPIC_XAPIC;
|
||||||
|
|
||||||
if (is_sos_vm(vm)) {
|
if (is_sos_vm(vm)) {
|
||||||
(void)vm_sw_loader(vm);
|
(void)prepare_os_image(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_vm_ioreqs(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)) {
|
if (is_prelaunched_vm(vm)) {
|
||||||
loaded_pre_vm_nr++;
|
loaded_pre_vm_nr++;
|
||||||
|
@ -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_kernel_info *sw_kernel = &(vm->sw.kernel_info);
|
||||||
struct sw_module_info *bootargs_info = &(vm->sw.bootargs_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 *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;
|
struct zero_page *zeropage = (struct zero_page *)sw_kernel->kernel_src_addr;
|
||||||
|
|
||||||
/* The bzImage file consists of three parts:
|
/* 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);
|
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 */
|
/* 32bit kernel entry is at where protected mode code loaded */
|
||||||
kernel_entry_offset = 0U;
|
kernel_entry_offset = 0U;
|
||||||
if (vcpu->arch.cpu_mode == CPU_MODE_64BIT) {
|
if (vcpu->arch.cpu_mode == CPU_MODE_64BIT) {
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
static void load_rawimage(struct acrn_vm *vm)
|
static void load_rawimage(struct acrn_vm *vm)
|
||||||
{
|
{
|
||||||
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
|
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);
|
const struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
|
||||||
uint64_t kernel_load_gpa;
|
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 */
|
/* 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);
|
(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;
|
sw_kernel->kernel_entry_addr = (void *)vm_config->os_config.kernel_entry_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,11 +22,12 @@ void load_sw_module(struct acrn_vm *vm, struct sw_module_info *sw_module)
|
|||||||
/**
|
/**
|
||||||
* @pre vm != NULL
|
* @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;
|
int32_t ret = -EINVAL;
|
||||||
/* get primary vcpu */
|
/* get primary vcpu */
|
||||||
struct acrn_vcpu *vcpu = vcpu_from_vid(vm, BSP_CPU_ID);
|
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) {
|
switch (vm->sw.kernel_type) {
|
||||||
#ifdef CONFIG_GUEST_KERNEL_BZIMAGE
|
#ifdef CONFIG_GUEST_KERNEL_BZIMAGE
|
||||||
@ -45,6 +46,8 @@ int32_t vm_sw_loader(struct acrn_vm *vm)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
|
/* Copy Guest OS ACPI to its load location */
|
||||||
|
load_sw_module(vm, acpi_info);
|
||||||
/* Set VCPU entry point to kernel entry */
|
/* Set VCPU entry point to kernel entry */
|
||||||
vcpu_set_rip(vcpu, (uint64_t)vm->sw.kernel_info.kernel_entry_addr);
|
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,
|
pr_info("%s, VM %hu VCPU %hu Entry: 0x%016lx ", __func__, vm->vm_id, vcpu->vcpu_id,
|
||||||
|
@ -249,7 +249,7 @@ void create_sos_vm_e820(struct acrn_vm *vm);
|
|||||||
void create_prelaunched_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);
|
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);
|
void vrtc_init(struct acrn_vm *vm);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user