Hi, I am developing a 1394 device driver which is now working quite well. However as soon as I share the bus with other devices I get all sorts of weird behaviour.
For example I have a system hang which I have discovered is a loop in OHCI1394.SYS.
Can anyone suggest how to determine further what might be happening? In particular is there anyone who was involved with the 1394 bus driver reading this who might know what this loop is for?
(I’m a bit worried about it passing a test for 0ABADBEEFh - but is this a magic flag known to the 1394 writers?)
Many thanks, Mike
the infinite loop:
ohci1394!OhciHandleIsochInt+0x1bb:
f74ed597 747e je ohci1394!OhciHandleIsochInt+0x23b (f74ed617)
ohci1394!OhciHandleIsochInt+0x23b:
f74ed617 3975e8 cmp dword ptr [ebp-18h],esi
ohci1394!OhciHandleIsochInt+0x23e:
f74ed61a 0f85cffeffff jne ohci1394!OhciHandleIsochInt+0x113 (f74ed4ef)
ohci1394!OhciHandleIsochInt+0x113:
f74ed4ef 8b45e8 mov eax,dword ptr [ebp-18h]
ohci1394!OhciHandleIsochInt+0x116:
f74ed4f2 8b774c mov esi,dword ptr [edi+4Ch]
ohci1394!OhciHandleIsochInt+0x119:
f74ed4f5 85f6 test esi,esi
ohci1394!OhciHandleIsochInt+0x11b:
f74ed4f7 0f8423010000 je ohci1394!OhciHandleIsochInt+0x244 (f74ed620)
ohci1394!OhciHandleIsochInt+0x121:
f74ed4fd 817e10efbeadab cmp dword ptr [esi+10h],0ABADBEEFh
ohci1394!OhciHandleIsochInt+0x128:
f74ed504 0f8516010000 jne ohci1394!OhciHandleIsochInt+0x244 (f74ed620)
ohci1394!OhciHandleIsochInt+0x12e:
f74ed50a 8b4e08 mov ecx,dword ptr [esi+8]
ohci1394!OhciHandleIsochInt+0x131:
f74ed50d 83e908 sub ecx,8
ohci1394!OhciHandleIsochInt+0x134:
f74ed510 3bf0 cmp esi,eax
ohci1394!OhciHandleIsochInt+0x136:
f74ed512 894f4c mov dword ptr [edi+4Ch],ecx
ohci1394!OhciHandleIsochInt+0x139:
f74ed515 7504 jne ohci1394!OhciHandleIsochInt+0x13f (f74ed51b)
ohci1394!OhciHandleIsochInt+0x13f:
f74ed51b 8b4e28 mov ecx,dword ptr [esi+28h]
ohci1394!OhciHandleIsochInt+0x142:
f74ed51e 85c9 test ecx,ecx
ohci1394!OhciHandleIsochInt+0x144:
f74ed520 0f84fa000000 je ohci1394!OhciHandleIsochInt+0x244 (f74ed620)
ohci1394!OhciHandleIsochInt+0x14a:
f74ed526 f6471c04 test byte ptr [edi+1Ch],4
ohci1394!OhciHandleIsochInt+0x14e:
f74ed52a 8bc1 mov eax,ecx
ohci1394!OhciHandleIsochInt+0x150:
f74ed52c 668b500e mov dx,word ptr [eax+0Eh]
ohci1394!OhciHandleIsochInt+0x154:
f74ed530 0fb7580c movzx ebx,word ptr [eax+0Ch]
ohci1394!OhciHandleIsochInt+0x158:
f74ed534 740e je ohci1394!OhciHandleIsochInt+0x168 (f74ed544)
ohci1394!OhciHandleIsochInt+0x168:
f74ed544 807dff00 cmp byte ptr [ebp-1],0
ohci1394!OhciHandleIsochInt+0x16c:
f74ed548 7422 je ohci1394!OhciHandleIsochInt+0x190 (f74ed56c)
ohci1394!OhciHandleIsochInt+0x16e:
f74ed54a 837e2401 cmp dword ptr [esi+24h],1
ohci1394!OhciHandleIsochInt+0x172:
f74ed54e 7610 jbe ohci1394!OhciHandleIsochInt+0x184 (f74ed560)
ohci1394!OhciHandleIsochInt+0x174:
f74ed550 8b4628 mov eax,dword ptr [esi+28h]
ohci1394!OhciHandleIsochInt+0x177:
f74ed553 668b48fe mov cx,word ptr [eax-2]
ohci1394!OhciHandleIsochInt+0x17b:
f74ed557 0fb740fc movzx eax,word ptr [eax-4]
ohci1394!OhciHandleIsochInt+0x17f:
f74ed55b 8945e4 mov dword ptr [ebp-1Ch],eax
ohci1394!OhciHandleIsochInt+0x182:
f74ed55e eb02 jmp ohci1394!OhciHandleIsochInt+0x186 (f74ed562)
ohci1394!OhciHandleIsochInt+0x186:
f74ed562 6685d2 test dx,dx
ohci1394!OhciHandleIsochInt+0x189:
f74ed565 7532 jne ohci1394!OhciHandleIsochInt+0x1bd (f74ed599)
ohci1394!OhciHandleIsochInt+0x18b:
f74ed567 6685c9 test cx,cx
ohci1394!OhciHandleIsochInt+0x18e:
f74ed56a eb2b jmp ohci1394!OhciHandleIsochInt+0x1bb (f74ed597)
ohci1394!OhciHandleIsochInt+0x1bb:
f74ed597 747e je ohci1394!OhciHandleIsochInt+0x23b (f74ed617)