mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-01 11:55:25 +00:00
This is a preparation patch for adding support for VT-d PI related vCPU scheduling. ACRN does not support vCPU migration, one vCPU always runs on the same pCPU, so PI's ndst is never changed after startup. VCPUs of a VM won’t share same pCPU. So the maximum possible number of VCPUs that can run on a pCPU is CONFIG_MAX_VM_NUM. Allocate unique Activation Notification Vectors (ANV) for each vCPU that belongs to the same pCPU, the ANVs need only be unique within each pCPU, not across all vCPUs. This reduces # of pre-allocated ANVs for posted interrupts to CONFIG_MAX_VM_NUM, and enables ACRN to avoid switching between active and wake-up vector values in the posted interrupt descriptor on vCPU scheduling state changes. A total of CONFIG_MAX_VM_NUM consecutive IRQs/vectors are reserved for posted interrupts use. The code first initializes vcpu->arch.pid.control.bits.nv dynamically (will be added in subsequent patch), the other code shall use vcpu->arch.pid.control.bits.nv instead of the hard-coded notification vectors. Rename some functions: apicv_post_intr --> apicv_trigger_pi_anv posted_intr_notification --> handle_pi_notification setup_posted_intr_notification --> setup_pi_notification Tracked-On: #4506 Signed-off-by: dongshen <dongsheng.x.zhang@intel.com> Reviewed-by: Eddie Dong <eddie.dong@Intel.com> |
||
---|---|---|
.. | ||
boot | ||
configs | ||
guest | ||
lib | ||
seed | ||
cpu_caps.c | ||
cpu_state_tbl.c | ||
cpu.c | ||
e820.c | ||
gdt.c | ||
idt.S | ||
init.c | ||
ioapic.c | ||
irq.c | ||
Kconfig | ||
lapic.c | ||
mmu.c | ||
notify.c | ||
page.c | ||
pagetable.c | ||
platform_caps.c | ||
pm.c | ||
rdt.c | ||
sched.S | ||
security.c | ||
sgx.c | ||
timer.c | ||
trampoline.c | ||
vmx.c | ||
vtd.c | ||
wakeup.S |