On 11/8/26 15:34, Peter Maydell wrote:
On Tue, 11 Aug 2026 at 11:55, Philippe Mathieu-Daudé
<[email protected]> wrote:
Use the first handler available to deliver NMI only once.
If anothers handlers are available, no need to keep delivering.
Suggested-by: Peter Maydell <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
hw/core/nmi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/core/nmi.c b/hw/core/nmi.c
index 8eea75ad530..4fe5ee75bfc 100644
--- a/hw/core/nmi.c
+++ b/hw/core/nmi.c
@@ -31,6 +31,8 @@ static int do_nmi(Object *o, void *opaque)
if (n) {
*handled = true;
NMI_GET_CLASS(n)->deliver_nmi(n);
+ /* We only need to deliver NMI once */
+ return 1;
}
return 0;
Looking back at my review comments on v1 of this series,
I think we could clarify the comment / commit message a bit.
Commit message:
We only expect one device in the system to implement the
TYPE_NMI interface (typically the machine, but in a few cases
for e.g. m68k and ppc this is an interrupt controller or
similar device); so we don't need to keep walking the whole
QOM tree once we've found it. As no machine type creates more
than one object implementing TYPE_NMI, this is not a behaviour
change.
and comment:
/*
* We expect only one object to implement TYPE_NMI, so once
* we've asked it to deliver the NMI we can stop looking.
*/
With that
Reviewed-by: Peter Maydell <[email protected]>
Thanks for the wording help!