!usb3kd.xhci_findowner
La commande !usb3kd.xhci_findowner recherche le propriétaire d’une mémoire tampon commune.
!usb3kd.xhci_findowner Address
Paramètres
Adresse
Adresse virtuelle ou physique d’une mémoire tampon commune.
DLL
Usb3kd.dll
Notes
Une mémoire tampon commune est un bloc de mémoire physiquement contiguë et adressable par le matériel. La pile de pilotes USB 3.0 utilise des mémoires tampon communes pour communiquer avec les contrôleurs hôtes USB 3.0. Imaginons que le système se bloque et que vous rencontrez une adresse que vous pensez être la mémoire tampon commune. Si l’adresse est la mémoire tampon commune, cette commande vous indique le contrôleur hôte USB 3.0 auquel appartient la mémoire (si vous avez plusieurs contrôleurs USB 3.0) et ce pour quoi la mémoire est utilisée.
Exemples
L’exemple suivant appelle !xhci_resourceusage pour lister les adresses de certaines mémoires tampons communes.
0: kd> !usb3kd.xhci_resourceusage 0x867fbff0
## Dumping CommonBuffer Resources
------------------------------
dt USBXHCI!_COMMON_BUFFER_DATA 0x868d61c0
DmaEnabler:!wdfdmaenabler 0x79729fe8
CommonBuffers Large: Total 8 Available 2 Used 6 TotalBytes 32768
[ 1] dt _TRACKING_DATA 0x868d73a4 VA 0x868e0000 LA 0xdb2e0000 -- Owner 0x86801690 Tag: Int2 Size 4096
[ 2] dt _TRACKING_DATA 0x868d6d1c VA 0x868e1000 LA 0xdb2e1000 -- Owner 0x86801690 Tag: Int2 Size 4096
[ 3] dt _TRACKING_DATA 0x868d6c54 VA 0x868e2000 LA 0xdb2e2000 -- Owner 0x86801690 Tag: Int2 Size 4096
[ 4] dt _TRACKING_DATA 0x868d6b8c VA 0x868e3000 LA 0xdb2e3000 -- Owner 0x86801690 Tag: Int2 Size 4096
[ 5] dt _TRACKING_DATA 0x868d67b4 VA 0x868e5000 LA 0xdb2e5000 -- Owner 0x86801548 Tag: Slt1 Size 4096
[ 6] dt _TRACKING_DATA 0x868d50b4 VA 0x868e6000 LA 0xdb2e6000 -- Owner 0x86801548 Tag: Slt3 Size 4096
CommonBuffers Small: Total 16 Available 13 Used 3 TotalBytes 8192
[ 1] dt _TRACKING_DATA 0x868d6974 VA 0x868e4000 LA 0xdb2e4000 -- Owner 0x86801690 Tag: Int1 Size 512
[ 2] dt _TRACKING_DATA 0x868d69a4 VA 0x868e4200 LA 0xdb2e4200 -- Owner 0x86801548 Tag: Slt2 Size 512
[ 3] dt _TRACKING_DATA 0x868d69d4 VA 0x868e4400 LA 0xdb2e4400 -- Owner 0x86801488 Tag: Cmd1 Size 512
L’une des adresses virtuelles listées dans la sortie précédente est 0x868e2000. L’exemple suivant transmet cette adresse à !xhci_findowner. L’une des adresses physiques listées dans la sortie précédente est 0xdb2e4400. L’exemple suivant transmet 0xdb2e4440 (compensation de 0x40 octets de 0xdb2e4400) à !xhci_findowner.
0: kd> !xhci_findowner 0x868e2000
!xhci_info 0x867fbff0 Texas Instruments - PCI: VendorId 0x104c DeviceId 0x8241 RevisionId 0x02
dt _TRACKING_DATA 0x868d6c54 VA 0x868e2000 LA 0xdb2e2000 -- Owner 0x86801690 Tag: Int2 Size 4096
dt _INTERRUPTER_DATA 0x86801690
!xhci_eventring 0x867fbff0 <-- This memory is used for event ring.
0: kd> !xhci_findowner 0xdb2e4440 <-- Note the offset difference.
!xhci_info 0x867fbff0 Texas Instruments - PCI: VendorId 0x104c DeviceId 0x8241 RevisionId 0x02
dt _TRACKING_DATA 0x868d69d4 VA 0x868e4400 LA 0xdb2e4400 -- Owner 0x86801488 Tag: Cmd1 Size 512
dt _COMMAND_DATA 0x86801488
!xhci_commandring 0x867fbff0 <-- This memory is used for command ring.
La commande !xhci_findowner est particulièrement utile lorsque vous avez une adresse dans un bloc de requêtes de transfert (TRB) et que vous souhaitez déterminer l’emplacement de l’appareil auquel il appartient. Dans l’exemple suivant, l’une des adresses listées dans la sortie de !xhci_transferring est 0xda452230, qui correspond à l'adresse physique d'un TRB. L’exemple transmet cette adresse à !xhci_findowner. La sortie indique que le TRB appartient à l’emplacement d’appareil 8 (!xhci_deviceslots 0x8551d370 8).
0: kd> !usb3kd.xhci_transferring 0x87652200
[ 0] NORMAL 0xda452200 CycleBit 1 IOC 0 BEI 0 InterrupterTarget 2 TransferLength 6 TDSize 0
[ 1] EVENT_DATA 0xda452210 CycleBit 1 IOC 1 BEI 0 InterrupterTarget 2 Data 0x8511375c TotalBytes 6
[ 2] NORMAL 0xda452220 CycleBit 1 IOC 0 BEI 0 InterrupterTarget 2 TransferLength 6 TDSize 0
[ 3] EVENT_DATA 0xda452230 CycleBit 1 IOC 1 BEI 0 InterrupterTarget 2 Data 0x857d076c TotalBytes 6
0: kd> !xhci_findowner 0xda452230
!xhci_info 0x8551d370 Renesas - PCI: VendorId 0x1912 DeviceId 0x0015 RevisionId 0x02 Firmware 0x0020.0006
dt _TRACKING_DATA 0x8585fd5c VA 0x87652200 LA 0xda452200 -- Owner 0x85894548 Tag: Rng1 Size 512
!xhci_deviceslots 0x8551d370 8
[0] dt _TRANSFERRING_DATA 0x85894548 Events: 0x0 TransferRingState_Idle
------------------------------------------------------------------------------
WdfQueue: !wdfqueue 0x7a76bcb0 (0 waiting)
CurrentRingBufferData: VA 0x87652200 LA 0xda452200 !wdfcommonbuffer 0x7a7a0370 Size 512
Current: !xhci_transferring 0x87652200
PendingTransferList:
[0] dt _TRANSFER_DATA 0x851136f0 !urb 0x84e55468 !wdfrequest 0x7aeec9e8 TransferState_Pending
[1] dt _TRANSFER_DATA 0x857d0700 !urb 0x85733be8 !wdfrequest 0x7a82f9d8 TransferState_Pending