On Fri, Mar 01, 2019 at 04:33:38PM -0600, Michael Roth wrote: > Quoting Greg Kurz (2019-03-01 13:32:37) > > The RTAS event hotplug code for machine types 2.8 and newer depends on > > the CAS negotiated ov5 in order to work properly. However, there's no > > CAS when running under qtest. There has been a tentative to trick the > > code by faking the OV5_HP_EVT bit, but it turned out to break other > > assumptions in the code and the change got reverted. > > > > Go for a more general approach and simulate a CAS when running under > > qtest. For simplicity, this pseudo CAS simple simulates the case where > > the guest supports the same features as the machine. It is done at > > reset time, just before we reset the DRCs, which could potentially > > exercise the unplug code. > > > > This allows to test unplug on spapr with both older and newer machine > > types. > > > > Suggested-by: Michael Roth <mdr...@linux.vnet.ibm.com> > > Signed-off-by: Greg Kurz <gr...@kaod.org> > > Tested-by: Michael Roth <mdr...@linux.vnet.ibm.com> > Reviewed-by: Michael Roth <mdr...@linux.vnet.ibm.com> > > Thanks for sending this! > > Just now realizing we should probably apply the revert after this patch > however, since the commit we're reverting fixes a `make check` test that > is run by default, whereas this patch fixes one that only gets run if we > run the tests with -m=slow specified. > > Maybe David can do that on his end?
Applied in reverse order as suggested to ppc-for-4.0. Thanks. > > > --- > > hw/ppc/spapr.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > index b6a571b6f184..6da64ef7ee2b 100644 > > --- a/hw/ppc/spapr.c > > +++ b/hw/ppc/spapr.c > > @@ -29,6 +29,7 @@ > > #include "qapi/visitor.h" > > #include "sysemu/sysemu.h" > > #include "sysemu/numa.h" > > +#include "sysemu/qtest.h" > > #include "hw/hw.h" > > #include "qemu/log.h" > > #include "hw/fw-path-provider.h" > > @@ -1711,6 +1712,16 @@ static void spapr_machine_reset(void) > > */ > > spapr_irq_reset(spapr, &error_fatal); > > > > + /* > > + * There is no CAS under qtest. Simulate one to please the code that > > + * depends on spapr->ov5_cas. This is especially needed to test device > > + * unplug, so we do that before resetting the DRCs. > > + */ > > + if (qtest_enabled()) { > > + spapr_ovec_cleanup(spapr->ov5_cas); > > + spapr->ov5_cas = spapr_ovec_clone(spapr->ov5); > > + } > > + > > /* DRC reset may cause a device to be unplugged. This will cause > > troubles > > * if this device is used by another device (eg, a running vhost > > backend > > * will crash QEMU if the DIMM holding the vring goes away). To avoid > > such > > > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature