summary refs log tree commit diff stats
path: root/include/hw/intc/arm_gicv3_common.h
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-04-19 14:36:00 +0100
committerPeter Maydell <peter.maydell@linaro.org>2024-04-25 10:21:05 +0100
commit28cca59c469b16f1352e784b566fd36ace2be4b4 (patch)
tree981d70617b07e41128872ef2f5db5ac084b319b5 /include/hw/intc/arm_gicv3_common.h
parent44ed1e4b9a4df256bb56487ae5150b6807536703 (diff)
downloadfocaccia-qemu-28cca59c469b16f1352e784b566fd36ace2be4b4.tar.gz
focaccia-qemu-28cca59c469b16f1352e784b566fd36ace2be4b4.zip
hw/intc/arm_gicv3: Add NMI handling CPU interface registers
Add the NMIAR CPU interface registers which deal with acknowledging NMI.

When introduce NMI interrupt, there are some updates to the semantics for the
register ICC_IAR1_EL1 and ICC_HPPIR1_EL1. For ICC_IAR1_EL1 register, it
should return 1022 if the intid has non-maskable property. And for
ICC_NMIAR1_EL1 register, it should return 1023 if the intid do not have
non-maskable property. Howerever, these are not necessary for ICC_HPPIR1_EL1
register.

And the APR and RPR has NMI bits which should be handled correctly.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
[PMM: Separate out whether cpuif supports NMI from whether the
 GIC proper (IRI) supports NMI]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240407081733.3231820-19-ruanjinjie@huawei.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/intc/arm_gicv3_common.h')
-rw-r--r--include/hw/intc/arm_gicv3_common.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3_common.h
index 88533749eb..cd09bee3bc 100644
--- a/include/hw/intc/arm_gicv3_common.h
+++ b/include/hw/intc/arm_gicv3_common.h
@@ -225,6 +225,13 @@ struct GICv3CPUState {
 
     /* This is temporary working state, to avoid a malloc in gicv3_update() */
     bool seenbetter;
+
+    /*
+     * Whether the CPU interface has NMI support (FEAT_GICv3_NMI). The
+     * CPU interface may support NMIs even when the GIC proper (what the
+     * spec calls the IRI; the redistributors and distributor) does not.
+     */
+    bool nmi_support;
 };
 
 /*