diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/common/FSConfig.py --- a/configs/common/FSConfig.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/common/FSConfig.py Mon Jul 15 09:44:22 2013 +0100 @@ -55,7 +55,7 @@ default = Self.badaddr_responder.pio -def makeLinuxAlphaSystem(mem_mode, MemClass, mdesc = None): +def makeLinuxAlphaSystem(mem_mode, mdesc = None): IO_address_space_base = 0x80000000000 class BaseTsunami(Tsunami): ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0) @@ -73,11 +73,9 @@ # base address (including the PCI config space) self.bridge = Bridge(delay='50ns', ranges = [AddrRange(IO_address_space_base, Addr.max)]) - self.physmem = MemClass(range = AddrRange(mdesc.mem())) - self.mem_ranges = [self.physmem.range] + self.mem_ranges = [AddrRange(mdesc.mem())] self.bridge.master = self.iobus.slave self.bridge.slave = self.membus.master - self.physmem.port = self.membus.master self.disk0 = CowIdeDisk(driveID='master') self.disk2 = CowIdeDisk(driveID='master') self.disk0.childImage(mdesc.disk()) @@ -104,15 +102,13 @@ return self -def makeLinuxAlphaRubySystem(mem_mode, MemClass, mdesc = None): +def makeLinuxAlphaRubySystem(mem_mode, mdesc = None): class BaseTsunami(Tsunami): ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0) ide = IdeController(disks=[Parent.disk0, Parent.disk2], pci_func=0, pci_dev=0, pci_bus=0) - - physmem = MemClass(range = AddrRange(mdesc.mem())) - self = LinuxAlphaSystem(physmem = physmem) - self.mem_ranges = [self.physmem.range] + self = LinuxAlphaSystem() + self.mem_ranges = [AddrRange(mdesc.mem())] if not mdesc: # generic system mdesc = SysConfig() @@ -121,13 +117,6 @@ # Create pio bus to connect all device pio ports to rubymem's pio port self.piobus = NoncoherentBus() - # - # Pio functional accesses from devices need direct access to memory - # RubyPort currently does support functional accesses. Therefore provide - # the piobus a direct connection to physical memory - # - self.piobus.master = physmem.port - self.disk0 = CowIdeDisk(driveID='master') self.disk2 = CowIdeDisk(driveID='master') self.disk0.childImage(mdesc.disk()) @@ -157,7 +146,7 @@ return self -def makeSparcSystem(mem_mode, MemClass, mdesc = None): +def makeSparcSystem(mem_mode, mdesc = None): # Constants from iob.cc and uart8250.cc iob_man_addr = 0x9800000000 uart_pio_size = 8 @@ -180,13 +169,10 @@ self.t1000 = T1000() self.t1000.attachOnChipIO(self.membus) self.t1000.attachIO(self.iobus) - self.physmem = MemClass(range = AddrRange(Addr('1MB'), size = '64MB')) - self.physmem2 = MemClass(range = AddrRange(Addr('2GB'), size ='256MB')) - self.mem_ranges = [self.physmem.range, self.physmem2.range] + self.mem_ranges = [AddrRange(Addr('1MB'), size = '64MB'), + AddrRange(Addr('2GB'), size ='256MB')] self.bridge.master = self.iobus.slave self.bridge.slave = self.membus.master - self.physmem.port = self.membus.master - self.physmem2.port = self.membus.master self.rom.port = self.membus.master self.nvram.port = self.membus.master self.hypervisor_desc.port = self.membus.master @@ -225,7 +211,7 @@ return self -def makeArmSystem(mem_mode, machine_type, MemClass, mdesc = None, +def makeArmSystem(mem_mode, machine_type, mdesc = None, dtb_filename = None, bare_metal=False): assert machine_type @@ -273,8 +259,7 @@ if bare_metal: # EOT character on UART will end the simulation self.realview.uart.end_on_eot = True - self.physmem = MemClass(range = AddrRange(Addr(mdesc.mem()))) - self.mem_ranges = [self.physmem.range] + self.mem_ranges = [AddrRange(mdesc.mem())] else: self.kernel = binary('vmlinux.arm.smp.fb.2.6.38.8') if dtb_filename is not None: @@ -288,11 +273,8 @@ boot_flags = 'earlyprintk console=ttyAMA0 lpj=19988480 norandmaps ' + \ 'rw loglevel=8 mem=%s root=/dev/sda1' % mdesc.mem() - - self.physmem = MemClass(range = AddrRange(self.realview.mem_start_addr, - size = mdesc.mem()), - conf_table_reported = True) - self.mem_ranges = [self.physmem.range] + self.mem_ranges = [AddrRange(self.realview.mem_start_addr, + size = mdesc.mem())] self.realview.setupBootLoader(self.membus, self, binary) self.gic_cpu_addr = self.realview.gic.cpu_addr self.flags_addr = self.realview.realview_io.pio_addr + 0x30 @@ -300,8 +282,6 @@ if mdesc.disk().lower().count('android'): boot_flags += " init=/init " self.boot_osflags = boot_flags - - self.physmem.port = self.membus.master self.realview.attachOnChipIO(self.membus, self.bridge) self.realview.attachIO(self.iobus) self.intrctrl = IntrControl() @@ -313,7 +293,7 @@ return self -def makeLinuxMipsSystem(mem_mode, MemClass, mdesc = None): +def makeLinuxMipsSystem(mem_mode, mdesc = None): class BaseMalta(Malta): ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0) ide = IdeController(disks=[Parent.disk0, Parent.disk2], @@ -327,11 +307,9 @@ self.iobus = NoncoherentBus() self.membus = MemBus() self.bridge = Bridge(delay='50ns') - self.physmem = MemClass(range = AddrRange('1GB')) - self.mem_ranges = [self.physmem.range] + self.mem_ranges = [AddrRange('1GB')] self.bridge.master = self.iobus.slave self.bridge.slave = self.membus.master - self.physmem.port = self.membus.master self.disk0 = CowIdeDisk(driveID='master') self.disk2 = CowIdeDisk(driveID='master') self.disk0.childImage(mdesc.disk()) @@ -369,7 +347,6 @@ APIC_range_size = 1 << 12; x86_sys.membus = MemBus() - x86_sys.physmem.port = x86_sys.membus.master # North Bridge x86_sys.iobus = NoncoherentBus() @@ -409,19 +386,13 @@ # North Bridge x86_sys.piobus = NoncoherentBus() - # - # Pio functional accesses from devices need direct access to memory - # RubyPort currently does support functional accesses. Therefore provide - # the piobus a direct connection to physical memory - # - x86_sys.piobus.master = x86_sys.physmem.port # add the ide to the list of dma devices that later need to attach to # dma controllers x86_sys._dma_ports = [x86_sys.pc.south_bridge.ide.dma] x86_sys.pc.attachIO(x86_sys.piobus, x86_sys._dma_ports) -def makeX86System(mem_mode, MemClass, numCPUs = 1, mdesc = None, self = None, +def makeX86System(mem_mode, numCPUs = 1, mdesc = None, self = None, Ruby = False): if self == None: self = X86System() @@ -434,8 +405,7 @@ self.mem_mode = mem_mode # Physical memory - self.physmem = MemClass(range = AddrRange(mdesc.mem())) - self.mem_ranges = [self.physmem.range] + self.mem_ranges = [AddrRange(mdesc.mem())] # Platform self.pc = Pc() @@ -518,17 +488,16 @@ self.intel_mp_table.base_entries = base_entries self.intel_mp_table.ext_entries = ext_entries -def makeLinuxX86System(mem_mode, MemClass, numCPUs = 1, mdesc = None, +def makeLinuxX86System(mem_mode, numCPUs = 1, mdesc = None, Ruby = False): self = LinuxX86System() # Build up the x86 system and then specialize it for Linux - makeX86System(mem_mode, MemClass, numCPUs, mdesc, self, Ruby) + makeX86System(mem_mode, numCPUs, mdesc, self, Ruby) # We assume below that there's at least 1MB of memory. We'll require 2 # just to avoid corner cases. - phys_mem_size = sum(map(lambda mem: mem.range.size(), - self.memories.unproxy(self))) + phys_mem_size = sum(map(lambda r: r.size(), self.mem_ranges)) assert(phys_mem_size >= 0x200000) self.e820_table.entries = \ diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/example/fs.py --- a/configs/example/fs.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/example/fs.py Mon Jul 15 09:44:22 2013 +0100 @@ -102,17 +102,16 @@ np = options.num_cpus if buildEnv['TARGET_ISA'] == "alpha": - test_sys = makeLinuxAlphaSystem(test_mem_mode, TestMemClass, bm[0]) + test_sys = makeLinuxAlphaSystem(test_mem_mode, bm[0]) elif buildEnv['TARGET_ISA'] == "mips": - test_sys = makeLinuxMipsSystem(test_mem_mode, TestMemClass, bm[0]) + test_sys = makeLinuxMipsSystem(test_mem_mode, bm[0]) elif buildEnv['TARGET_ISA'] == "sparc": - test_sys = makeSparcSystem(test_mem_mode, TestMemClass, bm[0]) + test_sys = makeSparcSystem(test_mem_mode, bm[0]) elif buildEnv['TARGET_ISA'] == "x86": - test_sys = makeLinuxX86System(test_mem_mode, TestMemClass, - options.num_cpus, bm[0]) + test_sys = makeLinuxX86System(test_mem_mode, options.num_cpus, bm[0]) elif buildEnv['TARGET_ISA'] == "arm": - test_sys = makeArmSystem(test_mem_mode, options.machine_type, - TestMemClass, bm[0], options.dtb_filename, + test_sys = makeArmSystem(test_mem_mode, options.machine_type, bm[0], + options.dtb_filename, bare_metal=options.bare_metal) else: fatal("Incapable of building %s full system!", buildEnv['TARGET_ISA']) @@ -164,18 +163,24 @@ CacheConfig.config_cache(options, test_sys) +# Create the appropriate memory controllers and connect them to the +# memory bus +test_sys.mem_ctrls = [TestMemClass(range = r, conf_table_reported = True) + for r in test_sys.mem_ranges] +for i in xrange(len(test_sys.mem_ctrls)): + test_sys.mem_ctrls[i].port = test_sys.membus.master + if len(bm) == 2: if buildEnv['TARGET_ISA'] == 'alpha': - drive_sys = makeLinuxAlphaSystem(drive_mem_mode, DriveMemClass, bm[1]) + drive_sys = makeLinuxAlphaSystem(drive_mem_mode, bm[1]) elif buildEnv['TARGET_ISA'] == 'mips': - drive_sys = makeLinuxMipsSystem(drive_mem_mode, DriveMemClass, bm[1]) + drive_sys = makeLinuxMipsSystem(drive_mem_mode, bm[1]) elif buildEnv['TARGET_ISA'] == 'sparc': - drive_sys = makeSparcSystem(drive_mem_mode, DriveMemClass, bm[1]) + drive_sys = makeSparcSystem(drive_mem_mode, bm[1]) elif buildEnv['TARGET_ISA'] == 'x86': - drive_sys = makeX86System(drive_mem_mode, DriveMemClass, np, bm[1]) + drive_sys = makeX86System(drive_mem_mode, np, bm[1]) elif buildEnv['TARGET_ISA'] == 'arm': - drive_sys = makeArmSystem(drive_mem_mode, options.machine_type, - DriveMemClass, bm[1]) + drive_sys = makeArmSystem(drive_mem_mode, options.machine_type, bm[1]) # Create a source clock for the system and set the clock period drive_sys.clk_domain = SrcClockDomain(clock = options.sys_clock) @@ -201,6 +206,13 @@ drive_sys.iobridge.slave = drive_sys.iobus.master drive_sys.iobridge.master = drive_sys.membus.slave + # Create the appropriate memory controllers and connect them to the + # memory bus + drive_sys.mem_ctrls = [DriveMemClass(range = r, conf_table_reported = True) + for r in drive_sys.mem_ranges] + for i in xrange(len(drive_sys.mem_ctrls)): + drive_sys.mem_ctrls[i].port = drive_sys.membus.master + drive_sys.init_param = options.init_param root = makeDualRoot(True, test_sys, drive_sys, options.etherdump) elif len(bm) == 1: diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/example/ruby_fs.py --- a/configs/example/ruby_fs.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/example/ruby_fs.py Mon Jul 15 09:44:22 2013 +0100 @@ -83,10 +83,9 @@ TestMemClass = Simulation.setMemClass(options) if buildEnv['TARGET_ISA'] == "alpha": - system = makeLinuxAlphaRubySystem(test_mem_mode, TestMemClass, bm[0]) + system = makeLinuxAlphaRubySystem(test_mem_mode, bm[0]) elif buildEnv['TARGET_ISA'] == "x86": - system = makeLinuxX86System(test_mem_mode, TestMemClass, - options.num_cpus, bm[0], True) + system = makeLinuxX86System(test_mem_mode, options.num_cpus, bm[0], True) Simulation.setWorkCountOptions(system, options) else: fatal("incapable of building non-alpha or non-x86 full system!") @@ -127,5 +126,12 @@ system.ruby._cpu_ruby_ports[i].access_phys_mem = True +mem_ctrls = [] +for r in system.mem_ranges: + mem_ctrls.append(TestMemClass(range = r, conf_table_reported = True)) +system.mem_ctrls = mem_ctrls +for i in xrange(len(system.mem_ctrls)): + system.mem_ctrls[i].port = system.piobus.master + root = Root(full_system = True, system = system) Simulation.run(options, root, system, FutureClass) diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/MESI_CMP_directory.py --- a/configs/ruby/MESI_CMP_directory.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/MESI_CMP_directory.py Mon Jul 15 09:44:22 2013 +0100 @@ -140,8 +140,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/MI_example.py --- a/configs/ruby/MI_example.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/MI_example.py Mon Jul 15 09:44:22 2013 +0100 @@ -105,8 +105,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/MOESI_CMP_directory.py --- a/configs/ruby/MOESI_CMP_directory.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/MOESI_CMP_directory.py Mon Jul 15 09:44:22 2013 +0100 @@ -135,8 +135,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/MOESI_CMP_token.py --- a/configs/ruby/MOESI_CMP_token.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/MOESI_CMP_token.py Mon Jul 15 09:44:22 2013 +0100 @@ -156,8 +156,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/MOESI_hammer.py --- a/configs/ruby/MOESI_hammer.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/MOESI_hammer.py Mon Jul 15 09:44:22 2013 +0100 @@ -131,8 +131,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/Network_test.py --- a/configs/ruby/Network_test.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/Network_test.py Mon Jul 15 09:44:22 2013 +0100 @@ -103,8 +103,7 @@ cntrl_count += 1 - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(phys_mem_size % options.num_dirs == 0) mem_module_size = phys_mem_size / options.num_dirs diff -r 0fb9fbc55ba0 -r 5b617661ba4e configs/ruby/Ruby.py --- a/configs/ruby/Ruby.py Mon Jul 15 09:42:56 2013 +0100 +++ b/configs/ruby/Ruby.py Mon Jul 15 09:44:22 2013 +0100 @@ -183,8 +183,7 @@ total_mem_size.value += dir_cntrl.directory.size.value dir_cntrl.directory.numa_high_bit = numa_bit - phys_mem_size = sum(map(lambda mem: mem.range.size(), - system.memories.unproxy(system))) + phys_mem_size = sum(map(lambda r: r.size(), system.mem_ranges)) assert(total_mem_size.value == phys_mem_size) ruby_profiler = RubyProfiler(ruby_system = ruby, diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/alpha_generic.py --- a/tests/configs/alpha_generic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/alpha_generic.py Mon Jul 15 09:44:22 2013 +0100 @@ -59,7 +59,7 @@ pass def create_system(self): - system = FSConfig.makeLinuxAlphaSystem(self.mem_mode, DDR3_1600_x64) + system = FSConfig.makeLinuxAlphaSystem(self.mem_mode) self.init_system(system) return system diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/arm_generic.py --- a/tests/configs/arm_generic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/arm_generic.py Mon Jul 15 09:44:22 2013 +0100 @@ -60,9 +60,7 @@ def create_system(self): system = FSConfig.makeArmSystem(self.mem_mode, - self.machine_type, - DDR3_1600_x64, - None, False) + self.machine_type, None, False) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/base_config.py --- a/tests/configs/base_config.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/base_config.py Mon Jul 15 09:44:22 2013 +0100 @@ -221,6 +221,14 @@ def init_system(self, system): BaseSystem.init_system(self, system) + # create the memory controllers and connect them, stick with + # the physmem name to avoid bumping all the reference stats + system.physmem = [self.mem_class(range = r, + conf_table_reported = True) + for r in system.mem_ranges] + for i in xrange(len(system.physmem)): + system.physmem[i].port = system.membus.master + # create the iocache, which by default runs at the system clock system.iocache = IOCache(addr_ranges=system.mem_ranges) system.iocache.cpu_side = system.iobus.master diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/memtest-ruby.py --- a/tests/configs/memtest-ruby.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/memtest-ruby.py Mon Jul 15 09:44:22 2013 +0100 @@ -91,6 +91,8 @@ for cpu in cpus: cpu.clk_domain = system.cpu_clk_domain +system.mem_ranges = AddrRange('256MB') + Ruby.create_system(options, system) # Create a separate clock domain for Ruby diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/pc-o3-timing.py --- a/tests/configs/pc-o3-timing.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/pc-o3-timing.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from x86_generic import * root = LinuxX86FSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=DerivO3CPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/pc-simple-atomic.py --- a/tests/configs/pc-simple-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/pc-simple-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from x86_generic import * root = LinuxX86FSSystemUniprocessor(mem_mode='atomic', + mem_class=DDR3_1600_x64, cpu_class=AtomicSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/pc-simple-timing-ruby.py --- a/tests/configs/pc-simple-timing-ruby.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/pc-simple-timing-ruby.py Mon Jul 15 09:44:22 2013 +0100 @@ -55,7 +55,7 @@ #the system mdesc = SysConfig(disk = 'linux-x86.img') -system = FSConfig.makeLinuxX86System('timing', DDR3_1600_x64, options.num_cpus, +system = FSConfig.makeLinuxX86System('timing', options.num_cpus, mdesc=mdesc, Ruby=True) system.kernel = FSConfig.binary('x86_64-vmlinux-2.6.22.9.smp') @@ -84,5 +84,12 @@ # Set access_phys_mem to True for ruby port system.ruby._cpu_ruby_ports[i].access_phys_mem = True +mem_ctrls = [] +for r in system.mem_ranges: + mem_ctrls.append(TestMemClass(range = r, conf_table_reported = True)) +system.mem_ctrls = mem_ctrls +for i in xrange(len(system.mem_ctrls)): + system.mem_ctrls[i].port = system.piobus.master + root = Root(full_system = True, system = system) m5.ticks.setGlobalFrequency('1THz') diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/pc-simple-timing.py --- a/tests/configs/pc-simple-timing.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/pc-simple-timing.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,5 +39,6 @@ from x86_generic import * root = LinuxX86FSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=TimingSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/pc-switcheroo-full.py --- a/tests/configs/pc-switcheroo-full.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/pc-switcheroo-full.py Mon Jul 15 09:44:22 2013 +0100 @@ -42,6 +42,7 @@ import switcheroo root = LinuxX86FSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(AtomicSimpleCPU, TimingSimpleCPU, DerivO3CPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-o3-checker.py --- a/tests/configs/realview-o3-checker.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-o3-checker.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,5 +39,6 @@ from arm_generic import * root = LinuxArmFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=DerivO3CPU, checker=True).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-o3-dual.py --- a/tests/configs/realview-o3-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-o3-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from arm_generic import * -root = LinuxArmFSSystem(mem_mode='timing', cpu_class=DerivO3CPU, +root = LinuxArmFSSystem(mem_mode='timing', + mem_class=DDR3_1600_x64, + cpu_class=DerivO3CPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-o3.py --- a/tests/configs/realview-o3.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-o3.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from arm_generic import * root = LinuxArmFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=DerivO3CPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-simple-atomic-dual.py --- a/tests/configs/realview-simple-atomic-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-simple-atomic-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from arm_generic import * -root = LinuxArmFSSystem(mem_mode='atomic', cpu_class=AtomicSimpleCPU, +root = LinuxArmFSSystem(mem_mode='atomic', + mem_class=DDR3_1600_x64, + cpu_class=AtomicSimpleCPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-simple-atomic.py --- a/tests/configs/realview-simple-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-simple-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,5 +39,6 @@ from arm_generic import * root = LinuxArmFSSystemUniprocessor(mem_mode='atomic', + mem_class=DDR3_1600_x64, cpu_class=AtomicSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-simple-timing-dual.py --- a/tests/configs/realview-simple-timing-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-simple-timing-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from arm_generic import * -root = LinuxArmFSSystem(mem_mode='timing', cpu_class=TimingSimpleCPU, +root = LinuxArmFSSystem(mem_mode='timing', + mem_class=DDR3_1600_x64, + cpu_class=TimingSimpleCPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-simple-timing.py --- a/tests/configs/realview-simple-timing.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-simple-timing.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from arm_generic import * root = LinuxArmFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=TimingSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-switcheroo-atomic.py --- a/tests/configs/realview-switcheroo-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-switcheroo-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -40,6 +40,7 @@ import switcheroo root = LinuxArmFSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(AtomicSimpleCPU, AtomicSimpleCPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-switcheroo-full.py --- a/tests/configs/realview-switcheroo-full.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-switcheroo-full.py Mon Jul 15 09:44:22 2013 +0100 @@ -40,6 +40,7 @@ import switcheroo root = LinuxArmFSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(AtomicSimpleCPU, TimingSimpleCPU, DerivO3CPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-switcheroo-o3.py --- a/tests/configs/realview-switcheroo-o3.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-switcheroo-o3.py Mon Jul 15 09:44:22 2013 +0100 @@ -40,6 +40,7 @@ import switcheroo root = LinuxArmFSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(DerivO3CPU, DerivO3CPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/realview-switcheroo-timing.py --- a/tests/configs/realview-switcheroo-timing.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/realview-switcheroo-timing.py Mon Jul 15 09:44:22 2013 +0100 @@ -40,6 +40,7 @@ import switcheroo root = LinuxArmFSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(TimingSimpleCPU, TimingSimpleCPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/rubytest-ruby.py --- a/tests/configs/rubytest-ruby.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/rubytest-ruby.py Mon Jul 15 09:44:22 2013 +0100 @@ -80,6 +80,8 @@ system = System(tester = tester, physmem = SimpleMemory(null = True), clk_domain = SrcClockDomain(clock = options.sys_clock)) +system.mem_ranges = AddrRange('256MB') + Ruby.create_system(options, system) # Create a separate clock domain for Ruby diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/simple-timing-ruby.py --- a/tests/configs/simple-timing-ruby.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/simple-timing-ruby.py Mon Jul 15 09:44:22 2013 +0100 @@ -74,6 +74,8 @@ # CPUs frequency system.cpu.clk_domain = SrcClockDomain(clock = '2GHz') +system.mem_ranges = AddrRange('256MB') + Ruby.create_system(options, system) # Create a separate clock for Ruby diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/t1000-simple-atomic.py --- a/tests/configs/t1000-simple-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/t1000-simple-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -31,7 +31,7 @@ m5.util.addToPath('../configs/common') import FSConfig -system = FSConfig.makeSparcSystem('atomic', SimpleMemory) +system = FSConfig.makeSparcSystem('atomic') system.clk_domain = SrcClockDomain(clock = '1GHz') system.cpu_clk_domain = SrcClockDomain(clock = '1GHz') cpu = AtomicSimpleCPU(cpu_id=0, clk_domain = system.cpu_clk_domain) @@ -40,6 +40,14 @@ cpu.createInterruptController() cpu.connectAllPorts(system.membus) +# create the memory controllers and connect them, stick with +# the physmem name to avoid bumping all the reference stats +system.physmem = [self.mem_class(range = r, + conf_table_reported = True) + for r in system.mem_ranges] +for i in xrange(len(system.physmem)): + system.physmem[i].port = system.membus.master + root = Root(full_system=True, system=system) m5.ticks.setGlobalFrequency('2GHz') diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-inorder.py --- a/tests/configs/tsunami-inorder.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-inorder.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from alpha_generic import * root = LinuxAlphaFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=InOrderCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-o3-dual.py --- a/tests/configs/tsunami-o3-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-o3-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from alpha_generic import * -root = LinuxAlphaFSSystem(mem_mode='timing', cpu_class=DerivO3CPU, +root = LinuxAlphaFSSystem(mem_mode='timing', + mem_class=DDR3_1600_x64, + cpu_class=DerivO3CPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-o3.py --- a/tests/configs/tsunami-o3.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-o3.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from alpha_generic import * root = LinuxAlphaFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=DerivO3CPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-simple-atomic-dual.py --- a/tests/configs/tsunami-simple-atomic-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-simple-atomic-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from alpha_generic import * -root = LinuxAlphaFSSystem(mem_mode='atomic', cpu_class=AtomicSimpleCPU, +root = LinuxAlphaFSSystem(mem_mode='atomic', + mem_class=DDR3_1600_x64, + cpu_class=AtomicSimpleCPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-simple-atomic.py --- a/tests/configs/tsunami-simple-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-simple-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from alpha_generic import * root = LinuxAlphaFSSystemUniprocessor(mem_mode='atomic', + mem_class=DDR3_1600_x64, cpu_class=AtomicSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-simple-timing-dual.py --- a/tests/configs/tsunami-simple-timing-dual.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-simple-timing-dual.py Mon Jul 15 09:44:22 2013 +0100 @@ -38,5 +38,7 @@ from m5.objects import * from alpha_generic import * -root = LinuxAlphaFSSystem(mem_mode='timing', cpu_class=TimingSimpleCPU, +root = LinuxAlphaFSSystem(mem_mode='timing', + mem_class=DDR3_1600_x64, + cpu_class=TimingSimpleCPU, num_cpus=2).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-simple-timing.py --- a/tests/configs/tsunami-simple-timing.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-simple-timing.py Mon Jul 15 09:44:22 2013 +0100 @@ -39,4 +39,5 @@ from alpha_generic import * root = LinuxAlphaFSSystemUniprocessor(mem_mode='timing', + mem_class=DDR3_1600_x64, cpu_class=TimingSimpleCPU).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/tsunami-switcheroo-full.py --- a/tests/configs/tsunami-switcheroo-full.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/tsunami-switcheroo-full.py Mon Jul 15 09:44:22 2013 +0100 @@ -40,6 +40,7 @@ import switcheroo root = LinuxAlphaFSSwitcheroo( + mem_class=DDR3_1600_x64, cpu_classes=(AtomicSimpleCPU, TimingSimpleCPU, DerivO3CPU) ).create_root() diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/twosys-tsunami-simple-atomic.py --- a/tests/configs/twosys-tsunami-simple-atomic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/twosys-tsunami-simple-atomic.py Mon Jul 15 09:44:22 2013 +0100 @@ -32,8 +32,8 @@ from FSConfig import * from Benchmarks import * -test_sys = makeLinuxAlphaSystem('atomic', SimpleMemory, - SysConfig('netperf-stream-client.rcS')) +test_sys = makeLinuxAlphaSystem('atomic', + SysConfig('netperf-stream-client.rcS')) # Create the system clock domain test_sys.clk_domain = SrcClockDomain(clock = '1GHz') @@ -57,7 +57,10 @@ test_sys.iobridge.slave = test_sys.iobus.master test_sys.iobridge.master = test_sys.membus.slave -drive_sys = makeLinuxAlphaSystem('atomic', SimpleMemory, +test_sys.physmem = SimpleMemory(range = test_sys.mem_ranges[0]) +test_sys.physmem.port = test_sys.membus.master + +drive_sys = makeLinuxAlphaSystem('atomic', SysConfig('netperf-server.rcS')) # Create the system clock domain drive_sys.clk_domain = SrcClockDomain(clock = '1GHz') @@ -77,6 +80,9 @@ drive_sys.iobridge.slave = drive_sys.iobus.master drive_sys.iobridge.master = drive_sys.membus.slave +drive_sys.physmem = SimpleMemory(range = drive_sys.mem_ranges[0]) +drive_sys.physmem.port = drive_sys.membus.master + root = makeDualRoot(True, test_sys, drive_sys, "ethertrace") maxtick = 199999999 diff -r 0fb9fbc55ba0 -r 5b617661ba4e tests/configs/x86_generic.py --- a/tests/configs/x86_generic.py Mon Jul 15 09:42:56 2013 +0100 +++ b/tests/configs/x86_generic.py Mon Jul 15 09:44:22 2013 +0100 @@ -58,7 +58,6 @@ def create_system(self): mdesc = SysConfig(disk = 'linux-x86.img') system = FSConfig.makeLinuxX86System(self.mem_mode, - DDR3_1600_x64, numCPUs=self.num_cpus, mdesc=mdesc) system.kernel = FSConfig.binary('x86_64-vmlinux-2.6.22.9')