[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