Re: [PULL 33/41] KVM: PPC: Book3S: Move KVM_REG_PPC_WORT to an unused register number

Alexander Graf
2014-05-30T15:53:58Z

On 30.05.14 17:50, Paolo Bonzini wrote:
> Il 30/05/2014 14:42, Alexander Graf ha scritto:
>> From: Paul Mackerras <paulus@samba.org>
>>
>> Commit b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8
>> SPRs") added a definition of KVM_REG_PPC_WORT with the same register
>> number as the existing KVM_REG_PPC_VRSAVE (though in fact the
>> definitions are not identical because of the different register sizes.)
>>
>> For clarity, this moves KVM_REG_PPC_WORT to the next unused number,
>> and also adds it to api.txt.
>>
>> Signed-off-by: Paul Mackerras <paulus@samba.org>
>> Signed-off-by: Alexander Graf <agraf@suse.de>
>> ---
>> Documentation/virtual/kvm/api.txt | 1 +
>> arch/powerpc/include/uapi/asm/kvm.h | 2 +-
>> 2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/virtual/kvm/api.txt
>> b/Documentation/virtual/kvm/api.txt
>> index 9a95770..6b30290 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -1873,6 +1873,7 @@ registers, find a list below:
>> PPC | KVM_REG_PPC_PPR | 64
>> PPC | KVM_REG_PPC_ARCH_COMPAT 32
>> PPC | KVM_REG_PPC_DABRX | 32
>> + PPC | KVM_REG_PPC_WORT | 64
>> PPC | KVM_REG_PPC_TM_GPR0 | 64
>> ...
>> PPC | KVM_REG_PPC_TM_GPR31 | 64
>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>> b/arch/powerpc/include/uapi/asm/kvm.h
>> index a6665be..2bc4a94 100644
>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>> @@ -545,7 +545,6 @@ struct kvm_get_htab_header {
>> #define KVM_REG_PPC_TCSCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb1)
>> #define KVM_REG_PPC_PID (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb2)
>> #define KVM_REG_PPC_ACOP (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb3)
>> -#define KVM_REG_PPC_WORT (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb4)
>>
>> #define KVM_REG_PPC_VRSAVE (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xb4)
>> #define KVM_REG_PPC_LPCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xb5)
>> @@ -555,6 +554,7 @@ struct kvm_get_htab_header {
>> #define KVM_REG_PPC_ARCH_COMPAT (KVM_REG_PPC | KVM_REG_SIZE_U32 |
>> 0xb7)
>>
>> #define KVM_REG_PPC_DABRX (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xb8)
>> +#define KVM_REG_PPC_WORT (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xb9)
>
> This is an ABI break, this symbol was added in 3.14. I think I should
> revert this. Can you convince me otherwise?

There's nothing bad happening with the change. Newer user space won't be
able to read WORT on older kernels, but there were more things broken
that just WORT for POWER8 support there ;).

And user space build with new headers running on an old kernel won't
find the register, which is OK.

I couldn't find any combination where it's really a problem.

Alex