From: Marc Zyngier <maz@kernel.org> To: David Woodhouse <dwmw2@infradead.org> Cc: linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>, Jonathan Corbet <corbet@lwn.net>, Oliver Upton <oliver.upton@linux.dev>, James Morse <james.morse@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>, Mark Rutland <mark.rutland@arm.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, "Rafael J. Wysocki" <rafael@kernel.org>, Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>, Mostafa Saleh <smostafa@google.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-pm@vger.kernel.org Subject: Re: [RFC PATCH v2 0/4] arm64: Add PSCI v1.3 SYSTEM_OFF2 support for hibernation Date: Mon, 18 Mar 2024 17:41:12 +0000 [thread overview] Message-ID: <86ttl3zbd3.wl-maz@kernel.org> (raw) In-Reply-To: <eb9215850e8231ab8ef75f523925be671cc6f5a0.camel@infradead.org> On Mon, 18 Mar 2024 17:26:07 +0000, David Woodhouse <dwmw2@infradead.org> wrote: > > [1 <text/plain; UTF-8 (quoted-printable)>] > On Mon, 2024-03-18 at 16:57 +0000, Marc Zyngier wrote: > > > > > > > > There *is* a way for a VMM to opt *out* of newer PSCI versions... by > > > setting a per-vCPU "special" register that actually ends up setting the > > > PSCI version KVM-wide. Quite why this isn't just a simple KVM_CAP, I > > > have no idea. > > > > Because the expectations are that the VMM can blindly save/restore the > > guest's state, including the PSCI version, and restore that blindly. > > KVM CAPs are just a really bad design pattern for this sort of things. > > Hm, am I missing something here? Does the *guest* get to set the PSCI > version somehow, and opt into the latest version that it understands > regardless of what the firmware/host can support? No. The *VMM* sets the PSCI version by writing to a pseudo register. It means that when the guest migrates, the VMM saves and restores that version, and the guest doesn't see any change. The host firmware has nothing to do with it, obviously. This is all about KVM's own implementation of the "firmware", as seen by the guest. > Because if not, surely it's just part of the basic shape of the > machine, like "how many vCPUs does it have". You don't need to be able > to query it back again. Nobody needs to do this. > I don't think we ever aspired to be able to hand an arbitrary KVM fd to > a userspace VMM and have the VMM be able to drive that VM without > having any a priori context, did we? Arbitrary? No. This is actually very specific and pretty well documented. Also, to answer your question about why we treat 0.1 differently from 0.2+: 0.1 didn't specify the PSCI SMC/HCR encoding, meaning that KVM implemented something that was never fully specified. The VMM has to provide firmware tables that describe that. With 0.2+, there is a standard encoding for all functions, and the VMM doesn't have to provide the encoding to the guest. 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: David Woodhouse <dwmw2@infradead.org> Cc: linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>, Jonathan Corbet <corbet@lwn.net>, Oliver Upton <oliver.upton@linux.dev>, James Morse <james.morse@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>, Mark Rutland <mark.rutland@arm.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, "Rafael J. Wysocki" <rafael@kernel.org>, Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>, Mostafa Saleh <smostafa@google.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-pm@vger.kernel.org Subject: Re: [RFC PATCH v2 0/4] arm64: Add PSCI v1.3 SYSTEM_OFF2 support for hibernation Date: Mon, 18 Mar 2024 17:41:12 +0000 [thread overview] Message-ID: <86ttl3zbd3.wl-maz@kernel.org> (raw) In-Reply-To: <eb9215850e8231ab8ef75f523925be671cc6f5a0.camel@infradead.org> On Mon, 18 Mar 2024 17:26:07 +0000, David Woodhouse <dwmw2@infradead.org> wrote: > > [1 <text/plain; UTF-8 (quoted-printable)>] > On Mon, 2024-03-18 at 16:57 +0000, Marc Zyngier wrote: > > > > > > > > There *is* a way for a VMM to opt *out* of newer PSCI versions... by > > > setting a per-vCPU "special" register that actually ends up setting the > > > PSCI version KVM-wide. Quite why this isn't just a simple KVM_CAP, I > > > have no idea. > > > > Because the expectations are that the VMM can blindly save/restore the > > guest's state, including the PSCI version, and restore that blindly. > > KVM CAPs are just a really bad design pattern for this sort of things. > > Hm, am I missing something here? Does the *guest* get to set the PSCI > version somehow, and opt into the latest version that it understands > regardless of what the firmware/host can support? No. The *VMM* sets the PSCI version by writing to a pseudo register. It means that when the guest migrates, the VMM saves and restores that version, and the guest doesn't see any change. The host firmware has nothing to do with it, obviously. This is all about KVM's own implementation of the "firmware", as seen by the guest. > Because if not, surely it's just part of the basic shape of the > machine, like "how many vCPUs does it have". You don't need to be able > to query it back again. Nobody needs to do this. > I don't think we ever aspired to be able to hand an arbitrary KVM fd to > a userspace VMM and have the VMM be able to drive that VM without > having any a priori context, did we? Arbitrary? No. This is actually very specific and pretty well documented. Also, to answer your question about why we treat 0.1 differently from 0.2+: 0.1 didn't specify the PSCI SMC/HCR encoding, meaning that KVM implemented something that was never fully specified. The VMM has to provide firmware tables that describe that. With 0.2+, there is a standard encoding for all functions, and the VMM doesn't have to provide the encoding to the guest. 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:[~2024-03-18 17:41 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-18 16:14 [RFC PATCH v2 0/4] arm64: Add PSCI v1.3 SYSTEM_OFF2 support for hibernation David Woodhouse 2024-03-18 16:14 ` David Woodhouse 2024-03-18 16:14 ` [RFC PATCH v2 1/4] firmware/psci: Add definitions for PSCI v1.3 specification (ALPHA) David Woodhouse 2024-03-18 16:14 ` David Woodhouse 2024-03-18 16:14 ` [RFC PATCH v2 2/4] KVM: arm64: Add PSCI SYSTEM_OFF2 function for hibernation David Woodhouse 2024-03-18 16:14 ` David Woodhouse 2024-03-18 17:29 ` Marc Zyngier 2024-03-18 17:29 ` Marc Zyngier 2024-03-18 17:54 ` David Woodhouse 2024-03-18 17:54 ` David Woodhouse 2024-03-18 18:07 ` Marc Zyngier 2024-03-18 18:07 ` Marc Zyngier 2024-03-18 18:17 ` David Woodhouse 2024-03-18 18:17 ` David Woodhouse 2024-03-18 16:14 ` [RFC PATCH v2 3/4] KVM: arm64: nvhe: Pass through PSCI v1.3 SYSTEM_OFF2 call David Woodhouse 2024-03-18 16:14 ` David Woodhouse 2024-03-18 16:14 ` [RFC PATCH v2 4/4] arm64: Use SYSTEM_OFF2 PSCI call to power off for hibernate David Woodhouse 2024-03-18 16:14 ` David Woodhouse 2024-03-18 16:57 ` [RFC PATCH v2 0/4] arm64: Add PSCI v1.3 SYSTEM_OFF2 support for hibernation Marc Zyngier 2024-03-18 16:57 ` Marc Zyngier 2024-03-18 17:26 ` David Woodhouse 2024-03-18 17:26 ` David Woodhouse 2024-03-18 17:41 ` Marc Zyngier [this message] 2024-03-18 17:41 ` Marc Zyngier 2024-03-18 18:15 ` David Woodhouse 2024-03-18 18:15 ` David Woodhouse 2024-03-18 18:31 ` Marc Zyngier 2024-03-18 18:31 ` Marc Zyngier 2024-03-18 18:36 ` David Woodhouse 2024-03-18 18:36 ` David Woodhouse
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=86ttl3zbd3.wl-maz@kernel.org \ --to=maz@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=corbet@lwn.net \ --cc=dwmw2@infradead.org \ --cc=james.morse@arm.com \ --cc=jean-philippe@linaro.org \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.linux.dev \ --cc=len.brown@intel.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=lpieralisi@kernel.org \ --cc=mark.rutland@arm.com \ --cc=oliver.upton@linux.dev \ --cc=pavel@ucw.cz \ --cc=pbonzini@redhat.com \ --cc=rafael@kernel.org \ --cc=smostafa@google.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: linkBe 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.