acrn-hypervisor/hypervisor/include/arch/x86
Victor Sun e792fa3d3c HV: nuc7i7dnb example of new VM configuratons layout
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>
2020-07-24 16:16:06 +08:00
..
boot hv: fixup relocation delta for symbols belong to entry section 2020-03-06 08:27:46 +08:00
guest hv: Disable XSAVE-managed CET state of guest VM 2020-07-23 20:15:57 +08:00
lib hv: Add a helper to account bitmap weight 2019-09-24 11:58:45 +08:00
apicreg.h hv: vioapic: minor refine about vioapic_init 2020-04-24 15:35:38 +08:00
board.h HV: nuc7i7dnb example of new VM configuratons layout 2020-07-24 16:16:06 +08:00
cpu_caps.h HV: enumerate capability of #AC for Splitlock Access 2020-04-17 09:53:59 +08:00
cpu.h hv: Disable XSAVE-managed CET state of guest VM 2020-07-23 20:15:57 +08:00
cpufeatures.h HV: enumerate capability of #AC for Splitlock Access 2020-04-17 09:53:59 +08:00
cpuid.h hv: Hide CET feature from guest VM 2020-07-23 20:15:57 +08:00
default_acpi_info.h hv: emulate ACPI reset register for Service OS guest 2019-05-15 11:20:12 +08:00
e820.h hv: Reserve space for VMs' EPT 4k pages after boot 2020-04-01 21:13:37 +08:00
gdt.h hv: coding style: remove no real declaration for external variable 2018-12-20 20:20:08 +08:00
host_pm.h pm: S5: update the system shutdown logical in ACRN 2019-12-23 15:15:09 +08:00
idt.h hv: irq: minor refine about structure idt_64_descriptor 2020-04-26 10:48:49 +08:00
init.h HV: Add prefix 'p' before 'cpu' to physical cpu related functions 2019-04-24 10:50:28 +08:00
io.h remove dead code in io.h 2020-06-19 16:13:20 +08:00
ioapic.h hv: vioapic init for SOS VM on platforms with multiple IO-APICs 2020-03-25 09:36:18 +08:00
irq.h hv: replace vcpu_affinity array with cpu_affinity_bitmap 2020-04-23 09:38:54 +08:00
lapic.h HV: Fix MP Init sequence hang by adding a delay 2020-05-27 13:34:59 +08:00
mmu.h hv: mmu: release 1GB cpu side support constrain 2020-06-15 15:16:34 +08:00
msr.h hv: Disable XSAVE-managed CET state of guest VM 2020-07-23 20:15:57 +08:00
page.h HV: nuc7i7dnb example of new VM configuratons layout 2020-07-24 16:16:06 +08:00
pci_dev.h hv: pci: check whether a PCI device is host bridge or not by class 2020-06-03 22:00:43 +08:00
per_cpu.h hv: maintain a per-pCPU array of vCPUs and handle posted interrupt IRQs 2020-04-15 13:47:22 +08:00
pgtable.h hv: iommu: remove snoop related code 2020-04-16 08:40:17 +08:00
platform_caps.h hv: add function to check if using posted interrupt is possible for vm 2020-04-15 13:47:22 +08:00
rdt.h HV: RDT: add CDP support in ACRN 2020-05-08 08:50:13 +08:00
security.h hv: ept: apply MCE on page size change mitigation conditionally 2019-12-03 09:17:04 +08:00
seed.h HV: rename append_seed_arg to fill_seed_arg 2020-06-08 13:30:04 +08:00
sgx.h hv: sgx: add basic support to init sgx resource for vm 2019-05-29 11:24:13 +08:00
timer.h hv: vpci: revert do FLR and BAR restore 2019-12-30 13:43:07 +08:00
trampoline.h hv:Move severl variable declaration for boot code 2019-01-25 21:32:21 +08:00
vm_config.h HV: add VM uuid and type for pre-launched RTVM 2020-07-23 21:58:32 +08:00
vmx.h hv: extend struct pi_desc to support VT-d posted interrupts 2020-03-31 10:30:30 +08:00
vtd.h hv: vtd: add an API to reserve continuous irtes 2020-06-16 08:52:56 +08:00
zeropage.h HV: init efi info with multiboot2 2020-02-26 09:24:16 +08:00