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

Commit 352df1de authored by Mihai Caraman's avatar Mihai Caraman Committed by Alexander Graf
Browse files

KVM: PPC: booke: Get/set guest EPCR register using ONE_REG interface



Implement ONE_REG interface for EPCR register adding KVM_REG_PPC_EPCR to
the list of ONE_REG PPC supported registers.

Signed-off-by: default avatarMihai Caraman <mihai.caraman@freescale.com>
[agraf: remove HV dependency, use get/put_user]
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
parent 38f98824
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1773,6 +1773,7 @@ registers, find a list below:
  PPC   | KVM_REG_PPC_VPA_ADDR  | 64
  PPC   | KVM_REG_PPC_VPA_SLB   | 128
  PPC   | KVM_REG_PPC_VPA_DTL   | 128
  PPC   | KVM_REG_PPC_EPCR	| 32

4.69 KVM_GET_ONE_REG

+2 −0
Original line number Diff line number Diff line
@@ -411,4 +411,6 @@ struct kvm_get_htab_header {
#define KVM_REG_PPC_VPA_SLB	(KVM_REG_PPC | KVM_REG_SIZE_U128 | 0x83)
#define KVM_REG_PPC_VPA_DTL	(KVM_REG_PPC | KVM_REG_SIZE_U128 | 0x84)

#define KVM_REG_PPC_EPCR	(KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x85)

#endif /* __LINUX_KVM_POWERPC_H */
+14 −0
Original line number Diff line number Diff line
@@ -1388,6 +1388,11 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)
				 &vcpu->arch.dbg_reg.dac[dac], sizeof(u64));
		break;
	}
#if defined(CONFIG_64BIT)
	case KVM_REG_PPC_EPCR:
		r = put_user(vcpu->arch.epcr, (u32 __user *)(long)reg->addr);
		break;
#endif
	default:
		break;
	}
@@ -1415,6 +1420,15 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg)
			     (u64 __user *)(long)reg->addr, sizeof(u64));
		break;
	}
#if defined(CONFIG_64BIT)
	case KVM_REG_PPC_EPCR: {
		u32 new_epcr;
		r = get_user(new_epcr, (u32 __user *)(long)reg->addr);
		if (r == 0)
			kvmppc_set_epcr(vcpu, new_epcr);
		break;
	}
#endif
	default:
		break;
	}