acrn-hypervisor/hypervisor/arch/x86/guest
Yifan Liu fa6b55db68 hv: tee: Handling x86_tee secure interrupts corner cases
Previous upstreamed patches handles the secure/non-secure interrupts in
handle_x86_tee_int. However there is a corner case in which there might
be unhandled secure interrupts (in a very short time window) when TEE
yields vCPU. For this case we always make sure that no secure interrupts
are pending in TEE's vlapic before scheduling REE.

Also in previous patches, if non-secure interrupt comes when TEE is
handling its secure interrupts, hypervisor injects a predefined vector
into TEE's vlapic. TEE does not consume this vector in secure interrupt
handling routine so it stays in vIRR, but it should be cleared because the
actual interrupt will be consumed in REE after VM Entry.

v3:
    Fix comments on interrupt priority

v2:
    Add comments explaining the priority of secure/non-secure interrupts

Tracked-On: #6571
Signed-off-by: Yifan Liu <yifan1.liu@intel.com>
Reviewed-by: Wang, Yu1 <yu1.wang@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
2021-12-09 10:47:16 +08:00
..
assign.c hv: tee: x86_tee interrupt support 2021-11-17 15:25:14 +08:00
ept.c ACRN: hv: Terminology modification in hv code 2021-11-02 10:00:55 +08:00
guest_memory.c HV: treewide: fix violations of coding guideline C-TY-27 & C-TY-28 2021-11-04 18:15:47 +08:00
hyperv.c hv/mod_timer: split tsc handling code from timer. 2021-05-18 16:43:28 +08:00
instr_emul.c HV: treewide: fix violations of coding guideline C-TY-02 2021-11-04 18:15:47 +08:00
lock_instr_emul.c hv: Fix vcpu signaling racing problem in lock instruction emulation 2021-11-02 15:01:20 +08:00
nested.c hv: operations on vcpu->reg_cached/reg_updated don't need LOCK prefix 2021-10-08 09:11:10 +08:00
optee.c hv: tee: Handling x86_tee secure interrupts corner cases 2021-12-09 10:47:16 +08:00
pm.c HV: treewide: fix violations of coding guideline C-TY-27 & C-TY-28 2021-11-04 18:15:47 +08:00
trusty.c hv: remove UUID 2021-11-16 14:42:59 +08:00
ucode.c hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vcat.c hv: vCAT: propagate vCBM to other vCPUs that share cache with vcpu 2021-10-28 19:12:29 +08:00
vcpu.c hv: initialize and save/restore IA32_TSC_AUX MSR for guest 2021-11-12 09:30:12 +08:00
vcpuid.c ACRN: hv: Unify terminology for service vm 2021-11-02 10:00:55 +08:00
ve820.c HV: refine the ve820 tab for pre-VMs 2021-11-08 13:13:14 +08:00
vept.c ACRN: hv: Terminology modification in hv code 2021-11-02 10:00:55 +08:00
virq.c hv: Fix vcpu signaling racing problem in lock instruction emulation 2021-11-02 15:01:20 +08:00
virtual_cr.c HV: treewide: fix violations of coding guideline C-TY-02 2021-11-04 18:15:47 +08:00
vlapic_priv.h hv: add ops to vlapic structure 2019-07-19 16:47:06 +08:00
vlapic.c hv: Add two vlapic APIs 2021-12-09 10:47:16 +08:00
vm_reset.c ACRN: hv: Terminology modification in hv code 2021-11-02 10:00:55 +08:00
vm.c hv: Add stateful VM check before system shutdown 2021-12-01 08:47:25 +08:00
vmcall.c hv: Hide Service VM hypercalls from REE 2021-12-09 10:47:16 +08:00
vmcs.c hv:change log level for check_vmx_ctrl 2021-09-24 10:17:19 +08:00
vmexit.c HV: treewide: fix warnings raised by Clang 2021-11-04 18:15:47 +08:00
vmsr.c HV: treewide: fix violations of coding guideline C-TY-27 & C-TY-28 2021-11-04 18:15:47 +08:00
vmtrr.c ACRN: hv: Terminology modification in hv code 2021-11-02 10:00:55 +08:00
vmx_asm.S hv: mod: do not use explicit arch name when including headers 2021-05-08 11:15:46 +08:00
vmx_io.c ACRN: hv: Terminology modification in hv code 2021-11-02 10:00:55 +08:00