Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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