Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

The computer could potentially have problems if DPC routines are executed at an IRQL that is greater than DISPATCH_LEVEL in Windows Server 2003


View products that this article applies to.

Symptoms

On a Windows Server 2003-based computer, you may find that the Deferred Procedure Call (DPC) routines run at the elevated IRQL (SYNCH_LEVEL) instead of at the DISPATCH_LEVEL IRQL as expected. This issue could potentially cause the computer to have problems. For example, you may receive the following Stop error:
0x0000000A (IRQ_NOT_LESS_OR_EQUAL)
Note This elevated IRQL in DPC routines is not valid or expected according to the Driver Development Kit (DDK) documents.

↑ Back to the top


Cause

DPCs are dispatched when the IRQL is about to return to an IRQL that is lower than the DISPATCH_LEVEL IRQL. The DPCs are executed at the current IRQL. Therefore, the DPCs are expected to be executed at the DISPATCH_LEVEL IRQL. Executing DPCs when the operating system exits the dispatcher is known as "retiring the DPC list."

However, in the context swap from an idle thread, if the operating system context switches back to the CPU where the idle thread was executing, IRQ does not return to DISPATCH_LEVEL before the operating system retires the DPC list. This means that DPCs could be retired at SYNCH_LEVEL instead of at DISPATCH_LEVEL.

↑ Back to the top


Resolution

A hotfix is available to resolve this issue. This hotfix makes sure that, on the code path where the operating system does an idle-to-ready-thread context switch on the current processor, the operating system correctly restores the IRQL to DISPATCH_LEVEL before the operating system runs down the DPC queue. Therefore, the DPC list will be retired as at the DISPATCH_LEVEL IRQL instead of the SYNCH_LEVEL IRQL.

Hotfix information

A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.

Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft Web site: Note The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.

Prerequisites

To apply this hotfix, you must have Windows Server 2003 Service Pack 1 or Windows Server 2003 Service Pack 2 installed on the computer.

Restart requirement

You have to restart the computer after you apply this hotfix.

Hotfix replacement information

This hotfix does not replace any other previously released hotfixes.

Registry information

To use this hotfix, you do not have to make any changes to the registry.

File information

The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.
Windows Server 2003 SP1, x86-based versions
File nameFile versionFile sizeDateTimePlatformSP requirement
Ntkrnlmp.exe5.2.3790.31572,466,30413-Jun-200810:29Not ApplicableSP1
Ntkrnlpa.exe5.2.3790.31572,279,42413-Jun-200809:50x86SP1
Ntkrpamp.exe5.2.3790.31572,319,36013-Jun-200814:08Not ApplicableSP1
Ntoskrnl.exe5.2.3790.31572,426,36813-Jun-200810:29x86SP1
Windows Server 2003 SP2, x86-based versions
File nameFile versionFile sizeDateTimePlatformSP requirement
Ntkrnlmp.exe5.2.3790.43132,496,00013-Jun-200812:14Not ApplicableSP2
Ntkrnlpa.exe5.2.3790.43132,307,58413-Jun-200811:07x86SP2
Ntkrpamp.exe5.2.3790.43132,348,54413-Jun-200811:06Not ApplicableSP2
Ntoskrnl.exe5.2.3790.43132,455,55213-Jun-200812:14x86SP2
Windows Server 2003 and Windows XP, x64-based versions
File nameFile versionFile sizeDateTimePlatformSP requirement
Hal.dll5.2.3790.3157280,06413-Jun-200814:11x64SP1
Ntkrnlmp.exe5.2.3790.31574,647,42413-Jun-200814:11x64SP1
Ntoskrnl.exe5.2.3790.31574,503,04013-Jun-200814:11x64SP1
Windows Server 2003 SP2 and Windows XP SP2, x64-based versions
File nameFile versionFile sizeDateTimePlatformSP requirement
Hal.dll5.2.3790.4313280,06413-Jun-200814:21x64SP2
Ntkrnlmp.exe5.2.3790.43134,604,41613-Jun-200814:21x64SP2
Ntoskrnl.exe5.2.3790.43134,534,27213-Jun-200814:21x64SP2

↑ Back to the top


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top


More information

Under certain circumstances, the thread may become ineligible to run on a specific processor. This situation may occur between the point at which a new thread is scheduled for execution on a currently idle processor and the point at which the idle thread code that is executing on that processor tries to swap to a newly-eligible-to-run thread. In this case, the idle thread performs a context swap.

Dispatch code runs at the DISPATCH_LEVEL IRQL, and the context swap code executes at the SYNCH_LEVEL IRQL. For more information, see the following table.
Action:Enter dispatcherContext swapExit dispatcher
IRQL: From previous level (t1) to DISPATCH_LEVELForm SYNCH_LEVEL to DISPATCH_LEVELprevious level(t2)
Note The IRQL of previous level is lower than the DISPATCH_LEVEL IRQL.

DPCs are retired at the DISPATCH_LEVEL IRQL when DPCs enter the dispatcher.

Technical support for x64-based versions of Microsoft Windows

If your hardware came with a Microsoft Windows x64 edition already installed, your hardware manufacturer provides technical support and assistance for the Windows x64 edition. In this case, your hardware manufacturer provides support because a Windows x64 edition was included with your hardware. Your hardware manufacturer might have customized the Windows x64 edition installation by using unique components. Unique components might include specific device drivers or might include optional settings to maximize the performance of the hardware. Microsoft will provide reasonable-effort assistance if you must have technical help with a Windows x64 edition. However, you might have to contact your manufacturer directly. Your manufacturer is best qualified to support the software that your manufacturer installed on the hardware. If you purchased a Windows x64 edition such as a Windows Server 2003 x64 edition separately, contact Microsoft for technical support.

For product information about Windows XP Professional x64 Edition, visit the following Microsoft Web site: For product information about x64-based versions of Windows Server 2003, visit the following Microsoft Web site: For more information, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates

↑ Back to the top


Keywords: kbautohotfix, kbexpertiseadvanced, kbfix, kbqfe, KB954337

↑ Back to the top

Article Info
Article ID : 954337
Revision : 2
Created on : 10/8/2011
Published on : 10/8/2011
Exists online : False
Views : 297