Loading arch/powerpc/include/asm/kvm_book3s.h +2 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,8 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) #define OSI_SC_MAGIC_R4 0x77810F9B #define INS_DCBZ 0x7c0007ec /* TO = 31 for unconditional trap */ #define INS_TW 0x7fe00008 /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS (LPID_RSVD + 1) Loading arch/powerpc/include/asm/kvm_booke.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS 64 #define KVMPPC_INST_EHPRIV 0x7c00021c static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val) { vcpu->arch.gpr[num] = val; Loading arch/powerpc/include/uapi/asm/kvm.h +4 −0 Original line number Diff line number Diff line Loading @@ -422,4 +422,8 @@ struct kvm_get_htab_header { #define KVM_REG_PPC_CLEAR_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88) #define KVM_REG_PPC_TCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89) #define KVM_REG_PPC_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a) /* Debugging: Special instruction for software breakpoint */ #define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b) #endif /* __LINUX_KVM_POWERPC_H */ arch/powerpc/kvm/book3s.c +6 −0 Original line number Diff line number Diff line Loading @@ -529,6 +529,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]); break; #endif /* CONFIG_ALTIVEC */ case KVM_REG_PPC_DEBUG_INST: { u32 opcode = INS_TW; r = copy_to_user((u32 __user *)(long)reg->addr, &opcode, sizeof(u32)); break; } default: r = -EINVAL; break; Loading arch/powerpc/kvm/booke.c +6 −0 Original line number Diff line number Diff line Loading @@ -1447,6 +1447,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) case KVM_REG_PPC_TSR: r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); break; case KVM_REG_PPC_DEBUG_INST: { u32 opcode = KVMPPC_INST_EHPRIV; r = copy_to_user((u32 __user *)(long)reg->addr, &opcode, sizeof(u32)); break; } default: break; } Loading Loading
arch/powerpc/include/asm/kvm_book3s.h +2 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,8 @@ static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) #define OSI_SC_MAGIC_R4 0x77810F9B #define INS_DCBZ 0x7c0007ec /* TO = 31 for unconditional trap */ #define INS_TW 0x7fe00008 /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS (LPID_RSVD + 1) Loading
arch/powerpc/include/asm/kvm_booke.h +2 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ /* LPIDs we support with this build -- runtime limit may be lower */ #define KVMPPC_NR_LPIDS 64 #define KVMPPC_INST_EHPRIV 0x7c00021c static inline void kvmppc_set_gpr(struct kvm_vcpu *vcpu, int num, ulong val) { vcpu->arch.gpr[num] = val; Loading
arch/powerpc/include/uapi/asm/kvm.h +4 −0 Original line number Diff line number Diff line Loading @@ -422,4 +422,8 @@ struct kvm_get_htab_header { #define KVM_REG_PPC_CLEAR_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x88) #define KVM_REG_PPC_TCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x89) #define KVM_REG_PPC_TSR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8a) /* Debugging: Special instruction for software breakpoint */ #define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x8b) #endif /* __LINUX_KVM_POWERPC_H */
arch/powerpc/kvm/book3s.c +6 −0 Original line number Diff line number Diff line Loading @@ -529,6 +529,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) val = get_reg_val(reg->id, vcpu->arch.vscr.u[3]); break; #endif /* CONFIG_ALTIVEC */ case KVM_REG_PPC_DEBUG_INST: { u32 opcode = INS_TW; r = copy_to_user((u32 __user *)(long)reg->addr, &opcode, sizeof(u32)); break; } default: r = -EINVAL; break; Loading
arch/powerpc/kvm/booke.c +6 −0 Original line number Diff line number Diff line Loading @@ -1447,6 +1447,12 @@ int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg) case KVM_REG_PPC_TSR: r = put_user(vcpu->arch.tsr, (u32 __user *)(long)reg->addr); break; case KVM_REG_PPC_DEBUG_INST: { u32 opcode = KVMPPC_INST_EHPRIV; r = copy_to_user((u32 __user *)(long)reg->addr, &opcode, sizeof(u32)); break; } default: break; } Loading