svn commit: r302597 - projects/powernv/powerpc/pseries
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon Jul 11 22:53:24 UTC 2016
Author: nwhitehorn
Date: Mon Jul 11 22:53:22 2016
New Revision: 302597
URL: https://svnweb.freebsd.org/changeset/base/302597
Log:
Fix OPAL XICS CPU assignment: CPU IDs need to be shifted left 2 bits.
Modified:
projects/powernv/powerpc/pseries/xics.c
Modified: projects/powernv/powerpc/pseries/xics.c
==============================================================================
--- projects/powernv/powerpc/pseries/xics.c Mon Jul 11 21:55:56 2016 (r302596)
+++ projects/powernv/powerpc/pseries/xics.c Mon Jul 11 22:53:22 2016 (r302597)
@@ -281,7 +281,7 @@ xicp_bind(device_t dev, u_int irq, cpuse
error = rtas_call_method(sc->ibm_set_xive, 3, 1, irq, cpu,
XICP_PRIORITY, &status);
else
- error = opal_call(OPAL_SET_XIVE, irq, cpu, XICP_PRIORITY);
+ error = opal_call(OPAL_SET_XIVE, irq, cpu << 2, XICP_PRIORITY);
if (error < 0)
panic("Cannot bind interrupt %d to CPU %d", irq, cpu);
@@ -371,8 +371,12 @@ xicp_enable(device_t dev, u_int irq, u_i
XICP_PRIORITY, &status);
xicp_unmask(dev, irq);
} else {
- opal_call(OPAL_SET_XIVE, irq, cpu, XICP_PRIORITY);
+ status = opal_call(OPAL_SET_XIVE, irq, cpu << 2, XICP_PRIORITY);
/* Unmask implicit for OPAL */
+
+ if (status != 0)
+ panic("OPAL_SET_XIVE IRQ %d -> cpu %d failed: %d", irq,
+ cpu, status);
}
}
@@ -420,7 +424,7 @@ xicp_mask(device_t dev, u_int irq)
}
}
KASSERT(i < sc->nintvecs, ("Masking unconfigured interrupt"));
- opal_call(OPAL_SET_XIVE, irq, sc->intvecs[i].cpu, 0xff);
+ opal_call(OPAL_SET_XIVE, irq, sc->intvecs[i].cpu << 2, 0xff);
}
}
@@ -443,7 +447,7 @@ xicp_unmask(device_t dev, u_int irq)
}
}
KASSERT(i < sc->nintvecs, ("Unmasking unconfigured interrupt"));
- opal_call(OPAL_SET_XIVE, irq, sc->intvecs[i].cpu,
+ opal_call(OPAL_SET_XIVE, irq, sc->intvecs[i].cpu << 2,
XICP_PRIORITY);
}
}
More information about the svn-src-projects
mailing list