Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 133dda1e authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Paul Mackerras
Browse files

[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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 33b74977
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -1623,6 +1623,15 @@ static int __init prom_find_machine_type(void)
			if (strstr(p, RELOC("Power Macintosh")) ||
			if (strstr(p, RELOC("Power Macintosh")) ||
			    strstr(p, RELOC("MacRISC")))
			    strstr(p, RELOC("MacRISC")))
				return PLATFORM_POWERMAC;
				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;
			i += sl + 1;
		}
		}
	}
	}
+5 −6
Original line number Original line Diff line number Diff line
@@ -125,14 +125,13 @@ static void __init cell_init_early(void)


static int __init cell_probe(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();
	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 1;

	return 0;
}
}


/*
/*
+8 −0
Original line number Original line Diff line number Diff line
@@ -389,6 +389,7 @@ static int __init pSeries_probe_hypertas(unsigned long node,


static int __init pSeries_probe(void)
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(),
 	char *dtype = of_get_flat_dt_prop(of_get_flat_dt_root(),
 					  "device_type", NULL);
 					  "device_type", NULL);
 	if (dtype == NULL)
 	if (dtype == NULL)
@@ -396,6 +397,13 @@ static int __init pSeries_probe(void)
 	if (strcmp(dtype, "chrp"))
 	if (strcmp(dtype, "chrp"))
		return 0;
		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");
	DBG("pSeries detected, looking for LPAR capability...\n");


	/* Now try to figure out if we are running on LPAR */
	/* Now try to figure out if we are running on LPAR */