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

Bill Paul wpaul at FreeBSD.org
Tue Oct 25 23:52:58 PDT 2005


wpaul       2005-10-26 06:52:58 UTC

  FreeBSD src repository

  Modified files:
    sys/compat/ndis      kern_ndis.c ntoskrnl_var.h subr_ndis.c 
                         subr_ntoskrnl.c 
  Log:
  Get rid of the timer tracking and reaping code in NdisMInitializeTimer()
  and ndis_halt_nic(). It's been disabled for some time anyway, and
  it turns out there's a possible deadlock in NdisMInitializeTimer() when
  acquiring the miniport block lock to modify the timer list: it's
  possible for a driver to call NdisMInitializeTimer() when the miniport
  block lock has already been acquired by an earlier piece of code. You
  can't acquire the same spinlock twice, so this can deadlock.
  
  Also, implement MmMapIoSpace() and MmUnmapIoSpace(), and make
  NdisMMapIoSpace() and NdisMUnmapIoSpace() use them. There are some
  drivers that want MmMapIoSpace() and MmUnmapIoSpace() so that they can
  map arbitrary register spaces not directly associated with their
  device resources. For example, there's an Atheros driver for
  a miniPci card (0x168C:0x1014) on the IBM Thinkpad x40 that wants
  to map some I/O spaces at 0xF00000 and 0xE00000 which are held by
  the acpi0 device. I don't know what it wants these ranges for,
  but if it can't map and access them, the MiniportInitialize() method
  fails.
  
  Revision  Changes    Path
  1.89      +0 -23     src/sys/compat/ndis/kern_ndis.c
  1.41      +2 -0      src/sys/compat/ndis/ntoskrnl_var.h
  1.98      +3 -24     src/sys/compat/ndis/subr_ndis.c
  1.78      +113 -0    src/sys/compat/ndis/subr_ntoskrnl.c


More information about the cvs-all mailing list