[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCHv4 33/43] plat/kvm: Get PSCI conduit method from DTB for arm64



Hi Julien,

> -----Original Message-----
> From: Julien Grall <julien.grall@xxxxxxx>
> Sent: 2018年7月18日 21:12
> To: Wei Chen <Wei.Chen@xxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx;
> simon.kuenzer@xxxxxxxxx
> Cc: Kaly Xin <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> Subject: Re: [Minios-devel] [UNIKRAFT PATCHv4 33/43] plat/kvm: Get PSCI
> conduit method from DTB for arm64
> 
> 
> 
> On 18/07/18 09:31, Wei Chen wrote:
> > Hi Julien,
> 
> Hi Wei,
> 
> >
> >> -----Original Message-----
> >> From: Julien Grall <julien.grall@xxxxxxx>
> >> Sent: 2018年7月16日 21:14
> >> To: Wei Chen <Wei.Chen@xxxxxxx>; minios-devel@xxxxxxxxxxxxxxxxxxxx;
> >> simon.kuenzer@xxxxxxxxx
> >> Cc: Kaly Xin <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> >> Subject: Re: [Minios-devel] [UNIKRAFT PATCHv4 33/43] plat/kvm: Get PSCI
> >> conduit method from DTB for arm64
> >>
> >> Hi Wei,
> >>
> >> On 06/07/18 10:03, Wei Chen wrote:
> >>> PSCI supports two conduit method: HVC and SMC. The method
> >>> would be set value in device tree's PSCI node. This value
> >>> would decide which instruction we should use to call PSCI
> >>> functions.
> >>>
> >>> Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx>
> >>> ---
> >>>    plat/common/include/arm/arm64/cpu.h |  6 +++++
> >>>    plat/kvm/arm/setup.c                | 39 +++++++++++++++++++++++++++++
> >>>    2 files changed, 45 insertions(+)
> >>>
> >>> diff --git a/plat/common/include/arm/arm64/cpu.h
> >> b/plat/common/include/arm/arm64/cpu.h
> >>> index 7c79462..cf0f6a2 100644
> >>> --- a/plat/common/include/arm/arm64/cpu.h
> >>> +++ b/plat/common/include/arm/arm64/cpu.h
> >>> @@ -70,3 +70,9 @@
> >>>    #define        SYSREG_WRITE(reg, val)      \
> >>>           __asm__ __volatile__("msr " __STRINGIFY(reg) ", %0" \
> >>>                                           : : "r" ((uint64_t)(val)))
> >>> +
> >>> +
> >>
> >> No need for 2 newline here.
> >
> > I will remove one.
> >
> >>
> >>> +/* PSCI conduit types */
> >>> +#define PSCI_METHOD_NONE 0x0
> >>> +#define PSCI_METHOD_HVC          0x1
> >>> +#define PSCI_METHOD_SMC          0x2
> >>
> >> It feels like this should be an enum.
> >>
> >
> > Ok.
> >
> >>> diff --git a/plat/kvm/arm/setup.c b/plat/kvm/arm/setup.c
> >>> index 685308c..b7f3e47 100644
> >>> --- a/plat/kvm/arm/setup.c
> >>> +++ b/plat/kvm/arm/setup.c
> >>> @@ -35,6 +35,7 @@
> >>>    #include <uk/plat/console.h>
> >>>    #include <uk/assert.h>
> >>>    #include <uk/essentials.h>
> >>> +#include <arm/cpu.h>
> >>>    #include <arm/cpu_defs.h>
> >>>
> >>>    #define MAX_CMDLINE_SIZE 1024
> >>> @@ -46,6 +47,8 @@ void *_libkvmplat_stack_top;
> >>>    void *_libkvmplat_mem_end;
> >>>    void *_libkvmplat_dtb;
> >>>
> >>> +int psci_method;
> >>> +
> >>>    static void _init_dtb(void *dtb_pointer)
> >>>    {
> >>>           int ret;
> >>> @@ -83,6 +86,39 @@ enocmdl:
> >>>           strcpy(cmdline, CONFIG_UK_NAME);
> >>>    }
> >>>
> >>> +static void _dtb_get_psci_method(void)
> >>> +{
> >>> + int fdtpsci, len;
> >>> + const char *fdtmethod;
> >>> +
> >>> + fdtpsci = fdt_node_offset_by_compatible(_libkvmplat_dtb,
> >>> +                                         0, "arm,psci-0.2");
> >>> + if (fdtpsci < 0)
> >>> +         fdtpsci = fdt_node_offset_by_compatible(_libkvmplat_dtb,
> >>> +                                                 0, "arm,psci-0.1");
> >>
> >> Looking at the bindings, I can't find the compatible arm,psci-0.1. Where
> >> does it come from?
> >>
> >> Also, you may want to check the compatible "arm,psci-1.0".
> >>
> >
> > Oh, yes, it's typo, for PSCI we have 3 compatible string:
> > "arm,psci-1.0",
> > "arm,psci-0.2",
> > "arm,psci, ==> this one is PSCI-0.1
> >
> > And in this code, I should use "arm,psci-1.0".
> 
> Do you plan to support PSCI 0.1? FWIW, I think this is fine to not
> support it for now.
> 

I will not to support PSCI 0.1

> But I would spell it out and make sure you can either still boot with
> limited functionality or crash.
> 

Ok.

> Cheers,
> 
> --
> Julien Grall
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.