Message ID | 20211103062520.1445832-19-reijiw@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: arm64: Make CPU ID registers writable by userspace | expand |
On Tue, Nov 02, 2021 at 11:25:10PM -0700, Reiji Watanabe wrote: > Introduce a new capability KVM_CAP_ARM_ID_REG_WRITABLE to indicate > that ID registers are writable by userspace. > > Signed-off-by: Reiji Watanabe <reijiw@google.com> > --- > Documentation/virt/kvm/api.rst | 8 ++++++++ > arch/arm64/kvm/arm.c | 1 + > include/uapi/linux/kvm.h | 1 + > 3 files changed, 10 insertions(+) > > diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst > index a6729c8cf063..f7dfb5127310 100644 > --- a/Documentation/virt/kvm/api.rst > +++ b/Documentation/virt/kvm/api.rst > @@ -7265,3 +7265,11 @@ The argument to KVM_ENABLE_CAP is also a bitmask, and must be a subset > of the result of KVM_CHECK_EXTENSION. KVM will forward to userspace > the hypercalls whose corresponding bit is in the argument, and return > ENOSYS for the others. > + > +8.35 KVM_CAP_ARM_ID_REG_WRITABLE > +-------------------------------- ID registers are technically already writable, KVM just rejects any value other than what it derives from sanitising the host ID registers. I agree that the nuance being added warrants a KVM_CAP, as it informs userspace it can deliberately configure ID registers with a more limited value than what KVM returns. KVM_CAP_ARM_ID_REG_CONFIGURABLE maybe? Naming is hard :) -- Thanks, Oliver
On Thu, Nov 4, 2021 at 9:41 AM Oliver Upton <oupton@google.com> wrote: > > On Tue, Nov 02, 2021 at 11:25:10PM -0700, Reiji Watanabe wrote: > > Introduce a new capability KVM_CAP_ARM_ID_REG_WRITABLE to indicate > > that ID registers are writable by userspace. > > > > Signed-off-by: Reiji Watanabe <reijiw@google.com> > > --- > > Documentation/virt/kvm/api.rst | 8 ++++++++ > > arch/arm64/kvm/arm.c | 1 + > > include/uapi/linux/kvm.h | 1 + > > 3 files changed, 10 insertions(+) > > > > diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst > > index a6729c8cf063..f7dfb5127310 100644 > > --- a/Documentation/virt/kvm/api.rst > > +++ b/Documentation/virt/kvm/api.rst > > @@ -7265,3 +7265,11 @@ The argument to KVM_ENABLE_CAP is also a bitmask, and must be a subset > > of the result of KVM_CHECK_EXTENSION. KVM will forward to userspace > > the hypercalls whose corresponding bit is in the argument, and return > > ENOSYS for the others. > > + > > +8.35 KVM_CAP_ARM_ID_REG_WRITABLE > > +-------------------------------- > > ID registers are technically already writable, KVM just rejects any > value other than what it derives from sanitising the host ID registers. > I agree that the nuance being added warrants a KVM_CAP, as it informs > userspace it can deliberately configure ID registers with a more limited > value than what KVM returns. > > KVM_CAP_ARM_ID_REG_CONFIGURABLE maybe? Naming is hard :) Thank you for the suggestion. Yes, that sounds better. I will change the name as you suggested. Regards, Reiji
diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index a6729c8cf063..f7dfb5127310 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -7265,3 +7265,11 @@ The argument to KVM_ENABLE_CAP is also a bitmask, and must be a subset of the result of KVM_CHECK_EXTENSION. KVM will forward to userspace the hypercalls whose corresponding bit is in the argument, and return ENOSYS for the others. + +8.35 KVM_CAP_ARM_ID_REG_WRITABLE +-------------------------------- + +:Architectures: arm64 + +This capability indicates that userspace can modify the ID registers +via KVM_SET_ONE_REG ioctl. diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 528058920b64..87b8432f5719 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -197,6 +197,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) case KVM_CAP_SET_GUEST_DEBUG: case KVM_CAP_VCPU_ATTRIBUTES: case KVM_CAP_PTP_KVM: + case KVM_CAP_ARM_ID_REG_WRITABLE: r = 1; break; case KVM_CAP_SET_GUEST_DEBUG2: diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index a067410ebea5..3345a57f05a6 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -1112,6 +1112,7 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_BINARY_STATS_FD 203 #define KVM_CAP_EXIT_ON_EMULATION_FAILURE 204 #define KVM_CAP_ARM_MTE 205 +#define KVM_CAP_ARM_ID_REG_WRITABLE 206 #ifdef KVM_CAP_IRQ_ROUTING
Introduce a new capability KVM_CAP_ARM_ID_REG_WRITABLE to indicate that ID registers are writable by userspace. Signed-off-by: Reiji Watanabe <reijiw@google.com> --- Documentation/virt/kvm/api.rst | 8 ++++++++ arch/arm64/kvm/arm.c | 1 + include/uapi/linux/kvm.h | 1 + 3 files changed, 10 insertions(+)