public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Jing Zhang <jingzhangos@google.com>
Cc: KVM <kvm@vger.kernel.org>, KVMARM <kvmarm@lists.linux.dev>,
	ARMLinux <linux-arm-kernel@lists.infradead.org>,
	Marc Zyngier <maz@kernel.org>,
	Oliver Upton <oliver.upton@linux.dev>,
	Will Deacon <will@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	James Morse <james.morse@arm.com>,
	Alexandru Elisei <alexandru.elisei@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Fuad Tabba <tabba@google.com>, Reiji Watanabe <reijiw@google.com>,
	Raghavendra Rao Ananta <rananta@google.com>,
	Suraj Jitindar Singh <surajjs@amazon.com>
Subject: Re: [PATCH v8 02/11] KVM: arm64: Document KVM_ARM_GET_REG_WRITABLE_MASKS
Date: Thu, 17 Aug 2023 10:16:56 +0200	[thread overview]
Message-ID: <874jkyqe13.fsf@redhat.com> (raw)
In-Reply-To: <CAAdAUtivsxqpSE_0BL_OftxzwR=e5Rnugb69Ln841ooJqVXgmA@mail.gmail.com>

On Mon, Aug 14 2023, Jing Zhang <jingzhangos@google.com> wrote:

> On Mon, Aug 14, 2023 at 2:46 AM Cornelia Huck <cohuck@redhat.com> wrote:
>>
>> On Mon, Aug 07 2023, Jing Zhang <jingzhangos@google.com> wrote:
>>
>> > Add some basic documentation on how to get feature ID register writable
>> > masks from userspace.
>> >
>> > Signed-off-by: Jing Zhang <jingzhangos@google.com>
>> > ---
>> >  Documentation/virt/kvm/api.rst | 29 +++++++++++++++++++++++++++++
>> >  1 file changed, 29 insertions(+)
>> >
>> > diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
>> > index c0ddd3035462..92a9b20f970e 100644
>> > --- a/Documentation/virt/kvm/api.rst
>> > +++ b/Documentation/virt/kvm/api.rst
>> > @@ -6068,6 +6068,35 @@ writes to the CNTVCT_EL0 and CNTPCT_EL0 registers using the SET_ONE_REG
>> >  interface. No error will be returned, but the resulting offset will not be
>> >  applied.
>> >
>> > +4.139 KVM_ARM_GET_REG_WRITABLE_MASKS
>> > +-------------------------------------------
>> > +
>> > +:Capability: none
>> > +:Architectures: arm64
>> > +:Type: vm ioctl
>> > +:Parameters: struct reg_mask_range (in/out)
>> > +:Returns: 0 on success, < 0 on error
>> > +
>> > +
>> > +::
>> > +
>> > +        #define ARM64_FEATURE_ID_SPACE_SIZE  (3 * 8 * 8)
>> > +
>> > +        struct reg_mask_range {
>> > +                __u64 addr;             /* Pointer to mask array */
>> > +                __u64 reserved[7];
>> > +        };
>> > +
>> > +This ioctl would copy the writable masks for feature ID registers to userspace.
>> > +The Feature ID space is defined as the System register space in AArch64 with
>> > +op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7}, op2=={0-7}.
>> > +To get the index in the mask array pointed by ``addr`` for a specified feature
>> > +ID register, use the macro ``ARM64_FEATURE_ID_SPACE_IDX(op0, op1, crn, crm, op2)``.
>> > +This allows the userspace to know upfront whether it can actually tweak the
>> > +contents of a feature ID register or not.
>> > +The ``reserved[7]`` is reserved for future use to add other register space. For
>> > +feature ID registers, it should be 0, otherwise, KVM may return error.
>>
>> In case of future extensions, this means that userspace needs to figure
>> out what the kernel supports via different content in reg_mask_range
>> (i.e. try with a value in one of the currently reserved fields and fall
>> back to using addr only if that doesn't work.) Can we do better?
>>
>> Maybe we could introduce a capability that returns the supported ranges
>> as flags, i.e. now we would return 1 for id regs masks, and for the
>> future case where we have some values in the next reserved field we
>> could return 1 & 2 etc. Would make life easier for userspace that needs
>> to work with different kernels, but might be overkill if reserved[] is
>> more like an insurance without any concrete plans for extensions.
>>
>
> Maybe it'd be better to leave this to whenever we do need to add other
> range support?

My point is: How does userspace figure out if the kernel that is running
supports ranges other than id regs? If this is just an insurance against
changes that might arrive or not, we can live with the awkward "just try
it out" approach; if we think it's likely that we'll need to extend it,
we need to add the mechanism for userspace to find out about it now, or
it would need to probe for presence of the mechanism...


  reply	other threads:[~2023-08-17  8:18 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-07 16:21 [PATCH v8 00/11] Enable writable for idregs DFR0,PFR0, MMFR{0,1,2,3} Jing Zhang
2023-08-07 16:21 ` [PATCH v8 01/11] KVM: arm64: Allow userspace to get the writable masks for feature ID registers Jing Zhang
2023-08-07 16:22 ` [PATCH v8 02/11] KVM: arm64: Document KVM_ARM_GET_REG_WRITABLE_MASKS Jing Zhang
2023-08-14  9:46   ` Cornelia Huck
2023-08-14 17:25     ` Jing Zhang
2023-08-17  8:16       ` Cornelia Huck [this message]
2023-08-17 14:00         ` Marc Zyngier
2023-08-21  7:17           ` Cornelia Huck
2023-08-21 17:24           ` Jing Zhang
2023-08-21 17:30             ` Marc Zyngier
2023-08-07 16:22 ` [PATCH v8 03/11] KVM: arm64: Use guest ID register values for the sake of emulation Jing Zhang
2023-08-07 16:22 ` [PATCH v8 04/11] KVM: arm64: Reject attempts to set invalid debug arch version Jing Zhang
2023-08-07 16:22 ` [PATCH v8 05/11] KVM: arm64: Enable writable for ID_AA64DFR0_EL1 and ID_DFR0_EL1 Jing Zhang
2023-08-17 15:43   ` Marc Zyngier
2023-08-21 17:37     ` Jing Zhang
2023-08-07 16:22 ` [PATCH v8 06/11] KVM: arm64: Bump up the default KVM sanitised debug version to v8p8 Jing Zhang
2023-08-07 16:22 ` [PATCH v8 07/11] KVM: arm64: Enable writable for ID_AA64PFR0_EL1 Jing Zhang
2023-08-17 15:53   ` Marc Zyngier
2023-08-21 17:40     ` Jing Zhang
2023-08-07 16:22 ` [PATCH v8 08/11] KVM: arm64: Refactor helper Macros for idreg desc Jing Zhang
2023-08-07 16:22 ` [PATCH v8 09/11] KVM: arm64: Enable writable for ID_AA64MMFR{0, 1, 2, 3}_EL1 Jing Zhang
2023-08-07 16:22 ` [PATCH v8 10/11] KVM: arm64: selftests: Import automatic system register definition generation from kernel Jing Zhang
2023-08-16  6:54   ` Shaoqin Huang
2023-08-16 17:15     ` Jing Zhang
2023-08-07 16:22 ` [PATCH v8 11/11] KVM: arm64: selftests: Test for setting ID register from usersapce Jing Zhang
2023-08-16  6:58   ` Shaoqin Huang
2023-08-16 17:23     ` Jing Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874jkyqe13.fsf@redhat.com \
    --to=cohuck@redhat.com \
    --cc=alexandru.elisei@arm.com \
    --cc=james.morse@arm.com \
    --cc=jingzhangos@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=maz@kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=pbonzini@redhat.com \
    --cc=rananta@google.com \
    --cc=reijiw@google.com \
    --cc=surajjs@amazon.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox