mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-04 05:09:49 +00:00
There are 3 kinds of configurations in ACRN hypervisor source code: hypervisor overall setting, per-board setting and scenario specific per-VM setting. Currently Kconfig act as hypervisor overall setting and its souce is located at "hypervisor/arch/x86/configs/$(BOARD).config"; Per-board configs are located at "hypervisor/arch/x86/configs/$(BOARD)" folder; scenario specific per-VM configs are located at "hypervisor/scenarios/$(SCENARIO)" folder. This layout brings issues that board configs and VM configs are coupled tightly. The board specific Kconfig file and misc_cfg.h are shared by all scenarios, and scenario specific pci_dev.c is shared by all boards. So the user have no way to build hypervisor binary for different scenario on different board with one source code repo. The patch will setup a new VM configurations layout as below: misc/vm_configs ├── boards --> folder of supported boards │ ├── <board_1> --> scenario-irrelevant board configs │ │ ├── board.c --> C file of board configs │ │ ├── board_info.h --> H file of board info │ │ ├── pci_devices.h --> pBDF of PCI devices │ │ └── platform_acpi_info.h --> native ACPI info │ ├── <board_2> │ ├── <board_3> │ └── <board...> └── scenarios --> folder of supported scenarios ├── <scenario_1> --> scenario specific VM configs │ ├── <board_1> --> board specific VM configs for <scenario_1> │ │ ├── <board_1>.config --> Kconfig for specific scenario on specific board │ │ ├── misc_cfg.h --> H file of board specific VM configs │ │ ├── pci_dev.c --> board specific VM pci devices list │ │ └── vbar_base.h --> vBAR base info of VM PT pci devices │ ├── <board_2> │ ├── <board_3> │ ├── <board...> │ ├── vm_configurations.c --> C file of scenario specific VM configs │ └── vm_configurations.h --> H file of scenario specific VM configs ├── <scenario_2> ├── <scenario_3> └── <scenario...> The new layout would decouple board configs and VM configs completely: The boards folder stores kinds of supported boards info, each board folder stores scenario-irrelevant board configs only, which could be totally got from a physical platform and works for all scenarios; The scenarios folder stores VM configs of kinds of working scenario. In each scenario folder, besides the generic scenario specific VM configs, the board specific VM configs would be put in a embedded board folder. In new layout, all configs files will be removed out of hypervisor folder and moved to a separate folder. This would make hypervisor LoC calculation more precisely with below fomula: typical LoC = Loc(hypervisor) + Loc(one vm_configs) which Loc(one vm_configs) = Loc(misc/vm_configs/boards/<board>) + LoC(misc/vm_configs/scenarios/<scenario>/<board>) + Loc(misc/vm_configs/scenarios/<scenario>/vm_configurations.c + Loc(misc/vm_configs/scenarios/<scenario>/vm_configurations.h Tracked-On: #5077 Signed-off-by: Victor Sun <victor.sun@intel.com> Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com> |
||
---|---|---|
.. | ||
boot | ||
guest | ||
lib | ||
apicreg.h | ||
board.h | ||
cpu_caps.h | ||
cpu.h | ||
cpufeatures.h | ||
cpuid.h | ||
default_acpi_info.h | ||
e820.h | ||
gdt.h | ||
host_pm.h | ||
idt.h | ||
init.h | ||
io.h | ||
ioapic.h | ||
irq.h | ||
lapic.h | ||
mmu.h | ||
msr.h | ||
page.h | ||
pci_dev.h | ||
per_cpu.h | ||
pgtable.h | ||
platform_caps.h | ||
rdt.h | ||
security.h | ||
seed.h | ||
sgx.h | ||
timer.h | ||
trampoline.h | ||
vm_config.h | ||
vmx.h | ||
vtd.h | ||
zeropage.h |