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