185a186,191
> // is this the destination point for this packet? (e.g. true if
> // this xbar is the PoC for a cache maintenance operation to the
> // PoC) otherwise the destination is any cache that can satisfy
> // the request
> const bool is_destination = isDestination(pkt);
>
246c252
< if (!pointOfCoherency || pkt->isRead() || pkt->isWrite()) {
---
> if (forwardPacket(pkt)) {
255a262,268
> // make sure that the write request (e.g., WriteClean)
> // will stop at the memory below if this crossbar is its
> // destination
> if (pkt->isWrite() && is_destination) {
> pkt->clearWriteThrough();
> }
>
648a662,667
> // is this the destination point for this packet? (e.g. true if
> // this xbar is the PoC for a cache maintenance operation to the
> // PoC) otherwise the destination is any cache that can satisfy
> // the request
> const bool is_destination = isDestination(pkt);
>
701c720,727
< if (!pointOfCoherency || pkt->isRead() || pkt->isWrite()) {
---
> if (forwardPacket(pkt)) {
> // make sure that the write request (e.g., WriteClean)
> // will stop at the memory below if this crossbar is its
> // destination
> if (pkt->isWrite() && is_destination) {
> pkt->clearWriteThrough();
> }
>
960a987,996
> bool
> CoherentXBar::forwardPacket(const PacketPtr pkt)
> {
> // we are forwarding the packet if:
> // 1) this is a read or a write
> // 2) this crossbar is above the point of coherency
> return pkt->isRead() || pkt->isWrite() || !pointOfCoherency;
> }
>
>