diff -r 6c0a6bbc8611 -r 7e7e473aa414 src/arch/arm/tlb.cc --- a/src/arch/arm/tlb.cc Mon Mar 30 10:05:50 2015 +0100 +++ b/src/arch/arm/tlb.cc Mon Mar 30 10:06:02 2015 +0100 @@ -1076,7 +1076,13 @@ setAttr(te->attributes); if (te->nonCacheable) - req->setFlags(Request::UNCACHEABLE | Request::STRICT_ORDER); + req->setFlags(Request::UNCACHEABLE); + + // Require requests to be ordered if the request goes to + // strongly ordered or device memory (i.e., anything other + // than normal memory requires strict order). + if (te->mtype != TlbEntry::MemoryType::Normal) + req->setFlags(Request::STRICT_ORDER); Addr pa = te->pAddr(vaddr); req->setPaddr(pa);