configs: Add root redirect path in SE mode only when set
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Thu, 21 Nov 2019 09:29:36 +0000 (09:29 +0000)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Wed, 27 Nov 2019 09:44:41 +0000 (09:44 +0000)
As it is now, the default behaviour, if chroot is not specified, is to
add a redirect path which is simply mappping "/" in guest to "/" in
host.  This patch avoids this unnecessary mapping, and adds a redirect
path to root only if chroot is specified.

Change-Id: Icbe863887330d7071e0005333b408ffc8cad41d6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23064
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
configs/common/FileSystemConfig.py
configs/common/Options.py

index 67e38019323d6ce156be68bd6956a5d2618d0f95..1f32ec1c86be23a6ea755e0f77d87469c39a1e99 100644 (file)
@@ -140,11 +140,7 @@ def config_filesystem(system, options = None):
     tmpdir = joinpath(fsdir, 'tmp')
     replace_tree(tmpdir)
 
-    if options and hasattr(options, 'chroot'):
-        chroot = os.path.expanduser(options.chroot)
-    else:
-        chroot = '/'
-    system.redirect_paths = _redirect_paths(chroot)
+    system.redirect_paths = _redirect_paths(options)
 
 def register_node(cpu_list, mem, node_number):
     nodebasedir = joinpath(m5.options.outdir, 'fs', 'sys', 'devices',
@@ -201,14 +197,20 @@ def register_cache(level, idu_type, size, line_size, assoc, cpus):
         file_append((indexdir, 'physical_line_partition'), '1')
         file_append((indexdir, 'shared_cpu_map'), hex_mask(cpus))
 
-def _redirect_paths(chroot):
+def _redirect_paths(options):
     # Redirect filesystem syscalls from src to the first matching dests
     redirect_paths = [RedirectPath(app_path = "/proc",
                           host_paths = ["%s/fs/proc" % m5.options.outdir]),
                       RedirectPath(app_path = "/sys",
                           host_paths = ["%s/fs/sys"  % m5.options.outdir]),
                       RedirectPath(app_path = "/tmp",
-                          host_paths = ["%s/fs/tmp"  % m5.options.outdir]),
-                      RedirectPath(app_path = "/",
-                          host_paths = ["%s"         % chroot])]
+                          host_paths = ["%s/fs/tmp"  % m5.options.outdir])]
+
+    chroot = getattr(options, 'chroot', None)
+    if chroot:
+        redirect_paths.append(
+            RedirectPath(
+                app_path = "/",
+                host_paths = ["%s" % os.path.expanduser(chroot)]))
+
     return redirect_paths
index 86523ee64bd45b5c1295f26e98ae533bcd96b001..71f9f142982bb7b642d0b46333956267d265c77a 100644 (file)
@@ -369,7 +369,7 @@ def addSEOptions(parser):
                       help="Redirect stdout to a file.")
     parser.add_option("--errout", default="",
                       help="Redirect stderr to a file.")
-    parser.add_option("--chroot", action="store", type="string", default="/",
+    parser.add_option("--chroot", action="store", type="string", default=None,
                       help="The chroot option allows a user to alter the "    \
                            "search path for processes running in SE mode. "   \
                            "Normally, the search path would begin at the "    \