From 3a385cf02391d11372117cebe6de863d80f4aac2 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Wed, 28 Sep 2011 20:51:46 +0000 Subject: [PATCH] --- yaml --- r: 274209 b: refs/heads/master c: 7680057cc4c7d9caada12767831bfd9738dd7b43 h: refs/heads/master i: 274207: e649712a00e894910f378cbb391b8874dc07c66b v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/prom_init.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 243970b12bcd..e391ed48d1e1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d15f02eb4e8992cfacfca2ff306e5585bcf721d1 +refs/heads/master: 7680057cc4c7d9caada12767831bfd9738dd7b43 diff --git a/trunk/arch/powerpc/kernel/prom_init.c b/trunk/arch/powerpc/kernel/prom_init.c index e96f5d0d2c78..b4fa66127495 100644 --- a/trunk/arch/powerpc/kernel/prom_init.c +++ b/trunk/arch/powerpc/kernel/prom_init.c @@ -1313,6 +1313,16 @@ static void prom_query_opal(void) { long rc; + /* We must not query for OPAL presence on a machine that + * supports TNK takeover (970 blades), as this uses the same + * h-call with different arguments and will crash + */ + if (PHANDLE_VALID(call_prom("finddevice", 1, 1, + ADDR("/tnk-memory-map")))) { + prom_printf("TNK takeover detected, skipping OPAL check\n"); + return; + } + prom_printf("Querying for OPAL presence... "); rc = opal_query_takeover(&RELOC(prom_opal_size), &RELOC(prom_opal_align));