Skip to content

Commit 253b259

Browse files
jsun26intelEddie Dong
authored andcommitted
HV: remove vm_config pointer in acrn_vm struct
For each vm_array[] item, its config is located in corresponding index of vm_configs[], so vm_config pointer is not needed any more. Tracked-On: #2291 Signed-off-by: Victor Sun <victor.sun@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent 7bf9b1b commit 253b259

File tree

7 files changed

+17
-14
lines changed

7 files changed

+17
-14
lines changed

hypervisor/arch/x86/guest/vlapic.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2087,7 +2087,9 @@ static int32_t vlapic_x2apic_access(struct acrn_vcpu *vcpu, uint32_t msr, bool w
20872087
vlapic = vcpu_vlapic(vcpu);
20882088
if (is_x2apic_enabled(vlapic)) {
20892089
#ifdef CONFIG_PARTITION_MODE
2090-
if (vcpu->vm->vm_config->lapic_pt) {
2090+
struct acrn_vm_config *vm_config = get_vm_config(vcpu->vm->vm_id);
2091+
2092+
if (vm_config->lapic_pt) {
20912093
if (msr == MSR_IA32_EXT_APIC_ICR) {
20922094
error = vlapic_x2apic_pt_icr_access(vcpu->vm, *val);
20932095
}

hypervisor/arch/x86/guest/vm.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,6 @@ int32_t create_vm(uint16_t vm_id, struct acrn_vm_config *vm_config, struct acrn_
124124
vm = &vm_array[vm_id];
125125
(void)memset((void *)vm, 0U, sizeof(struct acrn_vm));
126126
vm->vm_id = vm_id;
127-
#ifdef CONFIG_PARTITION_MODE
128-
/* Map Virtual Machine to its VM Description */
129-
vm->vm_config = vm_config;
130-
#endif
131127
vm->hw.created_vcpus = 0U;
132128
vm->emul_mmio_regions = 0U;
133129
vm->snoopy_mem = true;

hypervisor/arch/x86/vmcs.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,9 @@ void switch_apicv_mode_x2apic(struct acrn_vcpu *vcpu)
574574
void switch_apicv_mode_x2apic(struct acrn_vcpu *vcpu)
575575
{
576576
uint32_t value32;
577-
if(vcpu->vm->vm_config->lapic_pt) {
577+
struct acrn_vm_config *vm_config = get_vm_config(vcpu->vm->vm_id);
578+
579+
if(vm_config->lapic_pt) {
578580
/*
579581
* Disable external interrupt exiting and irq ack
580582
* Disable posted interrupt processing

hypervisor/boot/sbl/multiboot.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ int32_t init_vm_boot_info(struct acrn_vm *vm)
2121
{
2222
struct multiboot_module *mods = NULL;
2323
struct multiboot_info *mbi = NULL;
24+
struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
2425
int32_t ret = -EINVAL;
2526

2627
if (boot_regs[0] != MULTIBOOT_INFO_MAGIC) {
@@ -48,9 +49,9 @@ int32_t init_vm_boot_info(struct acrn_vm *vm)
4849
vm->sw.kernel_info.kernel_src_addr = hpa2hva((uint64_t)mods[0].mm_mod_start);
4950
vm->sw.kernel_info.kernel_size = mods[0].mm_mod_end - mods[0].mm_mod_start;
5051
vm->sw.kernel_info.kernel_load_addr = (void *)(16 * 1024 * 1024UL);
51-
vm->sw.linux_info.bootargs_src_addr = (void *)vm->vm_config->bootargs;
52-
vm->sw.linux_info.bootargs_size = strnlen_s(vm->vm_config->bootargs, MEM_2K);
53-
vm->sw.linux_info.bootargs_load_addr = (void *)(vm->vm_config->mem_size - 8*1024UL);
52+
vm->sw.linux_info.bootargs_src_addr = (void *)vm_config->bootargs;
53+
vm->sw.linux_info.bootargs_size = strnlen_s(vm_config->bootargs, MEM_2K);
54+
vm->sw.linux_info.bootargs_load_addr = (void *)(vm_config->mem_size - 8*1024UL);
5455
clac();
5556
ret = 0;
5657
}

hypervisor/debug/shell.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ static int32_t shell_to_sos_console(__unused int32_t argc, __unused char **argv)
809809
}
810810

811811
#ifdef CONFIG_PARTITION_MODE
812-
vm_config = vm->vm_config;
812+
vm_config = get_vm_config(guest_no);
813813
if (vm_config != NULL && vm_config->vm_vuart == false) {
814814
snprintf(temp_str, TEMP_STR_SIZE, "No vUART configured for vm%d\n", guest_no);
815815
shell_puts(temp_str);

hypervisor/dm/vpci/partition_mode.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ static struct pci_vdev *partition_mode_find_vdev(struct acrn_vpci *vpci, union p
3636
{
3737
struct vpci_vdev_array *vdev_array;
3838
struct pci_vdev *vdev;
39+
struct acrn_vm_config *vm_config = get_vm_config(vpci->vm->vm_id);
3940
int32_t i;
4041

41-
vdev_array = vpci->vm->vm_config->vpci_vdev_array;
42+
vdev_array = vm_config->vpci_vdev_array;
4243
for (i = 0; i < vdev_array->num_pci_vdev; i++) {
4344
vdev = &vdev_array->vpci_vdev_list[i];
4445
if (vdev->vbdf.value == vbdf.value) {
@@ -54,9 +55,10 @@ static int32_t partition_mode_vpci_init(const struct acrn_vm *vm)
5455
struct vpci_vdev_array *vdev_array;
5556
const struct acrn_vpci *vpci = &vm->vpci;
5657
struct pci_vdev *vdev;
58+
struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
5759
int32_t i;
5860

59-
vdev_array = vm->vm_config->vpci_vdev_array;
61+
vdev_array = vm_config->vpci_vdev_array;
6062

6163
for (i = 0; i < vdev_array->num_pci_vdev; i++) {
6264
vdev = &vdev_array->vpci_vdev_list[i];
@@ -77,9 +79,10 @@ static void partition_mode_vpci_deinit(const struct acrn_vm *vm)
7779
{
7880
struct vpci_vdev_array *vdev_array;
7981
struct pci_vdev *vdev;
82+
struct acrn_vm_config *vm_config = get_vm_config(vm->vm_id);
8083
int32_t i;
8184

82-
vdev_array = vm->vm_config->vpci_vdev_array;
85+
vdev_array = vm_config->vpci_vdev_array;
8386

8487
for (i = 0; i < vdev_array->num_pci_vdev; i++) {
8588
vdev = &vdev_array->vpci_vdev_list[i];

hypervisor/include/arch/x86/guest/vm.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ struct acrn_vm {
157157
struct acrn_vpci vpci;
158158
#ifdef CONFIG_PARTITION_MODE
159159
struct mptable_info mptable;
160-
struct acrn_vm_config *vm_config;
161160
uint8_t vrtc_offset;
162161
#endif
163162

0 commit comments

Comments
 (0)