how to tell if arbitrary kernel memory address is backed by physical memory?
Hi all,
Quick question to the memory management folks.
Is there a portable way to tell whether a particular virtual address in the lowmem address range is backed by physical memory and is readable?
For background...we have some guys working on a software memory scrubber for an embedded board. The memory controller supports ECC but doesn't support scrubbing in hardware. What we want to do is walk all of lowmem, reading in memory. If a fault is encountered, it will be handled by other code.
Thanks,
Chris
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 9 lines · Chris Friesen
Quick question to the memory management folks.
Is there a portable way to tell whether a particular virtual address in the lowmem address range is backed by physical memory and is readable?
For background...we have some guys working on a software memory scrubber for an embedded board. The memory controller supports ECC but doesn't support scrubbing in hardware. What we want to do is walk all of lowmem, reading in memory. If a fault is encountered, it will be handled by other code.
Virtual address in the lowmem address range? lowmem address ranges exist for physical addresses.
If you walk lowmem (physical) then you will never see a missing page.
So I guess you have a process that wants to determine if its memory is present? See
man 2 mincore
which describes a glibc call that shows which pages of a process are present.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 10 lines · Christoph Lameter
Quoted 7 lines · Chris Friesen
Is there a portable way to tell whether a particular virtual address in the lowmem address range is backed by physical memory and is readable?
For background...we have some guys working on a software memory scrubber for an embedded board. The memory controller supports ECC but doesn't support scrubbing in hardware. What we want to do is walk all of lowmem, reading in memory. If a fault is encountered, it will be handled by other code.
Quoted 4 lines
Virtual address in the lowmem address range? lowmem address ranges exist for physical addresses.
If you walk lowmem (physical) then you will never see a missing page.
We have a mips board that appears to have holes in the lowmem mappings such that blindly walking all of it causes problems. I assume the allocator knows about these holes and simply doesn't assign memory at those addresses.
We may have found a solution though...it looks like virt_addr_valid() returns false for the problematic addresses. Would it be reasonable to call this once for each page before trying to access it?
Chris
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 3 lines · Chris Friesen
We have a mips board that appears to have holes in the lowmem mappings such that blindly walking all of it causes problems. I assume the allocator knows about these holes and simply doesn't assign memory at those addresses.
Yes memory is registered in distinct ranges during boot.
Quoted 3 lines
We may have found a solution though...it looks like
virt_addr_valid()returns false for the problematic addresses. Would it be reasonable to call this once for each page before trying to access it?
Sure. Note that virt_addr_valid only ensures that there is a page struct for that address. You may need to ensure that PageReserved(page) is false if you want to make sure that you have actual memory there that is valid to use.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>