Hi all,
I'm trying to bypass a packet from LLC (Last Level Cache, L3 in this case)
to Main Memory.
I'm getting this panic:
Path: gem5/src/mem/snoop_filter.cc
Test: ./tests/test-progs/hello/bin/x86/linux/hello2
} else { // if (!cpkt->needsResponse())
assert(cpkt->isEviction());
// make sure that the sender actually had the line
*panic_if*(!(sf_item.holder & req_port), "requester %x is not a " \
"holder :( SF value %x.%x, pkt: %#x, cmd: %s\n", req_port,
sf_item.requested, sf_item.holder, cpkt->getAddr(), \
cpkt->cmd.toString());
// CleanEvicts and Writebacks -> the sender and all caches above
// it may not have the line anymore.
if (!cpkt->isBlockCached()) {
sf_item.holder &= ~req_port;
DPRINTF(SnoopFilter, "%s: new SF value %x.%x\n",
__func__, sf_item.requested, sf_item.holder);
}
}
Based on comments, what is expected if the cmd is WriteBack? Because the
panic is going to raise and the test will fail.
I was thinking if maybe I have to add some extra conditions like this:
panic_if(!(sf_item.holder & req_port) & !(cpkt->isCleanEviction() | \
cpkt->isWriteback()), "requester %x is not a " \
"holder :( SF value %x.%x, pkt: %#x, cmd: %s\n", req_port,
sf_item.requested, sf_item.holder, cpkt->getAddr(), \
cpkt->cmd.toString());
Thanks,
Esteban
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users