pir_desc
vcpu->pir_desc = malloc_aligned(sizeof(*vcpu->pir_desc), 64, M_VMX,
error += vmwrite(VMCS_PIR_DESC, vtophys(vcpu->pir_desc));
free(vcpu->pir_desc, M_VMX);
struct pir_desc *pir_desc;
#define VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level, msg) \
VLAPIC_CTR1(vlapic, msg " pir0 0x%016lx", pir_desc->pir[0]); \
VLAPIC_CTR1(vlapic, msg " pir1 0x%016lx", pir_desc->pir[1]); \
VLAPIC_CTR1(vlapic, msg " pir2 0x%016lx", pir_desc->pir[2]); \
VLAPIC_CTR1(vlapic, msg " pir3 0x%016lx", pir_desc->pir[3]); \
struct pir_desc *pir_desc;
pir_desc = vlapic_vtx->pir_desc;
atomic_set_long(&pir_desc->pir[idx], mask);
if (atomic_cmpset_long(&pir_desc->pending, 0, 1) != 0) {
VMX_CTR_PIR(vlapic, pir_desc, notify, vector, level,
struct pir_desc *pir_desc;
pir_desc = vlapic_vtx->pir_desc;
pending = atomic_load_acq_long(&pir_desc->pending);
pirval = pir_desc->pir[i];
struct pir_desc *pir_desc;
pir_desc = vlapic_vtx->pir_desc;
if (atomic_cmpset_long(&pir_desc->pending, 1, 0) == 0) {
val = atomic_readandclear_long(&pir_desc->pir[0]);
val = atomic_readandclear_long(&pir_desc->pir[1]);
val = atomic_readandclear_long(&pir_desc->pir[2]);
val = atomic_readandclear_long(&pir_desc->pir[3]);
vlapic_vtx->pir_desc = vcpu->pir_desc;
SNAPSHOT_BUF_OR_LEAVE(vcpu->pir_desc,
sizeof(*vcpu->pir_desc), meta, err, done);
CTASSERT(sizeof(struct pir_desc) == 64);
struct pir_desc *pir_desc;