From 306dea1eb84b9a2076adb626c269d796d0e4bc10 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 27 Apr 2017 20:47:10 -0700 Subject: [PATCH] config: Remove support for CPU aliases. 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 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- configs/common/CpuConfig.py | 44 ++++--------------------------------- configs/common/Options.py | 4 ++-- configs/example/se.py | 2 +- 3 files changed, 7 insertions(+), 43 deletions(-) diff --git a/configs/common/CpuConfig.py b/configs/common/CpuConfig.py index 757ec2d08..8810622aa 100644 --- a/configs/common/CpuConfig.py +++ b/configs/common/CpuConfig.py @@ -38,28 +38,11 @@ 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 diff --git a/configs/common/Options.py b/configs/common/Options.py index 9af15ff2f..052c6a8d3 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -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") diff --git a/configs/example/se.py b/configs/example/se.py index 5eacf19fe..b26bc91e5 100644 --- a/configs/example/se.py +++ b/configs/example/se.py @@ -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) -- 2.30.2