Prosody guide: driver tracing on Microsoft Windows

The driver trace is normally useful only to Aculab support. However it's described here in case it might be useful. The driver writes the trace to the standard Windows debug output. To view it you will need a special tool such as Microsoft's WinDBG (in the Device Driver Kit) which needs a second PC or the free utility debugView from Sysinternals (see http://www.sysinternals.com/ntw2k/freeware/debugview.shtml) which can be run on the PC it is monitoring.

Here's an example of trace from a Microsoft Windows system with commentary on what the various bits mean. The messages explained here occur while installing the driver.

TiNG: driver version v498. loading

This is always the first message printed when the driver loads. It shows the version number of the driver.

TiNG: loading \REGISTRY\Machine\System\ControlSet001\Services\TiNG
RTL: \REGISTRY\Machine\System\ControlSet001\Services\TiNG\BR8Card0 key not found - Status == c0000034 

Since BR8 cards have to be preconfigured, the driver searches for configuration for the first BR8 card (when it fails to find configuration for a card it assumes that there are no more). Since this machine has no configured BR8 cards, it does not find BR8Card0 and gives up on BR8 cards.

TiNG: attaching \REGISTRY\Machine\System\ControlSet001\Services\TiNG\S2Card0

However, there is configuration information for an S2 (ISA Prosody) card, so it announces that it is starting to handle this card.

+0mS TiNG d0m0: ->absent
+10mS TiNG d0m1: ->absent
+0mS TiNG d0m2: ->absent
+10mS TiNG d0m3: ->absent
IoAssignResources: Dump of requested resource list
Alternative #0  - 3 required resources
***   IO  Min: 0:00000354, Max: 0:00000357, Algn: 4, Len 4
***   MEM Min: 0:000e0000, Max: 0:000e0fff, Algn: 1000, Len 1000
*** P INT Min: 3, Max: 3
      INT Min: 5, Max: 5
      INT Min: 7, Max: 7
      INT Min: a, Max: a
      INT Min: b, Max: b
      INT Min: c, Max: c
      INT Min: f, Max: f
First pass attempt at resource settings failed
Acquired Resourses - 3
    IO  Start 0:00000354, Len 4
    MEM Start 0:000e0000, Len 1000
    INT Level f, Vector f
+210mS TiNG d0: got port 354+4 assigned
+10mS TiNG d0: IRQ= L:15 V:15 A:00000000
+0mS TiNG driver: card at I/O address 0x354
+10mS TiNG driver: mapped to I/O 0x354

This shows that the driver has assigned various resources. The values may not make sense unless you know a lot about Microsoft Windows driver development, since Microsoft Windows uses various translations between the values it uses and those normally seen.

+10mS TiNG d0: serial number 's200087'

This is a useful line. It says that the first device (d0) has serial number 's200087'.

+10mS TiNG driver: card at mem address 0xe0000
+10mS TiNG driver: mapped to mem 0x0 0xe0000 @fca7a000
+10mS TiNG S2-s200087: device=ff8960e0
+10mS TiNG S2-s200087: Connected to IRQ 63 at IRQL 12
+10mS TiNG S2-s200087: S2 card ID:fd v3 sharcs:128k,128k,none,none

This line shows the type of hardware connected. There are four possible Prosody processors (referred to as 'sharcs'): two on the card iself and two more on modules. In this case only those on the card are fitted and they both have 128k of memory.

+10mS TiNG d0m0: absent -> reset
+10mS TiNG d0m0: reset -> booting
+10mS TiNG S2-s200087: s2_wr: win=0!
+10mS TiNG d0m0: Initialised module (@ff896240)
+10mS TiNG S2-s200087: card ID = fd
+0mS TiNG d0m1: absent -> reset
+10mS TiNG d0m1: reset -> booting
+10mS TiNG S2-s200087: s2_wr: win=0!
+10mS TiNG d0m1: Initialised module (@ff8af100)
S2-s200087: created symlink: \DosDevices\Prosody_s200087

This line shows the device name that has been created for referring to the card. The last part of this name is the name which you use to refer to the card when you use programs such as fwinfo.

RTL: \REGISTRY\Machine\System\ControlSet001\Services\TiNG\S2Card1 key not found - Status == c0000034 

Now the driver moves on to the next card, finding that there is no configuration for a second S2 card. Therefore it stops looking for S2 cards and moves on to the next type. The next type is PCI, which can be found automatically, so the driver scans the PCI bus:

+40mS TiNG driver: Found: 0:0:0 256: 8086 7100 0000 0000
+10mS TiNG driver: Found: 0:7:0 256: 8086 7110 0000 0000
+10mS TiNG driver: Found: 0:7:1 256: 8086 7111 0000 0000
+10mS TiNG driver: Found: 0:7:2 256: 8086 7112 0000 0000
+10mS TiNG driver: Found: 0:7:3 256: 8086 7113 0000 0000
+10mS TiNG driver: Found: 0:9:0 256: 1002 5654 5654 1002
+10mS TiNG driver: Found: 0:10:0 256: 1011 0009 1400 1109

These lines show the devices it found on the PCI bus. All Aculab cards will have '12d9' as the last number on each line. The actual fields are:

+20mS TiNG driver: driver loaded, 1 devices

This is the last initialisation line, which shows the total number of devices found.