All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	David Woodhouse <dwmw@amazon.co.uk>,
	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 16:57:02 +0000	[thread overview]
Message-ID: <86wmpzzdep.wl-maz@kernel.org> (raw)
In-Reply-To: <20240318164646.1010092-1-dwmw2@infradead.org>

On Mon, 18 Mar 2024 16:14:22 +0000,
David Woodhouse <dwmw2@infradead.org> wrote:
> 
> The PSCI v1.3 spec (https://developer.arm.com/documentation/den0022, 
> currently in Alpha state, hence 'RFC') adds support for a SYSTEM_OFF2 
> function enabling a HIBERNATE_OFF state which is analogous to ACPI S4. 
> This will allow hosting environments to determine that a guest is 
> hibernated rather than just powered off, and ensure that they preserve 
> the virtual environment appropriately to allow the guest to resume 
> safely (or bump the hardware_signature in the FACS to trigger a clean 
> reboot instead).
> 
> This adds support for it to KVM, exactly the same way as the existing 
> support for SYSTEM_RESET2 as added in commits d43583b890e7 ("KVM: arm64: 
> Expose PSCI SYSTEM_RESET2 call to the guest") and 34739fd95fab ("KVM: 
> arm64: Indicate SYSTEM_RESET2 in kvm_run::system_event flags field").
> 
> Back then, KVM was unconditionally bumped to expose PSCI v1.1. This 
> means that a kernel upgrade causes guest visible behaviour changes 
> without any explicit opt-in from the VMM, which is... unconventional. In 
> some cases, a PSCI update isn't just about new optional calls; PSCI v1.2 
> for example adds a new permitted error return from the existing CPU_ON 
> function.
> 
> 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.

	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>,
	David Woodhouse <dwmw@amazon.co.uk>,
	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 16:57:02 +0000	[thread overview]
Message-ID: <86wmpzzdep.wl-maz@kernel.org> (raw)
In-Reply-To: <20240318164646.1010092-1-dwmw2@infradead.org>

On Mon, 18 Mar 2024 16:14:22 +0000,
David Woodhouse <dwmw2@infradead.org> wrote:
> 
> The PSCI v1.3 spec (https://developer.arm.com/documentation/den0022, 
> currently in Alpha state, hence 'RFC') adds support for a SYSTEM_OFF2 
> function enabling a HIBERNATE_OFF state which is analogous to ACPI S4. 
> This will allow hosting environments to determine that a guest is 
> hibernated rather than just powered off, and ensure that they preserve 
> the virtual environment appropriately to allow the guest to resume 
> safely (or bump the hardware_signature in the FACS to trigger a clean 
> reboot instead).
> 
> This adds support for it to KVM, exactly the same way as the existing 
> support for SYSTEM_RESET2 as added in commits d43583b890e7 ("KVM: arm64: 
> Expose PSCI SYSTEM_RESET2 call to the guest") and 34739fd95fab ("KVM: 
> arm64: Indicate SYSTEM_RESET2 in kvm_run::system_event flags field").
> 
> Back then, KVM was unconditionally bumped to expose PSCI v1.1. This 
> means that a kernel upgrade causes guest visible behaviour changes 
> without any explicit opt-in from the VMM, which is... unconventional. In 
> some cases, a PSCI update isn't just about new optional calls; PSCI v1.2 
> for example adds a new permitted error return from the existing CPU_ON 
> function.
> 
> 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.

	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

  parent reply	other threads:[~2024-03-18 16:57 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 ` Marc Zyngier [this message]
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 17:26   ` David Woodhouse
2024-03-18 17:26     ` David Woodhouse
2024-03-18 17:41     ` Marc Zyngier
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=86wmpzzdep.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=dwmw2@infradead.org \
    --cc=dwmw@amazon.co.uk \
    --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: 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.