[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v5 12/22] target/arm: Handle NMI in arm_cpu_do_interrupt_
From: |
Jinjie Ruan |
Subject: |
Re: [RFC PATCH v5 12/22] target/arm: Handle NMI in arm_cpu_do_interrupt_aarch64() |
Date: |
Fri, 1 Mar 2024 11:42:41 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 |
On 2024/3/1 7:09, Richard Henderson wrote:
> On 2/29/24 03:10, Jinjie Ruan via wrote:
>> According to Arm GIC section 4.6.3 Interrupt superpriority, the interrupt
>> with superpriority is always IRQ, never FIQ, so the NMI exception trap
>> entry
>> behave like IRQ. However, VNMI can be IRQ or FIQ, FIQ can only come from
>> hcrx_el2.HCRX_VFNMI bit, IRQ can be raised from the GIC or come from the
>> hcrx_el2.HCRX_VINMI bit.
>>
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>> v4:
>> - Also handle VNMI in arm_cpu_do_interrupt_aarch64().
>> v3:
>> - Remove the FIQ NMI handle.
>> ---
>> target/arm/helper.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/target/arm/helper.c b/target/arm/helper.c
>> index b796dbdf21..bd34b3506a 100644
>> --- a/target/arm/helper.c
>> +++ b/target/arm/helper.c
>> @@ -11459,12 +11459,21 @@ static void
>> arm_cpu_do_interrupt_aarch64(CPUState *cs)
>> break;
>> case EXCP_IRQ:
>> case EXCP_VIRQ:
>> + case EXCP_NMI:
>> addr += 0x80;
>> break;
>> case EXCP_FIQ:
>> case EXCP_VFIQ:
>> addr += 0x100;
>> break;
>> + case EXCP_VNMI:
>> + if (env->irq_line_state & CPU_INTERRUPT_VNMI ||
>> + env->cp15.hcrx_el2 & HCRX_VINMI) {
>> + addr += 0x80;
>> + } else if (env->cp15.hcrx_el2 & HCRX_VFNMI) {
>> + addr += 0x100;
>> + }
>> + break;
>
> By not combining VFNMI with CPU_INTERRUPT_VNMI, you don't need this
> complication.
> Just
>
> case EXCP_IRQ:
> case EXCP_VIRQ:
> + case EXCP_NMI:
Not understand it. both VIRQ and VFIQ will set CPU_INTERRUPT_VNMI and
cause EXCP_VNMI if they have Superpriority, the distinction jump here is
necessary.
>
>
> r~
- [RFC PATCH v5 00/22] target/arm: Implement FEAT_NMI and FEAT_GICv3_NMI, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 01/22] target/arm: Handle HCR_EL2 accesses for bits introduced with FEAT_NMI, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 07/22] target/arm: Add support for NMI in arm_phys_excp_target_el(), Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 11/22] hw/intc/arm_gicv3: Add external IRQ lines for NMI, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 03/22] target/arm: Add support for FEAT_NMI, Non-maskable Interrupt, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 02/22] target/arm: Add PSTATE.ALLINT, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 10/22] hw/arm/virt: Wire NMI and VNMI irq lines from GIC to CPU, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 12/22] target/arm: Handle NMI in arm_cpu_do_interrupt_aarch64(), Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 05/22] target/arm: Support MSR access to ALLINT, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 13/22] hw/intc/arm_gicv3: Add irq superpriority information, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 04/22] target/arm: Implement ALLINT MSR (immediate), Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 06/22] target/arm: Add support for Non-maskable Interrupt, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 15/22] hw/intc/arm_gicv3: Implement GICD_INMIR, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 16/22] hw/intc: Enable FEAT_GICv3_NMI Feature, Jinjie Ruan, 2024/02/29
- [RFC PATCH v5 18/22] hw/intc/arm_gicv3: Implement NMI interrupt prioirty, Jinjie Ruan, 2024/02/29