[Skiboot] [PATCH 44/60] xive: Workaround for bad DD1 checker

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Dec 22 14:16:52 AEDT 2016

The VSD size for the EQDT/VPDT in the VC is badly checked by HW,
we need to set it to all 1's (it never accesses the memory directly
so the incorrect size doesn't matter)

Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
 hw/xive.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/xive.c b/hw/xive.c
index c2fe95f..bd477ca 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -1318,7 +1318,11 @@ static bool xive_set_vsd(struct xive *x, uint32_t tbl, uint32_t idx, uint64_t v)
 		  SETFIELD(VST_TABLE_OFFSET, 0ull, idx));
 	if (x->last_reg_error)
 		return false;
-	xive_regw(x, VC_VSD_TABLE_DATA, v);
+	/* Hack to workaround DD1 issue with NVT in VC in DD1 */
+	if (tbl == VST_TSEL_VPDT)
+		xive_regw(x, VC_VSD_TABLE_DATA, v | VSD_TSIZE);
+	else
+		xive_regw(x, VC_VSD_TABLE_DATA, v);
 	if (x->last_reg_error)
 		return false;

More information about the Skiboot mailing list