* [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
@ 2019-03-01 14:17 Greg Kurz
2019-03-01 15:24 ` Thomas Huth
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Greg Kurz @ 2019-03-01 14:17 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-ppc, David Gibson, Peter Maydell, Thomas Huth,
David Hildenbrand, Greg Kurz
Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
CPU hotplug tests for old machine types:
$ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
/ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
/ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
Broken pipe
/home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
Aborted (core dumped)
The rtas_event_log_to_source() function is supposed to return the event
source to be used for a given event type. In the case of hotplug, it first
tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
back to EVENT_CLASS_EPOW.
This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
older machine types, this happened to work because they don't set the
OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
in spapr->ov5_cas and we avoid the assert.
As shown by commit b8165118f52c, the logic is fragile and we need a
bigger hammer to ensure that rtas_event_log_to_source() doesn't go
down the EVENT_CLASS_HOT_PLUG path with older machine types.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/ppc/spapr_events.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index ab9a1f0063d5..1a09dab6857d 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -307,11 +307,13 @@ rtas_event_log_to_source(sPAPRMachineState *spapr, int log_type)
switch (log_type) {
case RTAS_LOG_TYPE_HOTPLUG:
- source = spapr_event_sources_get_source(spapr->event_sources,
- EVENT_CLASS_HOT_PLUG);
- if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
- g_assert(source->enabled);
- break;
+ if (spapr->use_hotplug_event_source) {
+ source = spapr_event_sources_get_source(spapr->event_sources,
+ EVENT_CLASS_HOT_PLUG);
+ if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
+ g_assert(source->enabled);
+ break;
+ }
}
/* fall back to epow for legacy hotplug interrupt source */
case RTAS_LOG_TYPE_EPOW:
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
2019-03-01 14:17 [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG Greg Kurz
@ 2019-03-01 15:24 ` Thomas Huth
2019-03-01 16:16 ` Greg Kurz
2019-03-01 16:06 ` David Hildenbrand
2019-03-01 16:20 ` Michael Roth
2 siblings, 1 reply; 6+ messages in thread
From: Thomas Huth @ 2019-03-01 15:24 UTC (permalink / raw)
To: Greg Kurz, qemu-devel
Cc: qemu-ppc, David Gibson, Peter Maydell, David Hildenbrand, Michael Roth
On 01/03/2019 15.17, Greg Kurz wrote:
> Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
> CPU hotplug tests for old machine types:
>
> $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
> /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
> ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
> Broken pipe
> /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
> Aborted (core dumped)
>
> The rtas_event_log_to_source() function is supposed to return the event
> source to be used for a given event type. In the case of hotplug, it first
> tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
> back to EVENT_CLASS_EPOW.
>
> This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
> older machine types, this happened to work because they don't set the
> OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
> in spapr->ov5_cas and we avoid the assert.
>
> As shown by commit b8165118f52c, the logic is fragile and we need a
> bigger hammer to ensure that rtas_event_log_to_source() doesn't go
> down the EVENT_CLASS_HOT_PLUG path with older machine types.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/ppc/spapr_events.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
Thanks, that fixes the problem for me!
Tested-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
2019-03-01 14:17 [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG Greg Kurz
2019-03-01 15:24 ` Thomas Huth
@ 2019-03-01 16:06 ` David Hildenbrand
2019-03-01 16:20 ` Michael Roth
2 siblings, 0 replies; 6+ messages in thread
From: David Hildenbrand @ 2019-03-01 16:06 UTC (permalink / raw)
To: Greg Kurz, qemu-devel; +Cc: qemu-ppc, David Gibson, Peter Maydell, Thomas Huth
On 01.03.19 15:17, Greg Kurz wrote:
> Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
> CPU hotplug tests for old machine types:
>
> $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
> /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
> ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
> Broken pipe
> /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
> Aborted (core dumped)
>
> The rtas_event_log_to_source() function is supposed to return the event
> source to be used for a given event type. In the case of hotplug, it first
> tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
> back to EVENT_CLASS_EPOW.
>
> This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
> older machine types, this happened to work because they don't set the
> OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
> in spapr->ov5_cas and we avoid the assert.
>
> As shown by commit b8165118f52c, the logic is fragile and we need a
> bigger hammer to ensure that rtas_event_log_to_source() doesn't go
> down the EVENT_CLASS_HOT_PLUG path with older machine types.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/ppc/spapr_events.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index ab9a1f0063d5..1a09dab6857d 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -307,11 +307,13 @@ rtas_event_log_to_source(sPAPRMachineState *spapr, int log_type)
>
> switch (log_type) {
> case RTAS_LOG_TYPE_HOTPLUG:
> - source = spapr_event_sources_get_source(spapr->event_sources,
> - EVENT_CLASS_HOT_PLUG);
> - if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> - g_assert(source->enabled);
> - break;
> + if (spapr->use_hotplug_event_source) {
> + source = spapr_event_sources_get_source(spapr->event_sources,
> + EVENT_CLASS_HOT_PLUG);
> + if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> + g_assert(source->enabled);
> + break;
> + }
> }
> /* fall back to epow for legacy hotplug interrupt source */
> case RTAS_LOG_TYPE_EPOW:
>
Thanks a lot for taking care of this, highly appreciated!
--
Thanks,
David / dhildenb
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
2019-03-01 15:24 ` Thomas Huth
@ 2019-03-01 16:16 ` Greg Kurz
0 siblings, 0 replies; 6+ messages in thread
From: Greg Kurz @ 2019-03-01 16:16 UTC (permalink / raw)
To: Thomas Huth
Cc: qemu-devel, qemu-ppc, David Gibson, Peter Maydell,
David Hildenbrand, Michael Roth
On Fri, 1 Mar 2019 16:24:48 +0100
Thomas Huth <thuth@redhat.com> wrote:
> On 01/03/2019 15.17, Greg Kurz wrote:
> > Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
> > CPU hotplug tests for old machine types:
> >
> > $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
> > /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
> > ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
> > Broken pipe
> > /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
> > Aborted (core dumped)
> >
> > The rtas_event_log_to_source() function is supposed to return the event
> > source to be used for a given event type. In the case of hotplug, it first
> > tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
> > back to EVENT_CLASS_EPOW.
> >
> > This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
> > older machine types, this happened to work because they don't set the
> > OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
> > in spapr->ov5_cas and we avoid the assert.
> >
> > As shown by commit b8165118f52c, the logic is fragile and we need a
> > bigger hammer to ensure that rtas_event_log_to_source() doesn't go
> > down the EVENT_CLASS_HOT_PLUG path with older machine types.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/ppc/spapr_events.c | 12 +++++++-----
> > 1 file changed, 7 insertions(+), 5 deletions(-)
>
> Thanks, that fixes the problem for me!
>
> Tested-by: Thomas Huth <thuth@redhat.com>
I realize I should have put this also:
Reported-by: Thomas Huth <thuth@redhat.com>
Cheers,
--
Greg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
2019-03-01 14:17 [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG Greg Kurz
2019-03-01 15:24 ` Thomas Huth
2019-03-01 16:06 ` David Hildenbrand
@ 2019-03-01 16:20 ` Michael Roth
2019-03-01 17:27 ` Greg Kurz
2 siblings, 1 reply; 6+ messages in thread
From: Michael Roth @ 2019-03-01 16:20 UTC (permalink / raw)
To: Greg Kurz, qemu-devel
Cc: Peter Maydell, Thomas Huth, David Hildenbrand, qemu-ppc, David Gibson
Quoting Greg Kurz (2019-03-01 08:17:53)
> Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
> CPU hotplug tests for old machine types:
>
> $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
> /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
> /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
> ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
> Broken pipe
> /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
> Aborted (core dumped)
>
> The rtas_event_log_to_source() function is supposed to return the event
> source to be used for a given event type. In the case of hotplug, it first
> tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
> back to EVENT_CLASS_EPOW.
>
> This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
> older machine types, this happened to work because they don't set the
> OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
> in spapr->ov5_cas and we avoid the assert.
>
> As shown by commit b8165118f52c, the logic is fragile and we need a
> bigger hammer to ensure that rtas_event_log_to_source() doesn't go
> down the EVENT_CLASS_HOT_PLUG path with older machine types.
I think that fact that we set spapr->ov5 based on relevant machine
options/support being there, and the fact that this means they won't
show up in ov5_cas, is a nice thing to assert and rely on, since being
able to rely on that keeps keeps the logic throughout the code tied to
ov5/ov5_cas and avoids the need to keep re-checking things like
spapr->use_hotplug_event_source (and various other options tied to an
OV5 capability) after init time.
I think this particular case is purely the result of us violating (via
b8165118f52c) the condition that bits that aren't ever set in spapr->ov5
should never end up in spapr->ov5_cas, and losing that precondition might
make the code harder to reason about since now we have to check both
ov5_cas and the related options (rather than 1 necessarilly following
from the other).
Another approach might be to revert b8165118f52c, and then add a hook for
qtest_enabled() that does a fake CAS negotiation (which I guess would
essentially involve copying spapr->ov5 into spapr->ov5_cas). This would
maintain the flow of machine options -> spapr->ov5 -> spapr->ov5_cas and
still let qtest do it's thing (AFAICT).
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/ppc/spapr_events.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index ab9a1f0063d5..1a09dab6857d 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -307,11 +307,13 @@ rtas_event_log_to_source(sPAPRMachineState *spapr, int log_type)
>
> switch (log_type) {
> case RTAS_LOG_TYPE_HOTPLUG:
> - source = spapr_event_sources_get_source(spapr->event_sources,
> - EVENT_CLASS_HOT_PLUG);
> - if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> - g_assert(source->enabled);
> - break;
> + if (spapr->use_hotplug_event_source) {
> + source = spapr_event_sources_get_source(spapr->event_sources,
> + EVENT_CLASS_HOT_PLUG);
> + if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> + g_assert(source->enabled);
> + break;
> + }
> }
> /* fall back to epow for legacy hotplug interrupt source */
> case RTAS_LOG_TYPE_EPOW:
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG
2019-03-01 16:20 ` Michael Roth
@ 2019-03-01 17:27 ` Greg Kurz
0 siblings, 0 replies; 6+ messages in thread
From: Greg Kurz @ 2019-03-01 17:27 UTC (permalink / raw)
To: Michael Roth
Cc: qemu-devel, Peter Maydell, Thomas Huth, David Hildenbrand,
qemu-ppc, David Gibson
On Fri, 01 Mar 2019 10:20:16 -0600
Michael Roth <mdroth@linux.vnet.ibm.com> wrote:
> Quoting Greg Kurz (2019-03-01 08:17:53)
> > Recent commit b8165118f52c "spapr: support memory unplug for qtest" broke
> > CPU hotplug tests for old machine types:
> >
> > $ QTEST_QEMU_BINARY=ppc64-softmmu/qemu-system-ppc64 ./tests/cpu-plug-test -m=slow
> > /ppc64/cpu-plug/pseries-3.1/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.12-sxxm/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-3.0/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.10/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.11/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.12/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.9/device-add/2x3x1&maxcpus=6: OK
> > /ppc64/cpu-plug/pseries-2.7/device-add/2x3x1&maxcpus=6: **
> > ERROR:/home/thuth/devel/qemu/hw/ppc/spapr_events.c:313:rtas_event_log_to_source: assertion failed: (source->enabled)
> > Broken pipe
> > /home/thuth/devel/qemu/tests/libqtest.c:143: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
> > Aborted (core dumped)
> >
> > The rtas_event_log_to_source() function is supposed to return the event
> > source to be used for a given event type. In the case of hotplug, it first
> > tries EVENT_CLASS_HOT_PLUG and, if the guest doesn't support it, it falls
> > back to EVENT_CLASS_EPOW.
> >
> > This works well for machine types that enable EVENT_CLASS_HOT_PLUG. For
> > older machine types, this happened to work because they don't set the
> > OV5_HP_EVT bit in spapr->ov5. CAS hence logically keeps the bit cleared
> > in spapr->ov5_cas and we avoid the assert.
> >
> > As shown by commit b8165118f52c, the logic is fragile and we need a
> > bigger hammer to ensure that rtas_event_log_to_source() doesn't go
> > down the EVENT_CLASS_HOT_PLUG path with older machine types.
>
> I think that fact that we set spapr->ov5 based on relevant machine
> options/support being there, and the fact that this means they won't
> show up in ov5_cas, is a nice thing to assert and rely on, since being
> able to rely on that keeps keeps the logic throughout the code tied to
> ov5/ov5_cas and avoids the need to keep re-checking things like
> spapr->use_hotplug_event_source (and various other options tied to an
> OV5 capability) after init time.
>
True.
> I think this particular case is purely the result of us violating (via
> b8165118f52c) the condition that bits that aren't ever set in spapr->ov5
> should never end up in spapr->ov5_cas, and losing that precondition might
> make the code harder to reason about since now we have to check both
> ov5_cas and the related options (rather than 1 necessarilly following
> from the other).
>
> Another approach might be to revert b8165118f52c, and then add a hook for
> qtest_enabled() that does a fake CAS negotiation (which I guess would
> essentially involve copying spapr->ov5 into spapr->ov5_cas). This would
> maintain the flow of machine options -> spapr->ov5 -> spapr->ov5_cas and
> still let qtest do it's thing (AFAICT).
>
Yeah, that looks nice. I'll try that right away.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/ppc/spapr_events.c | 12 +++++++-----
> > 1 file changed, 7 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> > index ab9a1f0063d5..1a09dab6857d 100644
> > --- a/hw/ppc/spapr_events.c
> > +++ b/hw/ppc/spapr_events.c
> > @@ -307,11 +307,13 @@ rtas_event_log_to_source(sPAPRMachineState *spapr, int log_type)
> >
> > switch (log_type) {
> > case RTAS_LOG_TYPE_HOTPLUG:
> > - source = spapr_event_sources_get_source(spapr->event_sources,
> > - EVENT_CLASS_HOT_PLUG);
> > - if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> > - g_assert(source->enabled);
> > - break;
> > + if (spapr->use_hotplug_event_source) {
> > + source = spapr_event_sources_get_source(spapr->event_sources,
> > + EVENT_CLASS_HOT_PLUG);
> > + if (spapr_ovec_test(spapr->ov5_cas, OV5_HP_EVT)) {
> > + g_assert(source->enabled);
> > + break;
> > + }
> > }
> > /* fall back to epow for legacy hotplug interrupt source */
> > case RTAS_LOG_TYPE_EPOW:
> >
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-03-01 17:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-01 14:17 [Qemu-devel] [PATCH] spapr: Explicitly check machine support before using EVENT_CLASS_HOT_PLUG Greg Kurz
2019-03-01 15:24 ` Thomas Huth
2019-03-01 16:16 ` Greg Kurz
2019-03-01 16:06 ` David Hildenbrand
2019-03-01 16:20 ` Michael Roth
2019-03-01 17:27 ` Greg Kurz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.