From e88b6b876adb6972a64ccf7e988d640940cdb112 Mon Sep 17 00:00:00 2001 From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch> Date: Tue, 10 Dec 2024 13:43:17 +0100 Subject: [PATCH] debug: trying to a find the reason why vmxon raises the carry flag --- proto/region/vmxon_reg.c | 8 +++++--- proto/region/vxmon_reg.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/proto/region/vmxon_reg.c b/proto/region/vmxon_reg.c index 6d52555..1f568ac 100644 --- a/proto/region/vmxon_reg.c +++ b/proto/region/vmxon_reg.c @@ -29,7 +29,7 @@ static int alloc_vmxon_internals(struct vmxon_region_t *reg) { reg->size = REGION_SIZE; reg->va = region; - reg->pa = (void *)__pa(region); + reg->pa = __pa(region); return 0; } @@ -41,12 +41,13 @@ static int write_vmcs_rev_id_to_vmxon(struct vmxon_region_t *reg) { } DEBUG_FMT( - "Reading IA32_VMX_BASIC MSR for VMCS revision identifier = %llu\n", + "Reading IA32_VMX_BASIC MSR for VMCS revision identifier = 0x%llx\n", VMCS_REVISION_ID); DEBUG_FMT("Writing VMCS Revision ID to VMXON region\n"); - (*(uint32_t *)reg->va) = VMCS_REVISION_ID; + (*(unsigned long *)reg->va) = VMCS_REVISION_ID; + (*(unsigned long *)reg->va) &= ~(1UL << 31); return 0; } @@ -57,6 +58,7 @@ int init_vmxon_reg(struct vmxon_region_t *reg) { } if (write_vmcs_rev_id_to_vmxon(reg) != 0) { + kfree(reg->va); return -1; } diff --git a/proto/region/vxmon_reg.h b/proto/region/vxmon_reg.h index 8e0f70f..e080b02 100644 --- a/proto/region/vxmon_reg.h +++ b/proto/region/vxmon_reg.h @@ -3,7 +3,7 @@ struct vmxon_region_t { unsigned long size; void *va; - void *pa; + unsigned long long pa; }; int init_vmxon_reg(struct vmxon_region_t *reg); -- GitLab