config, arm: enable device tree autogeneration for bigLITTLE
authorCurtis Dunham <Curtis.Dunham@arm.com>
Mon, 11 Sep 2017 20:17:00 +0000 (15:17 -0500)
committerCurtis Dunham <curtis.dunham@arm.com>
Mon, 29 Jan 2018 22:22:56 +0000 (22:22 +0000)
Change-Id: Iaa5eeb3504b3ff9e46b6f592a06d6b833c830d83
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5969
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

configs/example/arm/fs_bigLITTLE.py

index 489bc53b735267afacab46fa5cdeb777b2efcc19..7e0555c002e498eb412db4fa4d37d4626254e6fe 100644 (file)
@@ -57,7 +57,6 @@ import devices
 from devices import AtomicCluster, KvmCluster
 
 
-default_dtb = 'armv8_gem5_v1_big_little_2_2.dtb'
 default_kernel = 'vmlinux4.3.aarch64'
 default_disk = 'aarch64-ubuntu-trusty-headless.img'
 default_rcs = 'bootscript.rcS'
@@ -153,7 +152,7 @@ if devices.have_kvm:
 def addOptions(parser):
     parser.add_argument("--restore-from", type=str, default=None,
                         help="Restore from checkpoint")
-    parser.add_argument("--dtb", type=str, default=default_dtb,
+    parser.add_argument("--dtb", type=str, default=None,
                         help="DTB file to load")
     parser.add_argument("--kernel", type=str, default=default_kernel,
                         help="Linux kernel")
@@ -249,7 +248,19 @@ def build(options):
         _build_kvm(system, all_cpus)
 
     # Linux device tree
-    system.dtb_filename = SysPaths.binary(options.dtb)
+    if options.dtb is not None:
+        system.dtb_filename = SysPaths.binary(options.dtb)
+    else:
+        def create_dtb_for_system(system, filename):
+            state = FdtState(addr_cells=2, size_cells=2, cpu_cells=1)
+            rootNode = system.generateDeviceTree(state)
+
+            fdt = Fdt()
+            fdt.add_rootnode(rootNode)
+            dtb_filename = os.path.join(m5.options.outdir, filename)
+            return fdt.writeDtbFile(dtb_filename)
+
+        system.dtb_filename = create_dtb_for_system(system, 'system.dtb')
 
     return root