[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