mem: Add snoop filter to SystemXBar by default

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>
This commit is contained in:
Andreas Hansson 2016-08-12 14:11:45 +01:00
parent a23e914519
commit 080d4e08d6
3 changed files with 4 additions and 11 deletions

View file

@ -162,11 +162,6 @@ def config_cache(options, system):
else: else:
system.cpu[i].connectAllPorts(system.membus) 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 return system
# ExternalSlave provides a "port", but when that port connects to a cache, # ExternalSlave provides a "port", but when that port connects to a cache,

View file

@ -153,6 +153,9 @@ class SystemXBar(CoherentXBar):
response_latency = 2 response_latency = 2
snoop_response_latency = 4 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 # This specialisation of the coherent crossbar is to be considered
# the point of coherency, as there are no (coherent) downstream # the point of coherency, as there are no (coherent) downstream
# caches. # caches.

View file

@ -126,9 +126,6 @@ class BaseSystem(object):
cpu.createInterruptController() cpu.createInterruptController()
cpu.connectAllPorts(sha_bus if sha_bus != None else system.membus, cpu.connectAllPorts(sha_bus if sha_bus != None else system.membus,
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): def init_kvm(self, system):
"""Do KVM-specific system initialization. """Do KVM-specific system initialization.
@ -152,9 +149,7 @@ class BaseSystem(object):
self.init_kvm(system) self.init_kvm(system)
sha_bus = self.create_caches_shared(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: for cpu in system.cpu:
self.init_cpu(system, cpu, sha_bus) self.init_cpu(system, cpu, sha_bus)