diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2024-07-24 16:21:27 -0500 |
---|---|---|
committer | Nicholas Piggin <npiggin@gmail.com> | 2024-07-26 09:51:33 +1000 |
commit | fa414eb6655228e274811ade0c7bcddb88acaee5 (patch) | |
tree | 625145d6360596b04723f526a136f54af48c628a | |
parent | 4c81813e25d24ece49141572ad5f07d8efe7bf4d (diff) | |
download | qemu-fa414eb6655228e274811ade0c7bcddb88acaee5.zip qemu-fa414eb6655228e274811ade0c7bcddb88acaee5.tar.gz qemu-fa414eb6655228e274811ade0c7bcddb88acaee5.tar.bz2 |
pnv/xive2: Fail VST entry address computation if table has no VSD
Fail VST entry address computation if firmware doesn't define a descriptor
for one of the Virtualization Structure Tables (VST), there's no point in
trying to compute the address of its entry. Abort the operation and log
an error.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Michael Kowal <kowal@linux.vnet.ibm.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
-rw-r--r-- | hw/intc/pnv_xive2.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index 08b9166..9fbd44f 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -244,6 +244,11 @@ static uint64_t pnv_xive2_vst_addr(PnvXive2 *xive, uint32_t type, uint8_t blk, } vsd = xive->vsds[type][blk]; + if (vsd == 0) { + xive2_error(xive, "VST: vsd == 0 block id %d for VST %s %d !?", + blk, info->name, idx); + return 0; + } /* Remote VST access */ if (GETFIELD(VSD_MODE, vsd) == VSD_MODE_FORWARD) { |