On Wed, Sep 21, 2016 at 03:38:25PM -0500, Corey Minyard wrote:
On 09/21/2016 03:20 PM, Eduardo Habkost wrote:
Hi,
I was looking at the monitor code handling the "current CPU", and
noticed that qmp_inject_nmi() looks suspicious: it is a QMP
command, but uses monitor_get_cpu_index().
In addition to the "inject-nmi" QMP command, qmp_inject_nmi() is
used at:
* hmp_inject_nmi()
* ipmi_do_hw_op() (IPMI_SEND_NMI operation)
This confused me, so I would like to know:
1) What exactly "default CPU" is supposed to mean in the
"inject-nmi" QMP command documentation?
2) To which CPU(s) are NMIs supposed to be sent when triggered by
IPMI messages? I don't know how to test the IPMI code, but it
looks like it will crash if QEMU runs without any monitor.
It doesn't matter which CPU it goes to.
OK, so in the case of IPMI we can make it send the NMI to the
first CPU.
I haven't tested without a monitor, so I'm not sure. Does
another interface into the NMI code need to be added?
There's another interface, already: nmi_monitor_handle() already
gets a cpu_index argument and doesn't depend on the monitor code.
We could change the IPMI code to call
nmi_monitor_handle(first_cpu->cpu_index) directly.