summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTony Gutierrez <anthony.gutierrez@amd.com>2018-04-17 18:26:34 -0400
committerAnthony Gutierrez <anthony.gutierrez@amd.com>2018-04-17 22:50:37 +0000
commite3dd3c77d2e28b40534a77db343163bcb388a40a (patch)
tree98f5c0676bac0e5aad622167b9f9ee029770be1c /src
parent2a9573f5942b5416fb0570cf5cb6cdecba733392 (diff)
downloadgem5-e3dd3c77d2e28b40534a77db343163bcb388a40a.tar.xz
gpu-compute: fix bad asserts in gpu tlb and cu tlb port
change 2a15bfd79ced20a6d4cbf0a0a4c2fbb1444b9a44 introduced a few bugs in the tlb of the cu. asserts in the gpu tlb and cu expected the page table lookup() function to return a bool, and this value was used directly in the gpu tlb's assert and it was kept in the gpu tlb entry, where later the cu would assert that it is true. this change fixes the issue by checking the validity of the pte pointer returned by lookup() in order to set the validity of the tlb entry itself. Change-Id: Ief1f205db65f1911fd132acd314e4407c5e3ffdf Reviewed-on: https://gem5-review.googlesource.com/10001 Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu-compute/gpu_tlb.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gpu-compute/gpu_tlb.cc b/src/gpu-compute/gpu_tlb.cc
index 05d22dad6..5691f3556 100644
--- a/src/gpu-compute/gpu_tlb.cc
+++ b/src/gpu-compute/gpu_tlb.cc
@@ -1544,14 +1544,14 @@ namespace X86ISA
if (!sender_state->prefetch) {
// no PageFaults are permitted after
// the second page table lookup
- assert(success);
+ assert(pte);
DPRINTF(GPUTLB, "Mapping %#x to %#x\n", alignedVaddr,
pte->paddr);
sender_state->tlbEntry =
new GpuTlbEntry(0, virt_page_addr,
- pte->paddr, success);
+ pte->paddr, true);
} else {
// If this was a prefetch, then do the normal thing if it
// was a successful translation. Otherwise, send an empty
@@ -1563,7 +1563,7 @@ namespace X86ISA
sender_state->tlbEntry =
new GpuTlbEntry(0, virt_page_addr,
- pte->paddr, success);
+ pte->paddr, true);
} else {
DPRINTF(GPUPrefetch, "Prefetch failed %#x\n",
alignedVaddr);