lppaca
struct lppaca *lp = local_paca->lppaca_ptr;
struct lppaca;
struct lppaca *l = local_paca->lppaca_ptr;
struct lppaca;
struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */
OFFSET(LPPACA_PMCINUSE, lppaca, pmcregs_in_use);
OFFSET(LPPACA_YIELDCOUNT, lppaca, yield_count);
static inline void init_lppaca(struct lppaca *lppaca)
BUILD_BUG_ON(sizeof(struct lppaca) != 640);
*lppaca = (struct lppaca) {
static struct lppaca * __init new_lppaca(int cpu, unsigned long limit)
struct lppaca *lp;
BUILD_BUG_ON(sizeof(struct lppaca) > LPPACA_SIZE);
struct lppaca *lppaca;
lppaca = (struct lppaca *)vcpu->arch.vpa.pinned_addr;
if (lppaca)
yield_count = be32_to_cpu(lppaca->yield_count);
r = set_vpa(vcpu, &vcpu->arch.vpa, addr, sizeof(struct lppaca));
struct lppaca *lp = vcpu->arch.vpa.pinned_addr;
struct lppaca *lp = get_lppaca();
static void init_vpa(struct kvm_vcpu *vcpu, struct lppaca *vpa)
BUILD_BUG_ON(sizeof(struct lppaca) != 640);
if (len < sizeof(struct lppaca))
struct lppaca *vpa,
struct lppaca *vpa;
struct lppaca *vpa;
struct lppaca *lp;
struct lppaca *lp;
struct lppaca *vpa = local_paca->lppaca_ptr;
struct lppaca *vpa = local_paca->lppaca_ptr;
struct lppaca *lppaca = &lppaca_of(cpu);
return simple_read_from_buffer(buf, len, pos, lppaca,
sizeof(struct lppaca));
struct lppaca *vpa = local_paca->lppaca_ptr;
struct lppaca *lppaca = &lppaca_of(cpu);
return tb_to_ns(be64_to_cpu(READ_ONCE(lppaca->enqueue_dispatch_tb)) +
be64_to_cpu(READ_ONCE(lppaca->ready_enqueue_tb)));