mem: Enforce insertion order on the cache response path
authorAli Jafri <ali.jafri@arm.com>
Fri, 6 Nov 2015 08:26:37 +0000 (03:26 -0500)
committerAli Jafri <ali.jafri@arm.com>
Fri, 6 Nov 2015 08:26:37 +0000 (03:26 -0500)
commit52c8ae5187cb6ba8d15a8de6526f56defe541f5b
tree640bbc8a9d75c731939354a716cd734acad8f909
parent6b70afd0d4ec8821105e506d7a20f9af01b8eafb
mem: Enforce insertion order on the cache response path

This patch enforces insertion order transmission of packets on the
response path in the cache. Note that the logic to enforce order is
already present in the packet queue, this patch simply turns it on for
queues in the response path.

Without this patch, there are corner cases where a request-response is
faster than a response-response forwarded through the cache. This
violation of queuing order causes problems in the snoop filter leaving
it with inaccurate information. This causes assert failures in the
snoop filter later on.

A follow on patch relaxes the order enforcement in the packet queue to
limit the performance impact.
src/mem/cache/cache.cc
src/mem/dram_ctrl.cc
src/mem/qport.hh