On Thu, 27 Nov 2014, Abhilash Kesavan wrote:
Hi Kevin,
On Thu, Nov 27, 2014 at 12:11 AM, Nicolas Pitre
[off-list ref] wrote:
quoted
On Wed, 26 Nov 2014, Kevin Hilman wrote:
quoted
Abhilash Kesavan [off-list ref] writes:
quoted
Hi Kevin,
On Wed, Nov 26, 2014 at 6:30 AM, Kevin Hilman [off-list ref] wrote:
quoted
[...]
More specifically, with only the loopback call to turn off CCI commented
out, the imprecise aborts go away.
I can't see how enabling snoops for the boot cluster is causing these
aborts. Perhaps as Krzysztof commented it has something to do with the
secure firmware/tz software on these boards ? Other than there does
not appear to be any difference between the working/non-working
setups.
Perhaps the secure firmware is preventing the CCI to be enabled by the
kernel, and that is causing the imprecise abort?
That is well possible.
Now...... if the bootloader/firmware does not let Linux deal with both
the CCI and caches then MCPM simply has no more purpose for this board.
The whole point of MCPM is actually to handle the CCI properly and the
most efficient way despite all the possible races and opportunities for
memory corruptions. And yes, this is a complex task.
So there is actually two choices: the firmware let Linux take care of it
via the MCPM layer (easy), or the firmware has to implement it all
_properly_ (hard) behind an interface such as PSCI, at which point MCPM
should be configured out.
If the firmware does not let Linux interact with the CCI _and_ does not
implement full MCPM-like services then the platform is broken and only a
firmware upgrade could fix that. It might still be possible to boot all
CPUs through other means, but power management would then be severely
limited.
How about restricting the mcpm initialization to only known working
boards like chromebooks and smdk. This would be better than disabling
the config altogether from exynos_defconfig. The non-working boards
would then default to platsmp. Assuming that the firmware handles all
CCI/cache activities then platsmp may work for secondary core boot-up
?
Can you please apply the below diff and test the non-working boards
with CONFIG_EXYNOS5420_MCPM enabled.
I'd much prefer if the CCI is non accessible on some board that the
device tree file for that board be modified instead by marking the CCI
as unavailable.
quoted hunk ↗ jump to hunk
diff --git a/arch/arm/mach-exynos/mcpm-exynos.c
b/arch/arm/mach-exynos/mcpm-exynos.c
index b0d3c2e..34d77bb 100644
--- a/arch/arm/mach-exynos/mcpm-exynos.c
+++ b/arch/arm/mach-exynos/mcpm-exynos.c
@@ -316,8 +316,9 @@ static void __init exynos_cache_off(void)
}
static const struct of_device_id exynos_dt_mcpm_match[] = {
- { .compatible = "samsung,exynos5420" },
- { .compatible = "samsung,exynos5800" },
+ { .compatible = "samsung,smdk5420" },
+ { .compatible = "google,pi" },
+ { .compatible = "google,pit" },
{},
};
On a different note, I did not see any mainline support for Odroid
Xu3, are you testing this board with a non-mainline kernel ?
Regards,
Abhilash
quoted
Nicolas