hv: sched: use hypervisor configuration to choose scheduler

For now, we set NOOP scheduler as default. User can choose IORR scheduler as needed.

Tracked-On: #4178
Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Shuo A Liu 2019-10-30 11:51:16 +08:00 committed by wenlingz
parent 6a144e6e3e
commit b32ae229fb
3 changed files with 30 additions and 0 deletions

View File

@ -211,8 +211,12 @@ HW_C_SRCS += arch/x86/cat.c
HW_C_SRCS += arch/x86/sgx.c
HW_C_SRCS += common/softirq.c
HW_C_SRCS += common/schedule.c
ifeq ($(CONFIG_SCHED_NOOP),y)
HW_C_SRCS += common/sched_noop.c
endif
ifeq ($(CONFIG_SCHED_IORR),y)
HW_C_SRCS += common/sched_iorr.c
endif
HW_C_SRCS += hw/pci.c
HW_C_SRCS += arch/x86/configs/vm_config.c
HW_C_SRCS += arch/x86/configs/$(CONFIG_BOARD)/board.c

View File

@ -37,6 +37,27 @@ config HYBRID
endchoice
choice
prompt "ACRN Scheduler"
default SCHED_NOOP
help
Select the CPU scheduler to be used by the hypervisor
config SCHED_NOOP
bool "NOOP scheduler"
help
The NOOP (No-Operation) scheduler means there is a strict 1 to 1 mapping
between vCPUs and pCPUs.
config SCHED_IORR
bool "IORR scheduler"
help
IORR (IO sensitive Round Robin) scheduler supports multipule vCPUs running on
on one pCPU, and they will be scheduled by a IO sensitive round robin policy.
endchoice
config BOARD
string "Target board"
help

View File

@ -73,7 +73,12 @@ void init_sched(uint16_t pcpu_id)
ctl->flags = 0UL;
ctl->curr_obj = NULL;
ctl->pcpu_id = pcpu_id;
#ifdef CONFIG_SCHED_NOOP
ctl->scheduler = &sched_noop;
#endif
#ifdef CONFIG_SCHED_IORR
ctl->scheduler = &sched_iorr;
#endif
if (ctl->scheduler->init != NULL) {
ctl->scheduler->init(ctl);
}