Print this page
OS-7753 THREAD_KPRI_RELEASE does nothing of the sort
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

@@ -19,14 +19,13 @@
  * CDDL HEADER END
  */
 /*
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2019 Joyent, Inc.
  */
 
-#pragma ident   "%Z%%M% %I%     %E% SMI"
-
 #if defined(lint)
 #include <sys/types.h>
 #include <sys/thread.h>
 #include <sys/cpuvar.h>
 #else   /* lint */

@@ -500,14 +499,11 @@
         .align  16
         ENTRY(rw_enter)
         cmp     %o1, RW_WRITER                  ! entering as writer?
         be,a,pn %icc, 2f                        ! if so, go do it ...
         or      THREAD_REG, RW_WRITE_LOCKED, %o5 ! delay: %o5 = owner
-        ld      [THREAD_REG + T_KPRI_REQ], %o3  ! begin THREAD_KPRI_REQUEST()
         ldn     [%o0], %o4                      ! %o4 = old lock value
-        inc     %o3                             ! bump kpri
-        st      %o3, [THREAD_REG + T_KPRI_REQ]  ! store new kpri
 1:
         andcc   %o4, RW_WRITE_CLAIMED, %g0      ! write-locked or write-wanted?
         bz,pt   %xcc, 3f                        ! if so, prepare to block
         add     %o4, RW_READ_LOCK, %o5          ! delay: increment hold count
         sethi   %hi(rw_enter_sleep), %o2        ! load up jump

@@ -550,19 +546,18 @@
         membar  #LoadStore|#StoreStore          ! membar_exit()
         subcc   %o4, RW_READ_LOCK, %o5          ! %o5 = new lock value if reader
         bnz,pn  %xcc, 2f                        ! single reader, no waiters?
         clr     %o1
 1:
-        ld      [THREAD_REG + T_KPRI_REQ], %g1  ! begin THREAD_KPRI_RELEASE()
         srl     %o4, RW_HOLD_COUNT_SHIFT, %o3   ! %o3 = hold count (lockstat)
         casx    [%o0], %o4, %o5                 ! try to drop lock
         cmp     %o4, %o5                        ! did we succeed?
         bne,pn  %xcc, rw_exit_wakeup            ! if not, go to C
-        dec     %g1                             ! delay: drop kpri
+        nop                                     ! delay: do nothing
 .rw_read_exit_lockstat_patch_point:
         retl
-        st      %g1, [THREAD_REG + T_KPRI_REQ]  ! delay: store new kpri
+        nop                                     ! delay: do nothing
 2:
         andcc   %o4, RW_WRITE_LOCKED, %g0       ! are we a writer?
         bnz,a,pt %xcc, 3f
         or      THREAD_REG, RW_WRITE_LOCKED, %o4 ! delay: %o4 = owner
         cmp     %o5, RW_READ_LOCK               ! would lock still be held?