[PATCH 18/38] MIPS: SGI-IP27: xbow_probe(): recognize KLTYPE_PBRICK_XBOW

From: Imre Kaloz

Date: Thu Oct 01 2026 - 12:54:32 EST


An IP35-family chassis records its crossbar board as KLTYPE_PBRICK_XBOW
rather than the KLTYPE_MIDPLANE8 an Origin 200/2000 midplane carries, so
xbow_probe() found no board record and never set up the crossbar. Fall
back to the brick type when the midplane lookup misses, and warn when
neither matches.

Signed-off-by: Imre Kaloz <kaloz@xxxxxxxxxx>
---
arch/mips/sgi-ip27/ip27-xtalk.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/arch/mips/sgi-ip27/ip27-xtalk.c b/arch/mips/sgi-ip27/ip27-xtalk.c
index 10834880c261..baa937b474a8 100644
--- a/arch/mips/sgi-ip27/ip27-xtalk.c
+++ b/arch/mips/sgi-ip27/ip27-xtalk.c
@@ -159,8 +159,19 @@ static int xbow_probe(nasid_t nasid)
* need to probe xbow
*/
brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid), KLTYPE_MIDPLANE8);
- if (!brd)
- return -ENODEV;
+ if (!brd) {
+ /*
+ * An IP35-family chassis records its crossbar as
+ * KLTYPE_PBRICK_XBOW instead.
+ */
+ brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid),
+ KLTYPE_PBRICK_XBOW);
+ if (!brd) {
+ pr_warn("xtalk:n%d no midplane/xbow board found\n",
+ nasid);
+ return -ENODEV;
+ }
+ }

xbow_p = (klxbow_t *)find_component(brd, NULL, KLSTRUCT_XBOW);
if (!xbow_p)
--
2.47.3