hujun260 opened a new pull request, #12380:
URL: https://github.com/apache/nuttx/pull/12380

   ## Summary
   cpu0                                 cpu1:
   
   user_main
   signest_test
   sched_unlock
   nxsched_merge_pending
   nxsched_add_readytorun
   up_cpu_pause
                                     arm_sigdeliver
                                     enter_critical_section
   
   Reason:
   In the SMP, cpu0 is already in the critical section and waiting for cpu1 to 
enter the suspended state. However, when cpu1 executes arm_sigdeliver, it is in 
the irq-disabled state but not in the critical section. At this point, cpu1 is 
unable to respond to interrupts and is continuously attempting to enter the 
critical section, resulting in a deadlock.
   
   Resolve:
   adjust the logic, do not entering the critical section when 
interrupt-disabled.
   ## Impact
   NONE
   
   ## Testing
   test:
   We can use qemu for testing.
   
   compiling
   make distclean -j20; ./tools/configure.sh -l qemu-armv8a:nsh_smp ;make -j20
   running
   qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic -machine 
virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on 
-serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to