Symbol: pi_desc
arch/x86/include/asm/hardirq.h
57
DECLARE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc);
arch/x86/include/asm/posted_intr.h
100
return test_and_clear_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
103
static inline bool pi_test_and_clear_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
105
return test_and_clear_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
108
static inline bool pi_test_and_set_pir(int vector, struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
110
return test_and_set_bit(vector, pi_desc->pir);
arch/x86/include/asm/posted_intr.h
113
static inline bool pi_is_pir_empty(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
115
return bitmap_empty(pi_desc->pir, NR_VECTORS);
arch/x86/include/asm/posted_intr.h
118
static inline void pi_set_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
120
set_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
123
static inline void pi_set_on(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
125
set_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
128
static inline void pi_clear_on(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
130
clear_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
133
static inline void pi_clear_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
135
clear_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
138
static inline bool pi_test_on(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
140
return test_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
143
static inline bool pi_test_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
145
return test_bit(POSTED_INTR_SN, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
148
static inline bool pi_test_pir(int vector, struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
150
return test_bit(vector, (unsigned long *)pi_desc->pir);
arch/x86/include/asm/posted_intr.h
154
static inline void __pi_set_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
156
pi_desc->notifications |= BIT(POSTED_INTR_SN);
arch/x86/include/asm/posted_intr.h
159
static inline void __pi_clear_sn(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
161
pi_desc->notifications &= ~BIT(POSTED_INTR_SN);
arch/x86/include/asm/posted_intr.h
172
struct pi_desc *pid = this_cpu_ptr(&posted_msi_pi_desc);
arch/x86/include/asm/posted_intr.h
93
static inline bool pi_test_and_set_on(struct pi_desc *pi_desc)
arch/x86/include/asm/posted_intr.h
95
return test_and_set_bit(POSTED_INTR_ON, (unsigned long *)&pi_desc->control);
arch/x86/include/asm/posted_intr.h
98
static inline bool pi_test_and_clear_on(struct pi_desc *pi_desc)
arch/x86/kernel/irq.c
418
DEFINE_PER_CPU_ALIGNED(struct pi_desc, posted_msi_pi_desc);
arch/x86/kernel/irq.c
480
struct pi_desc *pid = this_cpu_ptr(&posted_msi_pi_desc);
arch/x86/kvm/vmx/common.h
160
struct pi_desc *pi_desc, int vector)
arch/x86/kvm/vmx/common.h
162
if (pi_test_and_set_pir(vector, pi_desc))
arch/x86/kvm/vmx/common.h
166
if (pi_test_and_set_on(pi_desc))
arch/x86/kvm/vmx/common.h
35
struct pi_desc pi_desc;
arch/x86/kvm/vmx/nested.c
329
vmx->nested.pi_desc = NULL;
arch/x86/kvm/vmx/nested.c
3483
vmx->nested.pi_desc =
arch/x86/kvm/vmx/nested.c
3484
(struct pi_desc *)(((void *)map->hva) +
arch/x86/kvm/vmx/nested.c
3495
vmx->nested.pi_desc = NULL;
arch/x86/kvm/vmx/nested.c
4016
if (!vmx->nested.pi_desc)
arch/x86/kvm/vmx/nested.c
4021
if (!pi_test_and_clear_on(vmx->nested.pi_desc))
arch/x86/kvm/vmx/nested.c
4024
max_irr = pi_find_highest_vector(vmx->nested.pi_desc);
arch/x86/kvm/vmx/nested.c
4030
__kvm_apic_update_irr(vmx->nested.pi_desc->pir,
arch/x86/kvm/vmx/nested.c
4189
if (vmx->nested.pi_pending && vmx->nested.pi_desc &&
arch/x86/kvm/vmx/nested.c
4190
pi_test_on(vmx->nested.pi_desc)) {
arch/x86/kvm/vmx/nested.c
4191
max_irr = pi_find_highest_vector(vmx->nested.pi_desc);
arch/x86/kvm/vmx/posted_intr.c
113
old.control = READ_ONCE(pi_desc->control);
arch/x86/kvm/vmx/posted_intr.c
129
} while (pi_try_set_control(pi_desc, &old.control, new.control));
arch/x86/kvm/vmx/posted_intr.c
143
if (!pi_is_pir_empty(pi_desc))
arch/x86/kvm/vmx/posted_intr.c
144
pi_set_on(pi_desc);
arch/x86/kvm/vmx/posted_intr.c
164
struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
arch/x86/kvm/vmx/posted_intr.c
166
struct pi_desc old, new;
arch/x86/kvm/vmx/posted_intr.c
188
WARN(pi_test_sn(pi_desc), "PI descriptor SN field set before blocking");
arch/x86/kvm/vmx/posted_intr.c
190
old.control = READ_ONCE(pi_desc->control);
arch/x86/kvm/vmx/posted_intr.c
195
} while (pi_try_set_control(pi_desc, &old.control, new.control));
arch/x86/kvm/vmx/posted_intr.c
225
struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
arch/x86/kvm/vmx/posted_intr.c
247
pi_set_sn(pi_desc);
arch/x86/kvm/vmx/posted_intr.c
263
if (pi_test_on(&vt->pi_desc))
arch/x86/kvm/vmx/posted_intr.c
277
struct pi_desc *pi = vcpu_to_pi_desc(vcpu);
arch/x86/kvm/vmx/posted_intr.c
285
struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
arch/x86/kvm/vmx/posted_intr.c
287
return pi_test_on(pi_desc) ||
arch/x86/kvm/vmx/posted_intr.c
288
(pi_test_sn(pi_desc) && !pi_is_pir_empty(pi_desc));
arch/x86/kvm/vmx/posted_intr.c
38
static struct pi_desc *vcpu_to_pi_desc(struct kvm_vcpu *vcpu)
arch/x86/kvm/vmx/posted_intr.c
40
return &(to_vt(vcpu)->pi_desc);
arch/x86/kvm/vmx/posted_intr.c
43
static int pi_try_set_control(struct pi_desc *pi_desc, u64 *pold, u64 new)
arch/x86/kvm/vmx/posted_intr.c
51
if (!try_cmpxchg64(&pi_desc->control, pold, new))
arch/x86/kvm/vmx/posted_intr.c
59
struct pi_desc *pi_desc = vcpu_to_pi_desc(vcpu);
arch/x86/kvm/vmx/posted_intr.c
61
struct pi_desc old, new;
arch/x86/kvm/vmx/posted_intr.c
79
if (pi_desc->nv != POSTED_INTR_WAKEUP_VECTOR && vcpu->cpu == cpu) {
arch/x86/kvm/vmx/posted_intr.c
80
if (pi_test_and_clear_sn(pi_desc))
arch/x86/kvm/vmx/posted_intr.c
92
if (pi_desc->nv == POSTED_INTR_WAKEUP_VECTOR) {
arch/x86/kvm/vmx/posted_intr.h
22
static inline int pi_find_highest_vector(struct pi_desc *pi_desc)
arch/x86/kvm/vmx/posted_intr.h
26
vec = find_last_bit(pi_desc->pir, 256);
arch/x86/kvm/vmx/tdx.c
1090
if (pi_test_on(&vt->pi_desc)) {
arch/x86/kvm/vmx/tdx.c
1094
APIC_VECTOR_MASK, &vt->pi_desc))
arch/x86/kvm/vmx/tdx.c
1845
__vmx_deliver_posted_interrupt(vcpu, &tdx->vt.pi_desc, vector);
arch/x86/kvm/vmx/tdx.c
3093
td_vmcs_write64(tdx, POSTED_INTR_DESC_ADDR, __pa(&tdx->vt.pi_desc));
arch/x86/kvm/vmx/tdx.c
715
tdx->vt.pi_desc.nv = POSTED_INTR_VECTOR;
arch/x86/kvm/vmx/tdx.c
716
__pi_set_sn(&tdx->vt.pi_desc);
arch/x86/kvm/vmx/vmx.c
4488
__vmx_deliver_posted_interrupt(vcpu, &vt->pi_desc, vector);
arch/x86/kvm/vmx/vmx.c
4972
vmcs_write64(POSTED_INTR_DESC_ADDR, __pa((&vmx->vt.pi_desc)));
arch/x86/kvm/vmx/vmx.c
5087
vmx->vt.pi_desc.nv = POSTED_INTR_VECTOR;
arch/x86/kvm/vmx/vmx.c
5088
__pi_set_sn(&vmx->vt.pi_desc);
arch/x86/kvm/vmx/vmx.c
7147
if (pi_test_on(&vt->pi_desc)) {
arch/x86/kvm/vmx/vmx.c
7148
pi_clear_on(&vt->pi_desc);
arch/x86/kvm/vmx/vmx.c
7155
kvm_apic_update_irr(vcpu, vt->pi_desc.pir, &max_irr);
arch/x86/kvm/vmx/vmx.c
7857
__pa(&vmx->vt.pi_desc) | PID_TABLE_ENTRY_VALID);
arch/x86/kvm/vmx/vmx.h
157
struct pi_desc *pi_desc;