blob: 6bec0934a99807e07e4d443f231f4f4dfce8b98b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/*++
Copyright (c) 2017 Microsoft Corporation
Module Name:
data.h
Abstract:
Definitions needed by storahci log/diagnostic function.
Author:
--*/
#pragma once
//
// Diagnostic data definitions for STORAHCI
//
#define MAX_EXECUTION_HISTORY_ENTRY_COUNT 200 // 200 entries take up 20KB
typedef struct _SLOT_MANAGER {
ULONG HighPriorityAttribute;
ULONG NCQueueSlice;
ULONG NormalQueueSlice;
ULONG SingleIoSlice;
ULONG CommandsIssued;
ULONG CommandsToComplete;
//
// These issued slices are used to determine the type of command
// being programmed to adapter.
// They are used instead of reading PxCI and PxSACT.
//
ULONG NCQueueSliceIssued;
ULONG NormalQueueSliceIssued;
ULONG SingleIoSliceIssued;
ULONG Reserved;
} SLOT_MANAGER, *PSLOT_MANAGER;
typedef struct _EXECUTION_HISTORY {
ULONG Function;
ULONG IS;
SLOT_MANAGER SlotManager; //SLOT_MANAGER from _AHCI_CHANNEL_EXTENSION
ULONG Px[0x10]; //Px registers value, end to AHCI_SNOTIFICATION -- SNTF
LARGE_INTEGER TimeStamp;
} EXECUTION_HISTORY, *PEXECUTION_HISTORY;
typedef struct _ATA_IO_RECORD {
ULONG SuccessCount;
ULONG CrcErrorCount;
ULONG MediaErrorCount;
ULONG EndofMediaCount;
ULONG IllegalCommandCount;
ULONG AbortedCommandCount;
ULONG DeviceFaultCount;
ULONG OtherErrorCount;
ULONG NcqReadLogErrorCount; // used to record the READ LOG EXT command error count when used for NCQ Error Recovery.
ULONG PortDriverResetCount;
ULONG TotalResetCount;
} ATA_IO_RECORD, *PATA_IO_RECORD;
typedef struct _STORAGE_DIAGNOSTIC_AHCI_EXECUTION_HISTORY {
ULONG ExecutionHistoryCount;
ULONG ExecutionHistoryIndex;
EXECUTION_HISTORY History[MAX_EXECUTION_HISTORY_ENTRY_COUNT];
} STORAGE_DIAGNOSTIC_AHCI_EXECUTION_HISTORY, *PSTORAGE_DIAGNOSTIC_AHCI_EXECUTION_HISTORY;
typedef struct _STORAGE_DIAGNOSTIC_AHCI_DATA {
ULONG Version;
ULONG Count;
STORAGE_DIAGNOSTIC_AHCI_EXECUTION_HISTORY ExecutionHistory;
AHCI_PORT Registers;
ATA_IO_RECORD IoRecord;
} STORAGE_DIAGNOSTIC_AHCI_DATA, *PSTORAGE_DIAGNOSTIC_AHCI_DATA;
|