Bug Check 0xA0: INTERNAL_POWER_ERROR
The INTERNAL_POWER_ERROR bug check has a value of 0x000000A0. This bug check indicates that the power policy manager experienced a fatal error.
Important
This article is for programmers. If you're a customer who has received a blue screen error code while using your computer, see Troubleshoot blue screen errors.
INTERNAL_POWER_ERROR Parameters
Parameter 1 indicates the type of violation. The meaning of the other parameters depends on the value of Parameter 1.
Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Cause |
---|---|---|---|---|
0x1 |
1: A device has overrun its maximum number of reference counts. 2, 3, or 4: Too many inrush power IRPs have been queued. 5: The power IRP has been sent to a passive level device object. 6: The system has failed to allocate a necessary power IRP. |
If Parameter 2 has a value of 1, the maximum number of references allowed. If Parameter 2 has a value of 2, 3, or 4, the maximum number of pending IRPs allowed. If Parameter 2 has a value of 6, the target device object. |
If Parameter 2 has value of 6, indicates whether this is a system (0x0) or device (0x1) power IRP. | An error occurred during the handling of the power I/O request packet (IRP). |
0x2 |
Reserved |
Reserved |
Reserved |
An internal failure has occurred while attempting to process a power event. For more information, see Debugging bug check 0xA0 when parameter 1 equals 0x2. |
0x3 |
The expected checksum |
The actual checksum |
The line number of the failure |
The checksum for a hibernation context page does not match its expected checksum. |
0x4 |
The expected checksum |
The actual checksum |
The line number of the failure |
The checksum for a page about to be written to the hibernation file does not match its expected checksum. |
0x5 |
Reserved |
Reserved |
Reserved |
An unknown shutdown code has been sent to the system shutdown handler. |
0x7 |
Reserved |
Reserved |
Reserved |
An unhandled exception has occurred. For more information, see Debugging bug check 0xA0 when parameter 1 equals 0x7. |
0x8 |
This parameter is always set to 0x100. |
The device object |
POWER_CHANNEL_SUMMARY |
A fatal error occurred while processing a system power event. |
0x9 |
Status code |
Mirroring phase |
Reserved |
A fatal error occurred while preparing the hibernate file. |
0xA |
0: A bug check was requested immediately upon resuming. 1: A bug check was requested during resume after all non-pageable devices had been powered on. 2: A bug check was requested during resume after all devices had been powered on. |
Reserved |
Reserved |
A bug check was requested when waking for debugging purposes. |
0xB |
Size of the hibernation file. |
Hibernation progress before running out of space 0: HIBERFILE_PROGRESS_FREE_MAP 1: HIBERFILE_PROGRESS_RESUME_CONTEXT 2: HIBERFILE_PROGRESS_PROCESSOR_STATE 3: HIBERFILE_PROGRESS_SECURE_RANGES 4: HIBERFILE_PROGRESS_MEMORY_RANGES 5: HIBERFILE_PROGRESS_TABLE_PAGES 6: HIBERFILE_PROGRESS_MEMORY_IMAGE |
When param 2 is 4, Size of the remaining memory ranges. |
The hibernation file is too small. |
0xC |
Status code |
Dump stack context |
Reserved |
The dump stack failed to initialize. |
0xD |
The system power state in transition. |
The sleep checkpoint most recently reached. |
A pointer to the POP_POWER_ACTION structure. |
The system failed to complete a power transition in a timely manner. |
0xF |
The system power state in transition. |
The sleep checkpoint most recently reached. |
A pointer to the thread currently processing the request. |
The system failed to complete a power transition in a timely manner. |
0xF0 |
The system power state in transition. |
The sleep checkpoint most recently reached. |
A pointer to the thread currently processing the request. |
The system failed to complete(suspend) a power transition in a timely manner. |
0xF1 |
The system power state in transition. |
The sleep checkpoint most recently reached. |
A pointer to the thread currently processing the request. |
The system failed to complete(resume) a power transition in a timely manner. |
Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Cause |
---|---|---|---|---|
0x101 |
Reserved |
Exception pointer. |
Reserved |
An unhandled exception occurred while processing a system power event. For more information, see Debugging bug check 0xA0 when parameter 1 equals 0x101. |
0x102 |
Reserved |
DUMP_INITIALIZATION_CONTEXT |
POP_HIBER_CONTEXT |
The hibernation working buffer size is not page aligned. |
0x103 |
Reserved |
POP_HIBER_CONTEXT |
Reserved |
All working pages have failed to be accounted for during the hibernation process. |
0x104 |
Reserved |
POP_HIBER_CONTEXT |
Reserved |
An attempt was made to map internal hibernation memory while the internal memory structures were locked. |
0x105 |
Reserved |
POP_HIBER_CONTEXT |
Reserved |
An attempt was made to map internal hibernation memory with an unsupported memory type flag. |
0x106 |
Reserved |
The memory descriptor list (MDL) |
Reserved |
A memory descriptor list was created during the hibernation process which describes memory that is not paged-aligned. |
0x107 |
Reserved |
POP_HIBER_CONTEXT |
PO_MEMORY_RANGE_ARRAY |
A data mismatch has occurred in the internal hibernation data structures. |
0x108 |
Reserved |
POP_HIBER_CONTEXT |
Reserved |
The disk subsystem failed to properly write part of the hibernation file. |
0x109 |
Reserved |
Expected checksum |
Actual checksum |
The checksum for the processor state data does not match its expected checksum. |
0x10A |
Reserved |
POP_HIBER_CONTEXT |
NTSTATUS failure code |
The disk subsystem failed to properly read or write part of the hibernation file. |
0x10B |
Reserved |
Current hibernation progress |
Reserved |
An attempt was made to mark pages for the boot phase of hibernation at the wrong time using the PoSetHiberRange API. |
0x10C |
Reserved |
Flags provided to the API |
Length to mark |
The PoSetHiberRange API was called with invalid parameters. |
0x10D |
Reserved |
POP_HIBER_CONTEXT |
NTSTATUS failure code |
The secure kernel subsystem failed while providing data for resume. |
0x10E |
Reserved |
Incorrect checksum |
Previous disk read's checksum |
The disk subsystem returned corrupt data while reading from the hibernation file. |
0x10F |
The current system sleep checkpoint. |
The type of internal error. 0 : A checkpoint was written while paging was disabled but before Po disabled interrupts on all processors. 1 : A CPU other than 0 tried to write a checkpoint during the interrupts disabled phase of system sleep. 2 : Another piece of code in the system is executing an EFI runtime service. |
Reserved |
An internal error occurred while checkpointing system sleep progress. |
0x110 |
Reserved |
Reserved |
Reserved |
The system failed to disable system sleep states, but must do so to ensure data integrity. |
0x111 |
Reserved |
Reserved |
Reserved |
A driver has indicated that the user is present, and the user has enabled a debugging option to capture the call stack. |
0x200 |
Reserved |
DEVICE_OBJECT |
DEVICE_OBJECT_POWER_EXTENSION |
An unknown device type is being checked for an idle state. |
0x300 |
Reserved |
DEVICE_OBJECT |
IRP |
An unknown status was returned from a battery power IRP. |
0x301 |
Reserved |
DEVICE_OBJECT |
IRP |
The battery has entered an unknown state. |
0x400 |
Reserved |
IO_STACK_LOCATION |
DEVICE_OBJECT |
A device has overrun its maximum number of reference counts. |
0x401 |
Reserved |
Pending IRP list |
DEVICE_OBJECT |
Too many inrush power IRPs have been queued. |
0x402 |
Reserved |
Pending IRP list |
DEVICE_OBJECT |
Too many inrush power IRPs have been queued. |
0x403 |
Reserved |
Pending IRP list |
DEVICE_OBJECT |
Too many inrush power IRPs have been queued. |
0x404 |
Reserved |
IO_STACK_LOCATION |
DEVICE_OBJECT |
A power IRP has been sent to a passive-level device object. |
0x500 |
Reserved |
IRP |
DEVICE_OBJECT |
An unknown status was returned from a thermal power IRP. |
Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Cause |
---|---|---|---|---|
0x600 |
DEVICE_OBJECT PDO |
Reserved |
Reserved |
A driver has attempted a duplicate registration with the Power Runtime Framework. |
0x601 |
POP_FX_DEVICE device |
PEP_DEVICE_REGISTER PEP |
Reserved |
No Power Engine Plugins accepted device registration. |
0x602 |
DEVICE_NODE device node |
Sleep count |
Reserved |
Device node sleep count does not match its activation count. |
0x603 |
POP_FX_PLUGIN |
Work request type |
Reserved |
A Power Engine Plugin made an invalid work request. |
0x605 |
Notification ID |
POP_FX_PLUGIN |
Reserved |
A Power Engine Plugin failed to accept mandatory device power management notification. |
0x606 |
POP_FX_COMPONENT |
POP_FX_COMPONENT_FLAGS |
New condition for the component |
A Power Engine Plugin attempted to transition a critical system resource component to an Active (or Idle) condition when the resource was already Active (or Idle). |
0x607 |
POP_FX_DEVICE |
NTSTATUS |
Reserved |
The acquisition of a runtime power management framework device-removal lock failed when it was required to succeed. |
0x608 |
POP_FX_COMPONENT |
POP_FX_COMPONENT_FLAGS |
Reserved |
A driver has attempted to transition a component to idle without a preceding active request. |
0x609 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Duplicate Request Type 0: DevicePowerRequired 1: DevicePowerNotRequired |
A Power Engine Plugin has requested either device power required or device power not required without an intervening request of the opposite type. |
0x610 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Reserved |
A Power Engine Plugin has requested device power not required while a previous device power required request is outstanding. |
0x611 |
POP_FX_PLUGIN |
POP_FX_DEVICE |
Invalid component index |
A Power Engine Plugin has requested an operation on an invalid component. |
0x612 |
POP_FX_PLUGIN PowerEnginePlugin |
Reserved |
Reserved |
A Power Engine Plugin has requested additional work to be done in the context of a device notification where no buffer was supplied by PO for the request. |
0x613 |
POP_FX_DEVICE |
Component index |
Operation 0: Complete device power not required 1: Report device powered on 2: Complete idle condition |
A driver has attempted to complete a request when no such outstanding request is pending. |
0x614 |
POP_FX_DEVICE |
Component index |
Illegal parameter 0: PO_FX_FLAG_BLOCKING used at IRQL >= DISPATCH_LEVEL 1: PO_FX_FLAG_BLOCKING and PO_FX_FLAG_ASYNC_ONLY both specified 2: Invalid component index |
A driver has requested an active/idle transition on a component with an illegal parameter. |
0x615 |
POP_FX_PLUGIN |
POP_FX_COMPONENT |
Illegal Action 0: Component not in idle state 0 1:Component is already active 2: No outstanding activation request 3: Outstanding idle state transition |
A Power Engine Plugin has illegally indicated the completion of a component activation. |
0x616 |
POP_FX_PLUGIN |
POP_FX_COMPONENT |
Illegal Action 0: Invalid idle state 1: Component is already in the requested state 2: Requested a non-zero idle state without passing through idle state 0 |
A Power Engine Plugin has illegally requested a component idle state transition. |
0x617 |
POP_FX_PLUGIN PowerEnginePlugin |
UNICODE_STRING DeviceId |
PEP_DEVICE_REGISTER PEP Registration |
A Power Engine Plugin has returned an invalid acceptance type when processing a device registration notification. |
0x618 |
POP_FX_WORK_ORDER_WATCHDOG_INFO WorkOrder |
Reserved |
Reserved |
A runtime power worker thread has been blocked for too long. |
0x619 |
POP_FX_DEVICE Device |
Component index |
NULL or DEVICE_NODE of the child device actually responsible |
A device has blocked entry into the deepest runtime idle power state for too long. |
0x61A |
POP_FX_PLUGIN Power Engine Plugin |
POP_FX_DEVICE device |
Reserved |
A Power Engine Plugin has supplied invalid information about a component's performance state information. |
0x61B |
POP_FX_DEVICE device |
Component index |
Reserved |
A driver has issued a perf state request before registering for device perf states. |
0x61C |
POP_FX_DEVICE device |
Component index |
Invalid Parameter VALUES: 0 : PerfChangesCount exceeds the number of perf state sets registered for this component |
A driver has issued a perf state request with invalid parameters. |
0x61D |
POP_FX_DEVICE device |
Component index |
Outstanding request context |
A driver has issued a perf state request while a previous request is outstanding. |
0x61E |
Reserved |
Reserved |
Reserved |
A Power Engine Plugin has attempted to perform a critical transition on a debugger device while automatic transitions are enabled. |
0x61F |
POP_FX_DEVICE device |
Coordinated idle state index |
Reserved |
A Power Engine Plugin has attempted to enable automatic debugger transitions for a coordinated idle state that is not a platform-wide state. |
0x620 |
POP_FX_DEVICE device |
Coordinated idle state index |
Reserved |
A Power Engine Plugin has attempted to register a D-state dependency for a coordinated idle state that is not a platform-wide state. |
0x621 |
POP_FX_DEVICE device |
Component index |
Coordinated idle state index |
A Power Engine Plugin has attempted to register an F-state dependency for a coordinated idle state that is not a platform-wide state. |
0x622 |
The parent POP_FX_COMPONENT |
The child POP_FX_COMPONENT |
Reserved |
A driver has attempted to unregister from PoFx with outstanding dependents. |
0x666 |
PPOP_PEP_ACTIVITY |
New activity type 0: DevicePowerOn 1: ComponentIdleStateChange 2: ComponentActivating 3: ComponentActive 4: DevicePowerOff 5: DeviceSuspend |
Conflicting activity type 0: DevicePowerOn 1: ComponentIdleStateChange 2: ComponentActivating 3: ComponentActive 4: DevicePowerOff 5: DeviceSuspend |
The default Power Engine Plugin has attempted to trigger a new activity that conflicts with another activity. |
0x667 |
POP_PEP_ACTIVITY |
Activity type 0: DevicePowerOn 1: ComponentIdleStateChange 2: ComponentActivating 3: ComponentActive 4: DevicePowerOff 5: DeviceSuspend |
POP_PEP_ACTIVITY_STATUS |
Default Power Engine Plugin has attempted to complete an activity that is not running. |
0x668 |
PPPM_COORDINATED_STATE whose reference count is being updated. |
The invalid reference count value observed by this function. |
The mask of platform idle states being updated. |
Default Power Engine Plugin has attempted to remove a platform idle state constraint that was not previously constrained. |
0x669 |
PPPM_COORDINATED_STATE whose reference count is being updated. |
The invalid reference count value observed by this function. |
Reserved |
Default Power Engine Plugin has encountered an internal consistency error while attempting to exclusively notify PoFx about the availability of a platform idle state. |
Parameter 1 | Parameter 2 | Parameter 3 | Parameter 4 | Cause |
---|---|---|---|---|
0x680 |
NTSTATUS failure code. |
Reserved |
Reserved |
The runtime power framework could not parse a required ACPI table due to it either being missing or malformed. This is usually due to a BIOS error. |
0x700 |
PEPHANDLE |
PEP_PPM_IDLE_SELECT |
Reserved |
A Power Engine Plugin has specified invalid processor idle dependencies. |
0x701 |
The index of the selected idle state of the hung processor |
The PRCB address of the hung processor |
The index of the hung processor |
A processor was not able to complete an idle transition within the allocated interval. This indicates the specified processor is hung. |
0x702 |
The index of the selected idle state of the processor |
The idle synchronization state of the processor |
The PRCB address of the hung processor |
A processor woke up from a non-interruptible state without the OS initiating an explicit wake through the PEP (using the necessary PPM idle synchronization). |
0x703 |
PEPHANDLE |
PEP_PPM_QUERY_PLATFORM_STATE |
Reserved |
A Power Engine Plugin has specified invalid processor idle dependencies during a query platform state notification. |
0x704 |
Reserved |
Reserved |
Reserved |
A coordinated idle state transition did not complete in a timely manner. |
0x705 |
PEPHANDLE |
Notification |
Four-character tag identifying the illegally altered field. Decode tag in a kernel debugger with: .formats tag, with tag enclosed in < >. |
A Power Engine Plugin has altered a read only field in the buffer passed into a notification. |
0x706 |
Notification |
Four-character tag identifying the field containing the illegal value. Decode tag in a kernel debugger with: .formats tag, with tag enclosed in < >. |
Illegal value or index into an array where an illegal value exists |
A Power Engine Plugin has returned an illegal value in one of the fields of the buffer passed into a notification. |
0x800 |
Current CS state |
Reserved |
Reserved |
The monitor unexpectedly turned on while the system was in connected standby. |
0x801 |
The display state change reason |
The ID of the session that updated the display state |
Reserved |
An invalid display state transition has occurred. |
0x802 |
POWER_MONITOR_REQUEST_REASON that caused the display to turn off |
1 if the Power Event Processor is enabled, 0 otherwise. |
Pointer to a POP_PDC_IDLE_PHASE_WATCHDOG_CONTEXT global. |
PDC System Idle Phase (NoCsPhase) has been blocking transition to Modern Standby for a longer time than expected. |
0x900 |
Pointer to the responsible power-setting callback |
IRQL before calling the power-setting callback |
IRQL after returning from the power-setting callback |
A registered power-setting callback returned with modified IRQL. This indicates that the callback changed the IRQL but did not restore the original IRQL before returning. |
0x901 |
DEVICE_OBJECT |
IRP |
The thread's APC disable count |
A driver has enabled/disabled kernel APCs while handling a power IRP. |
0x4001 |
KE error subcode. VALUES: 0x100 : (INTERNAL_POWER_ERROR_KE_PROCESSOR_ON_TIMED_OUT) The firmware took too long to power on a processor. 0x101 : (INTERNAL_POWER_ERROR_KE_INVALID_INTERRUPT_TARGET) An invalid interrupt target was specified. 0x102 : (INTERNAL_POWER_ERROR_KE_SETDESTINATION_FAILED) Failed to change the target destination of an interrupt line. 0x103 : (INTERNAL_POWER_ERROR_KE_IPI_REQUEST_FAILED) Failed to issue an IPI while an interrupt is being redirected. 0x104 : (INTERNAL_POWER_ERROR_KE_ARCH_NOT_SUPPORTED) Unsupported processor architecture. |
Reserved |
Reserved |
(INTERNAL_POWER_ERROR_KE_SUBCODE) An internal failure has occurred in kernel executive during a power operation. |
0xAA64 |
Error Code |
PSCI Function ID in progress |
Optional internal context dependent data |
AArm64 Power State Coordination Interface (PSCI) function encountered an unrecoverable critical error. |
Resolution
General Notes
In the preceding table, several of the parameters are pointers to structures. For example, if Parameter 2 is listed as DEVICE_OBJECT, then Parameter 2 is a pointer to a DEVICE_OBJECT structure. Some of the structures are defined in wdm.h, which is included in the Windows Driver Kit. For example, the following structures are defined in wdm.h.
- EXCEPTION_POINTERS
- DEVICE_OBJECT
- IO_STACK_LOCATION
- PEP_DEVICE_REGISTER
Some of the structures that appear in the preceding table are not defined in any public header file. You can see the definitions of those structures by using the dt debugger command. The following example shows how to use the dt command to see the DEVICE_OBJECT_POWER_EXTENSION structure.
3: kd> dt nt!DEVICE_OBJECT_POWER_EXTENSION
+0x000 IdleCount : Uint4B
+0x004 BusyCount : Uint4B
+0x008 BusyReference : Uint4B
+0x00c TotalBusyCount : Uint4B
+0x010 ConservationIdleTime : Uint4B
+0x014 PerformanceIdleTime : Uint4B
+0x018 DeviceObject : Ptr64 _DEVICE_OBJECT
+0x020 IdleList : _LIST_ENTRY
+0x030 IdleType : _POP_DEVICE_IDLE_TYPE
+0x034 IdleState : _DEVICE_POWER_STATE
+0x038 CurrentState : _DEVICE_POWER_STATE
+0x040 Volume : _LIST_ENTRY
+0x050 Specific : <unnamed-tag>
The following procedures will help you debug certain instances of this bug check.
Debugging bug check 0xA0 when Parameter 1 equals 0x2
Examine the stack. Look for the ntoskrnl!PopExceptionFilter function. This function contains the following code as its first argument.
(error_code << 16) | _LINE_
If the caller is PopExceptionFilter, the first argument to this function is of type PEXCEPTION_POINTERS. Note the value of this argument.
Use the dt (Display Type) command and specify the value that you found in the previous step as argument.
dt nt!_EXCEPTION_POINTERS argument
This command displays the structure. Note the address of the context record.
Use the .cxr (Display Context Record) command and specify the context record that you found in the previous step as record.
.cxr record
This command sets the register context to the proper value.
Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .
Debugging bug check 0xA0 when Parameter 1 equals 0x7
Examine the stack. Look for the ntoskrnl!PopExceptionFilter function. The first argument to this function is of type PEXCEPTION_POINTERS. Note the value of this argument.
Use the dt (Display Type) command and specify the value that you found in the previous step as argument.
dt nt!_EXCEPTION_POINTERS argument
This command displays the structure. Note the address of the context record.
Use the .cxr (Display Context Record) command and specify the context record that you found in the previous step as record.
.cxr record
This command sets the register context to the proper value.
Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .
Debugging bug check 0xA0 when Parameter 1 equals 0x101
Use the dt (Display Type) command and specify the value of Parameter 3 as argument.
dt nt!_EXCEPTION_POINTERS argument
This command displays the structure. Note the address of the context record.
Use the .cxr (Display Context Record) command and specify the context record that you found the previous step as record.
.cxr record
This command sets the register context to the proper value.
Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .