Quoting Bharata B Rao (2015-11-03 04:08:19) > KVM_PPC_ALLOCATE_HTAB ioctl can return -ENOMEM for KVM guests and QEMU > never handled this correctly. But this didn't cause any problems till > now as KVM_PPC_ALLOCATE_HTAB ioctl returned with smaller than requested > HTAB when enough contiguous memory wasn't available in the host. > After the proposed kernel change: https://patchwork.ozlabs.org/patch/530501/, > KVM_PPC_ALLOCATE_HTAB ioctl will not fallback to lower sized HTAB > allocation and will fail if requested HTAB size can't be met. > > Check for such failures in QEMU and abort appropriately. This will > prevent guest kernel from hanging/freezing during early boot by doing > graceful exit when host is unable to allocate requested HTAB. > > Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com>
Reviewed-by: Michael Roth <mdr...@linux.vnet.ibm.com> > --- > hw/ppc/spapr.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index e1202ce..ec6e141 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1022,7 +1022,7 @@ static void spapr_alloc_htab(sPAPRMachineState *spapr) > > shift = kvmppc_reset_htab(spapr->htab_shift); > > - if (shift > 0) { > + if (shift != 0) { > /* Kernel handles htab, we don't need to allocate one */ > if (shift != spapr->htab_shift) { > error_setg(&error_abort, "Failed to allocate HTAB of requested > size, try with smaller maxmem"); > @@ -1055,7 +1055,7 @@ static void spapr_reset_htab(sPAPRMachineState *spapr) > int index; > > shift = kvmppc_reset_htab(spapr->htab_shift); > - if (shift > 0) { > + if (shift != 0) { > if (shift != spapr->htab_shift) { > error_setg(&error_abort, "Requested HTAB allocation failed > during reset"); > } > -- > 2.1.0 >