diff --git a/configs/common/FileSystemConfig.py b/configs/common/FileSystemConfig.py
index e37fbd3..a9c7c92 100644
--- a/configs/common/FileSystemConfig.py
+++ b/configs/common/FileSystemConfig.py
@@ -52,7 +52,24 @@
         rmtree(path)
     mkdir(path)
 
-def config_filesystem(options):
+def config_filesystem(system, options = None):
+    """ This function parses the system object to create the pseudo file system
+    @param system: The system to create the config for
+    @param options: An optional argument which contains an Options.py options
+           object. This is useful if when use se.py and will set the L2 cache
+           size and the clock in /proc/cpuinfo if provided.
+
+    First, this function walks the system object to find all CPUs.
+    Then, this function creates the following files with the CPU information
+      - /proc/cpuinfo which contains the clock  and the L2 size
+        (assumes all L2s private and the same size)
+      - /proc/stat simply lists all CPUs
+      - /sys/devices/system/cpu/online and /sys/devices/system/cpu/possible
+        These files list all of the CPUs in this system.
+      - /tmp
+
+    These files are created in the `fs` directory in the outdir path.
+    """
     fsdir = joinpath(m5.options.outdir, 'fs')
     replace_tree(fsdir)
 
@@ -60,50 +77,47 @@
     procdir = joinpath(fsdir, 'proc')
     mkdir(procdir)
 
-    cpu_clock = '0'
+    cpus = [obj for obj in system.descendants() if isinstance(obj, BaseCPU)]
+
+    cpu_clock = 0
     if hasattr(options, 'cpu_clock'):
-        cpu_clock = options.cpu_clock
-    cpu_clock = toFrequency(cpu_clock)/mega
+        cpu_clock = toFrequency(options.cpu_clock) / mega
 
-    l2_size = '0'
+    l2_size = 0
     if hasattr(options, 'l2_size'):
-        l2_size = options.l2_size
-    l2_size = toMemorySize(l2_size)/kibi
+        l2_size = toMemorySize(options.l2_size) / kibi
 
-    cacheline_size = '0'
-    if hasattr(options, 'cacheline_size'):
-        cacheline_size = options.cacheline_size
-
-    for i in xrange(options.num_cpus):
-        one_cpu = 'processor       : %d\n' % (i)                  + \
+    for i,cpu in enumerate(cpus):
+        one_cpu = 'processor       : {proc}\n'                    + \
                   'vendor_id       : Generic\n'                   + \
                   'cpu family      : 0\n'                         + \
                   'model           : 0\n'                         + \
                   'model name      : Generic\n'                   + \
                   'stepping        : 0\n'                         + \
-                  'cpu MHz         : %0.3d\n'                       \
-                        % cpu_clock                               + \
-                  'cache size:     : %dK\n'                         \
-                        % l2_size                                 + \
+                  'cpu MHz         : {clock:0.3f}\n'              + \
+                  'cache size:     : {l2_size}K\n'                + \
                   'physical id     : 0\n'                         + \
-                  'siblings        : %s\n'                          \
-                        % options.num_cpus                        + \
-                  'core id         : %d\n'                          \
-                        % i                                       + \
-                  'cpu cores       : %d\n'                          \
-                        % options.num_cpus                        + \
+                  'siblings        : {num_cpus}\n'                + \
+                  'core id         : {proc}\n'                    + \
+                  'cpu cores       : {num_cpus}\n'                + \
                   'fpu             : yes\n'                       + \
                   'fpu exception   : yes\n'                       + \
                   'cpuid level     : 1\n'                         + \
                   'wp              : yes\n'                       + \
                   'flags           : fpu\n'                       + \
-                  'cache alignment : %d\n'                          \
-                        % cacheline_size                          + \
+                  'cache alignment : {cacheline_size}\n'          + \
                   '\n'
+        one_cpu = one_cpu.format(proc = i, num_cpus = len(cpus),
+                       # Note: it would be nice to use cpu.clock, but it hasn't
+                       # been finalized yet since m5.instantiate() isn't done.
+                       clock = cpu_clock,
+                       # Note: this assumes the L2 is private to each core
+                       l2_size = l2_size,
+                       cacheline_size=system.cache_line_size.getValue())
         file_append((procdir, 'cpuinfo'), one_cpu)
 
     file_append((procdir, 'stat'), 'cpu 0 0 0 0 0 0 0\n')
-    for i in xrange(options.num_cpus):
+    for i in xrange(len(cpus)):
         file_append((procdir, 'stat'), 'cpu%d 0 0 0 0 0 0 0\n' % i)
 
     # Set up /sys
@@ -114,13 +128,19 @@
     cpudir = joinpath(sysdir, 'devices', 'system', 'cpu')
     makedirs(cpudir)
 
-    file_append((cpudir, 'online'), '0-%d' % (options.num_cpus-1))
-    file_append((cpudir, 'possible'), '0-%d' % (options.num_cpus-1))
+    file_append((cpudir, 'online'), '0-%d' % (len(cpus) - 1))
+    file_append((cpudir, 'possible'), '0-%d' % (len(cpus) - 1))
 
     # Set up /tmp
     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)
+
 def register_node(cpu_list, mem, node_number):
     nodebasedir = joinpath(m5.options.outdir, 'fs', 'sys', 'devices',
                            'system', 'node')
@@ -176,7 +196,7 @@
         file_append((indexdir, 'physical_line_partition'), '1')
         file_append((indexdir, 'shared_cpu_map'), hex_mask(cpus))
 
-def redirect_paths(chroot):
+def _redirect_paths(chroot):
     # Redirect filesystem syscalls from src to the first matching dests
     redirect_paths = [RedirectPath(app_path = "/proc",
                           host_paths = ["%s/fs/proc" % m5.options.outdir]),
diff --git a/configs/example/se.py b/configs/example/se.py
index cbebcea..f43206a 100644
--- a/configs/example/se.py
+++ b/configs/example/se.py
@@ -64,7 +64,7 @@
 from common import CpuConfig
 from common import BPConfig
 from common import MemConfig
-from common.FileSystemConfig import redirect_paths, config_filesystem
+from common.FileSystemConfig import config_filesystem
 from common.Caches import *
 from common.cpu2000 import *
 
@@ -246,9 +246,6 @@
 
     system.cpu[i].createThreads()
 
-system.redirect_paths = redirect_paths(os.path.expanduser(options.chroot))
-config_filesystem(options)
-
 if options.ruby:
     Ruby.create_system(options, False, system)
     assert(options.num_cpus == len(system.ruby._cpu_ports))
@@ -278,6 +275,7 @@
     system.system_port = system.membus.slave
     CacheConfig.config_cache(options, system)
     MemConfig.config_mem(options, system)
+    config_filesystem(system, options)
 
 root = Root(full_system = False, system = system)
 Simulation.run(options, root, system, FutureClass)
diff --git a/configs/learning_gem5/part3/simple_ruby.py b/configs/learning_gem5/part3/simple_ruby.py
index bcd5044..0c622d0 100644
--- a/configs/learning_gem5/part3/simple_ruby.py
+++ b/configs/learning_gem5/part3/simple_ruby.py
@@ -45,6 +45,10 @@
 # import all of the SimObjects
 from m5.objects import *
 
+# Needed for running C++ threads
+m5.util.addToPath('../../')
+from common.FileSystemConfig import config_filesystem
+
 # You can import ruby_caches_MI_example to use the MI_example protocol instead
 # of the MSI protocol
 from msi_caches import MyCacheSystem
@@ -95,6 +99,9 @@
     cpu.workload = process
     cpu.createThreads()
 
+# Set up the pseudo file system for the threads function above
+config_filesystem(system)
+
 # set up the root SimObject and start the simulation
 root = Root(full_system = False, system = system)
 # instantiate all of the objects we've created above
diff --git a/configs/ruby/GPU_VIPER.py b/configs/ruby/GPU_VIPER.py
index e8e7815..52b6c28 100644
--- a/configs/ruby/GPU_VIPER.py
+++ b/configs/ruby/GPU_VIPER.py
@@ -501,7 +501,6 @@
 
     # Register CPUs and caches for each CorePair and directory (SE mode only)
     if not full_system:
-        FileSystemConfig.config_filesystem(options)
         for i in xrange((options.num_cpus + 1) // 2):
             FileSystemConfig.register_cpu(physical_package_id = 0,
                                           core_siblings = \
diff --git a/configs/ruby/MESI_Three_Level.py b/configs/ruby/MESI_Three_Level.py
index 90e9190..20f48db 100644
--- a/configs/ruby/MESI_Three_Level.py
+++ b/configs/ruby/MESI_Three_Level.py
@@ -263,8 +263,6 @@
         all_cntrls = all_cntrls + [io_controller]
     # Register configuration with filesystem
     else:
-        FileSystemConfig.config_filesystem(options)
-
         for i in xrange(options.num_clusters):
             for j in xrange(num_cpus_per_cluster):
                 FileSystemConfig.register_cpu(physical_package_id = 0,
diff --git a/configs/ruby/MOESI_AMD_Base.py b/configs/ruby/MOESI_AMD_Base.py
index a1faf1d..0475dcb 100644
--- a/configs/ruby/MOESI_AMD_Base.py
+++ b/configs/ruby/MOESI_AMD_Base.py
@@ -328,7 +328,6 @@
 
     # Register CPUs and caches for each CorePair and directory (SE mode only)
     if not full_system:
-        FileSystemConfig.config_filesystem(options)
         for i in xrange((options.num_cpus + 1) // 2):
             FileSystemConfig.register_cpu(physical_package_id = 0,
                                           core_siblings =
diff --git a/configs/ruby/MOESI_hammer.py b/configs/ruby/MOESI_hammer.py
index 0b04980..9ec7124 100644
--- a/configs/ruby/MOESI_hammer.py
+++ b/configs/ruby/MOESI_hammer.py
@@ -258,8 +258,6 @@
         all_cntrls = all_cntrls + [io_controller]
     # Register configuration with filesystem
     else:
-        FileSystemConfig.config_filesystem(options)
-
         for i in xrange(options.num_cpus):
             FileSystemConfig.register_cpu(physical_package_id = 0,
                                           core_siblings = [],
diff --git a/configs/ruby/Ruby.py b/configs/ruby/Ruby.py
index 369a4e3..2d69ac1 100644
--- a/configs/ruby/Ruby.py
+++ b/configs/ruby/Ruby.py
@@ -156,7 +156,7 @@
     ruby = system.ruby
 
     # Generate pseudo filesystem
-    FileSystemConfig.config_filesystem(options)
+    FileSystemConfig.config_filesystem(system, options)
 
     # Create the network object
     (network, IntLinkClass, ExtLinkClass, RouterClass, InterfaceClass) = \
