- * other registers depend on the function called upon completion
+ * Other registers depend on the function called upon completion.
+ *
+ * Checks if the selected granule size is supported by the CPU.
+ * If it doesn't park the CPU
Nit: "If it isn't, park the CPU."
*/
+#if defined(CONFIG_ARM64_64K_PAGES)
+
+#define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN64_SHIFT
+#define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN64_ON
+
+#else
+
+#define id_aa64mmfr0_tgran_shift ID_AA64MMFR0_TGRAN4_SHIFT
+#define id_aa64mmfr0_tgran_on ID_AA64MMFR0_TGRAN4_ON
Any reason for not using upper-case names for the macros?
Given they're local you could just call them TGRAN_SHIFT and TRGRAN_ON
to make the asm slightly nicer.
+
+__no_granule_support:
+ wfe
+ b __no_granule_support
+ENDPROC(__no_granule_support)
Other than the above, this loogs fine to me.
In future it would be nice if we could somehow signal that these dead
CPUs are trapped in the kernel -- we should have some kind of canary
mechanism for that. That needn't block this patch, though.