cpu: Fix LLSC atomic CPU wakeup
authorKrishnendra Nathella <krinat01@arm.com>
Sun, 19 Jul 2015 20:03:30 +0000 (15:03 -0500)
committerKrishnendra Nathella <krinat01@arm.com>
Sun, 19 Jul 2015 20:03:30 +0000 (15:03 -0500)
commitcabd4768c7186911fda91b9ea458df775b79486a
treeded7b5edfa8d62f144258f9c8032744a86158d96
parentc0d19391d423d16c5dc587c4946e8395b9c0db91
cpu: Fix LLSC atomic CPU wakeup

Writes to locked memory addresses (LLSC) did not wake up the locking
CPU. This can lead to deadlocks on multi-core runs. In AtomicSimpleCPU,
recvAtomicSnoop was checking if the incoming packet was an invalidation
(isInvalidate) and only then handled a locked snoop. But, writes are
seen instead of invalidates when running without caches (fast-forward
configurations). As as simple fix, now handleLockedSnoop is also called
even if the incoming snoop packet are from writes.
src/cpu/minor/lsq.cc
src/cpu/o3/lsq_unit_impl.hh
src/cpu/simple/atomic.cc
src/cpu/simple/timing.cc
tests/quick/fs/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini
tests/quick/fs/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/simout
tests/quick/fs/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stats.txt
tests/quick/fs/10.linux-boot/ref/arm/linux/realview-simple-timing-dual/stats.txt