[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 58/67] accel/tcg: Report unaligned atomics for user-only
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v5 58/67] accel/tcg: Report unaligned atomics for user-only |
Date: |
Sat, 30 Oct 2021 01:43:28 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
On 10/15/21 06:10, Richard Henderson wrote:
> Use the new cpu_loop_exit_sigbus for atomic_mmu_lookup, which
> has access to complete alignment info from the TCGMemOpIdx arg.
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> accel/tcg/user-exec.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
> index 5646f8e527..92cbffd7c6 100644
> --- a/accel/tcg/user-exec.c
> +++ b/accel/tcg/user-exec.c
> @@ -476,11 +476,22 @@ static void *atomic_mmu_lookup(CPUArchState *env,
> target_ulong addr,
> MemOpIdx oi, int size, int prot,
> uintptr_t retaddr)
> {
> + MemOp mop = get_memop(oi);
> + int a_bits = get_alignment_bits(mop);
> + void *ret;
> +
> + /* Enforce guest required alignment. */
> + if (unlikely(addr & ((1 << a_bits) - 1))) {
QEMU_IS_ALIGNED(addr, 1 << a_bits) ?
> + MMUAccessType t = prot == PAGE_READ ? MMU_DATA_LOAD : MMU_DATA_STORE;
> + cpu_loop_exit_sigbus(env_cpu(env), addr, t, retaddr);
> + }
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
- [PATCH v5 53/67] linux-user/hppa: Remove POWERPC_EXCP_ALIGN handling, (continued)
- [PATCH v5 53/67] linux-user/hppa: Remove POWERPC_EXCP_ALIGN handling, Richard Henderson, 2021/10/15
- [PATCH v5 54/67] target/sh4: Set fault address in superh_cpu_do_unaligned_access, Richard Henderson, 2021/10/15
- [PATCH v5 57/67] target/sparc: Set fault address in sparc_cpu_do_unaligned_access, Richard Henderson, 2021/10/15
- [PATCH v5 55/67] target/sparc: Remove DEBUG_UNALIGNED, Richard Henderson, 2021/10/15
- [PATCH v5 60/67] tcg: Add helper_unaligned_{ld, st} for user-only sigbus, Richard Henderson, 2021/10/15
- [PATCH v5 58/67] accel/tcg: Report unaligned atomics for user-only, Richard Henderson, 2021/10/15
- [PATCH v5 61/67] linux-user: Handle BUS_ADRALN in host_signal_handler, Richard Henderson, 2021/10/15
- [PATCH v5 64/67] linux-user: Add code for PR_GET/SET_UNALIGN, Richard Henderson, 2021/10/15
- [PATCH v5 67/67] target/sh4: Implement prctl_unalign_sigbus, Richard Henderson, 2021/10/15
- [PATCH v5 63/67] linux-user: Disable more prctl subcodes, Richard Henderson, 2021/10/15
- [PATCH v5 46/67] target/arm: Implement arm_cpu_record_sigbus, Richard Henderson, 2021/10/15
- [PATCH v5 56/67] target/sparc: Split out build_sfsr, Richard Henderson, 2021/10/15
- [PATCH v5 59/67] accel/tcg: Report unaligned load/store for user-only, Richard Henderson, 2021/10/15