If you are running Windows Vista or if you have upgraded Windows XP to Windows XP Service Pack 2 (SP2) or a later version, the memory that is reported in the System Properties dialog box or by the System Information tool (Msinfo32.exe) has changed. This symptom occurs if the following conditions are true:
The computer has 4 or more gigabytes (GB) of RAM.
The computer is using Physical Address Extension (PAE) mode.
Note PAE mode is enabled by adding the /pae parameter to your Boot.ini file in the root folder of the system drive.
For example, before you upgrade to Windows XP SP2, the System Properties dialog box may report approximately 3.87 GB of RAM. The System Information tool may report that the total physical memory is approximately 3,540.00 megabytes (MB). After you upgrade to Windows XP SP2, the System Properties dialog box may report approximately 3.12 GB of RAM, and the System Information tool may report that the total physical memory is approximately 2,770.00 MB.
Note If you disable PAE mode on a computer that has 4 GB of RAM, the System Properties dialog box may report approximately 3.12 GB of RAM, and the System Information tool may report that the total physical memory is approximately 2,710.00 MB. The same values are reported after you upgrade to Windows XP SP2
This issue occurs because of a design change in Windows XP SP2 that is also included in Windows Vista. The changes were made to PAE mode behavior to improve driver compatibility.
To reduce driver compatibility issues, Windows Vista and Windows XP Service Pack 2 or a later version include hardware abstraction layer (HAL) changes that mimic the 32-bit HAL DMA behavior. The modified HAL grants unlimited map registers when the computer is running in PAE mode. Additionally, the kernel memory manager ignores any physical address that is more than 4 GB. Any system RAM that is more than the 4 GB barrier would be made unaddressable by Windows and be unusable in the system. By limiting the address space to 4 GB, devices with 32-bit DMA bus master capability will not see a transaction with an address that is more than the 4 GB barrier. Because these changes remove the need to double-buffer the transactions, they avoid a class of bugs in some drivers that is related to the correct implementation of double buffering support.
PAE mode-induced driver compatibility issues
Driver compatibility issues with Data Execution Prevention (DEP) are typically PAE mode-induced compatibility issues.
Note PAE is only required on computers that have processors that support hardware-enforced DEP.
On its own, DEP might create compatibility issues with drivers that perform code generation or use other techniques to generate executable code in real time. Many drivers such as this would have been fixed because DEP is always on for drivers that are loaded on 64-bit versions of Windows. Therefore, there is no guarantee that all drivers have been updated. However, there are few drivers that use these techniques, and it is not expected that DEP alone will cause many driver compatibility issues.
The primary driver compatibility concern is running PAE mode on 32-bit computers. PAE mode enables processors to address more than 4 GB of memory. The primary difference between PAE memory paging and non-PAE memory paging schemes is the additional level of paging that is required in PAE mode. This is 3 levels of paging that is required in PAE mode instead of 2.
Some drivers might not load if PAE is enabled, because the device might be unable to perform 64-bit addressing or the drivers might assume that PAE mode requires more than 4 GB of RAM. Such drivers expect that they will always receive 64-bit addresses when in PAE mode and that they or their device cannot interpret the address.
Other drivers might load in PAE mode but cause system instability by directly modifying system page table entries (PTEs). These drivers expect 32-bit PTEs, but receive 64-bit PTEs in PAE mode instead.
The largest driver PAE compatibility issue involves direct memory access (DMA) transfers and map register allocation. Many devices that support DMA, typically 32-bit adapters, cannot perform 64-bit physical addressing. When these devices run in 32-bit mode, the devices can address all physical address space. In PAE mode, data can be present at a physical address that is more than 4 GB. To enable devices with these constraints to function in this scenario, the Windows 2000 Server family and later versions of Windows provide double-buffering for the DMA transaction. The Windows 2000 Server family and later versions of Windows do this by providing a 32-bit address that is indicated by a map register. The device can perform the DMA transaction to the 32-bit address and the kernel copies the memory to the 64-bit address that is provided to the driver. When the system runs with PAE disabled, drivers for 32-bit devices never require their map registers to be backed by real memory. This means that double-buffering is not required, because all devices and drivers are contained within the 32-bit address space. Based on tests of drivers for 32-bit devices on 64-bit processor–based computers, it is expected that most client-tested, DMA-capable drivers expect unlimited map registers.
For more information about changes to functionality in Windows XP SP2, visit the following Microsoft Web site: