* [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
* 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
* [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
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.