[Skiboot] [PATCH] xive/p9: Remove assert from xive_eq_for_target()

Cédric Le Goater clg at kaod.org
Fri Nov 27 18:32:12 AEDT 2020

XIVE VPs are structures describing the vCPUs of guests. When starting
a guest, these are allocated and enabled and some checks are done on
the location of the associated ENDs, which describe the event
queues. If the block of the VP and the block of the ENDs do not match,
the XIVE driver asserts.

Unfortunately, there is no way to check that a VP identifier is part
of a VP block that was previously allocated and it is relatively easy
to crash the host with a bogus VP id. That can be done with a QEMU
hack on a machine using vsmt.

Simply remove the assert, the OS should gracefully handle the error.

Signed-off-by: Cédric Le Goater <clg at kaod.org>
 hw/xive.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/xive.c b/hw/xive.c
index 7d4e029f19cb..c442ea5e30ed 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -2152,7 +2152,7 @@ static inline bool xive_eq_for_target(uint32_t target, uint8_t prio,
 	if (eq_blk != vp_blk) {
 		xive_err(x, "eq_blk != vp_blk (%d vs. %d) for target 0x%08x/%d\n",
 			 eq_blk, vp_blk, target, prio);
-		assert(false);
+		return false;
 	if (out_eq_blk)

More information about the Skiboot mailing list