Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/11850

Change subject: configs: Add kernel parameter to system creation
......................................................................

configs: Add kernel parameter to system creation

Kernel was being set using a placeholder and then assigned the
correct value. This would generate the following error if the
placeholder file did not exist:
'IOError: Can't find file <placeholder> on path'

This patch adds to the system constructor function a kernel path
variable with a default value.

Change-Id: I0eb45d12eda6b6efe9a3fe118996b640844a7b34
---
M configs/common/FSConfig.py
M configs/example/fs.py
2 files changed, 32 insertions(+), 24 deletions(-)



diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py
index 17498c4..0301ef0 100644
--- a/configs/common/FSConfig.py
+++ b/configs/common/FSConfig.py
@@ -77,7 +77,8 @@
     kwargs.setdefault('script', mdesc.script())
     return template % kwargs

-def makeLinuxAlphaSystem(mem_mode, mdesc=None, ruby=False, cmdline=None):
+def makeLinuxAlphaSystem(mem_mode, mdesc=None, ruby=False, cmdline=None,
+                         kernel='vmlinux'):

     class BaseTsunami(Tsunami):
         ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0)
@@ -130,7 +131,7 @@
     self.intrctrl = IntrControl()
     self.mem_mode = mem_mode
     self.terminal = Terminal()
-    self.kernel = binary('vmlinux')
+    self.kernel = binary(kernel)
     self.pal = binary('ts_osfpal')
     self.console = binary('console')
     if not cmdline:
@@ -207,7 +208,7 @@
 def makeArmSystem(mem_mode, machine_type, num_cpus=1, mdesc=None,
                   dtb_filename=None, bare_metal=False, cmdline=None,
                   external_memory="", ruby=False, security=False,
-                  ignore_dtb=False):
+                  ignore_dtb=False, kernel=""):
     assert machine_type

     default_dtbs = {
@@ -306,8 +307,11 @@
         # EOT character on UART will end the simulation
         self.realview.uart.end_on_eot = True
     else:
-        if machine_type in default_kernels:
-            self.kernel = binary(default_kernels[machine_type])
+        if not kernel:
+            if machine_type in default_kernels:
+                self.kernel = binary(default_kernels[machine_type])
+        else:
+            self.kernel = binary(kernel)

         if dtb_filename and not ignore_dtb:
             self.dtb_filename = binary(dtb_filename)
@@ -418,7 +422,8 @@
     return self


-def makeLinuxMipsSystem(mem_mode, mdesc=None, cmdline=None):
+def makeLinuxMipsSystem(mem_mode, mdesc=None, cmdline=None,
+                        kernel='mips/vmlinux'):
     class BaseMalta(Malta):
         ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0)
         ide = IdeController(disks=[Parent.disk0, Parent.disk2],
@@ -450,7 +455,7 @@
     self.intrctrl = IntrControl()
     self.mem_mode = mem_mode
     self.terminal = Terminal()
-    self.kernel = binary('mips/vmlinux')
+    self.kernel = binary(kernel)
     self.console = binary('mips/console')
     if not cmdline:
         cmdline = 'root=/dev/hda1 console=ttyS0'
@@ -630,7 +635,7 @@
     self.intel_mp_table.ext_entries = ext_entries

 def makeLinuxX86System(mem_mode, numCPUs=1, mdesc=None, Ruby=False,
-                       cmdline=None):
+                       cmdline=None, kernel='x86_64-vmlinux-2.6.22.9'):
     self = LinuxX86System()

     # Build up the x86 system and then specialize it for Linux
@@ -678,7 +683,7 @@
     if not cmdline:
cmdline = 'earlyprintk=ttyS0 console=ttyS0 lpj=7999923 root=/dev/hda1'
     self.boot_osflags = fillInCmdline(mdesc, cmdline)
-    self.kernel = binary('x86_64-vmlinux-2.6.22.9')
+    self.kernel = binary(kernel)
     return self


diff --git a/configs/example/fs.py b/configs/example/fs.py
index 4031fd0..3735482 100644
--- a/configs/example/fs.py
+++ b/configs/example/fs.py
@@ -89,14 +89,16 @@
     cmdline = cmd_line_template()
     if buildEnv['TARGET_ISA'] == "alpha":
         test_sys = makeLinuxAlphaSystem(test_mem_mode, bm[0], options.ruby,
-                                        cmdline=cmdline)
+ cmdline=cmdline, kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == "mips":
- test_sys = makeLinuxMipsSystem(test_mem_mode, bm[0], cmdline=cmdline) + test_sys = makeLinuxMipsSystem(test_mem_mode, bm[0], cmdline=cmdline,
+                                       kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == "sparc":
-        test_sys = makeSparcSystem(test_mem_mode, bm[0], cmdline=cmdline)
+        test_sys = makeSparcSystem(test_mem_mode, bm[0], cmdline=cmdline,
+                                   kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == "x86":
test_sys = makeLinuxX86System(test_mem_mode, options.num_cpus, bm[0],
-                options.ruby, cmdline=cmdline)
+                options.ruby, cmdline=cmdline, kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == "arm":
         test_sys = makeArmSystem(test_mem_mode, options.machine_type,
options.num_cpus, bm[0], options.dtb_filename,
@@ -106,7 +108,8 @@
                                  external_memory=
                                    options.external_memory_system,
                                  ruby=options.ruby,
- security=options.enable_security_extensions) + security=options.enable_security_extensions,
+                                 kernel=options.kernel)
         if options.enable_context_switch_stats_dump:
             test_sys.enable_context_switch_stats_dump = True
     else:
@@ -130,9 +133,6 @@
                                              voltage_domain =
                                              test_sys.cpu_voltage_domain)

-    if options.kernel is not None:
-        test_sys.kernel = binary(options.kernel)
-
     if options.script is not None:
         test_sys.readfile = options.script

@@ -244,18 +244,23 @@

     cmdline = cmd_line_template()
     if buildEnv['TARGET_ISA'] == 'alpha':
- drive_sys = makeLinuxAlphaSystem(drive_mem_mode, bm[1], cmdline=cmdline)
+        drive_sys = makeLinuxAlphaSystem(drive_mem_mode, bm[1],
+                                         cmdline=cmdline,
+                                         kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == 'mips':
- drive_sys = makeLinuxMipsSystem(drive_mem_mode, bm[1], cmdline=cmdline) + drive_sys = makeLinuxMipsSystem(drive_mem_mode, bm[1], cmdline=cmdline,
+                                        kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == 'sparc':
-        drive_sys = makeSparcSystem(drive_mem_mode, bm[1], cmdline=cmdline)
+        drive_sys = makeSparcSystem(drive_mem_mode, bm[1], cmdline=cmdline,
+                                    kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == 'x86':
         drive_sys = makeLinuxX86System(drive_mem_mode, np, bm[1],
-                                       cmdline=cmdline)
+ cmdline=cmdline, kernel=options.kernel)
     elif buildEnv['TARGET_ISA'] == 'arm':
         drive_sys = makeArmSystem(drive_mem_mode, options.machine_type, np,
bm[1], options.dtb_filename, cmdline=cmdline,
-                                  ignore_dtb=options.generate_dtb)
+                                  ignore_dtb=options.generate_dtb,
+                                  kernel=options.kernel)

     # Create a top-level voltage domain
     drive_sys.voltage_domain = VoltageDomain(voltage = options.sys_voltage)
@@ -279,8 +284,6 @@
     drive_sys.cpu.connectAllPorts(drive_sys.membus)
     if options.fastmem:
         drive_sys.cpu.fastmem = True
-    if options.kernel is not None:
-        drive_sys.kernel = binary(options.kernel)

     if is_kvm_cpu(DriveCPUClass):
         drive_sys.kvm_vm = KvmVM()

--
To view, visit https://gem5-review.googlesource.com/11850
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I0eb45d12eda6b6efe9a3fe118996b640844a7b34
Gerrit-Change-Number: 11850
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to