qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: kvmarm@lists.linux.dev, qemu-devel <qemu-devel@nongnu.org>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Oliver Upton" <oliver.upton@linux.dev>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: KVM sysreg ids for FEAT_SYSREG128
Date: Thu, 14 Aug 2025 09:11:00 +0100	[thread overview]
Message-ID: <86cy8y8grv.wl-maz@kernel.org> (raw)
In-Reply-To: <1c6b4f19-6cb2-4da0-9acc-d63307880de1@linaro.org>

Hi Richard,

Thanks for bringing this up. FEAT_D128 is not on anyone's radar on the
KVM side (I really don't fancy having to write another set of page
table walkers), but it doesn't hurt to be prepared.

On Thu, 14 Aug 2025 00:27:25 +0100,
Richard Henderson <richard.henderson@linaro.org> wrote:
> 
> Hiya,
> 
> QEMU (ab)uses the kvm encoding of system register ids in the migration
> stream.  As we implement support for FEAT_D128, it would be good to
> agree on an encoding for the 128-bit registers so that we can avoid
> complications with migration later.
> 
> I don't think this is terribly complicated.  Simply adjust the value
> in the KVM_REG_SIZE_MASK field from U64 to U128.  E.g.
> 
> PAR_EL1 (64-bit)	(__ARM64_SYS_REG(3, 0, 7, 4, 0) | KVM_REG_SIZE_U64)
> PAR_EL1 (128-bit)	(__ARM64_SYS_REG(3, 0, 7, 4, 0) | KVM_REG_SIZE_U128)
> 
> This will currently be cleanly rejected by index_to_params, resulting
> in ENOENT for the ioctl.  When KVM grows support for D128 guests,
> kvm_sys_reg_{get,set}_user can select the read/write code path based
> on reg->id & KVM_REG_SIZE_MASK.
> 
> Comments?

The encoding of the register, as described above, is absolutely fine.

But since you brought the subject, I'd like to align on a bit more
than the encoding.

The way I see imagine it after two cups of coffee (which clearly isn't
enough) is to have a feature bit provided at VM creation time,
enabling D128 support, HW support allowing.

At that point, querying the list of supported sysregs would report the
128bit versions of TTBR{0,1}_EL{1,2}, VTTBR_EL2, and PAR_EL1 (ignoring
things we are unlikely to ever support, such as FEAT_THE). The 64bit
versions of these registers would not be reported.

Does that align with what QEMU would do internally?

Thanks,

	M.

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


  reply	other threads:[~2025-08-14  8:11 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-13 23:27 KVM sysreg ids for FEAT_SYSREG128 Richard Henderson
2025-08-14  8:11 ` Marc Zyngier [this message]
2025-08-14  9:48   ` Richard Henderson

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=86cy8y8grv.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=alex.bennee@linaro.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=oliver.upton@linux.dev \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.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;
as well as URLs for NNTP newsgroup(s).