From dc7017742bb5943d3302f075bb99b27bb26ba541 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Tue, 4 Apr 2017 22:00:47 +1000 Subject: [PATCH] xive: Fix setting of remote NVT VSD 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 Signed-off-by: Stewart Smith --- hw/xive.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/xive.c b/hw/xive.c index bb5f0b0ccb2f..0837bed853a6 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: