# Linux kernel: LOWMEM + HIGHMEM > Total memory?

Folks, there's something I fail to understand:

I've got a laptop with 4 GB of RAM, running a 32 bit, PAE-enabled Linux kernel. The system is powered by an AMD APU with integrated graphics which, as far as I can tell, takes its graphics memory from system memory.

Now, in my `dmesg`, I see this:

Memory: 3574156K/3638392K available

And it looks sensible: If we take into account that 4 GB are there and that about 512 MB out of these are probably taken for the GPU, then 3638392K look sane. The math probably doesn't work out completely, but close enough to suggest that this assumption is right.

Can I prove that the GPU is taking 512 MB? Probably: I've got this line in `dmesg`:

``````radeon 0000:00:01.0: VRAM: 512M 0x0000000000000000 - 0x000000001FFFFFFF (512M used)
``````

and assuming that VRAM doesn't have to be dedicated extra memory (which I'm very confident is not present in the machine), the GPU did probably indeed take itself these 512 MB out of system memory.

So far, so good, I guess I can follow along. But now have a look at these lines, also from `dmesg`:

``````3700MB HIGHMEM available.
891MB LOWMEM available.
``````

Wow, that sums up to 4591 MB. Now, taking into account that 4 GB are all that should be there with no extra VRAM or such, how can HIGHMEM + LOWMEM have such a huge value? I would have assumed that these two values added together would equal the total amount of memory in the system, but it's entirely possible that I'm assuming something here which just is not true. Probably something that is not "really"memory in the sense that I have in mind, like some device mapped memory, is also counted in LOWMEM and / or HIGHMEM?

I don't really have a clue, but would be more than happy if someone could probably shed some light into this for me.

Oh, and for reference, I've got a complete `dmesg` output from the machine I'm talking about up at

http://ftp.tisys.org/pub/misc/teela_dmesg.txt

Thank you all in advance! :-)