From 653dfec89ad6d3b8b10f1da7afddff7366e27c82 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Thu, 21 Nov 2019 09:29:36 +0000 Subject: configs: Add root redirect path in SE mode only when set 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 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23064 Reviewed-by: Brandon Potter Reviewed-by: Jason Lowe-Power Maintainer: Brandon Potter Tested-by: kokoro --- configs/common/FileSystemConfig.py | 20 +++++++++++--------- configs/common/Options.py | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'configs') diff --git a/configs/common/FileSystemConfig.py b/configs/common/FileSystemConfig.py index 67e380193..1f32ec1c8 100644 --- a/configs/common/FileSystemConfig.py +++ b/configs/common/FileSystemConfig.py @@ -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 diff --git a/configs/common/Options.py b/configs/common/Options.py index 86523ee64..71f9f1429 100644 --- a/configs/common/Options.py +++ b/configs/common/Options.py @@ -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 " \ -- cgit v1.2.3