[Touch Pro, Fuze ROM Development] Kevlar-Source:
Page Pool, Pool Resources and Pool Resource Depletion

The page pool is a reserved area in memory for the windows mobile kernel.

A ROM in a pocket pc is mainly divided into 2 parts [some other: IPL, SPL, ExtROM but forget it for now]:

- The Kernel

- The OS files [IMGFS] [Some pocket PCs do not have NOR/NAND ROM but a DOC (Disk On Chip) that works like an SD card].

Applications use RAM in two ways.

There is code that runs, and there is data that is created while it is running.

On a NOR device, the code can run directly from the ROM and not be loaded into RAM first. This process is called XIP [eXecute In Place].

NAND devices

can't

XIP, so their code is loaded into RAM and executed from there.

If you don't have a Page Pool, this code is loaded into normal RAM.

The Page Pool is a mechanism to limit how much code is loaded into normal RAM.

With a Page Pool, we can unload code that hasn't been used in a while and reload it later if we need to.

We can't do that without a Page Pool.

There are portions of the deepest parts of the OS that have to XIP.

If you're on NOR, that code just XIPs like everything else.

Not so on NAND... For a NAND system to boot, it needs to load this code into RAM first and then run it from there.

When the system is running, it can't really tell if it's running from RAM or ROM, so it assumes it's running from ROM and doesn't count this space.

Discussing pool resources and pool resource depletion in general terms and not specifically regarding PPC's...

When a machine boots up, the Memory Manager creates two dynamically sized memory pools that kernel-mode components use to allocate system memory.

These two pools are known as the Paged Pool and NonPaged Pool.

Each of these pools start at an initial size that is based upon the amount of physical memory present in the system.

Pool memory is a subset of available memory and is not necessarily contiguous.

If necessary, these pools can grow up to a maximum size that is determined by the system at boot time.

So, what distinguishes Paged Pool and NonPaged Pool memory is:

The first difference is that Paged Pool is exactly what its name implies - it can be paged out.

The NonPaged Pool cannot be paged out.

Drivers use the NonPaged Pool for many of their requirements because they can be accessed at any Interrupt Request Level [IRQL]. The IRQL defines the hardware priority at which a processor operates at any given time.

Page Pool set to 0 is usually refered to as Dynamic Page Pool because it allows the system to use all available memory as page pool, being it addressed and reserved on a necessity basis.

If you need more information I can provide you with some links regarding Page Pool and it's issues, many provided by Microsoft itself [msdn, that is]...

Remember that this thread is a ROM repository.

It is meant to be directed to general public. Therefore, discussions about this, especially technical ones should be taken to PM and not to open forum, at least in this thread.

You have your opinion and I respect it although I do not share it... Nevertheless users are free to use what they very well please. If you do not like it or if you believe it has no purpose simply direct your attention to other threads :)

If you take a look at the forum you will conclude that some chefs, respected ones, decided to publish their ROMs with Page Pool set to 0... Don't you wonder why that is?

Cheers :)