Home
last modified time | relevance | path

Searched refs:pi_desc (Results 1 – 8 of 8) sorted by relevance

/linux/arch/x86/include/asm/
H A Dposted_intr.h12 struct pi_desc { struct
29 static inline bool pi_test_and_set_on(struct pi_desc *pi_desc) in pi_test_and_set_on() argument
31 return test_and_set_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control); in pi_test_and_set_on()
34 static inline bool pi_test_and_clear_on(struct pi_desc *pi_desc) in pi_test_and_clear_on() argument
36 return test_and_clear_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control); in pi_test_and_clear_on()
39 static inline bool pi_test_and_clear_sn(struct pi_desc *pi_desc) in pi_test_and_clear_sn() argument
41 return test_and_clear_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc->control); in pi_test_and_clear_sn()
44 static inline bool pi_test_and_set_pir(int vector, struct pi_desc *pi_desc) in pi_test_and_set_pir() argument
46 return test_and_set_bit(vector, (unsigned long *)pi_desc->pir); in pi_test_and_set_pir()
49 static inline bool pi_is_pir_empty(struct pi_desc *pi_desc) in pi_is_pir_empty() argument
[all …]
H A Dhardirq.h55 DECLARE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc);
/linux/arch/x86/kvm/vmx/
H A Dposted_intr.c34 static inline struct pi_desc *vcpu_to_pi_desc(struct kvm_vcpu *vcpu) in vcpu_to_pi_desc()
36 return &(to_vmx(vcpu)->pi_desc); in vcpu_to_pi_desc()
39 static int pi_try_set_control(struct pi_desc *pi_desc, u64 *pold, u64 new) in pi_try_set_control() argument
47 if (!try_cmpxchg64(&pi_desc->control, pold, new)) in pi_try_set_control()
55 struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu); in vmx_vcpu_pi_load() local
57 struct pi_desc old, new; in vmx_vcpu_pi_load()
74 if (pi_desc->nv != POSTED_INTR_WAKEUP_VECTOR && vcpu->cpu == cpu) { in vmx_vcpu_pi_load()
79 if (pi_test_and_clear_sn(pi_desc)) in vmx_vcpu_pi_load()
91 if (pi_desc->nv == POSTED_INTR_WAKEUP_VECTOR) { in vmx_vcpu_pi_load()
101 old.control = READ_ONCE(pi_desc->control); in vmx_vcpu_pi_load()
[all …]
H A Dposted_intr.h17 static inline int pi_find_highest_vector(struct pi_desc *pi_desc) in pi_find_highest_vector() argument
21 vec = find_last_bit((unsigned long *)pi_desc->pir, 256); in pi_find_highest_vector()
H A Dvmx.h204 struct pi_desc *pi_desc; member
321 struct pi_desc pi_desc; member
H A Dnested.c324 vmx->nested.pi_desc = NULL; in nested_put_vmcs12_pages()
3374 vmx->nested.pi_desc = in nested_get_vmcs12_pages()
3375 (struct pi_desc *)(((void *)map->hva) + in nested_get_vmcs12_pages()
3386 vmx->nested.pi_desc = NULL; in nested_get_vmcs12_pages()
3927 if (!vmx->nested.pi_desc) in vmx_complete_nested_posted_interrupt()
3932 if (!pi_test_and_clear_on(vmx->nested.pi_desc)) in vmx_complete_nested_posted_interrupt()
3935 max_irr = pi_find_highest_vector(vmx->nested.pi_desc); in vmx_complete_nested_posted_interrupt()
3941 __kvm_apic_update_irr(vmx->nested.pi_desc->pir, in vmx_complete_nested_posted_interrupt()
4099 if (vmx->nested.pi_pending && vmx->nested.pi_desc && in vmx_has_nested_events()
4100 pi_test_on(vmx->nested.pi_desc)) { in vmx_has_nested_events()
[all …]
H A Dvmx.c4286 if (pi_test_and_set_pir(vector, &vmx->pi_desc)) in vmx_deliver_posted_interrupt()
4290 if (pi_test_and_set_on(&vmx->pi_desc)) in vmx_deliver_posted_interrupt()
4766 vmcs_write64(POSTED_INTR_DESC_ADDR, __pa((&vmx->pi_desc))); in init_vmcs()
4879 vmx->pi_desc.nv = POSTED_INTR_VECTOR; in __vmx_vcpu_reset()
4880 __pi_set_sn(&vmx->pi_desc); in __vmx_vcpu_reset()
6934 if (pi_test_on(&vmx->pi_desc)) { in vmx_sync_pir_to_irr()
6935 pi_clear_on(&vmx->pi_desc); in vmx_sync_pir_to_irr()
6942 kvm_apic_update_irr(vcpu, vmx->pi_desc.pir, &max_irr); in vmx_sync_pir_to_irr()
6986 pi_clear_on(&vmx->pi_desc); in vmx_apicv_pre_state_restore()
6987 memset(vmx->pi_desc.pir, 0, sizeof(vmx->pi_desc.pir)); in vmx_apicv_pre_state_restore()
[all …]
/linux/arch/x86/kernel/
H A Dirq.c360 DEFINE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc);
448 struct pi_desc *pid; in DEFINE_IDTENTRY_SYSVEC()