From: marc.zyngier@arm•com (Marc Zyngier)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH v9 05/12] ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible
Date: Tue, 15 Apr 2014 13:23:32 +0100 [thread overview]
Message-ID: <87vbuaye63.fsf@approximate.cambridge.arm.com> (raw)
In-Reply-To: <CAAhSdy0hna8NifXXb6icgUEVA_T0Seu99xf6JtGGbsEWYH2+fQ@mail.gmail.com> (Anup Patel's message of "Tue, 15 Apr 2014 12:13:30 +0100")
On Tue, Apr 15 2014 at 12:13:30 pm BST, Anup Patel <anup@brainfault•org> wrote:
> On Tue, Apr 15, 2014 at 3:51 PM, Marc Zyngier <marc.zyngier@arm•com> wrote:
>> On Tue, Apr 15 2014 at 7:14:08 am BST, Anup Patel <anup.patel@linaro•org> wrote:
>>> Currently, the kvm_psci_call() returns 'true' or 'false' based on whether
>>> the PSCI function call was handled successfully or not. This does not help
>>> us emulate system-level PSCI functions where the actual emulation work will
>>> be done by user space (QEMU or KVMTOOL). Examples of such system-level PSCI
>>> functions are: PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET.
>>>
>>> This patch updates kvm_psci_call() to return three types of values:
>>> 1) > 0 (success)
>>> 2) = 0 (success but exit to user space)
>>> 3) < 0 (errors)
>>>
>>> Signed-off-by: Anup Patel <anup.patel@linaro•org>
>>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro•org>
>>> Reviewed-by: Christoffer Dall <christoffer.dall@linaro•org>
>>> ---
>>> arch/arm/include/asm/kvm_psci.h | 2 +-
>>> arch/arm/kvm/handle_exit.c | 10 +++++++---
>>> arch/arm/kvm/psci.c | 28 ++++++++++++++++------------
>>> arch/arm64/include/asm/kvm_psci.h | 2 +-
>>> arch/arm64/kvm/handle_exit.c | 10 +++++++---
>>> 5 files changed, 32 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/arch/arm/include/asm/kvm_psci.h b/arch/arm/include/asm/kvm_psci.h
>>> index 4c0e3e1..6bda945 100644
>>> --- a/arch/arm/include/asm/kvm_psci.h
>>> +++ b/arch/arm/include/asm/kvm_psci.h
>>> @@ -22,6 +22,6 @@
>>> #define KVM_ARM_PSCI_0_2 2
>>>
>>> int kvm_psci_version(struct kvm_vcpu *vcpu);
>>> -bool kvm_psci_call(struct kvm_vcpu *vcpu);
>>> +int kvm_psci_call(struct kvm_vcpu *vcpu);
>>>
>>> #endif /* __ARM_KVM_PSCI_H__ */
>>> diff --git a/arch/arm/kvm/handle_exit.c b/arch/arm/kvm/handle_exit.c
>>> index 0de91fc..1270095 100644
>>> --- a/arch/arm/kvm/handle_exit.c
>>> +++ b/arch/arm/kvm/handle_exit.c
>>> @@ -38,14 +38,18 @@ static int handle_svc_hyp(struct kvm_vcpu *vcpu, struct kvm_run *run)
>>>
>>> static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run)
>>> {
>>> + int ret;
>>> +
>>> trace_kvm_hvc(*vcpu_pc(vcpu), *vcpu_reg(vcpu, 0),
>>> kvm_vcpu_hvc_get_imm(vcpu));
>>>
>>> - if (kvm_psci_call(vcpu))
>>> + ret = kvm_psci_call(vcpu);
>>> + if (ret == -EINVAL) {
>>
>> Please check for (ret < 0), so it actually matches with the comment (and
>> will same some debugging when we introduce another error code).
>
> Should we be injecting undefined exception for all types errors?
What would be the alternative? If we end-up being unable to provide the
expected service because of an internal error, I'd rather let the guest
know about it.
> The intention here was to only inject undefined exception when
> PSCI function number is invalid.
I understand that, and this is the only case at the moment. What I'm
foreseeing is a situation where we've been unable to perform the
expected service, and PSCI doesn't specify any "internal error". So an
error injection looks like a valid solution to me.
M.
--
Jazz is not dead. It just smells funny.
next prev parent reply other threads:[~2014-04-15 12:23 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-15 6:14 [PATCH v9 00/12] In-kernel PSCI v0.2 emulation for KVM ARM/ARM64 Anup Patel
2014-04-15 6:14 ` [PATCH v9 01/12] KVM: Add capability to advertise PSCI v0.2 support Anup Patel
2014-04-15 9:49 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 02/12] ARM/ARM64: KVM: Add common header for PSCI related defines Anup Patel
2014-04-15 10:06 ` Marc Zyngier
2014-04-15 11:10 ` Anup Patel
2014-04-15 12:18 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 03/12] ARM/ARM64: KVM: Add base for PSCI v0.2 emulation Anup Patel
2014-04-15 10:19 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 04/12] KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature Anup Patel
2014-04-15 10:20 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 05/12] ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible Anup Patel
2014-04-15 10:21 ` Marc Zyngier
2014-04-15 11:13 ` Anup Patel
2014-04-15 12:23 ` Marc Zyngier [this message]
2014-04-15 13:07 ` Peter Maydell
2014-04-15 6:14 ` [PATCH v9 06/12] KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header Anup Patel
2014-04-15 10:25 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 07/12] ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET Anup Patel
2014-04-15 10:34 ` Marc Zyngier
2014-04-15 11:26 ` Anup Patel
2014-04-15 12:28 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 08/12] ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO Anup Patel
2014-04-15 10:55 ` Marc Zyngier
2014-04-15 11:15 ` Anup Patel
2014-04-15 6:14 ` [PATCH v9 09/12] ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions Anup Patel
2014-04-15 12:05 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 10/12] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 Anup Patel
2014-04-15 12:10 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 11/12] ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND Anup Patel
2014-04-15 12:14 ` Marc Zyngier
2014-04-15 6:14 ` [PATCH v9 12/12] ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space Anup Patel
2014-04-15 12:16 ` Marc Zyngier
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=87vbuaye63.fsf@approximate.cambridge.arm.com \
--to=marc.zyngier@arm$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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