From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/16] KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header
Date: Mon, 1 Sep 2014 11:20:17 +0200 [thread overview]
Message-ID: <20140901092017.GC19836@cbox> (raw)
In-Reply-To: <CAFEAcA-yWadPiE4v7f-C1-V71=QHYLB=fzC78xhNMnNkVSJAhg@mail.gmail.com>
On Fri, Aug 29, 2014 at 06:39:09PM +0100, Peter Maydell wrote:
> On 25 May 2014 19:18, Christoffer Dall <christoffer.dall@linaro.org> wrote:
> > From: Anup Patel <anup.patel@linaro.org>
> >
> > Currently, we don't have an exit reason to notify user space about
> > a system-level event (for e.g. system reset or shutdown) triggered
> > by the VCPU. This patch adds exit reason KVM_EXIT_SYSTEM_EVENT for
> > this purpose. We can also inform user space about the 'type' and
> > architecture specific 'flags' of a system-level event using the
> > kvm_run structure.
> >
> > This newly added KVM_EXIT_SYSTEM_EVENT will be used by KVM ARM/ARM64
> > in-kernel PSCI v0.2 support to reset/shutdown VMs.
>
> > --- a/Documentation/virtual/kvm/api.txt
> > +++ b/Documentation/virtual/kvm/api.txt
> > @@ -2740,6 +2740,21 @@ It gets triggered whenever both KVM_CAP_PPC_EPR are enabled and an
> > external interrupt has just been delivered into the guest. User space
> > should put the acknowledged interrupt vector into the 'epr' field.
> >
> > + /* KVM_EXIT_SYSTEM_EVENT */
> > + struct {
> > +#define KVM_SYSTEM_EVENT_SHUTDOWN 1
> > +#define KVM_SYSTEM_EVENT_RESET 2
> > + __u32 type;
> > + __u64 flags;
> > + } system_event;
> > +
> > +If exit_reason is KVM_EXIT_SYSTEM_EVENT then the vcpu has triggered
> > +a system-level event using some architecture specific mechanism (hypercall
> > +or some special instruction). In case of ARM/ARM64, this is triggered using
> > +HVC instruction based PSCI call from the vcpu. The 'type' field describes
> > +the system-level event type. The 'flags' field describes architecture
> > +specific flags for the system-level event.
>
> Talking with Ard I realised that there's actually a hole in the
> specification of this new ABI. Did we intend these shutdown
> and reset exits to be:
> (1) requests from the guest for the shutdown/reset to be
> scheduled in the near future (and we'll continue to execute
> the guest until the shutdown actually happens)
> (2) requests for shutdown/reset right now, with no further
> guest instructions to be executed
>
> ?
>
> As currently implemented in QEMU we get behaviour (1),
> but I think the kernel PSCI implementation assumes
> behaviour (2). Who's right?
>
For the arm/arm64 use of this API (currently the only one?) the host
would not break or anything like that if you keep executing the VM, but
the guest will expect that no other instructions are executed after this
call.
The PSCI spec states that it's the responsibility of the PSCI
implementation (here KVM), that "Implementation must ensure that all
cores are in a known state with caches cleaned". I guess we don't need
to worry about the latter, but we could handle the former by pausing all
VCPUs prior to exiting with the SHUTDOWN system event. In that
scenario, user space could choose to do either (1) or (2), but it gets a
little fishy with a reset if we set the pause flag, because we would
then at least need to specify in this ABI that this happens for
ARM/ARM64 on reset.
We could clarify this ABI to the fact that user space should not run any
VCPUs after receiving this event, but the above change should probably
be made anyhow, to make sure KVM implements PSCI as much as it can in
the kernel?
-Christoffer
next prev parent reply other threads:[~2014-09-01 9:20 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-25 18:18 [GIT PULL] KVM/ARM and PSCI v0.2 Changes for 3.16 Christoffer Dall
2014-05-25 18:18 ` [PATCH 01/16] KVM: Add capability to advertise PSCI v0.2 support Christoffer Dall
2014-05-25 18:18 ` [PATCH 02/16] ARM/ARM64: KVM: Add common header for PSCI related defines Christoffer Dall
2014-05-25 18:18 ` [PATCH 03/16] ARM/ARM64: KVM: Add base for PSCI v0.2 emulation Christoffer Dall
2014-05-25 18:18 ` [PATCH 04/16] KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature Christoffer Dall
2014-05-25 18:18 ` [PATCH 05/16] ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible Christoffer Dall
2014-05-25 18:18 ` [PATCH 06/16] KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header Christoffer Dall
2014-08-29 17:39 ` Peter Maydell
2014-09-01 9:20 ` Christoffer Dall [this message]
2014-09-01 9:30 ` Peter Maydell
2014-09-01 9:56 ` Christoffer Dall
2014-09-01 10:11 ` Peter Maydell
2014-05-25 18:18 ` [PATCH 07/16] ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET Christoffer Dall
2014-05-25 18:18 ` [PATCH 08/16] ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO Christoffer Dall
2014-05-25 18:18 ` [PATCH 09/16] ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions Christoffer Dall
2014-05-25 18:18 ` [PATCH 10/16] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 Christoffer Dall
2014-05-25 18:18 ` [PATCH 11/16] ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND Christoffer Dall
2014-05-25 18:18 ` [PATCH 12/16] ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space Christoffer Dall
2014-05-25 18:18 ` [PATCH 13/16] PSCI: Add initial support for PSCIv0.2 functions Christoffer Dall
2014-05-27 7:44 ` Shawn Guo
2014-05-27 9:18 ` Christoffer Dall
2014-05-27 9:27 ` Paolo Bonzini
2014-05-27 9:46 ` Christoffer Dall
2014-05-27 9:47 ` Paolo Bonzini
2014-05-25 18:19 ` [PATCH 14/16] Documentation: devicetree: Add new binding for PSCIv0.2 Christoffer Dall
2014-05-25 18:19 ` [PATCH 15/16] ARM: Check if a CPU has gone offline Christoffer Dall
2014-05-25 18:19 ` [PATCH 16/16] arm64: KVM: Enable minimalistic support for Cortex-A53 Christoffer Dall
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=20140901092017.GC19836@cbox \
--to=christoffer.dall@linaro.org \
--cc=linux-arm-kernel@lists.infradead.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).