From: Kumar Gala <hidden> Date: 2007-10-26 15:03:25
On Oct 25, 2007, at 10:51 PM, Surya Ravikiran wrote:
Hi,
I am trying to bootup a Linux kernel, on a FS eval board with 256M.
I pass the kernel argument mem=252M, and see that the kernel boots up
fine, but with much less memory, ~192M (the closes 64M multiple), and
I browsed through the code to see that the adjust_total_lowmem
function does not add up the residual memory to the total memory.
I am trying to understand why I cannot do this reserving of higher end
of the RAM during boot up,
I would appreciate your comments.
The reason you have 192M is that lowmem is the total amount of memory
that can be covered by up to three CAM entries. In the case of
setting mem=252M that max that three CAM entries can cover is 192M (64
+64+64). You should be able to access the other 60M via HIGHMEM.
- k
From: Scott Wood <hidden> Date: 2007-10-26 19:39:59
On Fri, Oct 26, 2007 at 10:04:19AM -0500, Kumar Gala wrote:
On Oct 25, 2007, at 10:51 PM, Surya Ravikiran wrote:
quoted
Hi,
I am trying to bootup a Linux kernel, on a FS eval board with 256M.
I pass the kernel argument mem=252M, and see that the kernel boots up
fine, but with much less memory, ~192M (the closes 64M multiple), and
I browsed through the code to see that the adjust_total_lowmem
function does not add up the residual memory to the total memory.
I am trying to understand why I cannot do this reserving of higher end
of the RAM during boot up,
I would appreciate your comments.
The reason you have 192M is that lowmem is the total amount of memory
that can be covered by up to three CAM entries. In the case of
setting mem=252M that max that three CAM entries can cover is 192M (64
+64+64). You should be able to access the other 60M via HIGHMEM.
Why doesn't it just use a 256M mapping, and not access the last 4M?
-Scott
From: Scott Wood <hidden> Date: 2007-10-26 20:52:27
Scott Wood wrote:
On Fri, Oct 26, 2007 at 10:04:19AM -0500, Kumar Gala wrote:
quoted
The reason you have 192M is that lowmem is the total amount of memory
that can be covered by up to three CAM entries. In the case of
setting mem=252M that max that three CAM entries can cover is 192M (64
+64+64). You should be able to access the other 60M via HIGHMEM.
Why doesn't it just use a 256M mapping, and not access the last 4M?
Not to mention, why highmem and not just normal TLB0 mappings for the
extra pages?
-Scott
From: Kumar Gala <hidden> Date: 2007-10-26 21:18:38
On Fri, 26 Oct 2007, Scott Wood wrote:
Scott Wood wrote:
quoted
On Fri, Oct 26, 2007 at 10:04:19AM -0500, Kumar Gala wrote:
quoted
The reason you have 192M is that lowmem is the total amount of memory
that can be covered by up to three CAM entries. In the case of setting
mem=252M that max that three CAM entries can cover is 192M (64 +64+64).
You should be able to access the other 60M via HIGHMEM.
Why doesn't it just use a 256M mapping, and not access the last 4M?
This has some possibility, not sure what the threshold should be. Do we
just always map 768M of lowmem regardless of how much memory we have?
Not to mention, why highmem and not just normal TLB0 mappings for the extra
pages?
Because we do not handle recursive misses in the TLB handlers. We expect
any load/store that occurs in the TLB handlers to not have a TLB fault
associated with (and thus all of lowmem must be pinned).
- k
From: Scott Wood <hidden> Date: 2007-10-26 21:27:10
Kumar Gala wrote:
On Fri, 26 Oct 2007, Scott Wood wrote:
quoted
Scott Wood wrote:
quoted
On Fri, Oct 26, 2007 at 10:04:19AM -0500, Kumar Gala wrote:
quoted
The reason you have 192M is that lowmem is the total amount of memory
that can be covered by up to three CAM entries. In the case of setting
mem=252M that max that three CAM entries can cover is 192M (64 +64+64).
You should be able to access the other 60M via HIGHMEM.
Why doesn't it just use a 256M mapping, and not access the last 4M?
This has some possibility, not sure what the threshold should be. Do we
just always map 768M of lowmem regardless of how much memory we have?
That's probably the simplest way. We'll need to fix VMALLOC_START as well.
quoted
Not to mention, why highmem and not just normal TLB0 mappings for the extra
pages?
Because we do not handle recursive misses in the TLB handlers. We expect
any load/store that occurs in the TLB handlers to not have a TLB fault
associated with (and thus all of lowmem must be pinned).
OK. I guess that means no page debugging... :-P
-Scott