diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2016-12-22 14:16:52 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-01-05 15:41:02 +1100 |
commit | dff2381c498e05b890437047ee38bd145b31e1af (patch) | |
tree | f097bdc39a8160c6ffc2e94eb569993109af6956 /hw | |
parent | 8e4bbabf600b3801f17f2e243fa52af2a38f2b4a (diff) | |
download | skiboot-dff2381c498e05b890437047ee38bd145b31e1af.zip skiboot-dff2381c498e05b890437047ee38bd145b31e1af.tar.gz skiboot-dff2381c498e05b890437047ee38bd145b31e1af.tar.bz2 |
xive: Workaround for bad DD1 checker
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@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/xive.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1321,7 +1321,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; |