* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation [not found] <CALicx6v86NMp53+zbE=A3ang-ftGE3KiUojkRZO4ss6Pmks1ow@mail.gmail.com> @ 2013-10-24 12:48 ` Vijay Kilari 2013-10-24 12:49 ` Vijay Kilari 0 siblings, 1 reply; 7+ messages in thread From: Vijay Kilari @ 2013-10-24 12:48 UTC (permalink / raw) To: linux-arm-kernel Hi Dave Martin, With the below configuration, I tried to check cpu hotplug as this is prerequisite for kexec. I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. Below is my DCC board configuration SCC REGISTERS] TOTALSCCS: 32 ;Total Number of SCC registers SCC: 0x018 0x1FFFFFFF SCC: 0x01C 0xFF00FF00 ;CFGRW3 - SMC CS6/7 N/U SCC: 0x118 0x01CD1011 ;CFGRW17 - HDLCD PLL external bypass ;SCC: 0x700 0x1032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot Cluster (default CA7_0) SCC: 0x700 0x0032D003 ;CFGRW48 - [25:24]Boot CPU [28]Boot Cluster (default CA7_0) ; Bootmon configuration: ; [15]: A7 Event stream generation (default: disabled) ; [14]: A15 Event stream generation (default: disabled) ; [13]: Power down the non-boot cluster (default: disabled) ; [12]: Use per-cpu mailboxes for power management (default: disabled) ; [11]: A15 executes WFEs as nops (default: disabled) ; [ 4]: Erase UEFI variable storage in NOR flash SCC: 0x400 0x33330c00 ;CFGREG41 - A15 configuration register 0 (Default 0x33330c80) ; [29:28] SPNIDEN ; [25:24] SPIDEN ; [21:20] NIDEN ; [17:16] DBGEN ; [13:12] CFGTE ; [9:8] VINITHI_CORE ; [7] IMINLN ; [3:0] CLUSTER_ID ;Power management interface SCC: 0xC00 0x00000005 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG SCC: 0xC04 0x000005DC ;Latency in uS max: [15:0]DVFS [31:16]PWRUP On Mon, Oct 21, 2013 at 6:47 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: > Hi Dave Martin, > > On which kernel base this kexec is tested? is it 3.10 or 3.12? > can you please share your git (public) if available? > > I tested using 3.10 + TC2 patches. However I see sometimes kexec fails > to reboot and hangs at very early stage (log below) > > root at armeb-cortex-a15:/# kexec -e > [ 59.311559] Starting new kernel > > Thanks > Vijay > > Message: 2 > Date: Tue, 1 Oct 2013 18:15:15 +0100 > From: Dave Martin <Dave.Martin@arm.com> > To: linux-arm-kernel at lists.infradead.org > Cc: Nicolas Pitre <nicolas.pitre@linaro.org>, Lorenzo Pieralisi > <Lorenzo.Pieralisi@arm.com>, Pawel Moll <Pawel.Moll@arm.com>, Sudeep > KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com >>, Will Deacon > <Will.Deacon@arm.com>, Dave Martin <Dave.Martin@arm.com> > Subject: [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown > synchronisation > Message-ID: <1380647718-9178-1-git-send-email-Dave.Martin@arm.com> > > This series adds MCPM support for detecting when a CPU is safely powered > down, and provides an implementation for TC2. > > It should be possible to implement the same thing for PSCI using the > AFFINITY_INFO call (I need to check the semantics with Charles) > > This is sufficient to for working kexec with real power management on > TC2. To test it, you'll also need: > > * CONFIG_KEXEC=y > * CONFIG_PROC_DEVICE_TREE=y > * CONFIG_MCPM=y > * CONFIG_ARCH_VEXPRESS_TC2_PM=y > * sufficiently new kexec-tools > (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git > v2.0.4 worked for me) > > This build on Nico's patch > http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7842/1 > (MCPM: don't explode if invoked without being initialized first) > > To prevent CPUs from running off into the weeds across kexec, this > series requires Lorenzo's patch > http://lists.infradead.org/pipermail/linux-arm-kernel/2013-September/200917.html > (arm: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down). > > Changes since v2: > > * Return a proper failure code if mcpm_cpu_power_down_finish() is > called with no mcpm platforms_ops registered, or a NULL > power_down_finish() method. (Thanks again Nico) > > * Minor refactoring of the loop in tc2_pm_power_down_finish() to > avoid the goto. > > Changes between v1 and v2: > > * "Fix" erroneous documentation comment by switching to -errno return > value convention for power_down_finish(), which is more informative. > tc2_pm now returns -ETIMEDOUT on timeout. The return is adapted to > bool convention on return from smp_ops.cpu_kill() instead. (Thanks, > Nico). > > * For consistency, BUG_ON out of range cpu or cluster values > tc2_pm_power_down_finish(), as for tc2_pm_power_down(). > > Changes between RFC and v1: > > * Print a big fat warning instead of branching to null if the > power_down_finish() method is not supplied by the backend, or not > registered. > > * Add a generous timeout of 1 second for the TC2 implementation. > > * Relax the polling interval to 10ms for TC2, since the need to poll > more than once is rare and this is not a performance-critical path. > > * Fix some silly typos. > > > Dave Martin (3): > ARM: mcpm: Factor out logical-to-physical CPU translation > ARM: mcpm: Implement cpu_kill() to synchronise on powerdown > ARM: vexpress/TC2: Implement MCPM power_down_finish() > > arch/arm/common/mcpm_entry.c | 15 +++++++++ > arch/arm/common/mcpm_platsmp.c | 27 +++++++++++++--- > arch/arm/include/asm/mcpm.h | 31 ++++++++++++++++++ > arch/arm/mach-vexpress/spc.c | 39 +++++++++++++++++++++++ > arch/arm/mach-vexpress/spc.h | 1 + > arch/arm/mach-vexpress/tc2_pm.c | 66 ++++++++++++++++++++++++++++++++++++--- > 6 files changed, 170 insertions(+), 9 deletions(-) > > -- > 1.7.9.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation 2013-10-24 12:48 ` [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation Vijay Kilari @ 2013-10-24 12:49 ` Vijay Kilari 2013-10-24 16:45 ` Sudeep KarkadaNagesha 2013-10-25 15:46 ` Dave Martin 0 siblings, 2 replies; 7+ messages in thread From: Vijay Kilari @ 2013-10-24 12:49 UTC (permalink / raw) To: linux-arm-kernel Sorry. Below is the right DCC configuration for SCC 700 SCC: 0x700 0x0032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot On Thu, Oct 24, 2013 at 6:18 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: > Hi Dave Martin, > > With the below configuration, I tried to check cpu hotplug as this > is prerequisite for kexec. > I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. > > Below is my DCC board configuration > > SCC REGISTERS] > TOTALSCCS: 32 ;Total Number of SCC registers > SCC: 0x018 0x1FFFFFFF > SCC: 0x01C 0xFF00FF00 ;CFGRW3 - SMC CS6/7 N/U > SCC: 0x118 0x01CD1011 ;CFGRW17 - HDLCD PLL external bypass > ;SCC: 0x700 0x1032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > Cluster (default CA7_0) > SCC: 0x700 0x0032D003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > Cluster (default CA7_0) > ; Bootmon configuration: > ; [15]: A7 Event stream > generation (default: disabled) > ; [14]: A15 Event stream > generation (default: disabled) > ; [13]: Power down the > non-boot cluster (default: disabled) > ; [12]: Use per-cpu mailboxes > for power management (default: disabled) > ; [11]: A15 executes WFEs as > nops (default: disabled) > ; [ 4]: Erase UEFI variable > storage in NOR flash > > SCC: 0x400 0x33330c00 ;CFGREG41 - A15 configuration register > 0 (Default 0x33330c80) > ; [29:28] SPNIDEN > ; [25:24] SPIDEN > ; [21:20] NIDEN > ; [17:16] DBGEN > ; [13:12] CFGTE > ; [9:8] VINITHI_CORE > ; [7] IMINLN > ; [3:0] CLUSTER_ID > > > ;Power management interface > > SCC: 0xC00 0x00000005 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG > SCC: 0xC04 0x000005DC ;Latency in uS max: [15:0]DVFS [31:16]PWRUP > > > On Mon, Oct 21, 2013 at 6:47 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: >> Hi Dave Martin, >> >> On which kernel base this kexec is tested? is it 3.10 or 3.12? >> can you please share your git (public) if available? >> >> I tested using 3.10 + TC2 patches. However I see sometimes kexec fails >> to reboot and hangs at very early stage (log below) >> >> root at armeb-cortex-a15:/# kexec -e >> [ 59.311559] Starting new kernel >> >> Thanks >> Vijay >> >> Message: 2 >> Date: Tue, 1 Oct 2013 18:15:15 +0100 >> From: Dave Martin <Dave.Martin@arm.com> >> To: linux-arm-kernel at lists.infradead.org >> Cc: Nicolas Pitre <nicolas.pitre@linaro.org>, Lorenzo Pieralisi >> <Lorenzo.Pieralisi@arm.com>, Pawel Moll <Pawel.Moll@arm.com>, Sudeep >> KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com >>>, Will Deacon >> <Will.Deacon@arm.com>, Dave Martin <Dave.Martin@arm.com> >> Subject: [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown >> synchronisation >> Message-ID: <1380647718-9178-1-git-send-email-Dave.Martin@arm.com> >> >> This series adds MCPM support for detecting when a CPU is safely powered >> down, and provides an implementation for TC2. >> >> It should be possible to implement the same thing for PSCI using the >> AFFINITY_INFO call (I need to check the semantics with Charles) >> >> This is sufficient to for working kexec with real power management on >> TC2. To test it, you'll also need: >> >> * CONFIG_KEXEC=y >> * CONFIG_PROC_DEVICE_TREE=y >> * CONFIG_MCPM=y >> * CONFIG_ARCH_VEXPRESS_TC2_PM=y >> * sufficiently new kexec-tools >> (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git >> v2.0.4 worked for me) >> >> This build on Nico's patch >> http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7842/1 >> (MCPM: don't explode if invoked without being initialized first) >> >> To prevent CPUs from running off into the weeds across kexec, this >> series requires Lorenzo's patch >> http://lists.infradead.org/pipermail/linux-arm-kernel/2013-September/200917.html >> (arm: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down). >> >> Changes since v2: >> >> * Return a proper failure code if mcpm_cpu_power_down_finish() is >> called with no mcpm platforms_ops registered, or a NULL >> power_down_finish() method. (Thanks again Nico) >> >> * Minor refactoring of the loop in tc2_pm_power_down_finish() to >> avoid the goto. >> >> Changes between v1 and v2: >> >> * "Fix" erroneous documentation comment by switching to -errno return >> value convention for power_down_finish(), which is more informative. >> tc2_pm now returns -ETIMEDOUT on timeout. The return is adapted to >> bool convention on return from smp_ops.cpu_kill() instead. (Thanks, >> Nico). >> >> * For consistency, BUG_ON out of range cpu or cluster values >> tc2_pm_power_down_finish(), as for tc2_pm_power_down(). >> >> Changes between RFC and v1: >> >> * Print a big fat warning instead of branching to null if the >> power_down_finish() method is not supplied by the backend, or not >> registered. >> >> * Add a generous timeout of 1 second for the TC2 implementation. >> >> * Relax the polling interval to 10ms for TC2, since the need to poll >> more than once is rare and this is not a performance-critical path. >> >> * Fix some silly typos. >> >> >> Dave Martin (3): >> ARM: mcpm: Factor out logical-to-physical CPU translation >> ARM: mcpm: Implement cpu_kill() to synchronise on powerdown >> ARM: vexpress/TC2: Implement MCPM power_down_finish() >> >> arch/arm/common/mcpm_entry.c | 15 +++++++++ >> arch/arm/common/mcpm_platsmp.c | 27 +++++++++++++--- >> arch/arm/include/asm/mcpm.h | 31 ++++++++++++++++++ >> arch/arm/mach-vexpress/spc.c | 39 +++++++++++++++++++++++ >> arch/arm/mach-vexpress/spc.h | 1 + >> arch/arm/mach-vexpress/tc2_pm.c | 66 ++++++++++++++++++++++++++++++++++++--- >> 6 files changed, 170 insertions(+), 9 deletions(-) >> >> -- >> 1.7.9.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation 2013-10-24 12:49 ` Vijay Kilari @ 2013-10-24 16:45 ` Sudeep KarkadaNagesha 2013-10-25 15:46 ` Dave Martin 1 sibling, 0 replies; 7+ messages in thread From: Sudeep KarkadaNagesha @ 2013-10-24 16:45 UTC (permalink / raw) To: linux-arm-kernel On 24/10/13 13:49, Vijay Kilari wrote: > Sorry. Below is the right DCC configuration for SCC 700 > SCC: 0x700 0x0032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > > On Thu, Oct 24, 2013 at 6:18 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: >> Hi Dave Martin, >> >> With the below configuration, I tried to check cpu hotplug as this >> is prerequisite for kexec. >> I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. >> It works fine for me on v3.12-rc6. Do you see any error message ? (check demsg if loglevel is changed by some scripts in FS) Regards, Sudeep ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation 2013-10-24 12:49 ` Vijay Kilari 2013-10-24 16:45 ` Sudeep KarkadaNagesha @ 2013-10-25 15:46 ` Dave Martin 2013-10-27 2:52 ` Nicolas Pitre 2013-11-05 5:27 ` Vijay Kilari 1 sibling, 2 replies; 7+ messages in thread From: Dave Martin @ 2013-10-25 15:46 UTC (permalink / raw) To: linux-arm-kernel On Thu, Oct 24, 2013 at 06:19:42PM +0530, Vijay Kilari wrote: > Sorry. Below is the right DCC configuration for SCC 700 > SCC: 0x700 0x0032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > > On Thu, Oct 24, 2013 at 6:18 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: > > Hi Dave Martin, > > > > With the below configuration, I tried to check cpu hotplug as this > > is prerequisite for kexec. > > I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. Thanks for giving this a try. > > Below is my DCC board configuration I've attached my board.txt. The only obvious difference that I think should have an impact is that bit 13 in SCC 0x700 needs to be 1 in order for the non-boot cluster to be powered down on startup. In my board.txt, SCC 0x700 has the value 0x0032F003 -- you have that, but it's commented out. What happens if you set that bit, and make no other changes to your config? [more comments below] > > > > SCC REGISTERS] > > TOTALSCCS: 32 ;Total Number of SCC registers > > SCC: 0x018 0x1FFFFFFF > > SCC: 0x01C 0xFF00FF00 ;CFGRW3 - SMC CS6/7 N/U > > SCC: 0x118 0x01CD1011 ;CFGRW17 - HDLCD PLL external bypass > > ;SCC: 0x700 0x1032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > > Cluster (default CA7_0) > > SCC: 0x700 0x0032D003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > > Cluster (default CA7_0) > > ; Bootmon configuration: > > ; [15]: A7 Event stream > > generation (default: disabled) > > ; [14]: A15 Event stream > > generation (default: disabled) > > ; [13]: Power down the > > non-boot cluster (default: disabled) > > ; [12]: Use per-cpu mailboxes > > for power management (default: disabled) > > ; [11]: A15 executes WFEs as > > nops (default: disabled) > > ; [ 4]: Erase UEFI variable > > storage in NOR flash > > > > SCC: 0x400 0x33330c00 ;CFGREG41 - A15 configuration register > > 0 (Default 0x33330c80) > > ; [29:28] SPNIDEN > > ; [25:24] SPIDEN > > ; [21:20] NIDEN > > ; [17:16] DBGEN > > ; [13:12] CFGTE > > ; [9:8] VINITHI_CORE > > ; [7] IMINLN > > ; [3:0] CLUSTER_ID > > > > > > ;Power management interface > > > > SCC: 0xC00 0x00000005 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG > > SCC: 0xC04 0x000005DC ;Latency in uS max: [15:0]DVFS [31:16]PWRUP > > > > > > On Mon, Oct 21, 2013 at 6:47 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: > >> Hi Dave Martin, > >> > >> On which kernel base this kexec is tested? is it 3.10 or 3.12? > >> can you please share your git (public) if available? I don't have a public git tree right now (that's on my todo list). I tested the latest post of the series (v4) with v3.12-rc3. > >> I tested using 3.10 + TC2 patches. However I see sometimes kexec fails > >> to reboot and hangs at very early stage (log below) > >> > >> root at armeb-cortex-a15:/# kexec -e > >> [ 59.311559] Starting new kernel I don't know why this should happen. There is a known bug affecting kexec when the initial kernel is Thumb (i.e., CONFIG_THUMB2_KERNEL=y). What's your config? Do you get any extra output if you enable the debug UART earlyprintk? Note that in the kernel config, you'll need CONFIG_NR_CPUS=5. The default is 4, which may result in the final A7 CPU not being properly parked across kexec -- I suggest you try changing this too. Cheers ---Dave > >> > >> Thanks > >> Vijay > >> > >> Message: 2 > >> Date: Tue, 1 Oct 2013 18:15:15 +0100 > >> From: Dave Martin <Dave.Martin@arm.com> > >> To: linux-arm-kernel at lists.infradead.org > >> Cc: Nicolas Pitre <nicolas.pitre@linaro.org>, Lorenzo Pieralisi > >> <Lorenzo.Pieralisi@arm.com>, Pawel Moll <Pawel.Moll@arm.com>, Sudeep > >> KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com > >>>, Will Deacon > >> <Will.Deacon@arm.com>, Dave Martin <Dave.Martin@arm.com> > >> Subject: [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown > >> synchronisation > >> Message-ID: <1380647718-9178-1-git-send-email-Dave.Martin@arm.com> > >> > >> This series adds MCPM support for detecting when a CPU is safely powered > >> down, and provides an implementation for TC2. > >> > >> It should be possible to implement the same thing for PSCI using the > >> AFFINITY_INFO call (I need to check the semantics with Charles) > >> > >> This is sufficient to for working kexec with real power management on > >> TC2. To test it, you'll also need: > >> > >> * CONFIG_KEXEC=y > >> * CONFIG_PROC_DEVICE_TREE=y > >> * CONFIG_MCPM=y > >> * CONFIG_ARCH_VEXPRESS_TC2_PM=y > >> * sufficiently new kexec-tools > >> (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git > >> v2.0.4 worked for me) > >> > >> This build on Nico's patch > >> http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7842/1 > >> (MCPM: don't explode if invoked without being initialized first) > >> > >> To prevent CPUs from running off into the weeds across kexec, this > >> series requires Lorenzo's patch > >> http://lists.infradead.org/pipermail/linux-arm-kernel/2013-September/200917.html > >> (arm: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down). > >> > >> Changes since v2: > >> > >> * Return a proper failure code if mcpm_cpu_power_down_finish() is > >> called with no mcpm platforms_ops registered, or a NULL > >> power_down_finish() method. (Thanks again Nico) > >> > >> * Minor refactoring of the loop in tc2_pm_power_down_finish() to > >> avoid the goto. > >> > >> Changes between v1 and v2: > >> > >> * "Fix" erroneous documentation comment by switching to -errno return > >> value convention for power_down_finish(), which is more informative. > >> tc2_pm now returns -ETIMEDOUT on timeout. The return is adapted to > >> bool convention on return from smp_ops.cpu_kill() instead. (Thanks, > >> Nico). > >> > >> * For consistency, BUG_ON out of range cpu or cluster values > >> tc2_pm_power_down_finish(), as for tc2_pm_power_down(). > >> > >> Changes between RFC and v1: > >> > >> * Print a big fat warning instead of branching to null if the > >> power_down_finish() method is not supplied by the backend, or not > >> registered. > >> > >> * Add a generous timeout of 1 second for the TC2 implementation. > >> > >> * Relax the polling interval to 10ms for TC2, since the need to poll > >> more than once is rare and this is not a performance-critical path. > >> > >> * Fix some silly typos. > >> > >> > >> Dave Martin (3): > >> ARM: mcpm: Factor out logical-to-physical CPU translation > >> ARM: mcpm: Implement cpu_kill() to synchronise on powerdown > >> ARM: vexpress/TC2: Implement MCPM power_down_finish() > >> > >> arch/arm/common/mcpm_entry.c | 15 +++++++++ > >> arch/arm/common/mcpm_platsmp.c | 27 +++++++++++++--- > >> arch/arm/include/asm/mcpm.h | 31 ++++++++++++++++++ > >> arch/arm/mach-vexpress/spc.c | 39 +++++++++++++++++++++++ > >> arch/arm/mach-vexpress/spc.h | 1 + > >> arch/arm/mach-vexpress/tc2_pm.c | 66 ++++++++++++++++++++++++++++++++++++--- > >> 6 files changed, 170 insertions(+), 9 deletions(-) > >> > >> -- > >> 1.7.9.5 > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -------------- next part -------------- BOARD: HBI0249 TITLE: V2P-CA15_A7 Configuration File [DCCS] TOTALDCCS: 1 ;Total Number of DCCS M0FILE: dbb_v110.ebf ;DCC0 Filename M0MODE: MICRO ;DCC0 Programming Mode [FPGAS] TOTALFPGAS: 0 ;Total Number of FPGAs [TAPS] TOTALTAPS: 3 ;Total Number of TAPs T0NAME: STM32TMC ;TAP0 Device Name T0FILE: NONE ;TAP0 Filename T0MODE: NONE ;TAP0 Programming Mode T1NAME: STM32CM3 ;TAP1 Device Name T1FILE: NONE ;TAP1 Filename T1MODE: NONE ;TAP1 Programming Mode T2NAME: CORTEXA15 ;TAP2 Device Name T2FILE: NONE ;TAP2 Filename T2MODE: NONE ;TAP2 Programming Mode [OSCCLKS] TOTALOSCCLKS: 9 ;Total Number of OSCCLKS OSC0: 50.0 ;CPUREFCLK0 A15 CPU (20:1 - 1.0GHz) OSC1: 50.0 ;CPUREFCLK1 A15 CPU (20:1 - 1.0GHz) OSC2: 40.0 ;CPUREFCLK0 A7 CPU (20:1 - 800MHz) OSC3: 40.0 ;CPUREFCLK1 A7 CPU (20:1 - 800MHz) OSC4: 40.0 ;HSBM AXI (40MHz) OSC5: 23.75 ;HDLCD (23.75MHz - TC PLL is in bypass) OSC6: 50.0 ;SMB (50MHz) OSC7: 50.0 ;SYSREFCLK (20:1 - 1.0GHz, ACLK - 500MHz) OSC8: 50.0 ;DDR2 (8:1 - 400MHz) [SCC REGISTERS] TOTALSCCS: 32 ;Total Number of SCC registers SCC: 0x01C 0xFF00FF00 ;CFGRW3 - SMC CS6/7 N/U SCC: 0x118 0x01CD1011 ;CFGRW17 - HDLCD PLL external bypass SCC: 0x700 0x0032F003 ;CFGRW48 - Cluster configuration register (Default 0x0032F003) ; [ 28] Boot Cluster (default CA15) ; [25:24] Boot CPU (default 0) ; [ 15] A7 Event stream generation (default: enabled) ; [ 14] A15 Event stream generation (default: enabled) ; [ 13] Power down the non-boot cluster (default: enabled) ; [ 12] Use per-cpu mailboxes for power management (default: enabled) ; [ 11] A15 executes WFEs as nops (default: disabled) SCC: 0x400 0x33330C00 ;CFGRW41 - A15 configuration register 0 (Default 0x33330C00) ; [29:28] SPNIDEN ; [25:24] SPIDEN ; [21:20] NIDEN ; [17:16] DBGEN ; [13:12] CFGTE ; [ 9: 8] VINITHI_CORE ; [ 7] IMINLN ; [ 3: 0] CLUSTER_ID ;Set the CPU clock PLLs SCC: 0x120 0x022F1010 ;CFGRW19 - CA15_0 PLL control - 20:1 (lock OFF) SCC: 0x124 0x0011710D ;CFGRW20 - CA15_0 PLL value SCC: 0x128 0x022F1010 ;CFGRW21 - CA15_1 PLL control - 20:1 (lock OFF) SCC: 0x12C 0x0011710D ;CFGRW22 - CA15_1 PLL value SCC: 0x130 0x022F1010 ;CFGRW23 - CA7_0 PLL control - 20:1 (lock OFF) SCC: 0x134 0x0011710D ;CFGRW24 - CA7_0 PLL value SCC: 0x138 0x022F1010 ;CFGRW25 - CA7_1 PLL control - 20:1 (lock OFF) SCC: 0x13C 0x0011710D ;CFGRW26 - CA7_1 PLL value ;Power management interface ; SCC: 0xC00 0x00000007 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG (disable DBG_EN for power measurements) ; Disable DBG_EN for real power management with Linux MCPM: SCC: 0xC00 0x00000005 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG (disable DBG_EN for power measurements) SCC: 0xC04 0x060E0356 ;Latency in uS max: [15:0]DVFS [31:16]PWRUP SCC: 0xC08 0x00000000 ;Reserved SCC: 0xC0C 0x00000000 ;Reserved ;CA15 performance values: 0xVVVFFFFF SCC: 0xC10 0x384061A8 ;CA15 PERFVAL0, 900mV, 20,000*20= 500MHz SCC: 0xC14 0x38407530 ;CA15 PERFVAL1, 900mV, 25,000*20= 600MHz SCC: 0xC18 0x384088B8 ;CA15 PERFVAL2, 900mV, 30,000*20= 700MHz SCC: 0xC1C 0x38409C40 ;CA15 PERFVAL3, 900mV, 35,000*20= 800MHz SCC: 0xC20 0x3840AFC8 ;CA15 PERFVAL4, 900mV, 40,000*20= 900MHz SCC: 0xC24 0x3840C350 ;CA15 PERFVAL5, 900mV, 45,000*20=1000MHz SCC: 0xC28 0x3CF0D6D8 ;CA15 PERFVAL6, 975mV, 50,000*20=1100MHz SCC: 0xC2C 0x41A0EA60 ;CA15 PERFVAL7, 1050mV, 55,000*20=1200MHz ;CA7 performance values: 0xVVVFFFFF SCC: 0xC30 0x3840445C ;CA7 PERFVAL0, 900mV, 10,000*20= 350MHz SCC: 0xC34 0x38404E20 ;CA7 PERFVAL1, 900mV, 15,000*20= 400MHz SCC: 0xC38 0x384061A8 ;CA7 PERFVAL2, 900mV, 20,000*20= 500MHz SCC: 0xC3C 0x38407530 ;CA7 PERFVAL3, 900mV, 25,000*20= 600MHz SCC: 0xC40 0x384088B8 ;CA7 PERFVAL4, 900mV, 30,000*20= 700MHz SCC: 0xC44 0x38409C40 ;CA7 PERFVAL5, 900mV, 35,000*20= 800MHz SCC: 0xC48 0x3CF0AFC8 ;CA7 PERFVAL6, 975mV, 40,000*20= 900MHz SCC: 0xC4C 0x41A0C350 ;CA7 PERFVAL7, 1050mV, 45,000*20=1000MHz SCC: 0xB00 0x00000007 ;CA15 PERFLVL7 (max) requested initially SCC: 0xB08 0x00000007 ;CA7 PERFLVL7 (max) requested initially ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation 2013-10-25 15:46 ` Dave Martin @ 2013-10-27 2:52 ` Nicolas Pitre 2013-11-05 5:27 ` Vijay Kilari 1 sibling, 0 replies; 7+ messages in thread From: Nicolas Pitre @ 2013-10-27 2:52 UTC (permalink / raw) To: linux-arm-kernel On Fri, 25 Oct 2013, Dave Martin wrote: > On Thu, Oct 24, 2013 at 06:19:42PM +0530, Vijay Kilari wrote: > > Sorry. Below is the right DCC configuration for SCC 700 > > SCC: 0x700 0x0032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot > > > > On Thu, Oct 24, 2013 at 6:18 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: > > > Hi Dave Martin, > > > > > > With the below configuration, I tried to check cpu hotplug as this > > > is prerequisite for kexec. > > > I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. > > Thanks for giving this a try. > > > > Below is my DCC board configuration > > > I've attached my board.txt. > > The only obvious difference that I think should have an impact is that > bit 13 in SCC 0x700 needs to be 1 in order for the non-boot cluster to > be powered down on startup. > > In my board.txt, SCC 0x700 has the value 0x0032F003 -- you have that, > but it's commented out. Is there a way to programmatically determine from Linux if the necessary bits are set? ... Yes, from physical 0x7fff0700. I think we should test for the proper bits to be set such as bit 12 which is absolutely needed for the code in tc2_pm.c to work, and refuse to register the TC2 MCPM backend with a big warning in the boot log to that effect otherwise. If Linux can flag inproper firmware config that might help with issues like this one. > What happens if you set that bit, and make no other changes to your > config? That would be interesting to know indeed. Nicolas ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation 2013-10-25 15:46 ` Dave Martin 2013-10-27 2:52 ` Nicolas Pitre @ 2013-11-05 5:27 ` Vijay Kilari 1 sibling, 0 replies; 7+ messages in thread From: Vijay Kilari @ 2013-11-05 5:27 UTC (permalink / raw) To: linux-arm-kernel Hi Dave, After picking required patches for 3.10, kexec & kdump works on ARM VE I have set SCC 0x700 to 0x0032F003 and thumb2 is disabled Thanks Vijay On Fri, Oct 25, 2013 at 9:16 PM, Dave Martin <Dave.Martin@arm.com> wrote: > On Thu, Oct 24, 2013 at 06:19:42PM +0530, Vijay Kilari wrote: >> Sorry. Below is the right DCC configuration for SCC 700 >> SCC: 0x700 0x0032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot >> >> On Thu, Oct 24, 2013 at 6:18 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: >> > Hi Dave Martin, >> > >> > With the below configuration, I tried to check cpu hotplug as this >> > is prerequisite for kexec. >> > I see cpu hotplug fails. hot-unplug is OK but hot plug-in fails. > > Thanks for giving this a try. > >> > Below is my DCC board configuration > > > I've attached my board.txt. > > The only obvious difference that I think should have an impact is that > bit 13 in SCC 0x700 needs to be 1 in order for the non-boot cluster to > be powered down on startup. > > In my board.txt, SCC 0x700 has the value 0x0032F003 -- you have that, > but it's commented out. > > What happens if you set that bit, and make no other changes to your > config? > > [more comments below] > >> > >> > SCC REGISTERS] >> > TOTALSCCS: 32 ;Total Number of SCC registers >> > SCC: 0x018 0x1FFFFFFF >> > SCC: 0x01C 0xFF00FF00 ;CFGRW3 - SMC CS6/7 N/U >> > SCC: 0x118 0x01CD1011 ;CFGRW17 - HDLCD PLL external bypass >> > ;SCC: 0x700 0x1032F003 ;CFGRW48 - [25:24]Boot CPU [28]Boot >> > Cluster (default CA7_0) >> > SCC: 0x700 0x0032D003 ;CFGRW48 - [25:24]Boot CPU [28]Boot >> > Cluster (default CA7_0) >> > ; Bootmon configuration: >> > ; [15]: A7 Event stream >> > generation (default: disabled) >> > ; [14]: A15 Event stream >> > generation (default: disabled) >> > ; [13]: Power down the >> > non-boot cluster (default: disabled) >> > ; [12]: Use per-cpu mailboxes >> > for power management (default: disabled) >> > ; [11]: A15 executes WFEs as >> > nops (default: disabled) >> > ; [ 4]: Erase UEFI variable >> > storage in NOR flash >> > >> > SCC: 0x400 0x33330c00 ;CFGREG41 - A15 configuration register >> > 0 (Default 0x33330c80) >> > ; [29:28] SPNIDEN >> > ; [25:24] SPIDEN >> > ; [21:20] NIDEN >> > ; [17:16] DBGEN >> > ; [13:12] CFGTE >> > ; [9:8] VINITHI_CORE >> > ; [7] IMINLN >> > ; [3:0] CLUSTER_ID >> > >> > >> > ;Power management interface >> > >> > SCC: 0xC00 0x00000005 ;Control: [0]PMI_EN [1]DBG_EN [2]SPC_SYSCFG >> > SCC: 0xC04 0x000005DC ;Latency in uS max: [15:0]DVFS [31:16]PWRUP >> > >> > >> > On Mon, Oct 21, 2013 at 6:47 PM, Vijay Kilari <vijay.kilari@gmail.com> wrote: >> >> Hi Dave Martin, >> >> >> >> On which kernel base this kexec is tested? is it 3.10 or 3.12? >> >> can you please share your git (public) if available? > > I don't have a public git tree right now (that's on my todo list). > > I tested the latest post of the series (v4) with v3.12-rc3. > >> >> I tested using 3.10 + TC2 patches. However I see sometimes kexec fails >> >> to reboot and hangs at very early stage (log below) >> >> >> >> root at armeb-cortex-a15:/# kexec -e >> >> [ 59.311559] Starting new kernel > > I don't know why this should happen. There is a known bug affecting > kexec when the initial kernel is Thumb (i.e., CONFIG_THUMB2_KERNEL=y). > What's your config? > > Do you get any extra output if you enable the debug UART earlyprintk? > > > Note that in the kernel config, you'll need CONFIG_NR_CPUS=5. The > default is 4, which may result in the final A7 CPU not being properly > parked across kexec -- I suggest you try changing this too. > > Cheers > ---Dave > >> >> >> >> Thanks >> >> Vijay >> >> >> >> Message: 2 >> >> Date: Tue, 1 Oct 2013 18:15:15 +0100 >> >> From: Dave Martin <Dave.Martin@arm.com> >> >> To: linux-arm-kernel at lists.infradead.org >> >> Cc: Nicolas Pitre <nicolas.pitre@linaro.org>, Lorenzo Pieralisi >> >> <Lorenzo.Pieralisi@arm.com>, Pawel Moll <Pawel.Moll@arm.com>, Sudeep >> >> KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com >> >>>, Will Deacon >> >> <Will.Deacon@arm.com>, Dave Martin <Dave.Martin@arm.com> >> >> Subject: [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown >> >> synchronisation >> >> Message-ID: <1380647718-9178-1-git-send-email-Dave.Martin@arm.com> >> >> >> >> This series adds MCPM support for detecting when a CPU is safely powered >> >> down, and provides an implementation for TC2. >> >> >> >> It should be possible to implement the same thing for PSCI using the >> >> AFFINITY_INFO call (I need to check the semantics with Charles) >> >> >> >> This is sufficient to for working kexec with real power management on >> >> TC2. To test it, you'll also need: >> >> >> >> * CONFIG_KEXEC=y >> >> * CONFIG_PROC_DEVICE_TREE=y >> >> * CONFIG_MCPM=y >> >> * CONFIG_ARCH_VEXPRESS_TC2_PM=y >> >> * sufficiently new kexec-tools >> >> (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git >> >> v2.0.4 worked for me) >> >> >> >> This build on Nico's patch >> >> http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7842/1 >> >> (MCPM: don't explode if invoked without being initialized first) >> >> >> >> To prevent CPUs from running off into the weeds across kexec, this >> >> series requires Lorenzo's patch >> >> http://lists.infradead.org/pipermail/linux-arm-kernel/2013-September/200917.html >> >> (arm: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down). >> >> >> >> Changes since v2: >> >> >> >> * Return a proper failure code if mcpm_cpu_power_down_finish() is >> >> called with no mcpm platforms_ops registered, or a NULL >> >> power_down_finish() method. (Thanks again Nico) >> >> >> >> * Minor refactoring of the loop in tc2_pm_power_down_finish() to >> >> avoid the goto. >> >> >> >> Changes between v1 and v2: >> >> >> >> * "Fix" erroneous documentation comment by switching to -errno return >> >> value convention for power_down_finish(), which is more informative. >> >> tc2_pm now returns -ETIMEDOUT on timeout. The return is adapted to >> >> bool convention on return from smp_ops.cpu_kill() instead. (Thanks, >> >> Nico). >> >> >> >> * For consistency, BUG_ON out of range cpu or cluster values >> >> tc2_pm_power_down_finish(), as for tc2_pm_power_down(). >> >> >> >> Changes between RFC and v1: >> >> >> >> * Print a big fat warning instead of branching to null if the >> >> power_down_finish() method is not supplied by the backend, or not >> >> registered. >> >> >> >> * Add a generous timeout of 1 second for the TC2 implementation. >> >> >> >> * Relax the polling interval to 10ms for TC2, since the need to poll >> >> more than once is rare and this is not a performance-critical path. >> >> >> >> * Fix some silly typos. >> >> >> >> >> >> Dave Martin (3): >> >> ARM: mcpm: Factor out logical-to-physical CPU translation >> >> ARM: mcpm: Implement cpu_kill() to synchronise on powerdown >> >> ARM: vexpress/TC2: Implement MCPM power_down_finish() >> >> >> >> arch/arm/common/mcpm_entry.c | 15 +++++++++ >> >> arch/arm/common/mcpm_platsmp.c | 27 +++++++++++++--- >> >> arch/arm/include/asm/mcpm.h | 31 ++++++++++++++++++ >> >> arch/arm/mach-vexpress/spc.c | 39 +++++++++++++++++++++++ >> >> arch/arm/mach-vexpress/spc.h | 1 + >> >> arch/arm/mach-vexpress/tc2_pm.c | 66 ++++++++++++++++++++++++++++++++++++--- >> >> 6 files changed, 170 insertions(+), 9 deletions(-) >> >> >> >> -- >> >> 1.7.9.5 >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation @ 2013-10-01 17:15 Dave Martin 0 siblings, 0 replies; 7+ messages in thread From: Dave Martin @ 2013-10-01 17:15 UTC (permalink / raw) To: linux-arm-kernel This series adds MCPM support for detecting when a CPU is safely powered down, and provides an implementation for TC2. It should be possible to implement the same thing for PSCI using the AFFINITY_INFO call (I need to check the semantics with Charles) This is sufficient to for working kexec with real power management on TC2. To test it, you'll also need: * CONFIG_KEXEC=y * CONFIG_PROC_DEVICE_TREE=y * CONFIG_MCPM=y * CONFIG_ARCH_VEXPRESS_TC2_PM=y * sufficiently new kexec-tools (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git v2.0.4 worked for me) This build on Nico's patch http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7842/1 (MCPM: don't explode if invoked without being initialized first) To prevent CPUs from running off into the weeds across kexec, this series requires Lorenzo's patch http://lists.infradead.org/pipermail/linux-arm-kernel/2013-September/200917.html (arm: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down). Changes since v2: * Return a proper failure code if mcpm_cpu_power_down_finish() is called with no mcpm platforms_ops registered, or a NULL power_down_finish() method. (Thanks again Nico) * Minor refactoring of the loop in tc2_pm_power_down_finish() to avoid the goto. Changes between v1 and v2: * "Fix" erroneous documentation comment by switching to -errno return value convention for power_down_finish(), which is more informative. tc2_pm now returns -ETIMEDOUT on timeout. The return is adapted to bool convention on return from smp_ops.cpu_kill() instead. (Thanks, Nico). * For consistency, BUG_ON out of range cpu or cluster values tc2_pm_power_down_finish(), as for tc2_pm_power_down(). Changes between RFC and v1: * Print a big fat warning instead of branching to null if the power_down_finish() method is not supplied by the backend, or not registered. * Add a generous timeout of 1 second for the TC2 implementation. * Relax the polling interval to 10ms for TC2, since the need to poll more than once is rare and this is not a performance-critical path. * Fix some silly typos. Dave Martin (3): ARM: mcpm: Factor out logical-to-physical CPU translation ARM: mcpm: Implement cpu_kill() to synchronise on powerdown ARM: vexpress/TC2: Implement MCPM power_down_finish() arch/arm/common/mcpm_entry.c | 15 +++++++++ arch/arm/common/mcpm_platsmp.c | 27 +++++++++++++--- arch/arm/include/asm/mcpm.h | 31 ++++++++++++++++++ arch/arm/mach-vexpress/spc.c | 39 +++++++++++++++++++++++ arch/arm/mach-vexpress/spc.h | 1 + arch/arm/mach-vexpress/tc2_pm.c | 66 ++++++++++++++++++++++++++++++++++++--- 6 files changed, 170 insertions(+), 9 deletions(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-11-05 5:27 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <CALicx6v86NMp53+zbE=A3ang-ftGE3KiUojkRZO4ss6Pmks1ow@mail.gmail.com> 2013-10-24 12:48 ` [PATCH v3 0/3] MCPM/TC2 support for CPU powerdown synchronisation Vijay Kilari 2013-10-24 12:49 ` Vijay Kilari 2013-10-24 16:45 ` Sudeep KarkadaNagesha 2013-10-25 15:46 ` Dave Martin 2013-10-27 2:52 ` Nicolas Pitre 2013-11-05 5:27 ` Vijay Kilari 2013-10-01 17:15 Dave Martin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).