config: Remove support for CPU aliases.
authorGabe Black <gabeblack@google.com>
Fri, 28 Apr 2017 03:47:10 +0000 (20:47 -0700)
committerGabe Black <gabeblack@google.com>
Sat, 6 May 2017 20:49:10 +0000 (20:49 +0000)
This was added for backwards compatability, but it adds a decent amount
of complexity.

The table below shows what CPU class name to use in place of a given
alias.

+==========+========================================================+
|  Alias   |                       CPU class                        |
+==========+========================================================+
| timing   | TimingSimpleCPU                                        |
| atomic   | AtomicSimpleCPU                                        |
| minor    | MinorCPU                                               |
| detailed | DrivO3CPU                                              |
| kvm      | ArmKvmCPU, ArmV8KvmCPU or X86KvmCPU, depending on arch |
| trace    | TraceCPU                                               |
+==========+========================================================+

Change-Id: I251c4f64b7869c6b64dd25b36967ae240f01ef08
Reviewed-on: https://gem5-review.googlesource.com/2940
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

configs/common/CpuConfig.py
configs/common/Options.py
configs/example/se.py

index 757ec2d08454fe0ad7bebce81b895831b90fd388..8810622aafb917904cf391acea64b51a4626c6f1 100644 (file)
 import m5.objects
 import inspect
 import sys
-from textwrap import  TextWrapper
+from textwrap import TextWrapper
 
 # Dictionary of mapping names of real CPU models to classes.
 _cpu_classes = {}
 
-# CPU aliases. The CPUs listed here might not be compiled, we make
-# sure they exist before we add them to the CPU list. A target may be
-# specified as a tuple, in which case the first available CPU model in
-# the tuple will be used as the target.
-_cpu_aliases_all = [
-    ("timing", "TimingSimpleCPU"),
-    ("atomic", "AtomicSimpleCPU"),
-    ("minor", "MinorCPU"),
-    ("detailed", "DerivO3CPU"),
-    ("kvm", ("ArmKvmCPU", "ArmV8KvmCPU", "X86KvmCPU")),
-    ("trace", "TraceCPU"),
-    ]
-
-# Filtered list of aliases. Only aliases for existing CPUs exist in
-# this list.
-_cpu_aliases = {}
-
 
 def is_cpu_class(cls):
     """Determine if a class is a CPU that can be instantiated"""
@@ -76,10 +59,8 @@ def is_cpu_class(cls):
 def get(name):
     """Get a CPU class from a user provided class name or alias."""
 
-    real_name = _cpu_aliases.get(name, name)
-
     try:
-        cpu_class = _cpu_classes[real_name]
+        cpu_class = _cpu_classes[name]
         return cpu_class
     except KeyError:
         print "%s is not a valid CPU model." % (name,)
@@ -100,14 +81,9 @@ def print_cpu_list():
             for line in doc_wrapper.wrap(doc):
                 print line
 
-    if _cpu_aliases:
-        print "\nCPU aliases:"
-        for alias, target in _cpu_aliases.items():
-            print "\t%s => %s" % (alias, target)
-
 def cpu_names():
     """Return a list of valid CPU names."""
-    return _cpu_classes.keys() + _cpu_aliases.keys()
+    return _cpu_classes.keys()
 
 def config_etrace(cpu_cls, cpu_list, options):
     if issubclass(cpu_cls, m5.objects.DerivO3CPU):
@@ -137,22 +113,10 @@ def config_etrace(cpu_cls, cpu_list, options):
 # in the normal object hierarchy, so we have to add it manually.
 try:
     from O3_ARM_v7a import O3_ARM_v7a_3
-    _cpu_classes["arm_detailed"] = O3_ARM_v7a_3
+    _cpu_classes["O3_ARM_v7a_3"] = O3_ARM_v7a_3
 except:
     pass
 
 # Add all CPUs in the object hierarchy.
 for name, cls in inspect.getmembers(m5.objects, is_cpu_class):
     _cpu_classes[name] = cls
-
-for alias, target in _cpu_aliases_all:
-    if isinstance(target, tuple):
-        # Some aliases contain a list of CPU model sorted in priority
-        # order. Use the first target that's available.
-        for t in target:
-            if t in _cpu_classes:
-                _cpu_aliases[alias] = t
-                break
-    elif target in _cpu_classes:
-        # Normal alias
-        _cpu_aliases[alias] = target
index 9af15ff2fa90274e54b30826d6c930b0579b3a5e..052c6a8d38b1e5ab93cc43591c2059a5419dcf23 100644 (file)
@@ -135,7 +135,7 @@ def addCommonOptions(parser):
     parser.add_option("--list-cpu-types",
                       action="callback", callback=_listCpuTypes,
                       help="List available CPU types")
-    parser.add_option("--cpu-type", type="choice", default="atomic",
+    parser.add_option("--cpu-type", type="choice", default="AtomicSimpleCPU",
                       choices=CpuConfig.cpu_names(),
                       help = "type of cpu to run with")
     parser.add_option("--checker", action="store_true");
@@ -253,7 +253,7 @@ def addCommonOptions(parser):
     parser.add_option("--work-cpus-checkpoint-count", action="store", type="int",
                       help="checkpoint and exit when active cpu count is reached")
     parser.add_option("--restore-with-cpu", action="store", type="choice",
-                      default="atomic", choices=CpuConfig.cpu_names(),
+                      default="AtomicSimpleCPU", choices=CpuConfig.cpu_names(),
                       help = "cpu type for restoring from a checkpoint")
 
 
index 5eacf19fe60281a981dbf55e101c971418630598..b26bc91e508d623828b605cf149fe89f04eb10be 100644 (file)
@@ -250,7 +250,7 @@ for i in xrange(np):
     system.cpu[i].createThreads()
 
 if options.ruby:
-    if options.cpu_type == "atomic" or options.cpu_type == "AtomicSimpleCPU":
+    if options.cpu_type == "AtomicSimpleCPU":
         print >> sys.stderr, "Ruby does not work with atomic cpu!!"
         sys.exit(1)