[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 2/3] softmmu: fix watchpoint-interrupt races
From: |
David Hildenbrand |
Subject: |
Re: [PATCH v2 2/3] softmmu: fix watchpoint-interrupt races |
Date: |
Fri, 12 Nov 2021 11:10:01 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
On 11.11.21 10:55, Pavel Dovgalyuk wrote:
> Watchpoint may be processed in two phases. First one is detecting
> the instruction with target memory access. And the second one is
> executing only one instruction and setting the debug interrupt flag.
> Hardware interrupts can break this sequence when they happen after
> the first watchpoint phase.
> This patch postpones the interrupt request until watchpoint is
> processed.
>
> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
> ---
> accel/tcg/cpu-exec.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
> index df12452b8f..e4526c2f5e 100644
> --- a/accel/tcg/cpu-exec.c
> +++ b/accel/tcg/cpu-exec.c
> @@ -742,6 +742,11 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
> qemu_mutex_unlock_iothread();
> return true;
> }
> + /* Process watchpoints first, or interrupts will ruin everything */
> + if (cpu->watchpoint_hit) {
> + qemu_mutex_unlock_iothread();
> + return false;
> + }
> #if !defined(CONFIG_USER_ONLY)
> if (replay_mode == REPLAY_MODE_PLAY && !replay_has_interrupt()) {
> /* Do nothing */
>
Reviewed-by: David Hildenbrand <david@redhat.com>
--
Thanks,
David / dhildenb
[PATCH v2 2/3] softmmu: fix watchpoint-interrupt races, Pavel Dovgalyuk, 2021/11/11
[PATCH v2 3/3] softmmu: fix watchpoints on memory used by vCPU internals, Pavel Dovgalyuk, 2021/11/11
Re: [PATCH v2 0/3] Some watchpoint-related patches, David Hildenbrand, 2021/11/11