git: DragonFly_RELEASE_2_10 kernel - Fix rare IPIQ freezes

看板DFBSD_commit作者時間14年前 (2011/07/30 19:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit fca8f6a0327fb3e1d353e97efcec2145e05e8f41 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Fri Jul 29 01:25:46 2011 -0700 kernel - Fix rare IPIQ freezes * Ensure that an IPI interrupt is sent went waiting for an IPIQ to drain. The IPIQ can be pushed up by passive IPIs and not necessarily have a signal pending on the target cpu, so we have to put the check in our drain loop rather than outside the loop. * Add a cpu_pause() to reduce power use for the IPIQ drain case. * Normalize the use of gd_intr_nesting_level and clean up the code syntax for the ipiq_optimized case. * Remove the previous temporary IPI interrupt signaling fix, it was incomplete. * Fix a missing crit_exit() in the ENOENT case for lwkt_send_ipiq3_nowait(). * Track cpu's which are in the middle of ipiq processing and assert that a cpu is not in an IPIQ processing loop when switching between threads. * Normalize the use of ip->ip_npoll in the IPIQ code. This field is used to avoid unnecessary IPI interrupts. Summary of changes: sys/kern/lwkt_ipiq.c | 81 +++++++++++++++-------------- sys/kern/lwkt_thread.c | 3 + sys/platform/vkernel64/x86_64/cpu_regs.c | 6 ++- sys/platform/vkernel64/x86_64/mp.c | 3 +- sys/sys/globaldata.h | 2 +- 5 files changed, 53 insertions(+), 42 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/fca8f6a0327fb3e1d353e97efcec2145e05e8f41 -- DragonFly BSD source repository
文章代碼(AID): #1EC-ksHA (DFBSD_commit)