HV: introduce scenario Kconfig for sharing mode

Previously the vm_configs[] is defined separately for sharing mode and
partition mode, but the concept of hypervisor mode will be removed. Instead
we will introduce scenario Kconfig for hypervisor to load different vm
configurations.

SDC(Software Defined Cockpit) is a typical scenario that ACRN supported
so we introduce this scenario for previously sharing mode and move its
configurations to scenarios/sdc folder. The configuration could be used
for all boards reference.

Tracked-On: #2291

Signed-off-by: Victor Sun <victor.sun@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Victor Sun 2019-04-02 11:04:36 +08:00 committed by wenlingz
parent 564c9dcb79
commit 56c193851a
12 changed files with 62 additions and 45 deletions

View File

@ -39,6 +39,11 @@ include $(BASEDIR)/../scripts/deps.mk
include scripts/kconfig/kconfig.mk
#initialize scenarios name
ifeq ($(CONFIG_SDC),y)
SCENARIO_NAME := sdc
endif
LD_IN_TOOL = scripts/genld.sh
BASH = $(shell which bash)
@ -110,6 +115,7 @@ INCLUDE_PATH += bsp/include
INCLUDE_PATH += boot/include
INCLUDE_PATH += $(HV_OBJDIR)/include
INCLUDE_PATH += arch/x86/configs/$(CONFIG_BOARD)
INCLUDE_PATH += scenarios/$(SCENARIO_NAME)
CC ?= gcc
AS ?= as
@ -140,6 +146,8 @@ C_SRCS += arch/x86/configs/vm_config.c
C_SRCS += arch/x86/configs/$(CONFIG_BOARD)/ve820.c
ifeq ($(CONFIG_PARTITION_MODE),y)
C_SRCS += arch/x86/configs/$(CONFIG_BOARD)/pt_dev.c
else
C_SRCS += scenarios/$(SCENARIO_NAME)/pt_dev.c
endif
C_SRCS += arch/x86/configs/$(CONFIG_BOARD)/board.c

View File

@ -1,3 +1,17 @@
choice
prompt "ACRN Scenario"
default SDC
help
Select the scenario name to load corresponding VM configuration.
config SDC
bool "Software Defined Cockpit"
help
SDC (Software Defined Cockpit) is a typical scenario that ACRN supported.
SDC will have one pre-launched SOS VM and one post-launched NORMAL VM.
endchoice
choice
prompt "Hypervisor mode"
default SHARING_MODE

View File

@ -1 +0,0 @@
../sos_vm.h

View File

@ -1 +0,0 @@
../sos_vm.h

View File

@ -1 +0,0 @@
../sos_vm.h

View File

@ -1 +0,0 @@
../sos_vm.h

View File

@ -1 +0,0 @@
../sos_vm.h

View File

@ -1,21 +0,0 @@
/*
* Copyright (C) 2018 Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* This is a template of sos_vm.h and is linked to ./$(CONFIG_BOARD)/sos_vm.h,
* If you need a board specific sos_vm.h, make a copy in ./$(CONFIG_BOARD)/
* and replace the original symbol link.
*/
#ifndef SOS_VM_CONFIG_H
#define SOS_VM_CONFIG_H
#define SOS_VM_CONFIG_NAME "ACRN SOS VM"
#define SOS_VM_CONFIG_GUEST_FLAGS GUEST_FLAG_IO_COMPLETION_POLLING
#define SOS_VM_CONFIG_OS_NAME "ACRN Service OS"
#endif /* SOS_VM_CONFIG_H */

View File

@ -12,24 +12,10 @@
#include <logmsg.h>
#include <cat.h>
#ifndef CONFIG_PARTITION_MODE
#include <sos_vm.h>
static struct acrn_vm_config vm_configs[CONFIG_MAX_VM_NUM] __aligned(PAGE_SIZE) = {
{
.type = SOS_VM,
.name = SOS_VM_CONFIG_NAME,
.guest_flags = SOS_VM_CONFIG_GUEST_FLAGS,
.memory = {
.start_hpa = 0x0UL,
.size = CONFIG_SOS_RAM_SIZE,
},
.os_config = {
.name = SOS_VM_CONFIG_OS_NAME,
},
},
};
#include <vm_configurations.h>
#else
#include <partition_config.h>
#endif
#define INIT_VM_CONFIG(idx) \
{ \
@ -67,7 +53,6 @@ static struct acrn_vm_config vm_configs[CONFIG_MAX_VM_NUM] __aligned(PAGE_SIZE)
INIT_VM_CONFIG(3),
#endif
};
#endif
/*
* @pre vm_id < CONFIG_MAX_VM_NUM

View File

@ -58,9 +58,7 @@ struct acrn_vm_config {
struct acrn_vm_os_config os_config; /* OS information the VM */
uint16_t clos; /* if guest_flags has GUEST_FLAG_CLOS_REQUIRED, then VM use this CLOS */
#ifdef CONFIG_PARTITION_MODE
bool vm_vuart;
#endif
} __aligned(8);
struct acrn_vm_config *get_vm_config(uint16_t vm_id);

View File

@ -0,0 +1,10 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <vm_config.h>
#include <vm_configurations.h>
__unused struct acrn_vm_pci_ptdev_config vm0_pci_ptdevs[VM0_CONFIG_PCI_PTDEV_NUM];

View File

@ -0,0 +1,28 @@
/*
* Copyright (C) 2018 Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* This is a template of vm_configurations.h for sharing mode;
*/
#ifndef VM_CONFIGURATIONS_H
#define VM_CONFIGURATIONS_H
#define VM0_CONFIGURED
#define VM0_CONFIG_NAME "ACRN SOS VM"
#define VM0_CONFIG_TYPE SOS_VM
#define VM0_CONFIG_PCPU_BITMAP 0UL /* PCPU Bitmap is reserved in SOS_VM */
#define VM0_CONFIG_FLAGS GUEST_FLAG_IO_COMPLETION_POLLING
#define VM0_CONFIG_MEM_START_HPA 0UL
#define VM0_CONFIG_MEM_SIZE CONFIG_SOS_RAM_SIZE
#define VM0_CONFIG_OS_NAME "ACRN Service OS"
#define VM0_CONFIG_OS_BOOTARGS "configured in devicemodel/samples/apl-mrb/sos_bootargs_xxxx.txt"
#define VM0_CONFIG_PCI_PTDEV_NUM 0U /* PTDEV is reserved in SOS_VM */
extern struct acrn_vm_pci_ptdev_config vm0_pci_ptdevs[VM0_CONFIG_PCI_PTDEV_NUM];
#endif /* VM_CONFIGURATIONS_H */