qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/3] hw/arm/virt: Simulate NMI Injection
@ 2020-02-18  2:04 Gavin Shan
  2020-02-18  2:04 ` [PATCH v4 1/3] target/arm: Support SError injection Gavin Shan
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Gavin Shan @ 2020-02-18  2:04 UTC (permalink / raw)
  To: qemu-devel, qemu-arm
  Cc: peter.maydell, drjones, jthierry, aik, maz, richard.henderson,
	eric.auger, shan.gavin, pbonzini

This series simulates the behavior of receiving NMI interrupt for "virt"
board. First of all, a new interrupt (SError) is supported for each CPU.
The backend is either sending error events through kvm module or emulating
the bahavior when TCG is enabled. The outcome is SError or data abort is
raised to crash guest. In the mean while, the virtual SError interrupt is
also supported, but there is no users yet.

For GICv2 or GICv3, a new IRQ line is added for each CPU and it's connected
to the (above) introduced SError interrupt. The IRQ line of CPU#0 is raised
when HMP/QMP "nmi" is issued, to crash the guest.

Testing
=======

After the HMP/QMP "nmi" is issued in the following 4 environment, the guest is
crashed as expected.

   Accel     Mode                  Crashed    Parameter
   ------------------------------------------------------------------------
   kvm       aarch64               yes        -machine virt -cpu host
   kvm       aarch32(cortex-a15)   yes        -machine virt -cpu host,aarch64=off
   tcg       aarch64               yes        -machine virt -cpu max
   tcg       aarch32(cortex-a15)   yes        -machine virt -cpu cortex-a15

Changelog
=========
v4:
   * Correct the flag in arm_cpu_has_work()               (Richard Henderson)
   * Check CPU_INTERRUPT_SERROR in arm_cpu_exec_interrupt()
     and arm_v7m_cpu_exec_interrupt()                     (Richard Henderson)
   * Introduce ARM_CPU_NUM_IRQ to make the code of initializing
     the CPU's inbound IRQ lines atomic                   (Richard Henderson)
   * Correct comments about ARM_CPU_IRQ                   (Richard Henderson)
   * Update ISR.EL1 with SError state                     (Gavin Shan)
   * Include SError state during migration                (Gavin Shan)
   * Added PATCH[2/3] to support VSError injection        (Marc Zyngier)
v3:
   * Support SError injection for aarch32                 (Richard Henderson)
   * Export the SError injection through IRQ line         (Peter Maydell)
   * Removed RFC tag as it seems in correct track         (Gavin Shan)
v2:
   * Redesigned to fully exploit SError interrupt

Gavin Shan (3):
  target/arm: Support SError injection
  target/arm: Support VSError injection
  hw/arm/virt: Simulate NMI injection

 hw/arm/virt.c                      |  34 ++++++++-
 hw/intc/arm_gic_common.c           |   3 +
 hw/intc/arm_gicv3_common.c         |   3 +
 include/hw/intc/arm_gic_common.h   |   1 +
 include/hw/intc/arm_gicv3_common.h |   1 +
 target/arm/cpu.c                   | 113 ++++++++++++++++++++++++++---
 target/arm/cpu.h                   |  23 ++++--
 target/arm/helper.c                |  30 ++++++++
 target/arm/internals.h             |  10 +++
 target/arm/m_helper.c              |   8 ++
 target/arm/machine.c               |   3 +-
 11 files changed, 208 insertions(+), 21 deletions(-)

-- 
2.23.0



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-02-19  8:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-18  2:04 [PATCH v4 0/3] hw/arm/virt: Simulate NMI Injection Gavin Shan
2020-02-18  2:04 ` [PATCH v4 1/3] target/arm: Support SError injection Gavin Shan
2020-02-18 16:28   ` Marc Zyngier
2020-02-18 23:09     ` Gavin Shan
2020-02-19  8:03       ` Marc Zyngier
2020-02-18  2:04 ` [PATCH v4 2/3] target/arm: Support VSError injection Gavin Shan
2020-02-18  2:04 ` [PATCH v4 3/3] hw/arm/virt: Simulate NMI injection Gavin Shan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).