Hi Yogesh,

The main problem with your patch is where you've placed the change:
tcg_region_initial_alloc__locked is also used by tcg_region_reset_all,
used by tb_flush.  Along that path, we really can't have a failure.
The path on which we can defer allocation is via tcg_register_thread.

The second change I made is to use code_buf_ptr == NULL to signal
reallocation is required.  In addition, tcg_tb_alloc doesn't need
to immediately fail: in the interim since thread creation, we may
well have performed a tb_flush already.

Please have a try vs your hotplug test case.


r~


Richard Henderson (3):
  tcg: Return success from tcg_region_alloc__locked
  tcg: Return success from tcg_region_alloc
  tcg: Defer tb_flush when initial thread region alloc fails

 tcg/tcg-internal.h |  2 +-
 tcg/region.c       | 40 ++++++++++++++++++++++++++++++----------
 tcg/tcg.c          | 24 +++++++++++++++---------
 3 files changed, 46 insertions(+), 20 deletions(-)

-- 
2.43.0


Reply via email to