mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 09:43:56 -06:00
hw/intc/arm_gicv3: Handle icv_nmiar1_read() for icc_nmiar1_read()
Implement icv_nmiar1_read() for icc_nmiar1_read(), so add definition for ICH_LR_EL2.NMI and ICH_AP1R_EL2.NMI bit. If FEAT_GICv3_NMI is supported, ich_ap_write() should consider ICV_AP1R_EL1.NMI bit. In icv_activate_irq() and icv_eoir_write(), the ICV_AP1R_EL1.NMI bit should be set or clear according to the Non-maskable property. And the RPR priority should also update the NMI bit according to the APR priority NMI bit. By the way, add gicv3_icv_nmiar1_read trace event. If the hpp irq is a NMI, the icv iar read should return 1022 and trap for NMI again Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> [PMM: use cs->nmi_support instead of cs->gic->nmi_support] Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20240407081733.3231820-20-ruanjinjie@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
28cca59c46
commit
d2c0c6aab6
3 changed files with 98 additions and 12 deletions
|
@ -246,6 +246,7 @@ FIELD(GICR_VPENDBASER, VALID, 63, 1)
|
|||
#define ICH_LR_EL2_PRIORITY_SHIFT 48
|
||||
#define ICH_LR_EL2_PRIORITY_LENGTH 8
|
||||
#define ICH_LR_EL2_PRIORITY_MASK (0xffULL << ICH_LR_EL2_PRIORITY_SHIFT)
|
||||
#define ICH_LR_EL2_NMI (1ULL << 59)
|
||||
#define ICH_LR_EL2_GROUP (1ULL << 60)
|
||||
#define ICH_LR_EL2_HW (1ULL << 61)
|
||||
#define ICH_LR_EL2_STATE_SHIFT 62
|
||||
|
@ -277,6 +278,9 @@ FIELD(GICR_VPENDBASER, VALID, 63, 1)
|
|||
#define ICH_VTR_EL2_PREBITS_SHIFT 26
|
||||
#define ICH_VTR_EL2_PRIBITS_SHIFT 29
|
||||
|
||||
#define ICV_AP1R_EL1_NMI (1ULL << 63)
|
||||
#define ICV_RPR_EL1_NMI (1ULL << 63)
|
||||
|
||||
/* ITS Registers */
|
||||
|
||||
FIELD(GITS_BASER, SIZE, 0, 8)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue