From dd6a21190e33f6d09ee6ff5ed045f92000c5e801 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 5 Sep 2007 14:57:50 -0400 Subject: [PATCH 1/2] Configuration: Fix example script to only create one L2 if --l2cache and -nX are given as parameters. Patch submitted by: Jonas Diemer [diemer (a) ida.ing.tu-bs.de] --HG-- extra : convert_revision : 1dfc548d2bc33d622d829bbf385f4bf9700711cd --- configs/example/se.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/configs/example/se.py b/configs/example/se.py index 639bcd7c6..b4b50a013 100644 --- a/configs/example/se.py +++ b/configs/example/se.py @@ -100,15 +100,17 @@ system = System(cpu = [CPUClass(cpu_id=i) for i in xrange(np)], system.physmem.port = system.membus.port +if options.l2cache: + system.l2 = L2Cache(size='2MB') + system.tol2bus = Bus() + system.l2.cpu_side = system.tol2bus.port + system.l2.mem_side = system.membus.port + for i in xrange(np): if options.caches: system.cpu[i].addPrivateSplitL1Caches(L1Cache(size = '32kB'), L1Cache(size = '64kB')) if options.l2cache: - system.l2 = L2Cache(size='2MB') - system.tol2bus = Bus() - system.l2.cpu_side = system.tol2bus.port - system.l2.mem_side = system.membus.port system.cpu[i].connectMemPorts(system.tol2bus) else: system.cpu[i].connectMemPorts(system.membus) From bf7c01d43d2a9e415ed3cc6cf310e76109ce6844 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 5 Sep 2007 17:12:41 -0400 Subject: [PATCH 2/2] Bus: Fix drain code; old method could return 1 in atomic mode and never call de->process(). --HG-- extra : convert_revision : 35990e5eaf93f7a95a0ec72e9f92034a042def3e --- src/mem/bus.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mem/bus.cc b/src/mem/bus.cc index cc3504e83..6e790e438 100644 --- a/src/mem/bus.cc +++ b/src/mem/bus.cc @@ -613,12 +613,11 @@ Bus::drain(Event * de) //We should check that we're not "doing" anything, and that noone is //waiting. We might be idle but have someone waiting if the device we //contacted for a retry didn't actually retry. - if (curTick >= tickNextIdle && retryList.size() == 0) { - return 0; - } else { + if (retryList.size() || (curTick < tickNextIdle && busIdle.scheduled())) { drainEvent = de; return 1; } + return 0; } void