ReactOS 0.4.17-dev-1281-g065abb3
hubsm.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS USB Hub Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Hub state machine
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
11
12class HubFdo;
13
14enum class HubEvent : UCHAR
15{
16 /* PnP and power requests, wait until the current state takes requests */
21 D0Entry,
23 D0Exit,
27
28 /* Completions of work the machine started */
39
40 /* From the port and device machines */
49
50 /* Control transfer and pipe reset completions, taken even in critical only states */
55
56 /* Handed to the caller by SmReturn, never posted */
59
60 Count
61};
62
63enum class HubKind : UCHAR
64{
65 Root,
66 Usb20,
67 Usb30
68};
69
71enum class HubCheck : UCHAR
72{
73 No,
74 Yes,
75 Error
76};
77
79enum class HubChange : UCHAR
80{
81 None,
86 Error
87};
88
89class HubMachine : public SmMachine<HubMachine, HubEvent>
90{
91 friend class SmMachine<HubMachine, HubEvent>;
92
93public:
94 VOID
97 _In_ HubKind Kind);
98
99 HubFdo*
100 Hub() const
101 {
102 return m_Hub;
103 }
104
105 static const SM_EVENT_INFO EventInfo[];
106
107private:
109 enum class Teardown : UCHAR
110 {
111 Recover,
112 Fatal,
113 Stop,
115 Suspend,
117 };
118
120 enum class PowerUp : UCHAR
121 {
122 Start,
123 PostReset,
124 Resume,
128 };
129
131 enum class DromPhase : UCHAR
132 {
133 Header,
134 Full
135 };
136
138 enum class StatusRead : UCHAR
139 {
140 Change,
143 };
144
146
147 /* States */
149 static const State Unconfigured;
151 static const State Configuring;
152 static const State Reconfiguring;
153 static const State DromRead;
158 static const State DromReadingWord;
159 static const State QueryingErrata;
160 static const State AwaitingD0;
161 static const State Down;
162 static const State Stopped;
165 static const State AwaitingStop;
166 static const State SurpriseRemoved;
167 static const State Deleted;
168 static const State PortsAcquiring;
170 static const State Listening;
171 static const State NotListening;
174 static const State AckingHubChange;
176 static const State ResettingPipe;
182 static const State PortsReleasing;
183 static const State PortsResetting;
186 static const State Halted;
187 static const State HubResetting;
188 static const State LoggingReset;
194 static const State Asleep;
195 static const State Suspended;
199
200 /* Called: hub descriptor and configuration for external hubs */
208
209 /* Called: root hub information from the controller */
213
214 /* Called: hub depth for USB 3 hubs */
216
217 static const HubEvent ResetDiscards[];
218
219 /* Engine hooks */
220 VOID
221 SmReference();
222
223 VOID
225
226 VOID
228
229 /* Handlers */
267 OnDown(
270 OnStopped(
351 OnAsleep(
398
399 /* Entry actions */
429
430 /* Helpers */
433 FailStart(
434 _In_ BOOLEAN FirstStart);
437 _In_ const State* Next);
444 _In_ PowerUp Kind);
447 _In_ StatusRead Purpose);
455 _In_ BOOLEAN ClearPipeResets);
465 _In_ const State* ReturnTo);
470 _In_ PowerUp Kind);
471
472 /* Actions, implemented by the hub object */
490 VOID
492 _In_ BOOLEAN HardwareError);
496 VOID
498 _In_ BOOLEAN FullLength);
524 VOID ResetHub();
533 VOID
536 VOID
542 VOID
546
547 /* Queries, implemented by the hub object */
570 BOOLEAN
573
587};
unsigned char BOOLEAN
Definition: actypes.h:127
NTSTATUS ReadStatus
Definition: bootdev.cpp:134
Definition: fdo.h:132
SM_RESULT OnAckingHubChange(_In_ HubEvent Event)
Definition: hubsm.cpp:1029
static const State ReadingConfigDescriptor
Definition: hubsm.h:204
VOID BugcheckBootHub()
Definition: fdo.cpp:1253
static const State Listening
Definition: hubsm.h:170
SM_RESULT SendInterrupt(_In_ BOOLEAN ClearPipeResets)
Definition: hubsm.cpp:966
SM_RESULT EnterSettingConfiguration()
Definition: hubsm.cpp:1720
SM_RESULT OnAwaitingOverCurrentTimer(_In_ HubEvent Event)
Definition: hubsm.cpp:1089
VOID SignalPnpEvent()
Definition: fdo.cpp:1222
static const State AwaitingReleaseAfterFailure
Definition: hubsm.h:164
static const State Deleted
Definition: hubsm.h:167
SM_RESULT OnAsleep(_In_ HubEvent Event)
Definition: hubsm.cpp:1493
VOID QueueSuspendToDevices()
Definition: fanout.cpp:938
VOID QueueResumeInS0ToDevices()
Definition: fanout.cpp:962
const State * m_PortStatusReturn
Definition: hubsm.h:579
VOID ReleasePowerReference()
Definition: fdo.cpp:1216
SM_RESULT EnterReconfiguring()
Definition: hubsm.cpp:379
VOID ArmResetRetryTimer()
Definition: fdo.cpp:1318
SM_RESULT EnterReadingHubDescriptor()
Definition: hubsm.cpp:1587
SM_RESULT OnAwaitingAddDevice(_In_ HubEvent Event)
Definition: hubsm.cpp:295
SM_RESULT StoreDromWordAndContinue()
Definition: hubsm.cpp:640
SM_RESULT OnAwaitingReleaseHardware(_In_ HubEvent Event)
Definition: hubsm.cpp:709
SM_RESULT ResumeResetFailed()
Definition: hubsm.cpp:1431
SM_RESULT EnterFinishingConfiguration()
Definition: hubsm.cpp:1747
BOOLEAN PortInterruptRefsReleased()
Definition: fanout.cpp:859
VOID QueueResumeToDevices()
Definition: fanout.cpp:956
VOID UpdateControllerHubInfo()
Definition: ucxlink.cpp:421
VOID ReadDromRegister(_In_ USHORT Register)
Definition: hubdrom.cpp:134
VOID ClearPipeResetCount()
Definition: fdo.cpp:1344
SM_RESULT OnResettingPipe(_In_ HubEvent Event)
Definition: hubsm.cpp:1099
HubChange LostHubChange()
Definition: hubreq.cpp:639
SM_RESULT EnterReadingStandardStatus()
Definition: hubsm.cpp:1634
VOID InitializeResetCount()
Definition: fdo.cpp:1338
BOOLEAN WasResetByParent()
Definition: upstream.cpp:400
SM_RESULT OnReconfiguring(_In_ HubEvent Event)
Definition: hubsm.cpp:388
VOID InitializeDescriptorRetries()
Definition: fdo.cpp:1350
BOOLEAN RecoveryLimitReached()
Definition: fdo.cpp:1391
ULONG MailboxValue()
Definition: hubdrom.cpp:120
static const State ResettingOnResume
Definition: hubsm.h:191
DromPhase m_DromPhase
Definition: hubsm.h:585
VOID GetRootHub20Ports()
Definition: ucxlink.cpp:212
SM_RESULT EnterReconfiguringAfterResume()
Definition: hubsm.cpp:1440
VOID ReleaseDromBuffer()
Definition: hubdrom.cpp:178
SM_RESULT OnReadingStandardStatus(_In_ HubEvent Event)
Definition: hubsm.cpp:1641
BOOLEAN IsDromReadWanted()
Definition: hubdrom.cpp:114
static const State LoggingReset
Definition: hubsm.h:188
VOID ParseDromIdentity()
Finds the router identity entry of a version 1 DROM, bounds checking each entry.
Definition: hubdrom.cpp:201
SM_RESULT HandleHubStatusFault()
Definition: hubsm.cpp:1071
VOID GetRootHub30Ports()
Definition: ucxlink.cpp:296
static const State PortsResetting
Definition: hubsm.h:183
SM_RESULT EnterReconfiguringAfterReset()
Definition: hubsm.cpp:1389
SM_RESULT OnUpdatingController(_In_ HubEvent Event)
Definition: hubsm.cpp:1703
ULONG DromDataLength()
Definition: hubdrom.cpp:126
static const State DromRead
Definition: hubsm.h:153
SM_RESULT OnSurpriseRemoved(_In_ HubEvent Event)
Definition: hubsm.cpp:754
VOID ResetHub()
Definition: upstream.cpp:301
PowerUp m_PowerUp
Definition: hubsm.h:577
VOID QueueSurpriseRemovalToPorts()
Definition: fanout.cpp:908
static const State ProgrammingHubDepth
Definition: hubsm.h:215
VOID GetHubDescriptor()
Definition: hubreq.cpp:357
static const State AwaitingStop
Definition: hubsm.h:165
static const State AwaitingInterruptRefs
Definition: hubsm.h:179
VOID QueueFakeStatusChangeToPorts()
Definition: fanout.cpp:926
static const State ReadingRootHub20Ports
Definition: hubsm.h:211
VOID SmDereference()
Definition: hubsm.cpp:281
SM_RESULT QuiesceWithoutInterrupt(_In_ Teardown Reason)
Definition: hubsm.cpp:1138
SM_RESULT OnAwaitingDescriptorRetry(_In_ HubEvent Event)
Definition: hubsm.cpp:1624
SM_RESULT OnReconfiguringAfterResume(_In_ HubEvent Event)
Definition: hubsm.cpp:1446
BOOLEAN CacheConfigDescriptor()
Definition: hubreq.cpp:489
static const State HubResetting
Definition: hubsm.h:187
SM_RESULT EnterConfiguring()
Definition: hubsm.cpp:351
SM_RESULT OnDromSendingCommand(_In_ HubEvent Event)
Definition: hubsm.cpp:554
VOID StartStatusChangeRead()
Definition: hubreq.cpp:705
VOID QueryControllerInfo()
Definition: ucxlink.cpp:150
static const State CancelingInterrupt
Definition: hubsm.h:178
SM_RESULT EnterReportingFailure()
Definition: hubsm.cpp:1302
SM_RESULT CheckDromStatus()
Definition: hubsm.cpp:583
SM_RESULT EnterUpdatingController()
Definition: hubsm.cpp:1696
VOID SelectHubConfiguration()
Definition: upstream.cpp:128
SM_RESULT EnterDromReadingFirstStatus()
Definition: hubsm.cpp:501
SM_RESULT OnStopped(_In_ HubEvent Event)
Definition: hubsm.cpp:692
static const State NotListening
Definition: hubsm.h:171
VOID StartDescriptorRetryTimer()
Definition: fdo.cpp:1330
VOID SmReference()
Definition: hubsm.cpp:275
SM_RESULT EnterReadingRootHubInfo()
Definition: hubsm.cpp:1765
static const State DromReadingFirstStatus
Definition: hubsm.h:154
SM_RESULT HandleHubChange(_In_ HubChange Change)
None comes only from the lost change query, Error only from the pending one.
Definition: hubsm.cpp:1050
VOID AcquirePowerReference()
Definition: fdo.cpp:1210
static const State DrainingInterruptRefs
Definition: hubsm.h:177
VOID QueryErrataFlags()
SM_RESULT StartDromOrSkip(_In_ const State *Next)
Reads the router DROM through the vendor mailbox; no failure here fails the start.
Definition: hubsm.cpp:473
static const State QueryingParentInfo
Definition: hubsm.h:150
VOID UseDromHeaderBuffer()
Definition: hubdrom.cpp:150
static const State Halted
Definition: hubsm.h:186
StatusRead
Definition: hubsm.h:139
SM_RESULT EnterLoggingReset()
Definition: hubsm.cpp:1346
SM_RESULT EnterDromReadingWord()
Definition: hubsm.cpp:622
SM_RESULT OnSuspendedResetPending(_In_ HubEvent Event)
Definition: hubsm.cpp:1564
static const State Down
Definition: hubsm.h:161
VOID QueueSuspendToPorts()
Definition: fanout.cpp:902
VOID QueueStatusChangeToPorts()
Definition: fanout.cpp:920
SM_RESULT OnReadingHubStatus(_In_ HubEvent Event)
Definition: hubsm.cpp:987
SM_RESULT OnConfiguring(_In_ HubEvent Event)
Definition: hubsm.cpp:362
SM_RESULT OnAwaitingReleaseAfterFailure(_In_ HubEvent Event)
Definition: hubsm.cpp:720
BOOLEAN m_ReleaseToUnconfigured
Definition: hubsm.h:580
VOID QueueResetToPorts()
Definition: fanout.cpp:914
static const State AwaitingAddDevice
Definition: hubsm.h:148
VOID AckHubChange()
Definition: hubreq.cpp:348
BOOLEAN IsErrorFatal()
Definition: hubreq.cpp:651
HubFdo * m_Hub
Definition: hubsm.h:574
static const State AckingHubChange
Definition: hubsm.h:174
static const State CheckingRecoveryLimit
Definition: hubsm.h:184
SM_RESULT EnterDromReadingStatus()
Definition: hubsm.cpp:565
SM_RESULT EnterAwaitingDescriptorRetry()
Definition: hubsm.cpp:1617
BOOLEAN m_FullConfigRead
Definition: hubsm.h:581
VOID GetStandardStatus()
Definition: hubreq.cpp:388
SM_RESULT OnReconfiguringAfterReset(_In_ HubEvent Event)
Definition: hubsm.cpp:1396
SM_RESULT StartDromWords()
The DWORD count is rounded up from the total size, not from the length field.
Definition: hubsm.cpp:600
static const State DromWritingMetadata
Definition: hubsm.h:155
static const State PortsReleasing
Definition: hubsm.h:182
VOID LogResetRecovery()
Definition: fdo.cpp:1266
SM_RESULT EnterQueryingParentInfo()
Definition: hubsm.cpp:327
static const State Configuring
Definition: hubsm.h:151
VOID GetHubStatus()
Definition: hubreq.cpp:397
static const State DromSendingCommand
Definition: hubsm.h:156
static const State QueryingErrata
Definition: hubsm.h:159
VOID ReferenceHub()
Definition: fdo.cpp:1190
SM_RESULT OnResettingOnResume(_In_ HubEvent Event)
Definition: hubsm.cpp:1413
SM_RESULT OnAwaitingInterruptRefs(_In_ HubEvent Event)
Definition: hubsm.cpp:1201
SM_RESULT CallHubDepthOr(_In_ PowerUp Kind)
Definition: hubsm.cpp:1379
SM_RESULT OnProgrammingHubDepth(_In_ HubEvent Event)
Definition: hubsm.cpp:1847
SM_RESULT OnNotListening(_In_ HubEvent Event)
Definition: hubsm.cpp:907
VOID GetConfigDescriptor(_In_ BOOLEAN FullLength)
Definition: hubreq.cpp:417
VOID SmQueuePassive()
Definition: hubsm.cpp:287
static const State Stopped
Definition: hubsm.h:162
static const State Unconfigured
Definition: hubsm.h:149
BOOLEAN ConfigDescriptorTruncated()
Definition: hubreq.cpp:478
SM_RESULT OnDevicesReleasing(_In_ HubEvent Event)
Definition: hubsm.cpp:1221
SM_RESULT OnReadingConfigDescriptor(_In_ HubEvent Event)
Definition: hubsm.cpp:1670
SM_RESULT OnReadingRootHubInfo(_In_ HubEvent Event)
Definition: hubsm.cpp:1773
BOOLEAN DescriptorRetriesExhausted()
Definition: fdo.cpp:1380
SM_RESULT OnCancelingInterrupt(_In_ HubEvent Event)
Definition: hubsm.cpp:1191
static const State ReadingRootHubInfo
Definition: hubsm.h:210
static const State ReadingStandardStatus
Definition: hubsm.h:203
VOID GetParentInfo()
Definition: upstream.cpp:378
static const State DromReadingStatus
Definition: hubsm.h:157
SM_RESULT OnReadingRootHub20Ports(_In_ HubEvent Event)
Definition: hubsm.cpp:1797
static const State Reconfiguring
Definition: hubsm.h:152
SM_RESULT OnReadingPortStatus(_In_ HubEvent Event)
Definition: hubsm.cpp:947
VOID QueueStopToDevices()
Definition: fanout.cpp:932
static const State ResettingPipe
Definition: hubsm.h:176
SM_RESULT OnReadingHubDescriptor(_In_ HubEvent Event)
Definition: hubsm.cpp:1594
static const State AwaitingStopAfterSuspend
Definition: hubsm.h:198
SM_RESULT EnterReadingConfigDescriptor()
Definition: hubsm.cpp:1662
static const State RecycleSuspended
Definition: hubsm.h:196
static const State SettingConfiguration
Definition: hubsm.h:206
HubCheck CheckHubChangeBit()
Definition: hubreq.cpp:765
static const State Suspended
Definition: hubsm.h:195
SM_RESULT QuiesceWithInterrupt(_In_ Teardown Reason)
Definition: hubsm.cpp:1119
SM_RESULT OnAwaitingStopAfterSuspend(_In_ HubEvent Event)
Definition: hubsm.cpp:1575
SM_RESULT OnDown(_In_ HubEvent Event)
Definition: hubsm.cpp:674
ULONG m_DromIndex
Definition: hubsm.h:583
SM_RESULT EnterCheckingRecoveryLimit()
Definition: hubsm.cpp:1287
VOID QueueStartToDevices()
Definition: fanout.cpp:950
VOID ResetStatusChangePipe()
Definition: upstream.cpp:247
SM_RESULT StartPowerUp(_In_ PowerUp Kind)
Definition: hubsm.cpp:766
SM_RESULT OnQueryingParentInfo(_In_ HubEvent Event)
Definition: hubsm.cpp:334
SM_RESULT OnUnconfigured(_In_ HubEvent Event)
Definition: hubsm.cpp:306
SM_RESULT OnAwaitingResetRetry(_In_ HubEvent Event)
Definition: hubsm.cpp:1355
static const State ReadingRootHub30Ports
Definition: hubsm.h:212
VOID CancelStatusChangeRead()
Definition: hubreq.cpp:757
HubCheck SelectHubChange()
Definition: hubreq.cpp:603
BOOLEAN OverCurrentCleared()
Definition: hubreq.cpp:645
static const SM_EVENT_INFO EventInfo[]
Definition: hubsm.h:105
VOID QueueResumeWithResetToDevices()
Definition: fanout.cpp:968
static const State CheckingPowerLoss
Definition: hubsm.h:193
SM_RESULT OnPortsAcquiring(_In_ HubEvent Event)
Definition: hubsm.cpp:795
static const State PortsAcquiring
Definition: hubsm.h:168
SM_RESULT OnPortsReleasing(_In_ HubEvent Event)
Definition: hubsm.cpp:1243
ULONGLONG m_DromPollStart
Definition: hubsm.h:582
BOOLEAN ParseHubDescriptor()
Definition: hubreq.cpp:552
BOOLEAN IsInBootPath()
Definition: fdo.cpp:1304
SM_RESULT OnSettingConfiguration(_In_ HubEvent Event)
Definition: hubsm.cpp:1727
SM_RESULT FailStart(_In_ BOOLEAN FirstStart)
A failed first start returns to Unconfigured, a failed restart to Stopped.
Definition: hubsm.cpp:417
static const State SuspendedResetPending
Definition: hubsm.h:197
SM_RESULT ReadPortStatus(_In_ const State *ReturnTo)
Definition: hubsm.cpp:938
SM_RESULT EnterDromSendingCommand()
Definition: hubsm.cpp:547
static const State ReadingPortStatus
Definition: hubsm.h:172
HubFdo * Hub() const
Definition: hubsm.h:100
VOID QueueResumeToPorts()
Definition: fanout.cpp:878
SM_RESULT OnDrainingInterruptRefs(_In_ HubEvent Event)
Definition: hubsm.cpp:1172
SM_RESULT OnDevicesAcquiring(_In_ HubEvent Event)
Definition: hubsm.cpp:829
const State * m_DromNext
Definition: hubsm.h:586
VOID LogResetOnResume()
Definition: fdo.cpp:1298
VOID FailPortStatus(_In_ BOOLEAN HardwareError)
Definition: hubreq.cpp:884
ULONG m_DromWords
Definition: hubsm.h:584
SM_RESULT OnDromRead(_In_ HubEvent Event)
Definition: hubsm.cpp:490
VOID ReplyPortStatus()
Definition: hubreq.cpp:818
SM_RESULT EnterQueryingErrata()
Definition: hubsm.cpp:426
SM_RESULT EnterSuspendedResetPending()
Definition: hubsm.cpp:1556
SM_RESULT EnterDromWritingMetadata()
Definition: hubsm.cpp:527
SM_RESULT EnterReadingRootHub20Ports()
Definition: hubsm.cpp:1790
SM_RESULT OnHubResetting(_In_ HubEvent Event)
Definition: hubsm.cpp:1325
VOID QueueStopAfterSuspendToDevices()
Definition: fanout.cpp:944
SM_RESULT CheckPowerLoss()
Definition: hubsm.cpp:1464
static const State ReconfiguringAfterResume
Definition: hubsm.h:192
static const State UpdatingController
Definition: hubsm.h:205
VOID ReportFailureToPnp()
Definition: fdo.cpp:1241
static const State FinishingConfiguration
Definition: hubsm.h:207
BOOLEAN ParsePowerStatus()
Definition: hubreq.cpp:596
VOID AllowHubReset()
Definition: fanout.cpp:865
SM_RESULT OnListening(_In_ HubEvent Event)
Definition: hubsm.cpp:859
SM_RESULT EnterHubResetting()
Definition: hubsm.cpp:1318
SM_RESULT EnterProgrammingHubDepth()
Definition: hubsm.cpp:1840
SM_RESULT OnDromWritingMetadata(_In_ HubEvent Event)
Definition: hubsm.cpp:537
static const State SurpriseRemoved
Definition: hubsm.h:166
static const State ReconfiguringAfterReset
Definition: hubsm.h:190
BOOLEAN PipeResetLimitReached()
Definition: fdo.cpp:1369
SM_RESULT OnAwaitingStop(_In_ HubEvent Event)
Definition: hubsm.cpp:732
VOID SetHubDepth()
Definition: hubreq.cpp:408
BOOLEAN CreateChildPorts()
Definition: fanout.cpp:853
static const State Asleep
Definition: hubsm.h:194
VOID QueueStartToPorts()
Definition: fanout.cpp:871
static const State AwaitingResetRetry
Definition: hubsm.h:189
SM_RESULT OnCheckingPowerLoss(_In_ HubEvent Event)
Definition: hubsm.cpp:1474
static const State DromReadingWord
Definition: hubsm.h:158
static const State DevicesAcquiring
Definition: hubsm.h:169
static const State AwaitingReleaseHardware
Definition: hubsm.h:163
SM_RESULT EnterSignalPnp()
Definition: hubsm.cpp:437
VOID GetPortStatus()
Definition: hubreq.cpp:790
HubChange PendingHubChange()
Definition: hubreq.cpp:632
SM_RESULT OnFinishingConfiguration(_In_ HubEvent Event)
Definition: hubsm.cpp:1753
SM_RESULT OnDromReadingWord(_In_ HubEvent Event)
Definition: hubsm.cpp:629
HubKind m_Kind
Definition: hubsm.h:575
static const State ReportingFailure
Definition: hubsm.h:185
SM_RESULT EnterReadingRootHub30Ports()
Definition: hubsm.cpp:1814
SM_RESULT OnAwaitingD0(_In_ HubEvent Event)
Definition: hubsm.cpp:444
SM_RESULT EnterHalted()
Definition: hubsm.cpp:1309
SM_RESULT OverCurrentError()
Definition: hubsm.cpp:1080
SM_RESULT OnRecycleSuspended(_In_ HubEvent Event)
Definition: hubsm.cpp:1544
static const State AwaitingD0
Definition: hubsm.h:160
static const State DevicesReleasing
Definition: hubsm.h:181
SM_RESULT StartHubConfiguration()
Definition: hubsm.cpp:406
SM_RESULT OnAwaitingInterruptEnable(_In_ HubEvent Event)
Definition: hubsm.cpp:1211
VOID QueueStopToPorts()
Definition: fanout.cpp:896
BOOLEAN IsDepthZero()
Definition: fdo.cpp:1310
static const BOOLEAN SmCompletionsFirst
Definition: hubsm.h:145
static const State ReadingHubDescriptor
Definition: hubsm.h:201
SM_RESULT OnSuspended(_In_ HubEvent Event)
Definition: hubsm.cpp:1515
VOID SignalPnpFailure()
Definition: fdo.cpp:1231
BOOLEAN ResetLimitReached()
Definition: fdo.cpp:1356
VOID ArmOverCurrentTimer()
Definition: fdo.cpp:1324
static const State AwaitingDescriptorRetry
Definition: hubsm.h:202
VOID QueueResumeInS0ToPorts()
Definition: fanout.cpp:884
Teardown m_Teardown
Definition: hubsm.h:576
static const State AwaitingInterruptEnable
Definition: hubsm.h:180
VOID DereferenceHub()
Definition: fdo.cpp:1196
SM_RESULT OnDromReadingStatus(_In_ HubEvent Event)
Definition: hubsm.cpp:572
static const State AwaitingOverCurrentTimer
Definition: hubsm.h:175
static const State ReadingHubStatus
Definition: hubsm.h:173
SM_RESULT AfterInterruptQuiet()
Definition: hubsm.cpp:1153
VOID StoreDromWord(_In_ ULONG Index)
Definition: hubdrom.cpp:189
StatusRead m_StatusRead
Definition: hubsm.h:578
SM_RESULT OnDromReadingFirstStatus(_In_ HubEvent Event)
Definition: hubsm.cpp:508
SM_RESULT FinishDrom()
Definition: hubsm.cpp:659
VOID QueuePassiveWork()
Definition: fdo.cpp:1202
VOID WriteDromRegister(_In_ USHORT Register, _In_ ULONG Value)
Definition: hubdrom.cpp:141
static const HubEvent ResetDiscards[]
Definition: hubsm.h:217
VOID QueueResumeWithResetToPorts()
Definition: fanout.cpp:890
BOOLEAN AllocateDromBuffer(_In_ ULONG Length)
Definition: hubdrom.cpp:158
SM_RESULT OnPortsResetting(_In_ HubEvent Event)
Definition: hubsm.cpp:1265
VOID GetRootHubInfo()
Definition: ucxlink.cpp:189
SM_RESULT OnReadingRootHub30Ports(_In_ HubEvent Event)
Definition: hubsm.cpp:1821
Run to completion engine. The first thread to post into an idle machine drains the queue; everyone el...
Definition: smengine.h:114
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
Definition: dispmprt.h:1287
#define FALSE
Definition: types.h:117
HubCheck
Definition: hubsm.h:72
HubKind
Definition: hubsm.h:64
HubEvent
Definition: hubsm.h:15
@ PortStatusRequest
@ ReleaseHardware
@ PortsResetReleased
@ ResetRequested
@ ConfigurationSet
@ DevicesStoppedAfterSuspend
@ ResetFailedOnRemoval
@ PipeResetFailed
@ PrepareHardware
@ PortsInterruptReleased
@ PortsEnableInterrupt
@ ConfigurationFailed
@ DevicesReleased
@ TransferFailed
@ DevicesAcquired
@ InterruptFailed
HubChange
Definition: hubsm.h:80
@ OverCurrentCleared
Config Register
Definition: hubwmi.cpp:126
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
#define _In_
Definition: no_sal2.h:158
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
unsigned short USHORT
Definition: pedump.c:61
PACPI_METHOD_ARGUMENT Next
Definition: slotdev.cpp:96
One state. Handler gets every event the state sees.
Definition: smengine.h:93
unsigned char UCHAR
Definition: typedefs.h:53
uint64_t ULONGLONG
Definition: typedefs.h:67
uint32_t ULONG
Definition: typedefs.h:59
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
static void Initialize()
Definition: xlate.c:212