x86: Stop setting the physical address in finalizePhysical.
authorGabe Black <gabeblack@google.com>
Fri, 15 May 2020 23:29:20 +0000 (16:29 -0700)
committerGabe Black <gabeblack@google.com>
Sat, 16 May 2020 03:13:49 +0000 (03:13 +0000)
The physical address has already been set (it's read earlier in the
function), and so doesn't need to be set again. Reading the virtual
address can cause an assert if the virtual address had never been set in
the first place, for example when an access comes from KVM which might
give you an access to complete which is based on a physical address
only.

Change-Id: Ic46a40b1a94235538b5bd53065e5019273b3d3f3
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29172
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/x86/tlb.cc

index 71ab56344513a56b073918577be690549419fa44..80684230b7f9ce8cb0040decc2b649a9a19cb885 100644 (file)
@@ -264,7 +264,6 @@ TLB::finalizePhysical(const RequestPtr &req,
         req->setFlags(Request::STRICT_ORDER);
         uint8_t func;
         PseudoInst::decodeAddrOffset(paddr - m5opRange.start(), func);
-        req->setPaddr(req->getVaddr());
         req->setLocalAccessor(
             [func, mode](ThreadContext *tc, PacketPtr pkt) -> Cycles
             {