[RFC PATCH 1/5] ARM/ARM64: KVM: Update user space API header for PSCI emulation
Anup Patel
anup at brainfault.org
Thu Oct 17 02:45:00 EDT 2013
On Thu, Oct 17, 2013 at 3:41 AM, Christoffer Dall
<christoffer.dall at linaro.org> wrote:
> On Wed, Oct 16, 2013 at 10:32:30PM +0530, Anup Patel wrote:
>> Update user space API interface headers for providing information to
>> user space needed to emulate PSCI function calls in user space (i.e.
>> QEMU or KVMTOOL).
>>
>> Signed-off-by: Anup Patel <anup.patel at linaro.org>
>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar at linaro.org>
>> ---
>> include/uapi/linux/kvm.h | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
>> index e32e776..dae2664 100644
>> --- a/include/uapi/linux/kvm.h
>> +++ b/include/uapi/linux/kvm.h
>> @@ -171,6 +171,7 @@ struct kvm_pit_config {
>> #define KVM_EXIT_WATCHDOG 21
>> #define KVM_EXIT_S390_TSCH 22
>> #define KVM_EXIT_EPR 23
>> +#define KVM_EXIT_PSCI 24
>>
>> /* For KVM_EXIT_INTERNAL_ERROR */
>> /* Emulate instruction failed. */
>> @@ -301,6 +302,12 @@ struct kvm_run {
>> struct {
>> __u32 epr;
>> } epr;
>> + /* KVM_EXIT_PSCI */
>> + struct {
>> + __u32 fn;
>> + __u64 args[7];
>> + __u64 ret[4];
>> + } psci;
>> /* Fix the size of the union. */
>> char padding[256];
>> };
>> --
>> 1.7.9.5
>>
> I am also wondering if this is not solving a very specific need without
> thinking a little more carefully about this problem.
No, its not solving a specific problem.
In fact, its more general because we pass complete info required to
emulate a PSCI call in user space.
(Please refer PSCI calling convention)
>
> We have previously discussed the need for some secure side emulation
> in QEMU, and I think perhaps we need something more generic which allows
> user space to handle SMC calls and/or allows user space to "inject" some
> secure world runtime that the kernel can run in a partially or fully
> isolated container to handle SMC calls.
>
> Peter raised this issue previously and pointed to a proposal he had as
> well.
If required we can have an additional field in kvm_run->psci which tells
whether the PSCI call is an SMC call or HVC call.
>
> Is there a technical reason why we need something specifically directed
> to PSCI?
Its quite natural to add this to PSCI emulation in KVM ARM/ARM64 instead
of adding a separate VirtIO device for System reboot and System poweroff.
Also in the process of implementing SYSTEM_OFF and SYSTEM_RESET
emulation in user space we would also have an infrastructure for adding
emulation of new PSCI calls in user space.
--
Anup
>
> -Christoffer
> _______________________________________________
> kvmarm mailing list
> kvmarm at lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
More information about the linux-arm-kernel
mailing list