From: Sam Ravnborg <sam@xxxxxxxxxxxx> Date: Thu, 21 Apr 2011 10:29:34 +0200 >>From b0777dd526dbc375fa6e35fc07016af82cf71636 Mon Sep 17 00:00:00 2001 > From: Sam Ravnborg <sam@xxxxxxxxxxxx> > Date: Thu, 21 Apr 2011 10:25:41 +0200 > Subject: [PATCH] sparc32: fix sparcstation 5 boot > > The sparcstation 5 I have available has no MID property for the CPU. > This resulted in a panic when booting a SMP kernel on this box. > > The assigned field in cpu_data is never used, so if we fail > to read the MID property then inform user and continue booting. > > Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Thanks for fixing this. At least the current code traps the condition, the last time this stuff worked it was by accident, device_scan() on sparc32 used to be something like: void __init device_scan(void) { char node_str[128]; int thismid; prom_getstring(prom_root_node, "device_type", node_str, sizeof(node_str)); ... int scan; scan = prom_getchild(prom_root_node); /* One can look it up in PROM instead */ while ((scan = prom_getsibling(scan)) != 0) { prom_getstring(scan, "device_type", node_str, sizeof(node_str)); if (strcmp(node_str, "cpu") == 0) { linux_cpus[linux_num_cpus].prom_node = scan; prom_getproperty(scan, "mid", (char *) &thismid, sizeof(thismid)); linux_cpus[linux_num_cpus].mid = thismid; printk("Found CPU %d <node=%08lx,mid=%d>\n", linux_num_cpus, (unsigned long) scan, thismid); linux_num_cpus++; } } No error checking or anything, which basically writes a random value into linux_cpus[].mid when the property is not present. I guess it would up being zero often enough. :-/ And the 'ss5' device tree dump in the prtconf repo: git://git.kernel.org/pub/scm/linux/kernel/git/davem/prtconfs.git confirms no 'mid' property for the 'cpu' device tree node. Applied and queued for -stable, thanks again! -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html