From: Marc Zyngier <maz@kernel.org>
To: luoyonggang@gmail.com
Cc: Oliver Upton <oliver.upton@linux.dev>,
Sebastian Ott <sebott@redhat.com>,
Joey Gouly <joey.gouly@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>,
Cornelia Huck <cohuck@redhat.com>,
Eric Auger <eric.auger@redhat.com>,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/4] KVM: arm64: Allow userspace to change MIDR_EL1
Date: Sun, 16 Feb 2025 18:09:22 +0000 [thread overview]
Message-ID: <86jz9psqwd.wl-maz@kernel.org> (raw)
In-Reply-To: <CAE2XoE9=hjP+qpsy+FcYcSDectDajiXjtcMCVpacSo4cFOo=tQ@mail.gmail.com>
On Sat, 15 Feb 2025 19:04:20 +0000,
"罗勇刚(Yonggang Luo)" <luoyonggang@gmail.com> wrote:
>
> According to this, the MIDR EL1 is updated properly, but the MIDR for
> aarch32 is not updated, and I don't know how to hook the update for
> MIDR for aarch32
It is the same thing. The AArch32 view is configured the same way as
the AArch64 view, and there is nothing to do at all (that's what
VPIDR_EL2 is all about).
With Oliver's change, I'm correctly getting a different MIDR using a
hacked up kvmtool, see below. I suspect you're not running with the
correct patch applied.
M.
* kvmtool hack:
diff --git a/arm/aarch64/kvm-cpu.c b/arm/aarch64/kvm-cpu.c
index c8be10b..f8ecbfe 100644
--- a/arm/aarch64/kvm-cpu.c
+++ b/arm/aarch64/kvm-cpu.c
@@ -128,6 +128,18 @@ static void reset_vcpu_aarch64(struct kvm_cpu *vcpu)
}
}
+static void reset_vcpu_midr(struct kvm_cpu *vcpu)
+{
+ struct kvm_one_reg reg;
+ u64 midr = 0xbadf00d5;
+
+ reg.id = ARM64_SYS_REG(ARM_CPU_ID, 0);
+ reg.addr = (u64)&midr;
+
+ if (ioctl(vcpu->vcpu_fd, KVM_SET_ONE_REG, ®) < 0)
+ die("KVM_SET_ONE_REG failed (set_midr vcpu%ld", vcpu->cpu_id);
+}
+
void kvm_cpu__select_features(struct kvm *kvm, struct kvm_vcpu_init *init)
{
if (kvm->cfg.arch.aarch32_guest) {
@@ -181,6 +193,8 @@ void kvm_cpu__reset_vcpu(struct kvm_cpu *vcpu)
die_perror("sched_setaffinity");
}
+ reset_vcpu_midr(vcpu);
+
if (kvm->cfg.arch.aarch32_guest)
return reset_vcpu_aarch32(vcpu);
else
* arm64 host:
$ cat /proc/cpuinfo
processor : 0
BogoMIPS : 200.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
* arm64 guest:
# cat /proc/cpuinfo
processor : 0
BogoMIPS : 200.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0xba
CPU architecture: 8
CPU variant : 0xd
CPU part : 0x00d
CPU revision : 5
* arm32 guest:
# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 200.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0xba
CPU architecture: 7
CPU variant : 0xd
CPU part : 0x00d
CPU revision : 5
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2025-02-16 18:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-11 14:39 [PATCH v2 0/4] KVM: arm64: writable MIDR/REVIDR Sebastian Ott
2025-02-11 14:39 ` [PATCH v2 1/4] KVM: arm64: Allow userspace to change MIDR_EL1 Sebastian Ott
2025-02-15 10:13 ` Oliver Upton
2025-02-15 16:16 ` 罗勇刚(Yonggang Luo)
2025-02-15 16:41 ` Marc Zyngier
2025-02-15 19:04 ` 罗勇刚(Yonggang Luo)
2025-02-16 18:09 ` Marc Zyngier [this message]
2025-02-16 18:55 ` 罗勇刚(Yonggang Luo)
2025-02-16 19:06 ` Marc Zyngier
2025-02-17 6:40 ` 罗勇刚(Yonggang Luo)
2025-02-17 15:06 ` Sebastian Ott
2025-02-11 14:39 ` [PATCH v2 2/4] KVM: arm64: Allow userspace to change REVIDR_EL1 Sebastian Ott
2025-02-11 14:39 ` [PATCH v2 3/4] KVM: arm64: Allow userspace to change AIDR_EL1 Sebastian Ott
2025-02-11 14:39 ` [PATCH v2 4/4] KVM: selftests: arm64: Test writes to MIDR,REVIDR,AIDR Sebastian Ott
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=86jz9psqwd.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=cohuck@redhat.com \
--cc=eric.auger@redhat.com \
--cc=joey.gouly@arm.com \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luoyonggang@gmail.com \
--cc=oliver.upton@linux.dev \
--cc=sebott@redhat.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=suzuki.poulose@arm.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.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.