cvs commit: src/sys/compat/ndis kern_ndis.c ntoskrnl_var.h subr_ntoskrnl.c

Bill Paul wpaul at FreeBSD.org
Sun Mar 21 16:41:42 PST 2004


wpaul       2004/03/21 16:41:41 PST

  FreeBSD src repository

  Modified files:
    sys/compat/ndis      kern_ndis.c ntoskrnl_var.h 
                         subr_ntoskrnl.c 
  Log:
  The Intel 2200BG NDIS driver does an alloca() of about 5000 bytes
  when it associates with a net. Because FreeBSD's kstack size is only
  2 pages by default, this blows the stack and causes a double fault.
  
  To deal with this, we now create all our kthreads with 8 stack pages.
  Also, we now run all timer callouts in the ndis swi thread (since
  they would otherwise run in the clock ithread, whose stack is too
  small). It happens that the alloca() in this case was occuring within
  the interrupt handler, which was already running in the ndis swi
  thread, but I want to deal with the callouts too just to be extra
  safe.
  
  NOTE: this will only work if you update vm_machdep.c with the change
  I just committed. If you don't include this fix, setting the number
  of stack pages with kthread_create() has essentially no effect.
  
  Revision  Changes    Path
  1.44      +4 -2      src/sys/compat/ndis/kern_ndis.c
  1.11      +7 -0      src/sys/compat/ndis/ntoskrnl_var.h
  1.30      +21 -6     src/sys/compat/ndis/subr_ntoskrnl.c


More information about the cvs-all mailing list