* [PATCH v2 0/2] xen/arm: Add support for PSCI v1.0
@ 2015-10-12 15:39 Julien Grall
2015-10-12 15:39 ` [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host Julien Grall
2015-10-12 15:39 ` [PATCH v2 2/2] xen/arm: Replace XEN_PSCI_* by PSCI_VERSION(major, minor) Julien Grall
0 siblings, 2 replies; 8+ messages in thread
From: Julien Grall @ 2015-10-12 15:39 UTC (permalink / raw)
To: xen-devel; +Cc: Julien Grall, ian.campbell, stefano.stabellini
Hi all,
This small patch series allow Xen to boot on platform where the firmware
is only supporting PSCI v1.0.
Sincerely yours,
Julien Grall (2):
xen/arm: Add support of PSCI v1.0 for the host
xen/arm: Replace XEN_PSCI_* by PSCI_VERSION(major, minor)
xen/arch/arm/psci.c | 23 ++++++++++++++++-------
xen/arch/arm/vpsci.c | 15 ++++++++-------
xen/include/asm-arm/psci.h | 17 +++++++++++++----
3 files changed, 37 insertions(+), 18 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-12 15:39 [PATCH v2 0/2] xen/arm: Add support for PSCI v1.0 Julien Grall
@ 2015-10-12 15:39 ` Julien Grall
2015-10-22 15:42 ` Ian Campbell
2015-10-12 15:39 ` [PATCH v2 2/2] xen/arm: Replace XEN_PSCI_* by PSCI_VERSION(major, minor) Julien Grall
1 sibling, 1 reply; 8+ messages in thread
From: Julien Grall @ 2015-10-12 15:39 UTC (permalink / raw)
To: xen-devel
Cc: Julien Grall, Andre Przywara, Mark Rutland, ian.campbell,
stefano.stabellini
>From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar. All
the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF and
SYSTEM_RESET) behaves exactly the same.
Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version must be
compatible with 1.x when y > x for any functions existing in 1.x.
So check the presence of the new compatible string [1] and allow Xen to
boot on any platform using PSCI 1.x.
[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/374547.html
Signed-off-by: Julien Grall <julien.grall@citrix.com>
---
Cc: Andre Przywara <andre.przywara@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Changes in v2:
- Update the commit message
- Allow Xen to boot on any PSCI 1.x
- Update the error message
---
xen/arch/arm/psci.c | 17 +++++++++++++----
xen/include/asm-arm/psci.h | 13 +++++++++++++
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 172c6e7..44ccc2f 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -109,10 +109,16 @@ int __init psci_init_0_1(void)
int __init psci_init_0_2(void)
{
+ static const struct dt_device_match psci_ids[] __initconst =
+ {
+ DT_MATCH_COMPATIBLE("arm,psci-0.2"),
+ DT_MATCH_COMPATIBLE("arm,psci-1.0"),
+ { /* sentinel */ },
+ };
int ret;
const struct dt_device_node *psci;
- psci = dt_find_compatible_node(NULL, NULL, "arm,psci-0.2");
+ psci = dt_find_matching_node(NULL, psci_ids);
if ( !psci )
return -EOPNOTSUPP;
@@ -122,15 +128,18 @@ int __init psci_init_0_2(void)
psci_ver = call_smc(PSCI_0_2_FN_PSCI_VERSION, 0, 0, 0);
- if ( psci_ver != XEN_PSCI_V_0_2 )
+ /* For the moment, we only support PSCI 0.2 and PSCI 1.x */
+ if ( psci_ver != PSCI_VERSION(0, 2) && PSCI_VERSION_MAJOR(psci_ver != 1) )
{
- printk("Error: PSCI version %#x is not supported.\n", psci_ver);
+ printk("Error: Unrecognized PSCI version %u.%u\n",
+ PSCI_VERSION_MAJOR(psci_ver), PSCI_VERSION_MINOR(psci_ver));
return -EOPNOTSUPP;
}
psci_cpu_on_nr = PSCI_0_2_FN_NATIVE(CPU_ON);
- printk(XENLOG_INFO "Using PSCI-0.2 for SMP bringup\n");
+ printk(XENLOG_INFO "Using PSCI-%u.%u for SMP bringup\n",
+ PSCI_VERSION_MAJOR(psci_ver), PSCI_VERSION_MINOR(psci_ver));
return 0;
}
diff --git a/xen/include/asm-arm/psci.h b/xen/include/asm-arm/psci.h
index 5d17ee3..d8a109f 100644
--- a/xen/include/asm-arm/psci.h
+++ b/xen/include/asm-arm/psci.h
@@ -87,6 +87,19 @@ void do_psci_0_2_system_reset(void);
#define PSCI_0_2_POWER_STATE_TYPE_MASK \
(0x1 << PSCI_0_2_POWER_STATE_TYPE_SHIFT)
+/* PSCI version decoding (independent of PSCI version) */
+#define PSCI_VERSION_MAJOR_SHIFT 16
+#define PSCI_VERSION_MINOR_MASK \
+ ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
+#define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
+#define PSCI_VERSION_MAJOR(ver) \
+ (((ver) & PSCI_VERSION_MAJOR_MASK) >> PSCI_VERSION_MAJOR_SHIFT)
+#define PSCI_VERSION_MINOR(ver) \
+ ((ver) & PSCI_VERSION_MINOR_MASK)
+
+#define PSCI_VERSION(major, minor) \
+ (((major) << PSCI_VERSION_MAJOR_SHIFT) | (minor))
+
#endif /* __ASM_PSCI_H__ */
/*
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] xen/arm: Replace XEN_PSCI_* by PSCI_VERSION(major, minor)
2015-10-12 15:39 [PATCH v2 0/2] xen/arm: Add support for PSCI v1.0 Julien Grall
2015-10-12 15:39 ` [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host Julien Grall
@ 2015-10-12 15:39 ` Julien Grall
1 sibling, 0 replies; 8+ messages in thread
From: Julien Grall @ 2015-10-12 15:39 UTC (permalink / raw)
To: xen-devel; +Cc: Julien Grall, ian.campbell, stefano.stabellini
It will avoid to introduce a new XEN_PSCI_* define every time we support
a new version of PSCI in Xen.
Also fix the coding style in modified place.
Signed-off-by: Julien Grall <julien.grall@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
---
Changes in v2:
- Add Ian's acked-by
---
xen/arch/arm/psci.c | 6 +++---
xen/arch/arm/vpsci.c | 15 ++++++++-------
xen/include/asm-arm/psci.h | 4 ----
3 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 44ccc2f..d800cb6 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -46,13 +46,13 @@ int call_psci_cpu_on(int cpu)
void call_psci_system_off(void)
{
- if ( psci_ver > XEN_PSCI_V_0_1 )
+ if ( psci_ver > PSCI_VERSION(0, 1) )
call_smc(PSCI_0_2_FN_SYSTEM_OFF, 0, 0, 0);
}
void call_psci_system_reset(void)
{
- if ( psci_ver > XEN_PSCI_V_0_1 )
+ if ( psci_ver > PSCI_VERSION(0, 1) )
call_smc(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0);
}
@@ -100,7 +100,7 @@ int __init psci_init_0_1(void)
return -ENOENT;
}
- psci_ver = XEN_PSCI_V_0_1;
+ psci_ver = PSCI_VERSION(0, 1);
printk(XENLOG_INFO "Using PSCI-0.1 for SMP bringup\n");
diff --git a/xen/arch/arm/vpsci.c b/xen/arch/arm/vpsci.c
index aebe1e2..0e024f7 100644
--- a/xen/arch/arm/vpsci.c
+++ b/xen/arch/arm/vpsci.c
@@ -41,8 +41,8 @@ static int do_common_cpu_on(register_t target_cpu, register_t entry_point,
if ( is_64bit_domain(d) && is_thumb )
return PSCI_INVALID_PARAMETERS;
- if( ( ver == XEN_PSCI_V_0_2 ) &&
- ( !test_bit(_VPF_down, &v->pause_flags) ) )
+ if ( (ver == PSCI_VERSION(0, 2)) &&
+ !test_bit(_VPF_down, &v->pause_flags) )
return PSCI_ALREADY_ON;
if ( (ctxt = alloc_vcpu_guest_context()) == NULL )
@@ -59,14 +59,14 @@ static int do_common_cpu_on(register_t target_cpu, register_t entry_point,
if ( is_32bit_domain(d) )
{
ctxt->user_regs.cpsr = PSR_GUEST32_INIT;
- if( ver == XEN_PSCI_V_0_2 )
+ if ( ver == PSCI_VERSION(0, 2) )
ctxt->user_regs.r0_usr = context_id;
}
#ifdef CONFIG_ARM_64
else
{
ctxt->user_regs.cpsr = PSR_GUEST64_INIT;
- if( ver == XEN_PSCI_V_0_2 )
+ if ( ver == PSCI_VERSION(0, 2) )
ctxt->user_regs.x0 = context_id;
}
#endif
@@ -94,7 +94,7 @@ static int do_common_cpu_on(register_t target_cpu, register_t entry_point,
int32_t do_psci_cpu_on(uint32_t vcpuid, register_t entry_point)
{
- return do_common_cpu_on(vcpuid,entry_point,0,XEN_PSCI_V_0_1);
+ return do_common_cpu_on(vcpuid, entry_point, 0 , PSCI_VERSION(0, 1));
}
int32_t do_psci_cpu_off(uint32_t power_state)
@@ -107,7 +107,7 @@ int32_t do_psci_cpu_off(uint32_t power_state)
uint32_t do_psci_0_2_version(void)
{
- return XEN_PSCI_V_0_2;
+ return PSCI_VERSION(0, 2);
}
register_t do_psci_0_2_cpu_suspend(uint32_t power_state, register_t entry_point,
@@ -132,7 +132,8 @@ int32_t do_psci_0_2_cpu_off(void)
int32_t do_psci_0_2_cpu_on(register_t target_cpu, register_t entry_point,
register_t context_id)
{
- return do_common_cpu_on(target_cpu,entry_point,context_id,XEN_PSCI_V_0_2);
+ return do_common_cpu_on(target_cpu, entry_point, context_id,
+ PSCI_VERSION(0, 2));
}
static const unsigned long target_affinity_mask[] = {
diff --git a/xen/include/asm-arm/psci.h b/xen/include/asm-arm/psci.h
index d8a109f..be2458a 100644
--- a/xen/include/asm-arm/psci.h
+++ b/xen/include/asm-arm/psci.h
@@ -41,10 +41,6 @@ register_t do_psci_0_2_migrate_info_up_cpu(void);
void do_psci_0_2_system_off(void);
void do_psci_0_2_system_reset(void);
-/* PSCI version */
-#define XEN_PSCI_V_0_1 1
-#define XEN_PSCI_V_0_2 2
-
/* PSCI v0.2 interface */
#define PSCI_0_2_FN_BASE 0x84000000
#define PSCI_0_2_FN(n) (PSCI_0_2_FN_BASE + (n))
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-12 15:39 ` [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host Julien Grall
@ 2015-10-22 15:42 ` Ian Campbell
2015-10-22 17:17 ` Julien Grall
0 siblings, 1 reply; 8+ messages in thread
From: Ian Campbell @ 2015-10-22 15:42 UTC (permalink / raw)
To: Julien Grall, xen-devel; +Cc: Mark Rutland, Andre Przywara, stefano.stabellini
On Mon, 2015-10-12 at 16:39 +0100, Julien Grall wrote:
Subject: support PSCI v1.0 for the host.
> From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar. All
Xen's
> the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF and
> SYSTEM_RESET) behaves exactly the same.
behave
> Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version must be
> compatible with 1.x when y > x for any functions existing in 1.x.
>
> So check the presence of the new compatible string [1] and allow Xen to
> boot on any platform using PSCI 1.x.
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/37
> 4547.html
>
> Signed-off-by: Julien Grall <julien.grall@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-22 15:42 ` Ian Campbell
@ 2015-10-22 17:17 ` Julien Grall
2015-10-23 10:39 ` Ian Campbell
0 siblings, 1 reply; 8+ messages in thread
From: Julien Grall @ 2015-10-22 17:17 UTC (permalink / raw)
To: Ian Campbell, xen-devel; +Cc: Mark Rutland, Andre Przywara, stefano.stabellini
Hi,
On 22/10/15 16:42, Ian Campbell wrote:
> On Mon, 2015-10-12 at 16:39 +0100, Julien Grall wrote:
>
> Subject: support PSCI v1.0 for the host.
>
>> From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar. All
> Xen's
>
>> the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF and
>> SYSTEM_RESET) behaves exactly the same.
>
> behave
>
>> Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version must be
>> compatible with 1.x when y > x for any functions existing in 1.x.
>>
>> So check the presence of the new compatible string [1] and allow Xen to
>> boot on any platform using PSCI 1.x.
>>
>> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/37
>> 4547.html
>>
>> Signed-off-by: Julien Grall <julien.grall@citrix.com>
>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
Shall I resend a new version with those typos fixed? Or do you plan to
do it when you'll commit the patch?
Regards,
--
Julien Grall
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-22 17:17 ` Julien Grall
@ 2015-10-23 10:39 ` Ian Campbell
2015-10-23 10:39 ` Julien Grall
0 siblings, 1 reply; 8+ messages in thread
From: Ian Campbell @ 2015-10-23 10:39 UTC (permalink / raw)
To: Julien Grall, xen-devel; +Cc: Mark Rutland, Andre Przywara, stefano.stabellini
On Thu, 2015-10-22 at 18:17 +0100, Julien Grall wrote:
> Hi,
>
> On 22/10/15 16:42, Ian Campbell wrote:
> > On Mon, 2015-10-12 at 16:39 +0100, Julien Grall wrote:
> >
> > Subject: support PSCI v1.0 for the host.
> >
> > > From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar. All
> > Xen's
> >
> > > the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF and
> > > SYSTEM_RESET) behaves exactly the same.
> >
> > behave
> >
> > > Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version must
> > > be
> > > compatible with 1.x when y > x for any functions existing in 1.x.
> > >
> > > So check the presence of the new compatible string [1] and allow Xen
> > > to
> > > boot on any platform using PSCI 1.x.
> > >
> > > [1]
> > > http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/37
> > > 4547.html
> > >
> > > Signed-off-by: Julien Grall <julien.grall@citrix.com>
> >
> > Acked-by: Ian Campbell <ian.campbell@citrix.com>
>
> Shall I resend a new version with those typos fixed? Or do you plan to
> do it when you'll commit the patch?
Looks like those are the only changes required, so assuming you are are
happy with them I'll just do them on commit.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-23 10:39 ` Ian Campbell
@ 2015-10-23 10:39 ` Julien Grall
2015-10-23 13:52 ` Ian Campbell
0 siblings, 1 reply; 8+ messages in thread
From: Julien Grall @ 2015-10-23 10:39 UTC (permalink / raw)
To: Ian Campbell, xen-devel; +Cc: Mark Rutland, Andre Przywara, stefano.stabellini
On 23/10/15 11:39, Ian Campbell wrote:
> On Thu, 2015-10-22 at 18:17 +0100, Julien Grall wrote:
>> Hi,
>>
>> On 22/10/15 16:42, Ian Campbell wrote:
>>> On Mon, 2015-10-12 at 16:39 +0100, Julien Grall wrote:
>>>
>>> Subject: support PSCI v1.0 for the host.
>>>
>>>> From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar. All
>>> Xen's
>>>
>>>> the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF and
>>>> SYSTEM_RESET) behaves exactly the same.
>>>
>>> behave
>>>
>>>> Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version must
>>>> be
>>>> compatible with 1.x when y > x for any functions existing in 1.x.
>>>>
>>>> So check the presence of the new compatible string [1] and allow Xen
>>>> to
>>>> boot on any platform using PSCI 1.x.
>>>>
>>>> [1]
>>>> http://lists.infradead.org/pipermail/linux-arm-kernel/2015-October/37
>>>> 4547.html
>>>>
>>>> Signed-off-by: Julien Grall <julien.grall@citrix.com>
>>>
>>> Acked-by: Ian Campbell <ian.campbell@citrix.com>
>>
>> Shall I resend a new version with those typos fixed? Or do you plan to
>> do it when you'll commit the patch?
>
> Looks like those are the only changes required, so assuming you are are
> happy with them I'll just do them on commit.
I'm fine with that.
Thank you!
--
Julien Grall
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host
2015-10-23 10:39 ` Julien Grall
@ 2015-10-23 13:52 ` Ian Campbell
0 siblings, 0 replies; 8+ messages in thread
From: Ian Campbell @ 2015-10-23 13:52 UTC (permalink / raw)
To: Julien Grall, xen-devel; +Cc: Mark Rutland, Andre Przywara, stefano.stabellini
On Fri, 2015-10-23 at 11:39 +0100, Julien Grall wrote:
> On 23/10/15 11:39, Ian Campbell wrote:
> > On Thu, 2015-10-22 at 18:17 +0100, Julien Grall wrote:
> > > Hi,
> > >
> > > On 22/10/15 16:42, Ian Campbell wrote:
> > > > On Mon, 2015-10-12 at 16:39 +0100, Julien Grall wrote:
> > > >
> > > > Subject: support PSCI v1.0 for the host.
> > > >
> > > > > From Xen point of view, PSCI v0.2 and PSCI v1.0 are very similar.
> > > > > All
> > > > Xen's
> > > >
> > > > > the PSCI calls used within Xen (PSCI_VERSION, CPU_ON, SYSTEM_OFF
> > > > > and
> > > > > SYSTEM_RESET) behaves exactly the same.
> > > >
> > > > behave
> > > >
> > > > > Furthermore, based on the spec (5.3.1 DEN0022C), any 1.y version
> > > > > must
> > > > > be
> > > > > compatible with 1.x when y > x for any functions existing in 1.x.
> > > > >
> > > > > So check the presence of the new compatible string [1] and allow
> > > > > Xen
> > > > > to
> > > > > boot on any platform using PSCI 1.x.
> > > > >
> > > > > [1]
> > > > > http://lists.infradead.org/pipermail/linux-arm-kernel/2015-Octobe
> > > > > r/37
> > > > > 4547.html
> > > > >
> > > > > Signed-off-by: Julien Grall <julien.grall@citrix.com>
> > > >
> > > > Acked-by: Ian Campbell <ian.campbell@citrix.com>
> > >
> > > Shall I resend a new version with those typos fixed? Or do you plan
> > > to
> > > do it when you'll commit the patch?
> >
> > Looks like those are the only changes required, so assuming you are are
> > happy with them I'll just do them on commit.
>
> I'm fine with that.
Applied, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-10-23 13:53 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-12 15:39 [PATCH v2 0/2] xen/arm: Add support for PSCI v1.0 Julien Grall
2015-10-12 15:39 ` [PATCH v2 1/2] xen/arm: Add support of PSCI v1.0 for the host Julien Grall
2015-10-22 15:42 ` Ian Campbell
2015-10-22 17:17 ` Julien Grall
2015-10-23 10:39 ` Ian Campbell
2015-10-23 10:39 ` Julien Grall
2015-10-23 13:52 ` Ian Campbell
2015-10-12 15:39 ` [PATCH v2 2/2] xen/arm: Replace XEN_PSCI_* by PSCI_VERSION(major, minor) Julien Grall
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.