[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 19/41] hw/core: Add TCGCPUOps.record_sigsegv
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 19/41] hw/core: Add TCGCPUOps.record_sigsegv |
Date: |
Sun, 19 Sep 2021 20:22:50 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 |
On 9/18/21 20:45, Richard Henderson wrote:
> Add a new user-only interface for updating cpu state before
> raising a signal. This will replace tlb_fill for user-only
> and should result in less boilerplate for each guest.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> include/hw/core/tcg-cpu-ops.h | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/include/hw/core/tcg-cpu-ops.h b/include/hw/core/tcg-cpu-ops.h
> index 4a4c4053e3..e229a40772 100644
> --- a/include/hw/core/tcg-cpu-ops.h
> +++ b/include/hw/core/tcg-cpu-ops.h
> @@ -114,6 +114,32 @@ struct TCGCPUOps {
> */
> bool (*io_recompile_replay_branch)(CPUState *cpu,
> const TranslationBlock *tb);
> +#else
> + /**
> + * record_sigsegv:
> + * @cpu: cpu context
> + * @addr: faulting guest address
> + * @access_type: access was read/write/execute
> + * @maperr: true for invalid page, false for permission fault
> + * @ra: host pc for unwinding
> + *
> + * We are about to raise SIGSEGV with si_code set for @maperr,
> + * and si_addr set for @addr. Record anything further needed
> + * for the signal ucontext_t.
> + *
> + * If the emulated kernel does not provide anything to the signal
> + * handler with anything besides the user context registers, and
> + * the siginfo_t, then this hook need do nothing and may be omitted.
> + * Otherwise, record the data and return; the caller will raise
> + * the signal, unwind the cpu state, and return to the main loop.
> + *
> + * If it is simpler to re-use the sysemu tlb_fill code, @ra is provided
> + * so that a "normal" cpu exception can be raised. In this case,
> + * the signal must be raised by the architecture cpu_loop.
> + */
Shouldn't it have the QEMU_NORETURN attribute?
> + void (*record_sigsegv)(CPUState *cpu, vaddr addr,
> + MMUAccessType access_type,
> + bool maperr, uintptr_t ra);
> #endif /* CONFIG_SOFTMMU */
> #endif /* NEED_CPU_H */
>
>
- [PATCH v2 14/41] linux-user/host/mips: Populate host_signal.h, (continued)
- [PATCH v2 14/41] linux-user/host/mips: Populate host_signal.h, Richard Henderson, 2021/09/18
- [PATCH v2 12/41] linux-user/host/aarch64: Populate host_signal.h, Richard Henderson, 2021/09/18
- [PATCH v2 18/41] linux-user/signal: Drop HOST_SIGNAL_PLACEHOLDER, Richard Henderson, 2021/09/18
- [PATCH v2 13/41] linux-user/host/s390: Populate host_signal.h, Richard Henderson, 2021/09/18
- [PATCH v2 15/41] linux-user/host/riscv: Populate host_signal.h, Richard Henderson, 2021/09/18
- [PATCH v2 19/41] hw/core: Add TCGCPUOps.record_sigsegv, Richard Henderson, 2021/09/18
- Re: [PATCH v2 19/41] hw/core: Add TCGCPUOps.record_sigsegv,
Philippe Mathieu-Daudé <=
- [PATCH v2 20/41] linux-user: Add raise_sigsegv, Richard Henderson, 2021/09/18
[PATCH v2 22/41] target/arm: Use raise_sigsegv for mte tag lookup, Richard Henderson, 2021/09/18
[PATCH v2 23/41] target/arm: Implement arm_cpu_record_sigsegv, Richard Henderson, 2021/09/18
[PATCH v2 21/41] target/alpha: Make alpha_cpu_tlb_fill sysemu only, Richard Henderson, 2021/09/18