Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1f15826 authored by Paul Mackerras's avatar Paul Mackerras
Browse files

KVM: PPC: Book3S HV: Add 'online' register to ONE_REG interface



This adds a new KVM_REG_PPC_ONLINE register which userspace can set
to 0 or 1 via the GET/SET_ONE_REG interface to indicate whether it
considers the VCPU to be offline (0), that is, not currently running,
or online (1).  This will be used in a later patch to configure the
register which controls PURR and SPURR accumulation.

Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
parent df158189
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -772,6 +772,8 @@ struct kvm_vcpu_arch {
	u64 busy_preempt;

	u32 emul_inst;

	u32 online;
#endif

#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+1 −0
Original line number Diff line number Diff line
@@ -633,6 +633,7 @@ struct kvm_ppc_cpu_char {
#define KVM_REG_PPC_PSSCR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbd)

#define KVM_REG_PPC_DEC_EXPIRY	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe)
#define KVM_REG_PPC_ONLINE	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xbf)

/* Transactional Memory checkpointed state:
 * This is all GPRs, all VSX regs and a subset of SPRs
+6 −0
Original line number Diff line number Diff line
@@ -1526,6 +1526,9 @@ static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
		*val = get_reg_val(id, vcpu->arch.dec_expires +
				   vcpu->arch.vcore->tb_offset);
		break;
	case KVM_REG_PPC_ONLINE:
		*val = get_reg_val(id, vcpu->arch.online);
		break;
	default:
		r = -EINVAL;
		break;
@@ -1757,6 +1760,9 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
		vcpu->arch.dec_expires = set_reg_val(id, *val) -
			vcpu->arch.vcore->tb_offset;
		break;
	case KVM_REG_PPC_ONLINE:
		vcpu->arch.online = set_reg_val(id, *val);
		break;
	default:
		r = -EINVAL;
		break;