[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:24:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 |
On 9/19/21 20:22, Philippe Mathieu-Daudé wrote:
> 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?
Eh now I saw the next patch and understood raise_sigsegv() is
where QEMU_NORETURN belong :)
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
>> + void (*record_sigsegv)(CPUState *cpu, vaddr addr,
>> + MMUAccessType access_type,
>> + bool maperr, uintptr_t ra);
>> #endif /* CONFIG_SOFTMMU */
>> #endif /* NEED_CPU_H */
>>
>>
>
>
- Re: [PATCH v2 14/41] linux-user/host/mips: Populate host_signal.h, (continued)
- [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
- [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
[PATCH v2 26/41] target/hppa: Make hppa_cpu_tlb_fill sysemu only, Richard Henderson, 2021/09/18