Commit Graph

11 Commits

Author SHA1 Message Date
Yang,Yu-chu
4651836f50 config-tools: allocate io-port address for legacy vuarts
If a legacy vuart base is configured as "CONFIG_COM_BASE", allocate a
base with unused io-port address with length 0x10.

The post-launched VM's unused io-port address range is [0xD00, 0xFFFF].
The pre-launched VM's unused io-port address range is [0xD00, 0xFFFF]
but the passthrough devices' io-port address are reserved.
The SOS VM's unused io-port address range is [0xD00, 0xFFFF] but any
native devices' io-port address are reserved. However, the io-port
address which is passed through to any pre-launched is reusable.

Tracked-On: #6652
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-10-09 09:47:22 +08:00
Yang,Yu-chu
8f2ede9cfd config-tools: pci devices' io-ports passthrough
Pass through the io-ports for the passthrough pci devices of
pre-launched VM.

Three parts to support this feature:
1. Identical map the pci devices io-port address for pre-launched VM
2. Set the io-ports address range to DSDT
3. Avoid to allocate the bar index for VMSIX

Tracked-On: #6620
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-09-26 09:21:11 +08:00
Yang,Yu-chu
366ea37552 config-tools: assign a fixed address to log area start address
Reserve the log area in [VIRT_ACPI_NVS_ADDR + 0xB0000, 0x7FFF0000)

Tracked-On: #6320
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-09-14 14:57:50 +08:00
Yang,Yu-chu
a141bfdf55 config-tools: refine log area start address allocation
Allocates the log area start address using the same size as native environment.

Tracked-On: #6320
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-08-23 14:55:11 +08:00
Junjie Mao
1dca1da96d config_tools: rename two missed PSRAMs to SSRAMs
The term PSRAM is now obsoleted and should be replaced with SSRAM, as has been
done by commit 9facbb43b3 ("config-tool: rename PSRAM to SSRAM"). However,
there are two places in the configuration toolset that still uses PSRAM. This
patch updates these missed occurrences accordingly.

Tracked-On: #6012
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2021-08-19 10:48:15 +08:00
Yang,Yu-chu
cb736e4cc1 config-tools: allocate log area start address
If passthrough TPM2 is enabled and the log area is present, allocates
the log_area_start_address with the size log_area_minimum_length(256K).

Tracked-On: #6320
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-08-11 14:45:55 +08:00
Junjie Mao
692ab1d529 config_tools: abstract BusDevFunc to the common library module
It is a common practice to parse PCI BDF in the static allocators. This
patch moves the BusDevFunc class (which is a named tuple encoding a BDF) to
lib.py and uses it for BDF parsing throughout the static allocators.

Tracked-On: #6287
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2021-08-09 09:05:01 +08:00
Junjie Mao
26021bd467 board_inspector: add interrupt pin routing and usage
This patch adds interrupt pin related information into the board XML,
including:

  * The PCI routing table in ACPI DSDT/SSDT are parsed and generated into
    the board XML as "interrupt_pin_routing" nodes.

  * IRQs encoded in _CRS directly are represented as resources of type
    "irq".

  * Interrupt lines (i.e. INTx#) of PCI devices are represented as
    resources of type "interrupt_pin". When the PCI routing table is
    available, the corresponding interrupt line is identified and
    represented as the "source" attribute of the resource node.

Due to the existence of vIOAPIC in ACRN VMs, the board inspector interprets
the \_PIC method with parameter 1 to inform the ACPI namespace that the
interrupt model should be in APIC mode.

v1 -> v2:
  * Remove the msi_enable variable which is defined but never used.

Tracked-On: #6287
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2021-08-09 09:05:01 +08:00
Yang,Yu-chu
19f8bd7a06 config-tools: allocate the first unused bar for vmsix
A vmsix supported passthrough device expects the first unused bar region
for vmsix. Pop the first unused_bar_index in gpa.py instead.

Reference code: init_vmsix_on_msi of hypervisor\dm\vpci\vmsix_on_msi.c

Tracked-On: #6192
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-06-11 10:48:56 +08:00
Yang,Yu-chu
152d0bce5c config-tools: add methods to allocate mmio windows for emulated devices
Add methods allocates the mmio bar base to console vuart,
communication vuarts, inter-vm shared memory and passthrough pci
devices.

For SOS:
 - get low mem by parsing board xml.
 - get high mem by parsing board xml, if the high mem is not enabled,
 the high mem start address would be ~0UL and the end address is 0UL
 - get the occupied mmio windows by parsing board.xml
 - for each console vuart, communication vuart and inter-vm shared memory
 devices, assign unused mmio windows to them
 - all the assigned mmio windows must be unique and should not overlay
 with any devices' mmio window
 - the passthrough devices mmio windows can be reused in SOS vm
 - each allocated mmio start address must be 4k alignment if the length
 of bar is smaller than 4k
 - each allocated mmio start address must be aligned with the bar length
 if its length is greater than 4k
 - the 32bits bar will fall in low mem range only
 - 64bits bar will look for free mmio in low mem rage first, if the high
 mem is enabled, the 64bits bar will look for free mmio in high mem
 range if there is not enough space in low mem range
 - allocator raises an error if there is not enough mmio space

For pre-launched VM:
 - the high mem range is [256G, 512G)
 - the low mem range is [2G, 3.5G)
 - there is no used mmio window initially
 - for each console vuart, communication vuart, inter-vm shared memory
 devices and passthrough devices, assign unused mmio windows to them
 - all the assigned mmio windows must be unique and should not overlay
 with any devices' mmio window
 - the 32bits bar will fall in low mem range only
 - 64bits bar will look for free mmio in low mem rage first and then
 look for free mmio in high mem range if there is not enough space in
 low mem range
 - each allocated mmio start address must be 4k alignment if the length
 of bar is smaller than 4k
 - each allocated mmio start address must be aligned with the bar length
 if its lenght is greater than 4k
 - allocator raises an error if there is not enough mmio space

Tracked-On: #6024
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
Reviewed-by: Junjie Mao <junjie.mao@intel.com>
2021-05-24 21:53:22 +08:00
Junjie Mao
99f15a27c2 board_inspector/acpiparser: enable parsing RTCT v2
This patch adds support to parse RTCT v2 using the refined board XML
schema. The major changes include:

 - Add the RTCT v2 parser in the acpiparser module. The version of an RTCT
   is detected automatically to choose the right parser.
 - Extract software SRAM capabilities of caches into the board XML.
 - Move the logic that determines the software SRAM base address for the
   pre-launched VM to the static allocator of GPAs.
 - Generate software SRAM related macros into misc_cfg.h when necessary.

Tracked-On: #6020
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2021-05-19 08:53:38 +08:00