|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] xen/arm : emulation of arm's psci v0.2 standard
On Thu, 19 Jun 2014, Christoffer Dall wrote:
> On 19 June 2014 20:02, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> >
> >
> > On 19/06/14 18:22, Stefano Stabellini wrote:
> >>
> >> On Thu, 19 Jun 2014, Julien Grall wrote:
> >>>
> >>> On 06/19/2014 05:00 PM, Stefano Stabellini wrote:
> >>>>
> >>>> On Thu, 19 Jun 2014, Parth Dixit wrote:
> >>>>>
> >>>>> From: parthd <parth.dixit@xxxxxxxxxx>
> >>>>>
> >>>>> Arm based virtual machines dom0/guest will request power related
> >>>>> functionality
> >>>>> from xen through psci interface. This patch implements version 0.2 of
> >>>>> PSCI standard specified by arm for 64bit and 32 bit arm machines.
> >>>>>
> >>>>> Signed-off-by: Parth Dixit <parth.dixit@xxxxxxxxxx>
> >>>>> ---
> >>>>> xen/arch/arm/domain_build.c | 5 ++-
> >>>>> xen/arch/arm/traps.c | 56 ++++++++++++++++++++++--
> >>>>> xen/arch/arm/vpsci.c | 75 ++++++++++++++++++++++++++++++++
> >>>>> xen/include/asm-arm/processor.h | 6 +++
> >>>>> xen/include/asm-arm/psci.h | 18 ++++++++
> >>>>> xen/include/public/arch-arm.h | 95
> >>>>> +++++++++++++++++++++++++++++++++++++++--
> >>>>> 6 files changed, 246 insertions(+), 9 deletions(-)
> >>>>>
> >>>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> >>>>> index c424793..ebd4170 100644
> >>>>> --- a/xen/arch/arm/domain_build.c
> >>>>> +++ b/xen/arch/arm/domain_build.c
> >>>>> @@ -388,6 +388,9 @@ static int make_hypervisor_node(struct domain *d,
> >>>>> static int make_psci_node(void *fdt, const struct dt_device_node
> >>>>> *parent)
> >>>>> {
> >>>>> int res;
> >>>>> + const char compat[] =
> >>>>> + "arm,psci-0.2""\0"
> >>>>> + "arm,psci";
> >>>>>
> >>>>> DPRINT("Create PSCI node\n");
> >>>>>
> >>>>> @@ -396,7 +399,7 @@ static int make_psci_node(void *fdt, const struct
> >>>>> dt_device_node *parent)
> >>>>> if ( res )
> >>>>> return res;
> >>>>>
> >>>>> - res = fdt_property_string(fdt, "compatible", "arm,psci");
> >>>>> + res = fdt_property(fdt, "compatible", compat, sizeof(compat));
> >>>>> if ( res )
> >>>>> return res;
> >>>>>
> >>>>
> >>>> Even though you are adding the psci-0.2 compatible string, I don't see
> >>>> the new PSCI_0_2_FN_* function numbers being exposed to the guest yet.
> >>>
> >>>
> >>> These function numbers are defined by the spec. There is no need to
> >>> expose to the guest.
> >>
> >>
> >> I disagree, it makes things clearer leaving less margin for errors.
> >
> >
> > The PSCI spec clearly define standard values (see every functions
> > description in the doc). Those values won't change in the PSCI 0.2 version.
> >
> > The properties function = <id> should only be created if we want PSCI 0.1
> > use them.
> >
> > That made me think, I don't think we need to have specific values for PSCI
> > 0.1 function, unless they are not compatible.
> >
> >
> >>
> >>> IIRC, the DT binding for PSCI v0.2 only contain the method to call psci
> >>> and the compatible string.
> >>
> >>
> >> That is not what the spec uses as example of DT bindings at page 46,
> >> chapter 5.12.
> >
> >
> > The properties function = <id> will only be used by guest support only PSCI
> > 0.1. I suspect the spec try to make the device node compliant for both
> > version (see the compatible string).
> >
> > Even tho it's not yet merged, it looks like Linux will go to the following
> > binding:
> >
> > http://www.spinics.net/lists/kvm/msg103313.html
> >
> It's merged in 3.16-rc1.
>
> And yes, the idea is to have a single device tree node, and then psci
> v0.1 only kernels can still use psci v0.1, and psci v0.2 can ignore
> the function IDs and use the ones defined as per the spec.
OK. From the Xen POV we need to expose a psci node compatible with both
psci-0.2 and psci, because we want 3.15 to be able to boot with multiple
vcpus on Xen 4.5.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |