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

Reply via email to