summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/common/CacheConfig.py5
-rw-r--r--tests/configs/base_config.py6
2 files changed, 11 insertions, 0 deletions
diff --git a/configs/common/CacheConfig.py b/configs/common/CacheConfig.py
index 1a2c87828..e4114355f 100644
--- a/configs/common/CacheConfig.py
+++ b/configs/common/CacheConfig.py
@@ -153,6 +153,11 @@ def config_cache(options, system):
else:
system.cpu[i].connectAllPorts(system.membus)
+ # Add a snoop filter to the membus if there are caches above it
+ if (options.l2cache or options.caches) and \
+ (system.membus.snoop_filter == NULL):
+ system.membus.snoop_filter = SnoopFilter()
+
return system
# ExternalSlave provides a "port", but when that port connects to a cache,
diff --git a/tests/configs/base_config.py b/tests/configs/base_config.py
index 3f28ada5d..185c00020 100644
--- a/tests/configs/base_config.py
+++ b/tests/configs/base_config.py
@@ -126,6 +126,9 @@ class BaseSystem(object):
cpu.createInterruptController()
cpu.connectAllPorts(sha_bus if sha_bus != None else system.membus,
system.membus)
+ # System has caches before the membus -> add snoop filter
+ if sha_bus and system.membus.snoop_filter == NULL:
+ system.membus.snoop_filter = SnoopFilter()
def init_kvm(self, system):
"""Do KVM-specific system initialization.
@@ -149,6 +152,9 @@ class BaseSystem(object):
self.init_kvm(system)
sha_bus = self.create_caches_shared(system)
+ # System has caches before the membus -> add snoop filter
+ if sha_bus and system.membus.snoop_filter == NULL:
+ system.membus.snoop_filter = SnoopFilter()
for cpu in system.cpu:
self.init_cpu(system, cpu, sha_bus)