diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2016-11-14 13:06:17 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-11-15 15:06:03 +1100 |
commit | 13f77a39529c2f0350d77d48fa0fec879ec7b478 (patch) | |
tree | 86aadef84d96c5ddff65d6a728347792d322c284 /hw | |
parent | 628700316d10ed76ebe3e4be02eb55a765d675b8 (diff) | |
download | skiboot-13f77a39529c2f0350d77d48fa0fec879ec7b478.zip skiboot-13f77a39529c2f0350d77d48fa0fec879ec7b478.tar.gz skiboot-13f77a39529c2f0350d77d48fa0fec879ec7b478.tar.bz2 |
xive: Indirect table entries must have top bits "type" set
The HW check that the 2 tops bits aren't both clear to differenciate
an unallocated entry from a valid one. So we need to put some value
there.
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 | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -1126,7 +1126,9 @@ static bool xive_prealloc_tables(struct xive *x) } memset(page, 0, 0x10000); x->vp_ind_base[i] = ((uint64_t)page) & VSD_ADDRESS_MASK; + x->vp_ind_base[i] |= SETFIELD(VSD_TSIZE, 0ull, 4); + x->vp_ind_base[i] |= SETFIELD(VSD_MODE, 0ull, VSD_MODE_EXCLUSIVE); page = local_alloc(x->chip_id, 0x10000, 0x10000); if (!page) { @@ -1136,6 +1138,7 @@ static bool xive_prealloc_tables(struct xive *x) memset(page, 0, 0x10000); x->eq_ind_base[i] = ((uint64_t)page) & VSD_ADDRESS_MASK; x->eq_ind_base[i] |= SETFIELD(VSD_TSIZE, 0ull, 4); + x->eq_ind_base[i] |= SETFIELD(VSD_MODE, 0ull, VSD_MODE_EXCLUSIVE); #ifdef INDIRECT_IS_LE x->vp_ind_base[i] = cpu_to_le64(x->vp_ind_base[i]); |