armv8: layerscape: Discard the needless cpu nodes
Using "cpu_pos_mask()" function to detect the real online cpus, and discard the needless cpu nodes on kernel dts. Signed-off-by: Wenbin Song <wenbin.song@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
		
							parent
							
								
									a8f33034f2
								
							
						
					
					
						commit
						20c7305101
					
				|  | @ -42,6 +42,33 @@ void ft_fixup_cpu(void *blob) | ||||||
| 	int addr_cells; | 	int addr_cells; | ||||||
| 	u64 val, core_id; | 	u64 val, core_id; | ||||||
| 	size_t *boot_code_size = &(__secondary_boot_code_size); | 	size_t *boot_code_size = &(__secondary_boot_code_size); | ||||||
|  | 	u32 mask = cpu_pos_mask(); | ||||||
|  | 	int off_prev = -1; | ||||||
|  | 
 | ||||||
|  | 	off = fdt_path_offset(blob, "/cpus"); | ||||||
|  | 	if (off < 0) { | ||||||
|  | 		puts("couldn't find /cpus node\n"); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	fdt_support_default_count_cells(blob, off, &addr_cells, NULL); | ||||||
|  | 
 | ||||||
|  | 	off = fdt_node_offset_by_prop_value(blob, off_prev, "device_type", | ||||||
|  | 					    "cpu", 4); | ||||||
|  | 	while (off != -FDT_ERR_NOTFOUND) { | ||||||
|  | 		reg = (fdt32_t *)fdt_getprop(blob, off, "reg", 0); | ||||||
|  | 		if (reg) { | ||||||
|  | 			core_id = fdt_read_number(reg, addr_cells); | ||||||
|  | 			if (!test_bit(id_to_core(core_id), &mask)) { | ||||||
|  | 				fdt_del_node(blob, off); | ||||||
|  | 				off = off_prev; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		off_prev = off; | ||||||
|  | 		off = fdt_node_offset_by_prop_value(blob, off_prev, | ||||||
|  | 						    "device_type", "cpu", 4); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| #if defined(CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT) && \ | #if defined(CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT) && \ | ||||||
| 	defined(CONFIG_SEC_FIRMWARE_ARMV8_PSCI) | 	defined(CONFIG_SEC_FIRMWARE_ARMV8_PSCI) | ||||||
| 	int node; | 	int node; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue