summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorSwapnil Haria <swapnilh@cs.wisc.edu>2015-11-16 05:08:54 -0600
committerSwapnil Haria <swapnilh@cs.wisc.edu>2015-11-16 05:08:54 -0600
commit08cec03f8ec3bc427700343a7bd7d216433f93fc (patch)
tree533d50e08b31a36394e50b4cede7a13b376fc09f /src/cpu
parentf50e92d2c7931bc5145d0c4f2ec94362a4414160 (diff)
downloadgem5-08cec03f8ec3bc427700343a7bd7d216433f93fc.tar.xz
x86: Invalidating TLB entry on page fault
As per the x86 architecture specification, matching TLB entries need to be invalidated on a page fault. For instance, after a page fault due to inadequate protection bits on a TLB hit, the TLB entry needs to be invalidated. This behavior is clearly specified in the x86 architecture manuals from both AMD and Intel. This invalidation is missing currently in gem5, due to which linux kernel versions 3.8 and up cannot be simulated efficiently. This is exposed by a linux optimisation in commit e4a1cc56e4d728eb87072c71c07581524e5160b1, which removes a tlb flush on updating page table entries in x86. Testing: Linux kernel versions 3.8 onwards were booting very slowly in FS mode, due to repeated page faults (~300000 before the first print statement in a bash file). Ensured that page fault rate drops drastically and observed reduction in boot time from order of hours to minutes for linux kernel v3.8 and v3.11
Diffstat (limited to 'src/cpu')
0 files changed, 0 insertions, 0 deletions