[Skiboot] [PATCH] xive: Fix setting of remote NVT VSD
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue Apr 4 22:00:47 AEST 2017
Unlike the other remote VSDs, the NVT one needs a valid size field
that represents the size of the remote PC BAR. Without this, multi
chip machines may checkstop when a processor pool or OS CAM gets
attached to a VP on a different chip.
Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
---
This fixes a checkstop when using my last batch of exploitation
mode patches on some multi-chip machines. Please apply ASAP.
hw/xive.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/xive.c b/hw/xive.c
index 8b83f96..d76f4cf 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -1854,8 +1854,10 @@ static void xive_setup_forward_ports(struct xive *x, struct proc_chip *remote_ch
/* NVT/VPD points to the remote NVT MMIO sets */
if (!xive_set_vsd(x, VST_TSEL_VPDT, remote_id,
- base | (uint64_t)remote_xive->pc_base))
+ base | ((uint64_t)remote_xive->pc_base) |
+ SETFIELD(VSD_TSIZE, 0ull, ilog2(PC_BAR_SIZE) - 12)))
goto error;
+
return;
error:
More information about the Skiboot
mailing list