1 / 18

IEEE-1394

IEEE-1394. Kashif Hasan Test Developer, NT Base Test Team. Agenda . IEEE-1394 Core Driver Stack Test Cases How To Report Bugs Debugging and Triage Tips Q & A. etc. Scanning. MSDV.SYS. Printing. IP1394. Storage. Driver. AVC.SYS. Stack. 61883.SYS. SBP2PORT.SYS.

Télécharger la présentation

IEEE-1394

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IEEE-1394 Kashif Hasan Test Developer, NT Base Test Team

  2. Agenda • IEEE-1394 Core Driver Stack • Test Cases • How To Report Bugs • Debugging and Triage Tips • Q & A

  3. etc. Scanning MSDV.SYS Printing IP1394 Storage Driver AVC.SYS Stack 61883.SYS SBP2PORT.SYS IRP-Based Interface 1394BUS.SYS IRP-Based Interface OHCI1394.SYS IEEE-1394 Core Stack Core Stack: 1394BUS.SYS, OHCI1394.SYS Client Drivers: 61883.SYS, AVC.SYS, SBP2PORT.SYS, Other 3rd-party Drivers, etc.

  4. 1394 Support in Windows • Inbox support for: • 61883 Devices (AVC command set and Tape and Camera Subunits) • SBP-2 Devices (using SCSI Command Set) • 1394 DCam (conferencing cameras) • IP (v4) over 1394

  5. Test Cases • Plug and Play • Hot-Plug / Hot-Unplug / Surprise Remove • Disable / Enable • Remove / Refresh • Power Management • S1, S3 and S4 System Power States • D0 and D3 System Power States • Data transfer while transition

  6. Test Cases (cont.) • 1394 Tests • Transmitting while generating bus resets • Enumerate and work with in-box class drivers • Verify Gap Counts optimizations • Interoperability • Multiple devices, Multiple PCs • Different tree topologies • Force various Root and Bus Manager node

  7. How To Report Bugs • Clear repro steps • What hardware is used, bus topology info • Version info (OS, hardware revision, firmware, etc.) • Expected behavior • How often does this repro? • Exact behavior which causes the issue • Identify which devices(s) cause this

  8. How To Report Bugs • Please Repro with Checked Binaries with debug spew and Driver Verifier Enabled • Regression / Repro Information • Is this new? (Regression Steps) • Did this happen in previous build, beta, OS ver? • Does this happen with other devices? • Other devices of same or other classes • Different Host Controller / Device Topology • How do we get the device?

  9. Debug and Triage Tips • Enabling debug spew • CHK drivers and matching symbols are required • ed ohci1394!ohcidebuglevel 2 • ed 1394bus!busdebuglevel 2 • Can use any level between 0 and 6 • Higher values result in more debug spew

  10. Sample Start Isochronous Listen Debug Spew Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x3 Ohci1394: BusMgmtCSRs: after op data=xffffffff, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=xfffffffe, sts=x0 Ohci1394: BusMgmtCSRs: cmp=xfffffffe, data=x7ffffffe, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=xfffffffe, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x7ffffffe, data=x7ffffffe, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=x7ffffffe, sts=x0 Ohci1394: IsoAllocCh: SUCCESS, ch=x0 Ohci1394: IsoAllocBw: speed used for calc 2 Ohci1394: IsoAllocBw: bw req=x5a0 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x1 Ohci1394: BusMgmtCSRs: after op data=x1333, sts=x0 Ohci1394: IsoAllocBw: bw req=x5a0, avail=x1333 Ohci1394: BusMgmtCSRs: cmp=x1333, data=xd93, regIndex=x1 Ohci1394: BusMgmtCSRs: after op data=x1333, sts=x0 Ohci1394: IsoAllocBw: SUCCESS, bw struct=xFF872518 Ohci1394: IOCtl: Got ISOCH_ALLOCATE_RESOURCES Ohci1394: IOCtl: alloc isoch res.DmaIndex=x7, heapLen=x1684 Ohci1394: IOCtl: alloc isoch res.MaxBufSize=x25800, numBufs=x9 Ohci1394: IOCtl: commonBufAddr=x80D2E000 Ohci1394: StartIo: irp=xFF985828, err=xc000009a Ohci1394: StartIo: got ISOCH_LISTEN for Dma 7

  11. Sample Stop Isochronous Listen Debug Spew Ohci1394: StartIo: ISOCH_STOP for dma=7 Ohci1394: HandleIsochInt: not streaming res=xFF8B2CF8 Ohci1394: StartIo: ISOCH_STOP for dma=7 Ohci1394: IOCtl: ISOCH_FREE_RESOURCE, res=xFF8B2CF8 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x3 Ohci1394: BusMgmtCSRs: after op data=xffffffff, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=x7ffffffe, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x7ffffffe, data=xfffffffe, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=x7ffffffe, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x1 Ohci1394: BusMgmtCSRs: after op data=xd93, sts=x0 Ohci1394: BusMgmtCSRs: cmp=xd93, data=x1333, regIndex=x1 Ohci1394: BusMgmtCSRs: after op data=xd93, sts=x0

  12. Sample Asychronous Access Debug Spew Ohci1394: IOCtl: Irp ff88e650, Irb ff87abc0 Ohci1394: AsyncStartIo: db=fc2a7500, node=x1, tLabel=x3b Ohci1394: Dpc: Int mask at start of DPC=20 Ohci1394: HandleAsyncRsp: recvd rsp tLabel=x3b, sts=x8451, rCode=x0 Ohci1394: HandleAsyncRsp: stale rsp rcvd - xmit list EMPTY Ohci1394: Dpc: Int mask at start of DPC=10 Ohci1394: HandleAsyncReq: indication for unified, tlabel=x2 Ohci1394: IOCtl: Irp ff88e650, Irb ff87abc0 Ohci1394: AsyncStartIo: db=fc2a7380, node=x1, tLabel=x3c Ohci1394: Dpc: Int mask at start of DPC=20 Ohci1394: HandleAsyncRsp: recvd rsp tLabel=x3c, sts=x8451, rCode=x0 Ohci1394: HandleAsyncRsp: stale rsp rcvd - xmit list EMPTY Ohci1394: Dpc: Int mask at start of DPC=10 Ohci1394: HandleAsyncReq: indication for unified, tlabel=x0

  13. Sample Debug Spew while Hot-Plugging a device 1394Bus : OptimizeTopo: gap count method=2 1394Bus : OptimizeTopo: selfIdCnt=3, delay=1155, gap=x9 1394Bus : OptimizeTopo: WinME/Win2K gap count would've been x9 1394Bus : OptimizeTopo: sending pkt, gapcnt=x9 Ohci1394: AsyncStartIo: raw pkt=xFC2A6110 1394Bus : HandleDevRels: bid=x80E87008, hiNodeId=x2, hiBmc=x0 1394Bus : HandleDevRels: ... hiCMC=x0, ourNodeId=x0 1394Bus : HandleDevRels: bid=x80E87008, send phyPkt & busRst to be IRM Ohci1394: AsyncStartIo: raw pkt=xFC2A6090 1394Bus : ForceRootCompl: phy pkt sent, now causing BUS RESET Ohci1394: BusReset: initiating bus reset.. Ohci1394: BusReset: gapCount=9 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, vdo=x80E85E18 1394Bus : Pnp: <x13> QUERY_ID, pdo=xFF88ACC0 1394Bus : FindDev: (bid=x80E87008) found b8a000500000 (pdo=FF88ACC0) 1394Bus : Pnp: <x87> ??, pdo=xFF88ACC0 1394Bus : Pnp: query DeviceId 1394Bus : Pnp: <x09> QUERY_CAPABILITIES, pdo=xFF88ACC0 1394Bus : Pnp: <x0c> QUERY_DEV_TEXT, pdo=xFF88ACC0 1394Bus : Pnp: <x13> QUERY_ID, pdo=xFF88ACC0 1394Bus : Pnp: query HardwareIds 1394Bus : Pnp: <x13> QUERY_ID, pdo=xFF88ACC0 1394Bus : Pnp: query CompatibleIds 1394Bus : Pnp: <x0b> QUERY_RESOURCE_REQS, pdo=xFF88ACC0 1394Bus : Pnp: <x15> QUERY_BUS_INFO, pdo=xFF88ACC0 1394Bus : Pnp: <x0a> QUERY_RESOURCES, pdo=xFF88ACC0 1394Bus : Pnp: <x18> QUERY_LEG_BUS_INFO, pdo=xFF88ACC0 1394Bus : Pnp: <x0b> QUERY_RESOURCE_REQS, pdo=xFF88ACC0 1394Bus : Pnp: <x0d> FILTER_RESOURCE_REQS, pdo=xFF88ACC0 1394Bus : Pnp: <x00> START_DEV, pdo=xFF88ACC0 1394Bus : WmiReg: devObj=xFF88ACC0, action=1, status=x0 1394Bus : Pnp: <x09> QUERY_CAPABILITIES, pdo=xFF88ACC0 1394Bus : Pnp: <x14> QUERY_PNP_DEV_STATE, pdo=xFF88ACC0 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, pdo=xFF88ACC0

  14. Sample Debug Spew while Hot-Unplugging a device Ohci1394: HandleBusReset: phy reset has started... Ohci1394: HandleBusReset: calling bus drv reset func 1394Bus : BusReset: (80e87008) START, curr generation=xc Ohci1394: FormTopoMap: selfIdCount=xc000c, idSize=3 Ohci1394: FormTopoMap: selfId = 568b4980 Ohci1394: FormTopoMap: found OWN selfId=x568b4980 Ohci1394: FormTopoMap: two or more devs rmvd at once, p 3, c 1!! Ohci1394: BusMgmtCSRs: cmp=x3f, data=x0, regIndex=x0 Ohci1394: BusMgmtCSRs: after op data=x3f, sts=x0 Ohci1394: FormTopoMap: done, busResetInfo=x80534910, map=x80E32008 1394Bus : ResetNotify: calling vdo=x80E85E18 1394Bus : BusReset: no nodes to enum, set dev rel inval timer Ohci1394: HandleAsyncReq: bus rst pkt found, cnt=x1 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x3 Ohci1394: BusMgmtCSRs: after op data=xffffffff, sts=x0 Ohci1394: BusMgmtCSRs: cmp=x0, data=x0, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=xffffffff, sts=x0 Ohci1394: BusMgmtCSRs: cmp=xffffffff, data=xfffffffe, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=xffffffff, sts=x0 Ohci1394: BusMgmtCSRs: cmp=xfffffffe, data=xfffffffe, regIndex=x2 Ohci1394: BusMgmtCSRs: after op data=xfffffffe, sts=x0 Ohci1394: IsoAllocCh: SUCCESS, req ch=x1f, avail=xffffffff 1394Bus : DefInvalTimeoutDpc: bid=x80E87008 invalidate dev rels 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, port_do=x80E2D028 1394Bus : DisableNonEnumDevs: (bid=x80E87008) disable pdo=x80E3B188 1394Bus : DisableNonEnumDevs: ...fl=x2, gen=xb, eui=b8a000500000 1394Bus : HandleDevRels: vdo=x80E2D028, relCount=x1 Ohci1394: PnP: unhandled irp ff883d10 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, pdo=x80E3B188 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, pdo=x80E3B188 1394Bus : FreeAddrRange: call port driver 1394Bus : Pnp: <x17> SURPRISE_REMOVAL, pdo=x80E3B188 1394Bus : WmiReg: devObj=x80E3B188, action=2, status=x0 1394Bus : Pnp: <x02> REMOVE_DEV, pdo=x80E3B188 1394Bus : Pnp: <x07> QUERY_DEV_RELATIONS, vdo=x80E85E18

  15. Accessing OHCI1394 Device Extension kd> !devnode 0 1 ohci1394 Dumping IopRootDeviceNode (= 0x80e53940) DevNode 0x80e99008 for PDO 0x80e963d0 InstancePath is "PCI\VEN_1106&DEV_3044&SUBSYS_30441106&REV_40\3&61aaa01&0&50" ServiceName is "ohci1394" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeEnumerateCompletion (0x30d) DevNode 0x80e30268 for PDO 0x80e85e18 InstancePath is "V1394\NIC1394\5345a00f40630a" ServiceName is "NIC1394" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeEnumerateCompletion (0x30d) DevNode 0xff8c52f8 for PDO 0xff88acc0 InstancePath is "1394\LSI&DISK\500000B8A000" ServiceName is "sbp2port" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeEnumerateCompletion (0x30d) DevNode 0xff894728 for PDO 0x80de13e0 InstancePath is "SBP2\LSI&DISK&LUN0\00a0b80000005000" ServiceName is "disk" State = DeviceNodeStarted (0x308) Previous State = DeviceNodeEnumerateCompletion (0x30d) kd> !devstack 0x80e963d0 !DevObj !DrvObj !DevExt ObjectName 80e2d028 \Driver\ohci1394 80e2d0e0 1394BUS0 > 80e963d0 \Driver\PCI 80e96488 NTPNP_PCI0005 !DevNode 80e99008 : DeviceInst is "PCI\VEN_1106&DEV_3044&SUBSYS_30441106&REV_40\3&61aaa01&0&50" ServiceName is "ohci1394"

  16. Accessing fields within the OHCI1394 Device Extension kd> dd 80e2d0e0 80e2d0e0 deafcafe kd> dd 80e2d0e0+0x11c 80e2d1fc 0000001f kd> dd 80e2d0e0+0x0e0 80e2d1c0 01010000 kd> dd 80e2d0e0+0x0e8 80e2d1c8 03ff0002 kd> dd 80e2d0e0+0x0ec 80e2d1cc 0000000e kd> dd 80e2d0e0+0x0f0 80e2d1d0 00000003 kd> dd 80e2d0e0+0x160 80e2d240 fc2a8800 kd> dd 0xfc2a8800 fc2a8800 000ee5c2 80498094 7fb67f6b 8109849c fc2a8810 7ef67b63 82498bd6 7db67429 83498bd6 fc2a8820 7cb67429 00000000 00000000 00000000 kd> dd 80e2d0e0+0x108 80e2d1e8 00000008 kd> dd 80e2d0e0+0x10c 80e2d1ec 00000008 kd> dd 80e2d0e0+0x168 80e2d248 000000a0 kd> dd 80e2d0e0+0x164 80e2d244 fc2a9000 kd> dd fc2a9000 fc2a9000 64a80404 34393331 0c9000f0 0a634000 OHCI Tag tLabel OHCI Version Register BusID and NodeID Current Generation Node Count Self-ID Buffer Contents of Self-ID Buffer Max Isoch Tx DMA Contexts Max Isoch Rx DMA Contexts Config ROM Length Config ROM Buffer Config ROM Contents

  17. Call To Action • Send questions about 1394 to 1394@microsoft.com • More information at http://www.microsoft.com/hwdev/1394 • 1394 Trade Association http://www.1394ta.org • Participate in Plugfests

  18. Questions?

More Related