Analyse des pilotes bloqués et des Time-Outs
Lors du débogage d’un pilote miniport SCSI, les trois causes les plus courantes pour les blocages et les délais d’attente sont les suivantes :
Le DPC miniport SCSI n’est pas en cours d’exécution
Le miniport SCSI ne parvient pas à demander la requête suivante
Une requête n’est pas effectuée par le miniport SCSI, généralement parce qu’il attend des registres de carte.
Si vous pensez que le DPC miniport SCSI n’est pas en cours d’exécution, utilisez !pcr pour afficher la file d’attente DPC pour le processeur actuel. Si la routine DPC de port SCSI se trouve dans la file d’attente DPC, placez un point d’arrêt sur cette routine pour déterminer si cette routine est appelée. Sinon, utilisez !scsikd.scsiext sur chaque appareil. Considérez l’exemple de sortie suivant de l’extension !scsikd.scsiext :
0: kd> !scsikd.scsiext 86353040
Common Extension:
< ..omitted.. >
Logical Unit Extension:
Address (3, 0, 1, 0) Claimed Enumerated Visible
LuFlags (0x00000000):
Retry 0x00 Key 0x008889ff
Lock 0x00000000 Pause 0x00000000 CurrentLock: 0x00000000
HwLuExt 0x862e6f00 Adapter 0x8633db28 Timeout 0x0000000a
NextLun 0x00000000 ReadyLun 0x00000000
Pending 0x00000000 Busy 0x00000000 Untagged 0x00000000
. . .
Request list @0x86353200:
Tick count is 2526
SrbData 8615d700 Srb 8611f4fc Irp 8611f2b8 Key 60197 <1s
SrbData 85e72868 Srb 86100c3c Irp 861009f8 Key e29dc7 <1s
Si le créneau de délai d’expiration est -1 et que l’emplacement non marqué est différent de zéro, ou si l’emplacement de délai d’attente est différent de zéro et que des demandes sont affichées, le miniport n’a pas pu demander la requête suivante.
Sinon, si l’emplacement de nouvelle tentative et l’emplacement occupé sont différents de zéro, une demande peut ne pas être effectuée par le miniport SCSI, car il attend des registres de carte. De même, si les emplacements non marqués et en attente sont différents de zéro, le miniport SCSI peut attendre des registres de carte. Dans les deux cas, l’adresse du bloc de requête SCSI (SRB) est l’adresse dans l’emplacement occupé et l’adresse de la demande qui n’est pas terminée. Pour plus d’informations sur le SRB, utilisez l’extension !minipkd.srb avec cette adresse comme entrée.
L’extension !devobj détermine si le miniport SCSI attend des registres de carte. Utilisez l’adresse de l’objet d’appareil de l’appareil qui émet la demande en tant qu’entrée à !devobj. Si l’IRQ actuelle est différente de zéro, il est très probable que le miniport SCSI attend des registres cartographiques.