On Fri, Sep 11, 2020 at 12:53:45PM +0200, Greg Kurz wrote: > ENOTSUPP is a linux only thingy, the value of which is unknown to > userspace, not to be confused with ENOTSUP which linux maps to > EOPNOTSUPP, as permitted by POSIX [1]: > > [EOPNOTSUPP] > Operation not supported on socket. The type of socket (address family > or protocol) does not support the requested operation. A conforming > implementation may assign the same values for [EOPNOTSUPP] and [ENOTSUP]. > > Return -EOPNOTSUPP instead of -ENOTSUPP for the following ioctls: > - KVM_GET_FPU for Book3s and BookE > - KVM_SET_FPU for Book3s and BookE > - KVM_GET_DIRTY_LOG for BookE > > This doesn't affect QEMU which doesn't call the KVM_GET_FPU and > KVM_SET_FPU ioctls on POWER anyway since they are not supported, > and _buggily_ ignores anything but -EPERM for KVM_GET_DIRTY_LOG. > > [1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html > > Signed-off-by: Greg Kurz <groug@xxxxxxxx> Agreed. ENOTSUPP should never be returned to userspace. Acked-by: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxx> > --- > arch/powerpc/kvm/book3s.c | 4 ++-- > arch/powerpc/kvm/booke.c | 6 +++--- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c > index 1fce9777af1c..44bf567b6589 100644 > --- a/arch/powerpc/kvm/book3s.c > +++ b/arch/powerpc/kvm/book3s.c > @@ -558,12 +558,12 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) > > int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) > { > - return -ENOTSUPP; > + return -EOPNOTSUPP; > } > > int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) > { > - return -ENOTSUPP; > + return -EOPNOTSUPP; > } > > int kvmppc_get_one_reg(struct kvm_vcpu *vcpu, u64 id, > diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c > index 3e1c9f08e302..b1abcb816439 100644 > --- a/arch/powerpc/kvm/booke.c > +++ b/arch/powerpc/kvm/booke.c > @@ -1747,12 +1747,12 @@ int kvmppc_set_one_reg(struct kvm_vcpu *vcpu, u64 id, > > int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) > { > - return -ENOTSUPP; > + return -EOPNOTSUPP; > } > > int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) > { > - return -ENOTSUPP; > + return -EOPNOTSUPP; > } > > int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu, > @@ -1773,7 +1773,7 @@ void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot) > > int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log) > { > - return -ENOTSUPP; > + return -EOPNOTSUPP; > } > > void kvmppc_core_free_memslot(struct kvm *kvm, struct kvm_memory_slot *slot) > >