Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Mar 2000 23:16:38 -0800 (PST)
From:      Matt Dillon <dillon@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/alpha/alpha trap.c src/sys/i386/i386 exception.s genassym.c globals.s mp_machdep.c mplock.s simplelock.s support.s swtch.s sys_machdep.c trap.c vm86bios.s vm_machdep.c src/sys/i386/include asnames.h cpu.h globaldata.h ...
Message-ID:  <200003280716.XAA57104@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
dillon      2000/03/27 23:16:38 PST

  Modified files:
    sys/alpha/alpha      trap.c 
    sys/i386/i386        exception.s genassym.c globals.s 
                         mp_machdep.c mplock.s simplelock.s 
                         support.s swtch.s sys_machdep.c trap.c 
                         vm86bios.s vm_machdep.c 
    sys/i386/include     asnames.h cpu.h globaldata.h globals.h 
                         ipl.h lock.h smptests.h 
    sys/i386/isa         apic_ipl.s apic_vector.s ipl.s 
                         ipl_funcs.c 
    sys/kern             init_sysent.c kern_prot.c kern_sig.c 
                         kern_switch.c kern_synch.c subr_prof.c 
                         vfs_syscalls.c 
    sys/posix4           ksched.c 
    sys/sys              ktrace.h proc.h signalvar.h sysent.h 
  Log:
      Commit major SMP cleanups and move the BGL (big giant lock) in the
      syscall path inward.  A system call may select whether it needs the MP
      lock or not (the default being that it does need it).
  
      A great deal of conditional SMP code for various deadended experiments
      has been removed.  'cil' and 'cml' have been removed entirely, and the
      locking around the cpl has been removed.  The conditional
      separately-locked fast-interrupt code has been removed, meaning that
      interrupts must hold the CPL now (but they pretty much had to anyway).
      Another reason for doing this is that the original separate-lock for
      interrupts just doesn't apply to the interrupt thread mechanism being
      contemplated.
  
      Modifications to the cpl may now ONLY occur while holding the MP
      lock.  For example, if an otherwise MP safe syscall needs to mess with
      the cpl, it must hold the MP lock for the duration and must (as usual)
      save/restore the cpl in a nested fashion.
  
      This is precursor work for the real meat coming later: avoiding having
      to hold the MP lock for common syscalls and I/O's and interrupt threads.
      It is expected that the spl mechanisms and new interrupt threading
      mechanisms will be able to run in tandem, allowing a slow piecemeal
      transition to occur.
  
      This patch should result in a moderate performance improvement due to
      the considerable amount of code that has been removed from the critical
      path, especially the simplification of the spl*() calls.  The real
      performance gains will come later.
  
  Approved by: jkh
  Reviewed by: current, bde (exception.s)
  Some work taken from: luoqi's patch
  
  Revision  Changes    Path
  1.27      +4 -4      src/sys/alpha/alpha/trap.c
  1.66      +79 -54    src/sys/i386/i386/exception.s
  1.88      +2 -1      src/sys/i386/i386/genassym.c
  1.14      +5 -3      src/sys/i386/i386/globals.s
  1.116     +3 -1      src/sys/i386/i386/mp_machdep.c
  1.30      +39 -249   src/sys/i386/i386/mplock.s
  1.12      +6 -1      src/sys/i386/i386/simplelock.s
  1.68      +14 -2     src/sys/i386/i386/support.s
  1.90      +17 -10    src/sys/i386/i386/swtch.s
  1.48      +2 -1      src/sys/i386/i386/sys_machdep.c
  1.148     +114 -39   src/sys/i386/i386/trap.c
  1.16      +2 -7      src/sys/i386/i386/vm86bios.s
  1.134     +7 -7      src/sys/i386/i386/vm_machdep.c
  1.45      +3 -4      src/sys/i386/include/asnames.h
  1.44      +13 -7     src/sys/i386/include/cpu.h
  1.12      +2 -1      src/sys/i386/include/globaldata.h
  1.6       +3 -1      src/sys/i386/include/globals.h
  1.18      +7 -1      src/sys/i386/include/ipl.h
  1.12      +6 -74     src/sys/i386/include/lock.h
  1.34      +22 -81    src/sys/i386/include/smptests.h
  1.28      +20 -30    src/sys/i386/isa/apic_ipl.s
  1.48      +11 -265   src/sys/i386/isa/apic_vector.s
  1.33      +29 -92    src/sys/i386/isa/ipl.s
  1.34      +64 -179   src/sys/i386/isa/ipl_funcs.c
  1.80      +5 -5      src/sys/kern/init_sysent.c
  1.54      +15 -2     src/sys/kern/kern_prot.c
  1.74      +2 -1      src/sys/kern/kern_sig.c
  1.4       +3 -1      src/sys/kern/kern_switch.c
  1.88      +2 -1      src/sys/kern/kern_synch.c
  1.33      +2 -1      src/sys/kern/subr_prof.c
  1.152     +3 -1      src/sys/kern/vfs_syscalls.c
  1.8       +2 -1      src/sys/posix4/ksched.c
  1.20      +2 -2      src/sys/sys/ktrace.h
  1.100     +12 -3     src/sys/sys/proc.h
  1.35      +15 -4     src/sys/sys/signalvar.h
  1.28      +5 -1      src/sys/sys/sysent.h



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003280716.XAA57104>