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:
parent
a23e914519
commit
080d4e08d6
3 changed files with 4 additions and 11 deletions
|
@ -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,
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue