Richard Henderson <richard.hender...@linaro.org> writes:
> On 11/25/21 4:41 PM, Alex Bennée wrote: >> @@ -1738,7 +1738,7 @@ tb_invalidate_phys_page_range__locked(struct >> page_collection *pages, >> if (current_tb_modified) { >> page_collection_unlock(pages); >> /* Force execution of one insn next time. */ >> - cpu->cflags_next_tb = 1 | curr_cflags(cpu); >> + cpu->cflags_next_tb = 1 | CF_NOIRQ | curr_cflags(cpu); >> mmap_unlock(); >> cpu_loop_exit_noexc(cpu); >> } > > There's another instance in tb_invalidate_phys_page. > >> diff --git a/softmmu/physmem.c b/softmmu/physmem.c >> index 314f8b439c..b43f92e900 100644 >> --- a/softmmu/physmem.c >> +++ b/softmmu/physmem.c >> @@ -946,7 +946,7 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, >> vaddr len, >> cpu_loop_exit(cpu); >> } else { >> /* Force execution of one insn next time. */ >> - cpu->cflags_next_tb = 1 | CF_LAST_IO | curr_cflags(cpu); >> + cpu->cflags_next_tb = 1 | CF_LAST_IO | CF_NOIRQ | >> curr_cflags(cpu); >> mmap_unlock(); >> cpu_loop_exit_noexc(cpu); >> } > > And a second instance in this function. I had skipped this one as icount was in effect but I guess it can't hurt. -- Alex Bennée