Messages in this thread | | | Date | Wed, 20 Apr 2011 12:45:30 -0400 | From | Rik van Riel <> | Subject | Re: Background memory scrubbing |
| |
On 04/20/2011 03:58 AM, Robert Whitton wrote:
> for each PFN from 256 to the highest valid PFN > { > if (pfn_valid(PFN)) > { > page = pfn_to_page(PFN) > va = kmap(page) > atomic_scrub(va, PAGE_SIZE) > kunmap(page) > } > > sleep(for_a_while) > }
What exactly does atomic_scrub do?
> This code works absolutely fine up to a short distance beyond the 16MB boundary (specifically it seems to always fail on my hardware at PFN 4105). At this point despite the fact that kmap returns a valid virtual address (and it is the virtual address that I expect - 0xffff880001009000) I get the kernel oops - "unable to handle kernel paging request".
Looks like you might be making some of the kernel code that is running at that moment unreachable, leading to a kernel page fault.
| |