prefetch: don't panic on requests w/o contextID (e.g., writebacks).
This commit is contained in:
parent
ac64586a99
commit
a94c68228a
3 changed files with 18 additions and 2 deletions
7
src/mem/cache/prefetch/ghb.cc
vendored
7
src/mem/cache/prefetch/ghb.cc
vendored
|
@ -34,13 +34,18 @@
|
||||||
* GHB Prefetcher implementation.
|
* GHB Prefetcher implementation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "base/trace.hh"
|
||||||
#include "mem/cache/prefetch/ghb.hh"
|
#include "mem/cache/prefetch/ghb.hh"
|
||||||
#include "arch/isa_traits.hh"
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GHBPrefetcher::calculatePrefetch(PacketPtr &pkt, std::list<Addr> &addresses,
|
GHBPrefetcher::calculatePrefetch(PacketPtr &pkt, std::list<Addr> &addresses,
|
||||||
std::list<Tick> &delays)
|
std::list<Tick> &delays)
|
||||||
{
|
{
|
||||||
|
if (useContextId && !pkt->req->hasContextId()) {
|
||||||
|
DPRINTF(HWPrefetch, "ignoring request with no context ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Addr blk_addr = pkt->getAddr() & ~(Addr)(blkSize-1);
|
Addr blk_addr = pkt->getAddr() & ~(Addr)(blkSize-1);
|
||||||
int ctx_id = useContextId ? pkt->req->contextId() : 0;
|
int ctx_id = useContextId ? pkt->req->contextId() : 0;
|
||||||
assert(ctx_id < Max_Contexts);
|
assert(ctx_id < Max_Contexts);
|
||||||
|
|
5
src/mem/cache/prefetch/stride.cc
vendored
5
src/mem/cache/prefetch/stride.cc
vendored
|
@ -46,6 +46,11 @@ StridePrefetcher::calculatePrefetch(PacketPtr &pkt, std::list<Addr> &addresses,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useContextId && !pkt->req->hasContextId()) {
|
||||||
|
DPRINTF(HWPrefetch, "ignoring request with no context ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Addr blk_addr = pkt->getAddr() & ~(Addr)(blkSize-1);
|
Addr blk_addr = pkt->getAddr() & ~(Addr)(blkSize-1);
|
||||||
int ctx_id = useContextId ? pkt->req->contextId() : 0;
|
int ctx_id = useContextId ? pkt->req->contextId() : 0;
|
||||||
Addr pc = pkt->req->getPC();
|
Addr pc = pkt->req->getPC();
|
||||||
|
|
|
@ -409,6 +409,12 @@ class Request : public FastAlloc
|
||||||
flags.set(VALID_EXTRA_DATA);
|
flags.set(VALID_EXTRA_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
hasContextId() const
|
||||||
|
{
|
||||||
|
return flags.isSet(VALID_CONTEXT_ID);
|
||||||
|
}
|
||||||
|
|
||||||
/** Accessor function for context ID.*/
|
/** Accessor function for context ID.*/
|
||||||
int
|
int
|
||||||
contextId() const
|
contextId() const
|
||||||
|
@ -425,13 +431,13 @@ class Request : public FastAlloc
|
||||||
return _threadId;
|
return _threadId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Accessor function for pc.*/
|
|
||||||
bool
|
bool
|
||||||
hasPC() const
|
hasPC() const
|
||||||
{
|
{
|
||||||
return flags.isSet(VALID_PC);
|
return flags.isSet(VALID_PC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Accessor function for pc.*/
|
||||||
Addr
|
Addr
|
||||||
getPC() const
|
getPC() const
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue