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 topic is for programmers. If you are 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 occured 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.

0x101

Reserved

Exception pointer.

Reserved

An unhandled exception occured 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 occured 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.

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.

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 occured 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

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. 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.

  2. 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.

  3. Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .