
On 05/23/2016 04:49 AM, Zhiqiang Hou wrote:
From: Hou Zhiqiang Zhiqiang.Hou@nxp.com
If the PSCI and PPA is ready, skip the fixup for spin-table and waking secondary cores. If not, change SMP method to spin-table, and the device node of PSCI will be removed.
I don't see how you change the boot method to spin-table. It has been spin-table all the way. Actually you change the boot method to psci when the image is valid.
Signed-off-by: Hou Zhiqiang Zhiqiang.Hou@nxp.com
V4:
- Reordered this patch.
<snip>
int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc) { @@ -36,7 +39,35 @@ void ft_fixup_cpu(void *blob) int addr_cells; u64 val, core_id; size_t *boot_code_size = &(__secondary_boot_code_size); +#if defined(CONFIG_FSL_LS_PPA) && defined(CONFIG_ARMV8_PSCI)
- int node;
+#endif
+#if defined(CONFIG_FSL_LS_PPA) && defined(CONFIG_ARMV8_PSCI)
- if (sec_firmware_validate()) {
This function name is confusing. It returns non-zero when the image is not valid. Please consider to change the name.
Does the existence of such image guarantee it has been loaded successfully? Would it be possible to detect the psci feature is up and running?
/* remove psci DT node */
node = fdt_path_offset(blob, "/psci");
if (node >= 0)
goto remove_psci_node;
node = fdt_node_offset_by_compatible(blob, -1, "arm,psci");
if (node >= 0)
goto remove_psci_node;
node = fdt_node_offset_by_compatible(blob, -1, "arm,psci-0.2");
if (node >= 0)
goto remove_psci_node;
node = fdt_node_offset_by_compatible(blob, -1, "arm,psci-1.0");
if (node >= 0)
goto remove_psci_node;
+remove_psci_node:
if (node >= 0)
fdt_del_node(blob, node);
- } else
return;
+#endif off = fdt_path_offset(blob, "/cpus"); if (off < 0) { puts("couldn't find /cpus node\n");
I see you are removing the psci nodes. Do you need to update the cpus nodes with enable-method here? You have it done in next patch cpu_update_dt_psci().
York