mem: Add snoop filter to SystemXBar by default
authorAndreas Hansson <andreas.hansson@arm.com>
Fri, 12 Aug 2016 13:11:45 +0000 (14:11 +0100)
committerAndreas Hansson <andreas.hansson@arm.com>
Fri, 12 Aug 2016 13:11:45 +0000 (14:11 +0100)
This patch changes the default behaviour of the SystemXBar, adding a
snoop filter. With the recent updates to the snoop filter allocation
behaviour this change no longer causes problems for the regressions
without caches.

Change-Id: Ibe0cd437b71b2ede9002384126553679acc69cc1
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
configs/common/CacheConfig.py
src/mem/XBar.py
tests/configs/base_config.py

index 8489e323150d798f9188b36299966b82c592ba77..52659e89d2884e76abac4e79d29c4b4e364c1b2d 100644 (file)
@@ -162,11 +162,6 @@ 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,
index 674f9262e47c73395d8ab2934a1f8e4e542f6211..59f0d8d8d7be7239015915a21ad0c89d11af111d 100644 (file)
@@ -153,6 +153,9 @@ class SystemXBar(CoherentXBar):
     response_latency = 2
     snoop_response_latency = 4
 
+    # Use a snoop-filter by default
+    snoop_filter = SnoopFilter(lookup_latency = 1)
+
     # This specialisation of the coherent crossbar is to be considered
     # the point of coherency, as there are no (coherent) downstream
     # caches.
index 185c0002038b03fece8b1de272e26d7cba4ab1f8..860b84fa40452e537511d84ffb45a199a6645749 100644 (file)
@@ -126,9 +126,6 @@ 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.
@@ -152,9 +149,7 @@ 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)