[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 14/20] target/arm: Set PAN bit as required on exception en
From: |
Richard Henderson |
Subject: |
Re: [PATCH v3 14/20] target/arm: Set PAN bit as required on exception entry |
Date: |
Sat, 8 Feb 2020 09:27:37 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 2/8/20 8:45 AM, Richard Henderson wrote:
> On 2/7/20 6:01 PM, Peter Maydell wrote:
>>> + /* CPSR.PAN is preserved unless target is EL1 and SCTLR.SPAN == 0.
>>> */
>>> + if (cpu_isar_feature(aa64_pan, env_archcpu(env))
>>> + && new_el == 1
>>> + && !(env->cp15.sctlr_el[1] & SCTLR_SPAN)) {
>>> + env->uncached_cpsr |= CPSR_PAN;
>>> + }
>> This doesn't catch the "taking exception to EL3 and AArch32 is EL3"
>> case, which is also supposed to honour SCTLR.SPAN.
>>
>> Given where this code is, we know we're taking an exception to
>> AArch32 and that we're not going to Hyp mode, so in fact every
>> case where we get here is one where we should honour SCTLR.SPAN
>> and I think we can just drop the "new_el == 1" part of the condition.
>
> Presumably that becomes env->cp15.sctlr_el[new_el] as well, so that we get the
> secure version of the sctlr.
Actually, there's another clause that I missed before:
# When the target of the exception is EL3, from Non-secure
# state, this bit is set to 0 regardless
# of the value of the Secure SCTLR.SPAN bit.
See G8.2.33. Will fix for v4.
r~
- Re: [PATCH v3 06/20] target/arm: Replace CPSR_ERET_MASK with aarch32_cpsr_valid_mask, (continued)
- [PATCH v3 10/20] target/arm: Introduce aarch64_pstate_valid_mask, Richard Henderson, 2020/02/03
- [PATCH v3 11/20] target/arm: Update MSR access for PAN, Richard Henderson, 2020/02/03
- [PATCH v3 12/20] target/arm: Update arm_mmu_idx_el for PAN, Richard Henderson, 2020/02/03
- [PATCH v3 13/20] target/arm: Enforce PAN semantics in get_S1prot, Richard Henderson, 2020/02/03
- [PATCH v3 14/20] target/arm: Set PAN bit as required on exception entry, Richard Henderson, 2020/02/03
- [PATCH v3 15/20] target/arm: Implement ATS1E1 system registers, Richard Henderson, 2020/02/03
- [PATCH v3 16/20] target/arm: Enable ARMv8.2-ATS1E1 in -cpu max, Richard Henderson, 2020/02/03
- [PATCH v3 17/20] target/arm: Add ID_AA64MMFR2_EL1, Richard Henderson, 2020/02/03
- [PATCH v3 18/20] target/arm: Update MSR access to UAO, Richard Henderson, 2020/02/03
- [PATCH v3 19/20] target/arm: Implement UAO semantics, Richard Henderson, 2020/02/03
- [PATCH v3 20/20] target/arm: Enable ARMv8.2-UAO in -cpu max, Richard Henderson, 2020/02/03