xive: Fix occasional VC checkstops in xive_reset
xive: Fix occasional VC checkstops in xive_reset

The current workaround for the scrub bug described in
__xive_cache_scrub() has an issue in that it can leave
dirty invalid entries in the cache.

When cleaning up EQs or VPs during reset, if we then
remove the underlying indirect page for these entries,
the XIVE will checkstop when trying to flush them out
of the cache.

This replaces the existing workaround with a new pair of
workarounds for VPs and EQs:

 - The VP one does the dummy watch on another entry than
the one we scrubbed (which does the job of pushing old
stores out) using an entry that is known to be backed by
a permanent indirect page.

 - The EQ one switches to a more efficient workaround
which consists of doing a non-side-effect ESB load from
the EQ's ESe control bits.

Signed-off-by: Benjamin Herrenschmidt <a7089bb6e7e92505d88aaff006cbdd60cc9120b6@kernel.crashing.org>
Signed-off-by: Stewart Smith <ec31ab75ddf977353c8f660f92ea8b23f64aef25@linux.vnet.ibm.com>

legoater/skiboot,open-power/skiboot,qemu/skiboot,open-power/skiboot,stewart-ibm/skiboot,stewart-ibm/skiboot,legoater/skiboot,open-power/skiboot,legoater/skiboot,open-power/skiboot,shenki/skiboot,shenki/skiboot,open-power/skiboot,legoater/skiboot,qemu/skiboot,qemu/skiboot,qemu/skiboot,shenki/skiboot,shenki/skiboot,shenki/skiboot,stewart-ibm/skiboot,qemu/skiboot,legoater/skiboot