mem-cache: Allow clean operations when block allocation fails
authorNikos Nikoleris <nikos.nikoleris@arm.com>
Mon, 12 Mar 2018 10:11:16 +0000 (10:11 +0000)
committerGabe Black <gabeblack@google.com>
Wed, 21 Mar 2018 22:28:26 +0000 (22:28 +0000)
commit0473286ab1e9992a906eff380000bf90c82eeccb
treed750bca0b96da2ab66c788ae3495dbe2f90f2cf3
parent68af229490fc811aebddf68b3e2e09e63a5fa475
mem-cache: Allow clean operations when block allocation fails

Block allocation can fail when there is an in-service MSHR that
operates on the victim block. This can happed due to:
* an upgrade operation: a request that needs a writable copy of the
  block finds a shared (non-writable) copy of the block in the cache
  and has allocates an MSHR for the pending upgrade operation, or
* a clean operation: a clean request finds a dirty copy of the block
  and allocates an MSHR for the pending clean operation.
This changes relaxes an assertion to allow for the 2nd case (cache
clean operations).

Change-Id: Ib51482160b5f2b3702ed744b0eac2029d34bc9d4
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9021
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/mem/cache/cache.cc
src/mem/cache/mshr.hh