def create_system(self): sc = SysConfig(None, self.mem_size, None) system = FSConfig.makeArmSystem(self.mem_mode, self.machine_type, self.num_cpus, sc, False, ruby=self.use_ruby) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running # an obviously failed test case until the end of time. system.panic_on_panic = True system.panic_on_oops = True default_kernels = { "VExpress_EMM": "vmlinux.aarch32.ll_20131205.0-gem5", "VExpress_EMM64": "vmlinux.aarch64.20140821", } system.kernel = SysPaths.binary(default_kernels[self.machine_type]) default_dtbs = { "VExpress_EMM": "vexpress.aarch32.ll_20131205.0-gem5.{}cpu.dtb" \ .format(self.num_cpus), "VExpress_EMM64": "vexpress.aarch64.20140821.dtb", } system.dtb_filename = SysPaths.binary(default_dtbs[self.machine_type]) self.init_system(system) return system
def create_system(self): if self.aarch64_kernel: gem5_kernel = "vmlinux.arm64" disk_image = "m5_exit.squashfs.arm64" else: gem5_kernel = "vmlinux.arm" disk_image = "m5_exit.squashfs.arm" default_kernels = { "VExpress_GEM5_V1": gem5_kernel, "VExpress_GEM5_Foundation": gem5_kernel, } sc = SysConfig(None, self.mem_size, [disk_image], "/dev/sda") system = FSConfig.makeArmSystem(self.mem_mode, self.machine_type, self.num_cpus, sc, ruby=self.use_ruby) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running # an obviously failed test case until the end of time. system.workload.panic_on_panic = True system.workload.panic_on_oops = True system.workload.object_file = SysPaths.binary( default_kernels[self.machine_type]) self.init_system(system) system.workload.dtb_filename = \ os.path.join(m5.options.outdir, 'system.dtb') system.generateDtb(system.workload.dtb_filename) return system
def create_system(self): sc = SysConfig(None, self.mem_size, None) system = FSConfig.makeArmSystem(self.mem_mode, self.machine_type, self.num_cpus, sc, False, ruby=self.use_ruby) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running # an obviously failed test case until the end of time. system.panic_on_panic = True system.panic_on_oops = True default_kernels = { "RealViewPBX": "vmlinux.arm.smp.fb.2.6.38.8", "VExpress_EMM": "vmlinux.aarch32.ll_20131205.0-gem5", "VExpress_EMM64": "vmlinux.aarch64.20140821", } system.kernel = SysPaths.binary(default_kernels[self.machine_type]) default_dtbs = { "RealViewPBX": None, "VExpress_EMM": "vexpress.aarch32.ll_20131205.0-gem5.{}cpu.dtb" \ .format(self.num_cpus), "VExpress_EMM64": "vexpress.aarch64.20140821.dtb", } system.dtb_filename = SysPaths.binary(default_dtbs[self.machine_type]) self.init_system(system) return system
def create(args): # System CpuClass, mem_mode, _ = Simulation.setCPUClass(args) sys_cfg = Benchmarks.SysConfig(args.script, args.mem_size) system = FSConfig.makeArmSystem(mem_mode, "VExpress_GEM5_V2", args.num_cpus, sys_cfg, bare_metal=True, security=True) system.voltage_domain = VoltageDomain(voltage=args.sys_voltage) system.clk_domain = SrcClockDomain(clock=args.sys_clock, voltage_domain=system.voltage_domain) system.highest_el_is_64 = True system.have_virtualization = True system.workload.object_file = args.kernel # CPU cluster system.cpu_voltage_domain = VoltageDomain() system.cpu_clk_domain = SrcClockDomain( clock=args.cpu_clock, voltage_domain=system.cpu_voltage_domain) system.cpu = [ CpuClass(clk_domain=system.cpu_clk_domain, cpu_id=i) for i in range(args.num_cpus) ] for cpu in system.cpu: cpu.createThreads() # (gem5 v20.1) Disable FEAT_VHE, prevents booting features = cpu.isa[0].id_aa64mmfr1_el1.getValue() cpu.isa[0].id_aa64mmfr1_el1 = features & ~0xf00 CacheConfig.config_cache(args, system) # Devices system.realview.atp_adapter = ProfileGen(config_files=args.atp_file, exit_when_done=False, init_only=True, disable_watchdog=True, disable_mem_check=True) system.realview.atp_device = ATPDevice(pio_addr=0x2b500000, interrupt=ArmSPI(num=104), atp_id="STREAM") system.realview.attachSmmu([system.realview.atp_device], system.membus) # (gem5 v20.1) Ensure 128 CMDQ entries for compatibility from Linux v5.4 system.realview.smmu.smmu_idr1 = 0x00E00000 # (gem5 v20.2+) Enable SMMUv3 interrupt interface to boot Linux if hasattr(system.realview.smmu, "irq_interface_enable"): system.realview.smmu.irq_interface_enable = True connect_adapter(system.realview.atp_adapter, system.realview.smmu) if args.disk_image: system.disk = [ PciVirtIO(vio=VirtIOBlock(image=create_cow_image(disk))) for disk in args.disk_image ] for disk in system.disk: system.realview.attachPciDevice(disk, system.iobus) # Memory MemConfig.config_mem(args, system) return system
def create_system(self): sc = SysConfig(None, self.mem_size, None) system = FSConfig.makeArmSystem(self.mem_mode, self.machine_type, self.num_cpus, sc, False) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running # an obviously failed test case until the end of time. system.panic_on_panic = True system.panic_on_oops = True self.init_system(system) return system
def create_system(self): sc = SysConfig(None, self.mem_size, None) system = FSConfig.makeArmSystem(self.mem_mode, self.machine_type, self.num_cpus, sc, False) # We typically want the simulator to panic if the kernel # panics or oopses. This prevents the simulator from running # an obviously failed test case until the end of time. system.panic_on_panic = True system.panic_on_oops = True self.init_system(system) return system