/linux/arch/x86/include/asm/ |
H A D | posted_intr.h | 20 struct pi_desc { struct 93 static inline bool pi_test_and_set_on(struct pi_desc *pi_desc) in pi_test_and_set_on() argument 95 return test_and_set_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control); in pi_test_and_set_on() 98 static inline bool pi_test_and_clear_on(struct pi_desc *pi_desc) in pi_test_and_clear_on() argument 100 return test_and_clear_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control); in pi_test_and_clear_on() 103 static inline bool pi_test_and_clear_sn(struct pi_desc *pi_desc) in pi_test_and_clear_sn() argument 105 return test_and_clear_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc in pi_test_and_clear_sn() 21 pirpi_desc global() argument 22 __anonfb3aeae4010api_desc global() argument 31 rsvdpi_desc global() argument 108 pi_test_and_set_pir(int vector,struct pi_desc * pi_desc) pi_test_and_set_pir() argument 113 pi_is_pir_empty(struct pi_desc * pi_desc) pi_is_pir_empty() argument 118 pi_set_sn(struct pi_desc * pi_desc) pi_set_sn() argument 123 pi_set_on(struct pi_desc * pi_desc) pi_set_on() argument 128 pi_clear_on(struct pi_desc * pi_desc) pi_clear_on() argument 133 pi_clear_sn(struct pi_desc * pi_desc) pi_clear_sn() argument 138 pi_test_on(struct pi_desc * pi_desc) pi_test_on() argument 143 pi_test_sn(struct pi_desc * pi_desc) pi_test_sn() argument 148 pi_test_pir(int vector,struct pi_desc * pi_desc) pi_test_pir() argument 154 __pi_set_sn(struct pi_desc * pi_desc) __pi_set_sn() argument 159 __pi_clear_sn(struct pi_desc * pi_desc) __pi_clear_sn() argument [all...] |
H A D | hardirq.h | 54 DECLARE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc);
|
/linux/arch/x86/kvm/vmx/ |
H A D | posted_intr.c | 38 static struct pi_desc *vcpu_to_pi_desc(struct kvm_vcpu *vcpu) in vcpu_to_pi_desc() 40 return &(to_vt(vcpu)->pi_desc); in vcpu_to_pi_desc() 43 static int pi_try_set_control(struct pi_desc *pi_desc, u64 *pold, u64 new) in pi_try_set_control() argument 51 if (!try_cmpxchg64(&pi_desc->control, pold, new)) in pi_try_set_control() 59 struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); in vmx_vcpu_pi_load() local 61 struct pi_desc old, new; in vmx_vcpu_pi_load() 79 if (pi_desc->nv != POSTED_INTR_WAKEUP_VECTOR && vcpu->cpu == cpu) { in vmx_vcpu_pi_load() 80 if (pi_test_and_clear_sn(pi_desc)) in vmx_vcpu_pi_load() 164 struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); pi_enable_wakeup_handler() local 225 struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); vmx_vcpu_pi_put() local 285 struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); pi_has_pending_interrupt() local [all...] |
H A D | common.h | 35 struct pi_desc pi_desc; member 160 struct pi_desc *pi_desc, int vector) in __vmx_deliver_posted_interrupt() argument 162 if (pi_test_and_set_pir(vector, pi_desc)) in __vmx_deliver_posted_interrupt() 166 if (pi_test_and_set_on(pi_desc)) in __vmx_deliver_posted_interrupt()
|
H A D | posted_intr.h | 22 static inline int pi_find_highest_vector(struct pi_desc *pi_desc) in pi_find_highest_vector() argument 26 vec = find_last_bit(pi_desc->pir, 256); in pi_find_highest_vector()
|
H A D | vmx.h | 163 struct pi_desc *pi_desc; member
|
H A D | nested.c | 325 vmx->nested.pi_desc = NULL; in nested_put_vmcs12_pages() 3392 vmx->nested.pi_desc = in nested_get_vmcs12_pages() 3393 (struct pi_desc *)(((void *)map->hva) + in nested_get_vmcs12_pages() 3404 vmx->nested.pi_desc = NULL; in nested_get_vmcs12_pages() 3945 if (!vmx->nested.pi_desc) in vmx_complete_nested_posted_interrupt() 3950 if (!pi_test_and_clear_on(vmx->nested.pi_desc)) in vmx_complete_nested_posted_interrupt() 3953 max_irr = pi_find_highest_vector(vmx->nested.pi_desc); in vmx_complete_nested_posted_interrupt() 3959 __kvm_apic_update_irr(vmx->nested.pi_desc->pir, in vmx_complete_nested_posted_interrupt() 4117 if (vmx->nested.pi_pending && vmx->nested.pi_desc && in vmx_has_nested_events() 4118 pi_test_on(vmx->nested.pi_desc)) { in vmx_has_nested_events() [all...] |
H A D | tdx.c | 705 tdx->vt.pi_desc.nv = POSTED_INTR_VECTOR; in tdx_vcpu_create() 706 __pi_set_sn(&tdx->vt.pi_desc); in tdx_vcpu_create() 1051 if (pi_test_on(&vt->pi_desc)) { in tdx_vcpu_run() 1055 APIC_VECTOR_MASK, &vt->pi_desc)) in tdx_vcpu_run() 1915 __vmx_deliver_posted_interrupt(vcpu, &tdx->vt.pi_desc, vector); in tdx_deliver_interrupt() 3125 td_vmcs_write64(tdx, POSTED_INTR_DESC_ADDR, __pa(&tdx->vt.pi_desc)); in tdx_vcpu_init()
|
H A D | vmx.c | 4183 __vmx_deliver_posted_interrupt(vcpu, &vt->pi_desc, vector); in vmx_deliver_posted_interrupt() 4650 vmcs_write64(POSTED_INTR_DESC_ADDR, __pa((&vmx->vt.pi_desc))); in init_vmcs() 4761 * Enforce invariant: pi_desc.nv is always either POSTED_INTR_VECTOR in __vmx_vcpu_reset() 4764 vmx->vt.pi_desc.nv = POSTED_INTR_VECTOR; in __vmx_vcpu_reset() 4765 __pi_set_sn(&vmx->vt.pi_desc); in __vmx_vcpu_reset() 6824 if (pi_test_on(&vt->pi_desc)) { in vmx_sync_pir_to_irr() 6825 pi_clear_on(&vt->pi_desc); in vmx_sync_pir_to_irr() 6832 kvm_apic_update_irr(vcpu, vt->pi_desc.pir, &max_irr); in vmx_sync_pir_to_irr() 7507 __pa(&vmx->vt.pi_desc) | PID_TABLE_ENTRY_VALID); in vmx_vcpu_create()
|
/linux/arch/x86/kernel/ |
H A D | irq.c | 398 DEFINE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc); 443 struct pi_desc *pid; in DEFINE_IDTENTRY_SYSVEC()
|