Richard Henderson <[email protected]&gt; 于2025年9月23日周二 07:22写道:
&gt;
&gt; On 9/17/25 05:47, [email protected] wrote:
&gt; &gt; From: Weiwei Li <[email protected]&gt;
&gt; &gt;
&gt; &gt; The problem is triggered in following conditions:
&gt; &gt; - thread 1:
&gt; &gt; &nbsp; &nbsp; &nbsp;run spin loop(ended with a direct jump) like 
"0x0000006f, // jal zero, #0"
&gt; &gt; - thread 2:
&gt; &gt; &nbsp; &nbsp; &nbsp;do something, and then modify the loop code of 
thread 1 to nop isntruction,
&gt; &gt; &nbsp; &nbsp; &nbsp;finally wait thread 1 exit.
&gt; &gt;
&gt; &gt; The loop tb which is patched to jump to itself, will not be updated 
in this case
&gt; &gt; and will never exit.
&gt; &gt;
&gt; &gt; Signed-off-by: Weiwei Li <[email protected]&gt;
&gt; &gt; ---
&gt; &gt; &nbsp; accel/tcg/cpu-exec.c | 8 ++++++--
&gt; &gt; &nbsp; 1 file changed, 6 insertions(+), 2 deletions(-)
&gt;
&gt; If there's a problem with 1 tb, there's also a problem with 2 tb like
&gt;
&gt; &nbsp; &nbsp; &nbsp; &nbsp; jal &nbsp; &nbsp; zero, #4
&gt; &nbsp; &nbsp; &nbsp; &nbsp; jal &nbsp; &nbsp; zero, #-4
&gt;

I tried this case. And it didn't have this problem.
This problem seems only existed in single tb loop.
&gt;
&gt; But unlinking the tb should be part of invalidation, so I don't quite see 
where the
&gt; problem is. &nbsp;You need to expand on the description of the problem.
&gt;


I think the problem is the single tb is always in use&nbsp;&nbsp;when the 
single tb is linked with itself,
and it cannot be updated when we update the code。


Regards,
Weiwei Li

&gt;
&gt; r~

Reply via email to