[PATCH] powerpc: Fix cell blade detection
The IBM Cell blade firmware might confuse the kernel to think it's a pSeries machine. This fixes it for now. With a bit of luck, the firmware will be updated to avoid that in the future but currently that patch is needed. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
33b7497794
Коммит
133dda1e4f
|
@ -1623,6 +1623,15 @@ static int __init prom_find_machine_type(void)
|
|||
if (strstr(p, RELOC("Power Macintosh")) ||
|
||||
strstr(p, RELOC("MacRISC")))
|
||||
return PLATFORM_POWERMAC;
|
||||
#ifdef CONFIG_PPC64
|
||||
/* We must make sure we don't detect the IBM Cell
|
||||
* blades as pSeries due to some firmware issues,
|
||||
* so we do it here.
|
||||
*/
|
||||
if (strstr(p, RELOC("IBM,CBEA")) ||
|
||||
strstr(p, RELOC("IBM,CPBW-1.0")))
|
||||
return PLATFORM_GENERIC;
|
||||
#endif /* CONFIG_PPC64 */
|
||||
i += sl + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -125,14 +125,13 @@ static void __init cell_init_early(void)
|
|||
|
||||
static int __init cell_probe(void)
|
||||
{
|
||||
/* XXX This is temporary, the Cell maintainer will come up with
|
||||
* more appropriate detection logic
|
||||
*/
|
||||
unsigned long root = of_get_flat_dt_root();
|
||||
if (!of_flat_dt_is_compatible(root, "IBM,CPBW-1.0"))
|
||||
return 0;
|
||||
|
||||
if (of_flat_dt_is_compatible(root, "IBM,CBEA") ||
|
||||
of_flat_dt_is_compatible(root, "IBM,CPBW-1.0"))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -389,6 +389,7 @@ static int __init pSeries_probe_hypertas(unsigned long node,
|
|||
|
||||
static int __init pSeries_probe(void)
|
||||
{
|
||||
unsigned long root = of_get_flat_dt_root();
|
||||
char *dtype = of_get_flat_dt_prop(of_get_flat_dt_root(),
|
||||
"device_type", NULL);
|
||||
if (dtype == NULL)
|
||||
|
@ -396,6 +397,13 @@ static int __init pSeries_probe(void)
|
|||
if (strcmp(dtype, "chrp"))
|
||||
return 0;
|
||||
|
||||
/* Cell blades firmware claims to be chrp while it's not. Until this
|
||||
* is fixed, we need to avoid those here.
|
||||
*/
|
||||
if (of_flat_dt_is_compatible(root, "IBM,CPBW-1.0") ||
|
||||
of_flat_dt_is_compatible(root, "IBM,CBEA"))
|
||||
return 0;
|
||||
|
||||
DBG("pSeries detected, looking for LPAR capability...\n");
|
||||
|
||||
/* Now try to figure out if we are running on LPAR */
|
||||
|
|
Загрузка…
Ссылка в новой задаче