All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Mark Brown <broonie@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>,
	James Morse <james.morse@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Shuah Khan <shuah@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Joey Gouly <joey.gouly@arm.com>,
	linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
	kvm@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] KVM: selftests: arm64: Use generated defines for named system registers
Date: Sat, 03 Aug 2024 10:35:54 +0100	[thread overview]
Message-ID: <868qxe0wzp.wl-maz@kernel.org> (raw)
In-Reply-To: <20240802-kvm-arm64-get-reg-list-v1-2-3a5bf8f80765@kernel.org>

On Fri, 02 Aug 2024 22:57:54 +0100,
Mark Brown <broonie@kernel.org> wrote:
> 
> Currently the get-reg-list test uses directly specified numeric values to
> define system registers to validate. Since we already have a macro which
> allows us to use the generated system register definitions from the main
> kernel easily let's update all the registers where we have specified the
> name in a comment to just use that macro. This reduces the number of
> places where we need to validate the name to number mapping.
> 
> This conversion was done with the sed command:
> 
>   sed -i -E 's-ARM64_SYS_REG.*/\* (.*) \*/-KVM_ARM64_SYS_REG(SYS_\1),-' tools/testing/selftests/kvm/aarch64/get-reg-list.c
>

[Eyes rolling]

What I asked about scripting the whole thing, it never occurred to me
that you would use the *comments* as a reliable source of information.
Do we have anything less reliable than comments in the kernel?

The matching must be done from the arch/arm64/tools/sysreg file,
because that's the (admittedly dubious) source of truth. We actually
trust the encodings because they are reported by the kernel itself.
The comment is hand-written, and likely wrong.

Also, this hides the horrible truth about existing ABI bugs, see
below.

> We still have a number of numerically specified registers, some of these
> are reserved registers without defined names (eg, unallocated ID registers)
> and others don't have kernel macro definitions yet.
> 
> No change in the generated output.
> 
> Suggested-by: Marc Zyngier <maz@kernel.org>
> Signed-off-by: Mark Brown <broonie@kernel.org>
> ---
>  tools/testing/selftests/kvm/aarch64/get-reg-list.c | 208 ++++++++++-----------
>  1 file changed, 104 insertions(+), 104 deletions(-)
> 
> diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/testing/selftests/kvm/aarch64/get-reg-list.c
> index a00322970578..4d786c4ab28a 100644
> --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c
> +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c
> @@ -313,14 +313,14 @@ static __u64 base_regs[] = {
>  	KVM_REG_ARM_FW_FEAT_BMAP_REG(0),	/* KVM_REG_ARM_STD_BMAP */
>  	KVM_REG_ARM_FW_FEAT_BMAP_REG(1),	/* KVM_REG_ARM_STD_HYP_BMAP */
>  	KVM_REG_ARM_FW_FEAT_BMAP_REG(2),	/* KVM_REG_ARM_VENDOR_HYP_BMAP */
> -	ARM64_SYS_REG(3, 3, 14, 3, 1),	/* CNTV_CTL_EL0 */
> -	ARM64_SYS_REG(3, 3, 14, 3, 2),	/* CNTV_CVAL_EL0 */
> +	KVM_ARM64_SYS_REG(SYS_CNTV_CTL_EL0),
> +	KVM_ARM64_SYS_REG(SYS_CNTV_CVAL_EL0),
>  	ARM64_SYS_REG(3, 3, 14, 0, 2),

Great. So not only you fail convert a register, but you also ignore
the nugget described in arch/arm64/invlude/uapi/asm/kvm.h:267.

Sure, having both described hides the crap, as we don't attach any
significance to the registers themselves. But that shows how
untrustworthy the comments are.

> -	ARM64_SYS_REG(3, 0, 0, 0, 0),	/* MIDR_EL1 */
> -	ARM64_SYS_REG(3, 0, 0, 0, 6),	/* REVIDR_EL1 */
> -	ARM64_SYS_REG(3, 1, 0, 0, 1),	/* CLIDR_EL1 */
> -	ARM64_SYS_REG(3, 1, 0, 0, 7),	/* AIDR_EL1 */
> -	ARM64_SYS_REG(3, 3, 0, 0, 1),	/* CTR_EL0 */
> +	KVM_ARM64_SYS_REG(SYS_MIDR_EL1),
> +	KVM_ARM64_SYS_REG(SYS_REVIDR_EL1),
> +	KVM_ARM64_SYS_REG(SYS_CLIDR_EL1),
> +	KVM_ARM64_SYS_REG(SYS_AIDR_EL1),
> +	KVM_ARM64_SYS_REG(SYS_CTR_EL0),
>  	ARM64_SYS_REG(2, 0, 0, 0, 4),
>  	ARM64_SYS_REG(2, 0, 0, 0, 5),
>  	ARM64_SYS_REG(2, 0, 0, 0, 6),

As far as I can tell, these registers are not unallocated, and they
should be named.

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.

  reply	other threads:[~2024-08-03  9:35 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-02 21:57 [PATCH 0/2] KVM: selftests: arm64: Make use of sysreg defintions in get-reg-list Mark Brown
2024-08-02 21:57 ` [PATCH 1/2] KVM: selftests: arm64: Simplify specification of filtered registers Mark Brown
2024-08-04 11:24   ` Marc Zyngier
2024-08-02 21:57 ` [PATCH 2/2] KVM: selftests: arm64: Use generated defines for named system registers Mark Brown
2024-08-03  9:35   ` Marc Zyngier [this message]
2024-08-05 16:16     ` Mark Brown
2024-08-06  8:03   ` Andrew Jones

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=868qxe0wzp.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=james.morse@arm.com \
    --cc=joey.gouly@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=pbonzini@redhat.com \
    --cc=shuah@kernel.org \
    --cc=suzuki.poulose@arm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.