From 5f7baa1639469d226ef731e1e3973987b91923ed Mon Sep 17 00:00:00 2001 From: Haoyu Tang Date: Sun, 23 Feb 2025 19:47:31 +0800 Subject: [PATCH] hv: fix stac/clac context in get_initrd_load_addr() Tracked-On: #8761 Signed-off-by: Haoyu Tang --- hypervisor/boot/guest/bzimage_loader.c | 2 +- hypervisor/boot/guest/elf_loader.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/hypervisor/boot/guest/bzimage_loader.c b/hypervisor/boot/guest/bzimage_loader.c index d17c62bba..56220dfbc 100644 --- a/hypervisor/boot/guest/bzimage_loader.c +++ b/hypervisor/boot/guest/bzimage_loader.c @@ -61,7 +61,7 @@ static void *get_initrd_load_addr(struct acrn_vm *vm, uint64_t kernel_start) kernel_init_size = zeropage->hdr.init_size; kernel_align = zeropage->hdr.kernel_alignment; initrd_addr_max = zeropage->hdr.initrd_addr_max; - stac(); + clac(); kernel_end = roundup(kernel_start, kernel_align) + kernel_init_size; if (initrd_addr_max != 0U) { diff --git a/hypervisor/boot/guest/elf_loader.c b/hypervisor/boot/guest/elf_loader.c index 4fde38930..93271e7f8 100644 --- a/hypervisor/boot/guest/elf_loader.c +++ b/hypervisor/boot/guest/elf_loader.c @@ -109,7 +109,8 @@ static void *do_load_elf64(struct acrn_vm *vm) */ (void)copy_to_gpa(vm, p_elf_img + p_prg_tbl_head64->p_offset, p_prg_tbl_head64->p_paddr, (uint32_t)p_prg_tbl_head64->p_filesz); - /* copy_to_gpa has it's stac/clac inside. So call stac again here. */ + /* copy_to_gpa has its own stac/clac inside. Call stac again here to keep + * the context. */ stac(); } p_prg_tbl_head64++; @@ -174,7 +175,8 @@ static void *do_load_elf32(struct acrn_vm *vm) */ (void)copy_to_gpa(vm, p_elf_img + p_prg_tbl_head32->p_offset, p_prg_tbl_head32->p_paddr, p_prg_tbl_head32->p_filesz); - /* copy_to_gpa has it's stac/clac inside. So call stac again here. */ + /* copy_to_gpa has its own stac/clac inside. Call stac again here to keep + * the context. */ stac(); } p_prg_tbl_head32++;