From: Marc Zyngier <maz@kernel.org>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev,
kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Oliver Upton <oliver.upton@linux.dev>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>,
James Morse <james.morse@arm.com>, Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
asahi@lists.linux.dev, Alyssa Rosenzweig <alyssa@rosenzweig.io>,
Sven Peter <sven@svenpeter.dev>, Hector Martin <marcan@marcan.st>
Subject: Re: [PATCH 0/3] KVM: arm64: Handle CCSIDR associativity mismatches
Date: Thu, 01 Dec 2022 11:06:50 +0000 [thread overview]
Message-ID: <867czbmlh1.wl-maz@kernel.org> (raw)
In-Reply-To: <20221201104914.28944-1-akihiko.odaki@daynix.com>
On Thu, 01 Dec 2022 10:49:11 +0000,
Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
Thanks for looking into this.
> M2 MacBook Air has mismatched CCSIDR associativity bits, which makes the
> bits a KVM vCPU sees inconsistent when migrating.
Can you describe the actual discrepancy? Is that an issue between the
two core types? In which case, nothing says that these two cluster
should have the same cache topology.
> It also makes QEMU fail restoring the vCPU registers because QEMU saves
> and restores all of the registers including CCSIDRs, and if the vCPU
> migrated among physical CPUs between saving and restoring, it tries to
> restore CCSIDR values that mismatch with the current physical CPU, which
> causes EFAULT.
Well, QEMU will have plenty of other problems, starting with MIDRs,
which always reflect the physical one. In general, KVM isn't well
geared for VMs spanning multiple CPU types. It is improving, but there
is a long way to go.
> Trap CCSIDRs if there are CCSIDR value msimatches, and override the
> associativity bits when handling the trap.
TBH, I'd rather we stop reporting this stuff altogether.
There is nothing a correctly written arm64 guest should do with any of
this (this is only useful for set/way CMOs, which non-secure SW should
never issue). It would be a lot better to expose a virtual topology
(one set, one way, one level). It would also save us from the CCSIDRX
silliness.
The only complexity would be to still accept different topologies from
userspace so that we can restore a VM saved before this virtual
topology.
Do you mind having a look at this?
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: Alyssa Rosenzweig <alyssa@rosenzweig.io>,
Hector Martin <marcan@marcan.st>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Will Deacon <will@kernel.org>, Sven Peter <sven@svenpeter.dev>,
linux-kernel@vger.kernel.org, asahi@lists.linux.dev,
Catalin Marinas <catalin.marinas@arm.com>,
kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 0/3] KVM: arm64: Handle CCSIDR associativity mismatches
Date: Thu, 01 Dec 2022 11:06:50 +0000 [thread overview]
Message-ID: <867czbmlh1.wl-maz@kernel.org> (raw)
In-Reply-To: <20221201104914.28944-1-akihiko.odaki@daynix.com>
On Thu, 01 Dec 2022 10:49:11 +0000,
Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
Thanks for looking into this.
> M2 MacBook Air has mismatched CCSIDR associativity bits, which makes the
> bits a KVM vCPU sees inconsistent when migrating.
Can you describe the actual discrepancy? Is that an issue between the
two core types? In which case, nothing says that these two cluster
should have the same cache topology.
> It also makes QEMU fail restoring the vCPU registers because QEMU saves
> and restores all of the registers including CCSIDRs, and if the vCPU
> migrated among physical CPUs between saving and restoring, it tries to
> restore CCSIDR values that mismatch with the current physical CPU, which
> causes EFAULT.
Well, QEMU will have plenty of other problems, starting with MIDRs,
which always reflect the physical one. In general, KVM isn't well
geared for VMs spanning multiple CPU types. It is improving, but there
is a long way to go.
> Trap CCSIDRs if there are CCSIDR value msimatches, and override the
> associativity bits when handling the trap.
TBH, I'd rather we stop reporting this stuff altogether.
There is nothing a correctly written arm64 guest should do with any of
this (this is only useful for set/way CMOs, which non-secure SW should
never issue). It would be a lot better to expose a virtual topology
(one set, one way, one level). It would also save us from the CCSIDRX
silliness.
The only complexity would be to still accept different topologies from
userspace so that we can restore a VM saved before this virtual
topology.
Do you mind having a look at this?
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev,
kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Oliver Upton <oliver.upton@linux.dev>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>,
James Morse <james.morse@arm.com>, Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
asahi@lists.linux.dev, Alyssa Rosenzweig <alyssa@rosenzweig.io>,
Sven Peter <sven@svenpeter.dev>, Hector Martin <marcan@marcan.st>
Subject: Re: [PATCH 0/3] KVM: arm64: Handle CCSIDR associativity mismatches
Date: Thu, 01 Dec 2022 11:06:50 +0000 [thread overview]
Message-ID: <867czbmlh1.wl-maz@kernel.org> (raw)
In-Reply-To: <20221201104914.28944-1-akihiko.odaki@daynix.com>
On Thu, 01 Dec 2022 10:49:11 +0000,
Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
Thanks for looking into this.
> M2 MacBook Air has mismatched CCSIDR associativity bits, which makes the
> bits a KVM vCPU sees inconsistent when migrating.
Can you describe the actual discrepancy? Is that an issue between the
two core types? In which case, nothing says that these two cluster
should have the same cache topology.
> It also makes QEMU fail restoring the vCPU registers because QEMU saves
> and restores all of the registers including CCSIDRs, and if the vCPU
> migrated among physical CPUs between saving and restoring, it tries to
> restore CCSIDR values that mismatch with the current physical CPU, which
> causes EFAULT.
Well, QEMU will have plenty of other problems, starting with MIDRs,
which always reflect the physical one. In general, KVM isn't well
geared for VMs spanning multiple CPU types. It is improving, but there
is a long way to go.
> Trap CCSIDRs if there are CCSIDR value msimatches, and override the
> associativity bits when handling the trap.
TBH, I'd rather we stop reporting this stuff altogether.
There is nothing a correctly written arm64 guest should do with any of
this (this is only useful for set/way CMOs, which non-secure SW should
never issue). It would be a lot better to expose a virtual topology
(one set, one way, one level). It would also save us from the CCSIDRX
silliness.
The only complexity would be to still accept different topologies from
userspace so that we can restore a VM saved before this virtual
topology.
Do you mind having a look at this?
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-12-01 11:06 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-01 10:49 [PATCH 0/3] KVM: arm64: Handle CCSIDR associativity mismatches Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` [PATCH 1/3] KVM: arm64: Make CCSIDRs consistent Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` [PATCH 2/3] arm64: errata: Check for mismatched cache associativity Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` [PATCH 3/3] KVM: arm64: Handle CCSIDR associativity mismatches Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 10:49 ` Akihiko Odaki
2022-12-01 11:06 ` Marc Zyngier [this message]
2022-12-01 11:06 ` [PATCH 0/3] " Marc Zyngier
2022-12-01 11:06 ` Marc Zyngier
2022-12-01 17:26 ` Akihiko Odaki
2022-12-01 17:26 ` Akihiko Odaki
2022-12-01 17:26 ` Akihiko Odaki
2022-12-01 23:13 ` Marc Zyngier
2022-12-01 23:13 ` Marc Zyngier
2022-12-01 23:13 ` Marc Zyngier
2022-12-02 5:17 ` Akihiko Odaki
2022-12-02 5:17 ` Akihiko Odaki
2022-12-02 5:17 ` Akihiko Odaki
2022-12-02 9:40 ` Marc Zyngier
2022-12-02 9:40 ` Marc Zyngier
2022-12-02 9:40 ` Marc Zyngier
2022-12-02 9:55 ` Akihiko Odaki
2022-12-02 9:55 ` Akihiko Odaki
2022-12-02 9:55 ` Akihiko Odaki
2022-12-04 14:57 ` Marc Zyngier
2022-12-04 14:57 ` Marc Zyngier
2022-12-04 14:57 ` Marc Zyngier
2022-12-11 5:25 ` Akihiko Odaki
2022-12-11 5:25 ` Akihiko Odaki
2022-12-11 5:25 ` Akihiko Odaki
2022-12-11 10:21 ` Marc Zyngier
2022-12-11 10:21 ` Marc Zyngier
2022-12-11 10:21 ` Marc Zyngier
2022-12-11 10:44 ` Akihiko Odaki
2022-12-11 10:44 ` Akihiko Odaki
2022-12-11 10:44 ` Akihiko Odaki
2022-12-01 18:29 ` Oliver Upton
2022-12-01 18:29 ` Oliver Upton
2022-12-01 18:29 ` Oliver Upton
2022-12-01 23:14 ` Marc Zyngier
2022-12-01 23:14 ` Marc Zyngier
2022-12-01 23:14 ` Marc Zyngier
2022-12-02 18:54 ` Oliver Upton
2022-12-02 18:54 ` Oliver Upton
2022-12-02 18:54 ` Oliver Upton
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=867czbmlh1.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=akihiko.odaki@daynix.com \
--cc=alexandru.elisei@arm.com \
--cc=alyssa@rosenzweig.io \
--cc=asahi@lists.linux.dev \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=mathieu.poirier@linaro.org \
--cc=oliver.upton@linux.dev \
--cc=suzuki.poulose@arm.com \
--cc=sven@svenpeter.dev \
--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 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.