X86: Clear out duplicate TLB entries when adding a new one.
Review Request #1155 - Created April 16, 2012 and submitted
| Information | |
|---|---|
| Gabe Black | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 8960:26f7c7e2a933 --------------------------- X86: Clear out duplicate TLB entries when adding a new one. It's possible for two page table walks to overlap which will go in the same place in the TLB's trie. They would land on top of each other, so this change adds some code which detects if an address already matches an entry and if so throws away the new one.
Issue Summary
1
1
0
0
| Description | From | Last Updated | Status |
|---|---|---|---|
| Does it make sense to move this up before the freeList.empty() check so we don't unnecessarily evict a block if ... | Steve Reinhardt | April 22, 2012, 9:57 a.m. | Open |
Review request changed
Updated (April 16, 2012, 10:45 p.m.)
Description: |
|
|||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+6) |
Posted (April 17, 2012, 12:44 a.m.)
I'm a little confused... are you saying that we could initiate a page table walk for a page where there's already a walk outstanding? Under what circumstances does this come up? Wouldn't it be easier and make more sense just to suppress the later response than to delete an existing entry? Assuming this was causing problems before, is there a place we should add an assertion to catch future similar bugs (like someone implementing the TLB in another ISA trying to overwrite an existing entry)?
Review request changed
Updated (April 21, 2012, 10:31 p.m.)
Description: |
|
|||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 3 (+9 -1) |
Posted (April 22, 2012, 9:57 a.m.)
Looking good, definitely pretty close. Thanks for the tweaks. The commit message also needs to be updated a bit too.
-
src/arch/x86/tlb.cc (Diff revision 3) -
Does it make sense to move this up before the freeList.empty() check so we don't unnecessarily evict a block if this check turns out to be true?
Review request changed
Updated (April 23, 2012, 5:17 a.m.)
Description: |
|
|||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 4 (+8 -3) |
Ship It!
