acrn-hypervisor/hypervisor/arch/x86
Binbin Wu a6944fe620 hv: vtd: export iommu_flush_cache
VT-d shares the EPT tables as the second level translation tables.
For the IOMMUs that don't support page-walk coherecy, cpu cache should
be flushed for the IOMMU EPT entries that are modified.

For the current implementation, EPT tables for translating from GPA to HPA
for EPT/IOMMU are not modified after VM is created, so cpu cache invlidation is
done once per VM before starting execution of VM.
However, this may be changed, runtime EPT modification is possible.

When cpu cache of EPT entries is invalidated when modification, there is no need
invalidate cpu cache globally per VM.

This patch exports iommu_flush_cache for EPT entry cache invlidation operations.
- IOMMUs share the same copy of EPT table, cpu cache should be flushed if any of
  the IOMMU active doesn't support page-walk coherency.
- In the context of ACRN, GPA to HPA mapping relationship is not changed after
  VM created, skip flushing iotlb to avoid potential performance penalty.

Tracked-On: #4120
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
Reviewed-by: Anthony Xu <anthony.xu@intel.com>
2019-11-19 09:06:21 +08:00
..
boot function name change in init.c 2018-12-19 09:07:14 +08:00
configs HV:config:Add config to enable logic partition on KBL NUC i7 2019-04-16 12:07:58 +08:00
guest hv:unmap AP trampoline region from service VM's EPT 2019-11-18 10:40:02 +08:00
seed hv: seed: fix potential NULL pointer dereferencing 2019-04-23 10:23:54 +08:00
cat.c HV: CAT: support config CAT from acrn_vm_config 2019-02-28 11:22:29 +08:00
cpu_caps.c hv: fix "Else alternative missing in if." 2019-04-03 09:20:55 +08:00
cpu_state_tbl.c hv:cleanup header files for arch folder 2019-02-22 13:14:36 +08:00
cpu.c HV: return bool in sanitize_vm_config 2019-04-12 13:45:32 +08:00
e820.c hv: cleanup some hva/hpa conversion code 2019-03-15 09:03:14 +08:00
gdt.c hv:cleanup header files for arch folder 2019-02-22 13:14:36 +08:00
idt.S move idt.S and idt.h out of boot component 2018-12-12 09:07:43 +08:00
init.c hv: refactor seed management 2019-03-14 10:38:17 +08:00
ioapic.c hv:cleanup header files for arch folder 2019-02-22 13:14:36 +08:00
irq.c hv: Remove separate interrupt routine for pre-launched VMs 2019-04-04 17:51:36 +08:00
Kconfig HV: move CONFIG_MAX_VM_NUM to vm configurations 2019-04-08 13:08:55 +08:00
lapic.c hv: fix some potential array overflow risk 2019-07-19 16:39:01 +08:00
mmu.c hv: cleanup some hva/hpa conversion code 2019-03-15 09:03:14 +08:00
notify.c hv: fix some potential array overflow risk 2019-07-19 16:39:01 +08:00
page.c hv:cleanup header files for arch folder 2019-02-22 13:14:36 +08:00
pagetable.c hv:refine modify_or_del_pte/pde/pdpte()function 2019-11-18 10:40:02 +08:00
pm.c hv:move instr_emul_ctxt instance to struct vcpu 2019-03-13 14:04:20 +08:00
retpoline-thunk.S license: Replace license text with SPDX tag 2018-06-01 10:43:06 +08:00
sched.S replace arch_switch_to with pure asm code instead of inline asm 2019-01-25 11:39:47 +08:00
security.c hv: fix "Else alternative missing in if." 2019-04-03 09:20:55 +08:00
static_checks.c hv:cleanup header files for arch folder 2019-02-22 13:14:36 +08:00
timer.c hv:move 'udelay' to timer.c 2019-03-22 08:38:13 +08:00
trampoline.c hv: merge SBL and UEFI related stuff under bsp 2019-03-13 10:26:55 +08:00
vmx.c hv:move instr_emul_ctxt instance to struct vcpu 2019-03-13 14:04:20 +08:00
vtd.c hv: vtd: export iommu_flush_cache 2019-11-19 09:06:21 +08:00
wakeup.S HV: modularization to refine pm related code. 2018-12-19 13:02:09 +08:00