M5 utility: Touch all pages in readfile buffer
Review Request #121 - Created Aug. 9, 2010 and submitted
Information | |
---|---|
Joel Hestness | |
gem5 | |
Reviewers | |
Default | |
util/m5/m5.c: in readfile(), added memset to touch all pages - ensure they are in the page table This problem is caused by Linux demand paging. If the pages are not yet mapped in the page table, the M5 utility does not know the physical memory address in the simulated system to which it is sending the file read from the host machine.
This fixes the functionality for x86, where the problem was first encountered. I have also tested the utility for Alpha. The simulated system executes approximately 10% more instructions during the readfile operation due to the memset, but the simulation time required for this is still marginal. Using memset provides an ISA independent solution compared to buffer accesses that use a page-sized stride.
looks fine
Posted (Aug. 9, 2010, 5:13 a.m.)
-
util/m5/m5.c (Diff revision 1) -
I actually just noticed that you're zeroing sizeof(buf). Perhaps you should do what gabe said and just touch one word per page. Seems like this could also be #ifdef x86.