On 24/5/26 18:57, Warner Losh wrote:
On Sun, Feb 1, 2026 at 7:54 AM Alex Bennée <[email protected]> wrote:

Warner Losh <[email protected]> writes:

OK. I've updated bsd-user fork from last year to yesterday. I had one
question.

I see that we've gone from tb_flush() to queue_tb_flush(). Why was that?
And is it a drop in?
FreeBSD's fork has this in the thread creation:

     /*
      * If this is our first additional thread, we need to ensure we
      * generate code for parallel execution and flush old translations.
      * Do this now so that the copy gets CF_PARALLEL too.
      */
     if (!(cpu->tcg_cflags & CF_PARALLEL)) {
         cpu->tcg_cflags |= CF_PARALLEL;
         tb_flush(cpu);
     }

I think the right thing to do is to just change this to
queue_tb_flush(cpu), and that compiles. I'd like to get some confirmation,
though.
Did I parse the changes right?

Yes, because ultimately we use safe work which:

  * Schedules the function @func for execution on the vCPU @cpu
asynchronously,
  * while all other vCPUs are sleeping.


So I've done this in the latest blitz branch. I encountered one gotcha. I
replaced it in the one place, but that didn't work too well. I finally
tracked down the issue: I had implemented the change in only one place
instead of the three required locations. I also had to bring the
begin_parallel_context() function over from linux-user. I like
user-internal.h that's in linux user. What is your touchstone for deciding
where that code belongs in it? I'd like to do the same in bsd-user once my
upstream focus shift to refinement of blitz and maybe my next cool thing
there.

All common code should go under common-user/ and include/user/.

Reply via email to