All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 09/12] accel/tcg: Introduce EXCP_TB_FLUSH
Date: Tue, 23 Sep 2025 09:10:28 +0200	[thread overview]
Message-ID: <67f2c84b-4bb3-437b-8184-e7dfb9947df9@redhat.com> (raw)
In-Reply-To: <20250923023922.3102471-10-richard.henderson@linaro.org>

On 9/23/25 04:39, Richard Henderson wrote:
> We are going to disallow tb_flush from within the context
> of a running cpu.  Introduce a tcg-internal exception to
> return out of the cpu run loop and perform the flush there.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

One small difference is that different CPUs can fail tcg_tb_alloc() at 
the same time and flush multiple times.

I think the check on the generation count should remain.  Instead of 
introducing EXCP_TB_FLUSH, you can keep the guts of tb_flush() as

void tb_queue_flush(CPUState *cpu)
{
     unsigned tb_flush_count = qatomic_read(&tb_ctx.tb_flush_count);
     async_safe_run_on_cpu(cpu, do_tb_flush,
                           RUN_ON_CPU_HOST_INT(tb_flush_count));
}

With the unconditional async_safe_run_on_cpu() hidden behind a function, 
this patch goes away while the next one survives as

      if (unlikely(!tb)) {
-        /* flush must be done */
-        tb_flush(cpu);
          mmap_unlock();
-        /* Make the execution loop process the flush as soon as 
possible.  */
-        cpu->exception_index = EXCP_INTERRUPT;
+        tb_queue_flush(cpu);
          cpu_loop_exit(cpu);
      }

Paolo



  reply	other threads:[~2025-09-23  7:11 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-23  2:39 [PATCH v2 00/12] accel/tcg: Improve tb_flush usage Richard Henderson
2025-09-23  2:39 ` [PATCH v2 01/12] gdbstub: Remove tb_flush uses Richard Henderson
2025-09-23  9:11   ` Philippe Mathieu-Daudé
2025-09-23 16:23     ` Richard Henderson
2025-09-23  2:39 ` [PATCH v2 02/12] accel/tcg: Split out tb_flush__exclusive Richard Henderson
2025-09-23  7:17   ` Philippe Mathieu-Daudé
2025-09-23  9:16   ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 03/12] target/alpha: Simplify call_pal implementation Richard Henderson
2025-09-23  7:30   ` Philippe Mathieu-Daudé
2025-09-23  9:05     ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 04/12] target/riscv: Record misa_ext in TCGTBCPUState.cs_base Richard Henderson
2025-09-24  6:17   ` LIU Zhiwei
2025-09-24 12:23   ` Daniel Henrique Barboza
2025-09-28 23:10   ` Alistair Francis
2025-09-23  2:39 ` [PATCH v2 05/12] accel/tcg: Move post-load tb_flush to vm_change_state hook Richard Henderson
2025-09-23  7:22   ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 06/12] hw/ppc/spapr: Use tb_invalidate_phys_range in h_page_init Richard Henderson
2025-09-23  4:49   ` Harsh Prateek Bora
2025-09-23  8:55   ` Philippe Mathieu-Daudé
2025-09-23  9:45     ` Harsh Prateek Bora
2025-09-23 16:59     ` Richard Henderson
2025-09-23  2:39 ` [PATCH v2 07/12] linux-user: Use tb_flush_exclusive to start second thread Richard Henderson
2025-09-23  8:50   ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 08/12] plugins: Use tb_flush__exclusive Richard Henderson
2025-09-23  7:33   ` Philippe Mathieu-Daudé
2025-09-23 13:35   ` Philippe Mathieu-Daudé
2025-09-23 20:28     ` Richard Henderson
2025-09-24  3:18       ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 09/12] accel/tcg: Introduce EXCP_TB_FLUSH Richard Henderson
2025-09-23  7:10   ` Paolo Bonzini [this message]
2025-09-23 20:02     ` Richard Henderson
2025-09-23  2:39 ` [PATCH v2 10/12] accel/tcg: Use EXCP_TB_FLUSH in tb_gen_code Richard Henderson
2025-09-23  9:15   ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 11/12] accel/tcg: Remove tb_flush Richard Henderson
2025-09-23  7:24   ` Philippe Mathieu-Daudé
2025-09-23  2:39 ` [PATCH v2 12/12] accel/tcg: Tighten assert in tb_flush__exclusive Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=67f2c84b-4bb3-437b-8184-e7dfb9947df9@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.