Commit Graph

6659 Commits

Author SHA1 Message Date
Zide Chen e48962faa6 hv: optimize run_vcpu() for nested
This patch implements a separate path for L2 VMEntry in run_vcpu(),
which has several benefits:

- keep run_vcpu() clean, to reduce the number of is_vcpu_in_l2_guest()
  statements:
  - current code has three is_vcpu_in_l2_guest() already.
  - supposed to have another 2 statement so that nested VMEntry won't
    hit the "Starting vCPU" and "vCPU launched" pr_info() and a few
    other statements in the VM launch path.

- save few other things in run_vcpu() that are not needed for nested.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@Intel.com>
2021-10-13 15:55:31 +08:00
David B. Kinder 0c677fd3b4 doc: remove unreferenced images
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-10-11 18:20:12 -07:00
Amy Reyes 538d497981 Address review feedback in hld-splitlock.rst
Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-10-11 13:01:50 -07:00
Amy Reyes b9cad70614 doc: Change "configuration tool" to "ACRN configurator tool"
- Change "configuration tool" to "ACRN configurator tool" to match the tool's UI
- Change "configuration toolset" to "ACRN configurator tool" in cases that clearly refer to the configurator and not the entire toolset, update cross-ref

Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-10-11 13:01:50 -07:00
David B. Kinder 7bcfd58f05 doc: update GSG with DX recommendations
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-10-11 11:51:45 -07:00
David B. Kinder 5e0e6b434c doc: fix cumulative issues in GSG from DX study
Address a collection of small issues in the GSG:
- remove mention of the (optional) serial port use
- update recommended development computer memory size
- mention why there are six user VM launch scripts (and that we're only going to
  use one of them)
- clarify how OS installed for running board inspector is modified with
  the Linux kernel built using board and configuration information
- add commands used to confirm files are in the expected directories
- remove specific BIOS example (keep just settings info)

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-10-11 09:37:06 -07:00
Yang,Yu-chu 4856ac9336 config-tools: refine xpath to pci host bridge
Looks for host bridge with address = '0x0'.

Tracked-On: #6024
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-10-09 09:59:59 +08:00
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 69e37b96f3 config-tools: allow vm to configure up to 8 legacy vuarts
Expand the capacity of legacy vuarts per VM. This change is applied to
manual scenario xml editing only.

A SOS VM can choose io port 0x3F8, 0x2F8, 0x3E8, 0x2E8 by selecting
SOS_COM1_BASE, SOS_COM2_BASE, SOS_COM3_BASE, SOS_COM4_BASE respectively.

Non SOS VM can choose io port 0x3F8, 0x2F8, 0x3E8, 0x2E8 by selecting
COM1_BASE, COM2_BASE, COM3_BASE, COM4_BASE respectively.

For any type of VM, selecting "CONFIG_COM_BASE" allows configuration tool
to pick an available io port from hardcoded list:
['0xA000', '0xA010', '0xA020', '0xA030', '0xA040', '0xA050', '0xA060', '0xA070']

A SOS VM can choose irq 4 by selecting SOS_COM1_IRQ and SOS_COM3_IRQ, and choose irq 3 by selecting SOS_COM2_IRQ and SOS_COM4_IRQ.

Non SOS VM can choose irq 4 by selecting COM1_IRQ and COM3_IRQ, and choose irq 3 by selecting COM2_IRQ and COM4_IRQ.

For SOS VM, selecting "CONFIG_COM_IRQ" allows configuration tool
to pick an available irq based on AVAILABLE_IRQ_INFO. For non SOS VM, it
will allocate an available irq from [1, 15].

Tracked-On: #6652
Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
2021-10-09 09:47:22 +08:00
Zide Chen 89bbc44962 hv: inject external interrupts only if LAPIC is not passthru
Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@Intel.com>
2021-10-08 09:18:34 +08:00
Zide Chen 228b052fdb hv: operations on vcpu->reg_cached/reg_updated don't need LOCK prefix
In run time, one vCPU won't read or write a register on other vCPUs,
thus we don't need the LOCK prefixed instructions on reg_cached and
reg_updated.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-10-08 09:11:10 +08:00
Zide Chen 2b683f8f5b hv: call vcpu_inject_exception() only when ACRN_REQUEST_EXCP is set
move the bitmap test call out of vcpu_inject_exception(), then we call
the expensive bitmap_test_and_clear_lock() only pending_req_bits is
non-zero and call vcpu_inject_exception() only if needed.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@Intel.com>
2021-10-07 20:48:43 +08:00
Zide Chen f801ba4ed7 hv: update guest RIP only if vcpu->arch.inst_len is non zero
In very large number of VM extis, the VM-exit instruction length could be
zero, and it's no need to update VMX_GUEST_RIP.

Some examples:

- all external interrupt VM exits in non LAPIC passthru setup.
- for all the nested VM-exits that are reflecting to L1 hypervisor.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-10-07 20:47:07 +08:00
Zide Chen b7e9a68923 hv: code cleanup in run_vcpu()
- wrap a new function exec_vmentry() to reduce code duplication.
- remove exec_vmread(VMX_GUEST_RSP) since ACRN doesn't need to know
  guest RSP in run time.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-10-07 20:47:07 +08:00
Zide Chen ee12daff84 hv: nested: refine vmcs12_read/write_field APIs
Change "uint64_t vmcs_hva" to "void *vmcs_hva" in the input argument,
list, so that no type casting is needed when calling them from pointers.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-10-07 20:45:34 +08:00
David B. Kinder e03f0045dc doc: update docs and images to match scenario names
Update the docs and images referencing ``industry`` and ``logical_partition`` scenarios to
``shared`` and ``partioned``.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-10-04 15:53:45 -07:00
David B. Kinder 8ccb0d3e74 doc: missed one more VHM in images
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-30 14:18:04 -07:00
David B. Kinder ea4328f5f4 doc: GSG apt install command DX improvement
As recommended, add a ``-y`` to the ``apt install`` commands so they
don't prompt the user to confirm the installation, seen as unnecessary
in this context.

Also, wrap lines that are longer then 80 chars to improve git reviews
and follow our doc conventions.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-30 11:08:48 -07:00
Geoffroy Van Cutsem e18d99ef65 doc: Update "Enable S5 in ACRN" tutorial
Update the "Enable S5 in ACRN" tutorial to:
* Make the language clearer at places
* Consistent use of "Lifecycle Manager" and "life_mngr"
* Change "ACK" to "ACKED"
* Use a ReST reference to point at the architectural diagram
* Update build instructions
* Replace 'literalinclude' by static code-blocks to avoid the
  content going out of date

Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2021-09-30 11:08:27 -07:00
David B. Kinder b81153145d doc: update images with VHM to use HSM
Change references to VHM to HSM (Hypervisor Service Module) in images.
While in these files, update SOS (to Service VM) and UOS (to User VM) as
well.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-30 08:45:46 -07:00
wenlingz 88789e3b03 version:2.7-unstable
Signed-off-by: wenlingz <wenling.zhang@intel.com>
2021-09-30 09:39:49 +08:00
Kunhui-Li 2a8c587824 config_tools: update board name in makefile
update board name from nuc7i7dnb to nuc11tnbi5 in makefile because
we have removed the nuc7i7dnb board folder, and also update the
scenario name from industry to shared to fix "make all" build issue.

Tracked-On: #6315
Signed-off-by: Kunhui-Li <kunhuix.li@intel.com>
2021-09-29 16:53:44 +08:00
Kunhui-Li 65230289f4 config_tools: clean up board folders under data directory
1. move tgl-rvp and ehl-crb-b folders under data directory to 1source.
2. delete nuc7i7dnb and whl-ipc-i7 folders under data directory.

Tracked-On: #6315
Signed-off-by: Kunhui-Li <kunhuix.li@intel.com>
2021-09-29 09:41:16 +08:00
David B. Kinder dc17068781 doc: add v2.6 to doc menu selector
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-28 13:55:05 -07:00
David B. Kinder d8e0b7df43 doc: update redirects for deleted docs
Add a couple of redirect pages for 404 errors noted in analytics data,
and add replace the deleted roscube GSG with a doc linking to the last
updated version in v2.5.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-28 11:52:48 -07:00
David B. Kinder 0f55ae4001 doc: remove draft status on 2.6 release notes
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-28 09:40:01 -07:00
David B. Kinder 732a399215 doc: fix utf8 chars and missing EOF newlines
Fix some stray and missing characters, and extra newlines.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-28 09:34:41 -07:00
Amy Reyes 6d7d417a9f Add default makefile target
Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-09-28 08:59:08 -07:00
Amy Reyes 6e4e619e17 Address review feedback for launch config options, makefile options, intro
Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-09-28 08:59:08 -07:00
Amy Reyes b203e7e958 Address review comments
Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-09-28 08:59:08 -07:00
Amy Reyes 0ac609b5d8 doc: create ACRN config tool/board inspector docs
- Create ACRN config tool doc based on info in existing "Intro to ACRN Configuration" doc, add clarifications
- Create board inspector tool doc based on info in existing "Intro to ACRN Configuration" doc, add clarifications
- Create launch config options doc based on info in existing "Intro to ACRN Configuration" doc, similar to existing scenario config options doc
- Update refs that no longer exist
- Create hypervisor makefile options doc, combining makefile info from "Intro to ACRN Configuration" doc and "Build ACRN from Source" doc
- Clarify why you need config files, difference between scenario vs. launch VM settings
- Updates are intended to reflect v2.6 code

Signed-off-by: Amy Reyes <amy.reyes@intel.com>
2021-09-28 08:59:08 -07:00
fuzhongl 6700a510be Doc: Add known issue and fixed issue in release note
Signed-off-by: fuzhongl <fuzhong.liu@eintel.com>
2021-09-28 08:51:34 -07:00
David B. Kinder 60baaea3cd doc: update checkout branch in GSG
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-27 19:11:31 -07:00
David B. Kinder b4967081bf doc: cleanup/update glossary terms
There are many graphics-related terms in the glossary that are not
referenced in the documentation.  Remove those terms, and clarify new
terms in our updated GSG and introductory docs.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-27 19:04:50 -07:00
Liu,Junming 545c006a33 hv: inject #GP if guest tries to reprogram pass-thru dev PIO bar
In current design, when pass-thru dev,
for the PIO bar, need to ensure the guest PIO start address
equals to host PIO start address.

But malicious guest may reprogram the PIO bar,
then hv will pass-thru the reprogramed PIO address to guest.
This isn't safe behavior.
When guest tries to reprogram pass-thru dev PIO bar,
inject #GP to guest directly.

Tracked-On: #6508

Signed-off-by: Liu,Junming <junming.liu@intel.com>
Reviewed-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
2021-09-28 08:49:01 +08:00
Liu,Junming 4105ca2cb4 hv: deny the launch of VM if pass-thru PIO bar isn't identical mapping
In current design, when pass-thru dev,
for the PIO bar, need to ensure the guest PIO start address
equals to host PIO start address.
Then set the VMCS io bitmap to pass-thru the corresponding
port io to guest for performance.

ACRN-DM and acrn-config should ensure the identical mapping of PIO bar.
If ACRN-DM or acrn-config failed to achieve this,
we should deny the launch of VM

Tracked-On: #6508

Signed-off-by: Liu,Junming <junming.liu@intel.com>
Reviewed-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
2021-09-28 08:49:01 +08:00
Yonghua Huang 275a274673 doc: update 'asa.rst' for 2.6 release
Update security vulnerability fix in 2.6 release.

Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-27 10:35:16 -07:00
jackwhich 0f05204cbc doc: Update logical_partition documentation
1.Modified Intel Whiskey Lake to Intel NUC Kit NUC11TNBi5
2.Change the logical partition and mixed test motherboard name

Signed-off-by: zhongzhenx.liu <zhongzhenx.liu@intel.com>
2021-09-27 10:26:03 -07:00
Victor Sun 28824c1e74 HV: init e820 before init paging
In the commit of 4e1deab3d9, we changed the
init sequence that init paging first and then init e820 because we worried
about the efi memory map could be beyond 4GB space on some platform.

After we double checked multiboot2 spec, when system boot from multiboot2
protocol, the efi memory map info will be embedded in multiboot info so it
is guaranteed that the efi memory map must be under 4GB space. Consider that
the page table will be allocated in free memory space in future, we have
to change the init sequence back that init e820 first and then init paging.

If we need to support other boot protocol in future that the efi memory map
might be put beyond 4GB, we could have below options:
	1. Request bootloader put efi memory map below 4GB;
	2. Call EFI_BOOT_SERVICES.GetMemoryMap() before ExitBootServices();
	3. Enable a early 64bit page table to get the efi memory map only;

Tracked-On: #5626

Signed-off-by: Victor Sun <victor.sun@intel.com>
2021-09-27 09:03:15 +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
Zide Chen a62dd6ad8a hv: nested: fixed vmxoff_vmexit_handler() issue
In VMXOFF vmexit handler, it's supposed to remove VMCS shadowing.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
2021-09-26 08:49:35 +08:00
Zide Chen 45b036e028 hv: nested: enable multiple active VMCS12 support
This patch changes the size of vvmcs[] array from 1 to
PER_VCPU_ACTIVE_VVMCS_NUM, and actually enables multiple active VMCS12
support in ACRN.  The basic operations:

- if L1 VMPTRLDs a VMCS12 without previously VMCLEAR the current
  VMCS12, ACRN no longer unconditionally flushes the current VMCS12
  back to L1.  Instead, it tries to keep both the current and the newly
  loaded VMCS12 in the nested->vvmcs[] array, unless:

- if there is no more available vvmcs[] entry, ACRN flushes one active
  VMCS12 to make room for this new VMCS12.

Tracked-On: #6289
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2021-09-26 08:49:35 +08:00
David B. Kinder ce8d69333a doc: remove enable ptm tutorial
Enabling PTM requires some additional engineering work, so we're
removing these instructions for now.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-24 16:08:10 -07:00
David B. Kinder bd57475854 doc: add iomem kernel parameter for board inspector
Without this ``iomem=relaxed`` kernel parameter, the generated board XML
is essentially the same as having ``--basic`` when executing the board
inspector, i.e. the ACPI namespace will not be parsed. The generated
board XML may still work, but some functionality (e.g. passthru of TPM
and other PCI devices that need INTx) will no longer work due to lack of
hardware information.

Replacing PR #6618

Tracked-On: #5692

Signed-off-by: zhongzhenx.liu <zhongzhenx.liu@intel.com>
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-24 11:40:24 -07:00
Mingqiang Chi f39c882359 hv:change log level for check_vmx_ctrl
Some processors don't support VMX_PROCBASED_CTLS_TERTIARY bit
and VMX_PROCBASED_CTLS2_UWAIT_PAUSE bit in MSRs
(IA32_VMX_PROCBASED_CTLS & IA32_VMX_PROCBASED_CTLS2),
HV will output error log which will cause confusion,
change the log level from pr_err to pr_info.

Tracked-On: #6397

Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
2021-09-24 10:17:19 +08:00
Jie Deng 064fd7647f hv: add priority based scheduler
This patch adds a new priority based scheduler to support
vCPU scheduling based on their pre-configured priorities.
A vCPU can be running only if there is no higher priority
vCPU running on the same pCPU.

Tracked-On: #6571
Signed-off-by: Jie Deng <jie.deng@intel.com>
2021-09-24 09:32:18 +08:00
David B. Kinder dfe49ee972 doc: update serial port instructions in scenario GSGs
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-23 16:28:12 -07:00
jackwhich f591a249e2 doc: Steps to update hybrid and logical_Partition documents
1.Modify hybrid update ubuntu grub Note: The syntax is easy for users to understand.
2.Add to view the serial port number, enter the serial hybrid verification mode.
3.Delete the kernel, because the config_uos file has been abandoned for maintenance,
  now the Ubuntu native kernel image is used and added to the document.
4.Add to view the serial port number, enter the serial port logic_partition verification method.

Signed-off-by: zhongzhenx.liu <zhongzhenx.liu@intel.com>
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-23 11:43:38 -07:00
fuzhongl 7ca0d97ee9 Doc: launch L2 guest with ovmf for ACRN on QEMU
ACRN will not maintain User VM kernel config any more;
ovmf will be used to launch L2 guest by default.

Signed-off-by: fuzhongl <fuzhong.liu@eintel.com>
Reviewed-by:   gvancuts <geoffroy.vancutsem@intel.com>
2021-09-23 07:10:40 -07:00
David B. Kinder 722570d728 doc: update release notes with new features
Add new features information provided by engineering.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2021-09-23 07:06:14 -07:00