gem5.git
8 years agoruby: Fix double statistic registration in garnet
Matthew Poremba [Fri, 1 Jul 2016 15:31:37 +0000 (10:31 -0500)]
ruby: Fix double statistic registration in garnet

Currently garnet will not run due to double statistic registration of new
stats in ClockedObject. This occurs because a temporary array named 'cls'
is being added as a child to garnet internal and external link SimObjects.
This patch simply renames the temporary array which prevents it from
being added as a child object and avoids the assertion that a statistic
was already registered.

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agoext: Update DRAMPower
Matthias Jung [Fri, 1 Jul 2016 15:31:36 +0000 (10:31 -0500)]
ext: Update DRAMPower

Sync DRAMPower to external tool

This patch syncs the DRAMPower library of gem5 to the external
one on github (https://github.com/ravenrd/DRAMPower) of which
I am a maintainer.

The version used is the commit:
902a00a1797c48a9df97ec88868f20e847680ae6
from 07.  May.  2016.

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agomisc: SystemC Elastic Trace Player Example.
Matthias Jung [Fri, 1 Jul 2016 15:31:33 +0000 (10:31 -0500)]
misc: SystemC Elastic Trace Player Example.

This patch adds an example configuration for elastic trace playing into the
SystemC world, similar to the already existing traffic generator example in
/util/tlm.

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agomisc: fix a compile error due to incompability with SystemC 2.3.1
Christian Menard [Fri, 1 Jul 2016 14:50:18 +0000 (09:50 -0500)]
misc: fix a compile error due to incompability with SystemC 2.3.1

This patch fixes an ambigous call compile error

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agomem: tester for new HMC configuration
Abdul Mutaal Ahmad [Fri, 1 Jul 2016 14:48:43 +0000 (09:48 -0500)]
mem: tester for new HMC configuration

This patch provides the example test script to configure different HMC
architecture and run traffic through traffic generator.

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agomem: different HMC configuration
Abdul Mutaal Ahmad [Fri, 1 Jul 2016 14:45:21 +0000 (09:45 -0500)]
mem: different HMC configuration

In this new hmc configuration we have used the existing components in gem5
mainly [SerialLink] [NoncoherentXbar]& [DRAMCtrl] to define 3 different
architecture for HMC.

Highlights

1- It explores 3 different HMC architectures

2- It creates 4-HMC crossbars and attaches 16 vault controllers with it.
This  will connect vaults to serial links

3- From the previous version, HMCController with round robin funtionality
is being removed and all the serial links are being accessible directly
from user ports

4- Latency incorporated by HMCController (in previous version) is being
added to SerialLink

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agomisc: Separate stats file for SystemC-gem5 co-simulation
Abdul Mutaal Ahmad [Fri, 1 Jul 2016 14:30:15 +0000 (09:30 -0500)]
misc: Separate stats file for SystemC-gem5 co-simulation

In previous versions of systemC-gem5 coupling statistics were not updated
for the systemc-gem5 simulation. systemC-gem5 simulation only need the
previously built config.ini file and normal gem5 simulation has to be run
once to generate config.ini file. Thus stats.txt inside the m5out folder is
redundant for systemC-gem5 simulation. A new stats file is now generated
with the all the statistics for systemC-gem5 simulation. This will also
resolve the stats issue in tlm-sysmtemC simulation.

Committed by Jason Lowe-Power <jason@lowepower.com>

8 years agoscons: Track swig packages when loading embedded swig code
Andreas Hansson [Tue, 28 Jun 2016 07:50:00 +0000 (03:50 -0400)]
scons: Track swig packages when loading embedded swig code

This patch changes how the embedded swig code is loaded to ensure that
gem5 works with swig 3.0.9. For Python 2.7 and above, swig 3.0.9 now
relies on importlib, and actually looks in the appropriate packages,
even for the wrapped C code. However, the swig wrapper does not
explicitly place the module in the right package (it just calls
Py_InitModule), and we have to take explicit action to ensure that the
swig code can be loaded. This patch adds the information to the
generated wrappers and the appropriate calls to set the context as
part of the swig initialisation.

Previous versions of swig used to fall back on looking in the global
namespace for the wrappers (and still do for Python 2.6), but
technically things should not work without the functionality in this
patch.

8 years agostats: Update stats to reflect ARM changes
Andreas Sandberg [Tue, 21 Jun 2016 15:42:04 +0000 (16:42 +0100)]
stats: Update stats to reflect ARM changes

8 years agoarm: Mark uninitialized new TLB entries as not valid
Nikos Nikoleris [Mon, 20 Jun 2016 14:51:31 +0000 (15:51 +0100)]
arm: Mark uninitialized new TLB entries as not valid

Previously when we initialized the TLB we would allocate a number of
TLB entries which would be marked as valid. As a result the TLB
contained an entry which would be considered a valid entry for the 0
page.

Change-Id: I23ace86426a171a4f6200ebeb29ad57c21647036
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agosim: Added library include to fix build errors on clang-703.0.31
Reiley Jeapaul [Mon, 20 Jun 2016 14:34:41 +0000 (15:34 +0100)]
sim: Added library include to fix build errors on clang-703.0.31

The use of array tuples, requires an explicit include of the array library

Change-Id: I06730051777a97edf80e41a5604184b387b12239
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agomem: Fix the snoop filter when there is a downstream addr mapper
Nikos Nikoleris [Mon, 20 Jun 2016 14:11:18 +0000 (15:11 +0100)]
mem: Fix the snoop filter when there is a downstream addr mapper

The snoop filter handles requests in two steps which preceed and
follow the call to send the packet downstream. An address mapper could
possibly change the address of the packet when it is sent downstream
breaking the snoop filter assumption that the address is unchanged

Change-Id: Ib2db755e9ebef4f2f7c0169a46b1b11185ffbe79
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agotests: Add a test command to get test status as an exit code
Andreas Sandberg [Mon, 20 Jun 2016 13:50:43 +0000 (14:50 +0100)]
tests: Add a test command to get test status as an exit code

Add a "test" command to tests.py that queries a test pickle file and
returns different exit codes depending on the outcome of the tests in
the file. The following exit codes can currently be returned:

  * 0: All tests were successful or skipped.

  * 1: General fault in the script such as incorrect parameters or
    failing to parse a pickle file.

  * 2: At least one test failed to run. This is what the summary
    formatter usually shows as a 'FAILED'.

  * 3: All tests ran correctly, but at least one failed to verify
    its output. When displaying test output using the summary
    formatter, such a test would show up as 'CHANGED'.

The command can be invoked like this:

./tests/tests.py test `find build/ARM/tests/opt/ -name status.pickle`

Change-Id: I7e6bc661516f38ff08dfda7c4359a1e10bf97864
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agotests: Split test results into running and verification
Andreas Sandberg [Mon, 20 Jun 2016 13:50:34 +0000 (14:50 +0100)]
tests: Split test results into running and verification

The test base class already assumes that test cases consists of a run
stage and a verification stage. Reflect this in the results class to
make it possible to detect cases where a run was successful, but
didn't verify.

Change-Id: I31ef393e496671221c5408aca41649cd8dda74ca
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agostyle: catch trailing white spaces in make and dts files
Gabor Dozsa [Mon, 20 Jun 2016 13:49:52 +0000 (14:49 +0100)]
style: catch trailing white spaces in make and dts files

Change-Id: I2a4f1893919660e51599902b972a6f3f5717e305
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agomem: Resolve TrafficGen trace relative to the config
Andreas Sandberg [Mon, 20 Jun 2016 13:49:37 +0000 (14:49 +0100)]
mem: Resolve TrafficGen trace relative to the config

The traffic generator currently resolves relative trace paths relative
to gem5's current working directory. This can lead to surprising
results for relative paths where the expectation would normally be
that they are resolved relative to the configuration file. This
changeset implements config-relative trace file lookups. The old
behavior is kept as a fallback for configs that expect that behavior.

Change-Id: I1bda4e16725842666ffc37dcb6838c23a6ff138c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agoconfig: Fix omission of walker cache in config scripts
Andreas Hansson [Mon, 20 Jun 2016 13:39:49 +0000 (14:39 +0100)]
config: Fix omission of walker cache in config scripts

This patch ensures a walker cache is instantiated if specfied.

Change-Id: I2c6b4bf3454d56bb19558c73b406e1875acbd986
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
8 years agokern, arm: Dump dmesg on kernel panic/oops
Andreas Sandberg [Mon, 20 Jun 2016 13:39:49 +0000 (14:39 +0100)]
kern, arm: Dump dmesg on kernel panic/oops

Add helper functions to dump the guest kernel's dmesg buffer to a text
file in m5out. This functionality is split into two parts. First, a
dmesg dump function that can be used in other places:

void Linux::dumpDmesg(ThreadContext *, std::ostream &)

This function is used to implement two PCEvents: DmesgDumpEvent and
KernelPanic event. The only difference between the two is that the
latter produces a gem5 panic instead of a warning in addition to
dumping the kernel log.

Change-Id: I6d2af1d666ace57124089648ea906f6c787ac63c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>
8 years agobase: Fix multiple names to one address bug in SymbolTable
Andreas Sandberg [Mon, 20 Jun 2016 13:39:48 +0000 (14:39 +0100)]
base: Fix multiple names to one address bug in SymbolTable

The SymbolTable class currently assumes that at most one symbol can
point to a given address. If multiple symbols point to the same
address, only the first one gets added to the internal symbol table
since there is already a match in the address table.

This changeset converts the address table from a map into a multimap
to be able to handle cases where an address maps to multiple
symbols. Additionally, the insert method is changed to not fail if
there is a match in the address table.

Change-Id: I6b4f1d5560c21e49a4af33220efb2a8302961768
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>
8 years agogpu-compute: Fixed a bug in decoding Atomic ST
Tuan Ta [Sat, 18 Jun 2016 17:02:13 +0000 (13:02 -0400)]
gpu-compute: Fixed a bug in decoding Atomic ST

There is a mismatch between DataType and SrcDataType in constructing
Atomic ST instruction. The mismatch causes atomic_store and
atomic_store_explicit function to store incorrect value in memory.

8 years agostats: update EIO stats
Steve Reinhardt [Mon, 13 Jun 2016 00:02:49 +0000 (20:02 -0400)]
stats: update EIO stats

8 years agogpu-compute: parametrize Wavefront size
jkalamat [Thu, 9 Jun 2016 15:24:55 +0000 (11:24 -0400)]
gpu-compute: parametrize Wavefront size

Eliminate the VSZ constant that defined the Wavefront size (in numbers of work
items); replaced it with a parameter in the GPU.py configuration script.
Changed all data structures dependent on the Wavefront size to be dynamically
sized. Legal values of Wavefront size are 16, 32, 64 for now and checked at
initialization time.

8 years agodist, dev: Fixed the packet ordering in etherswitch
Mohammad Alian [Wed, 8 Jun 2016 14:12:41 +0000 (09:12 -0500)]
dist, dev: Fixed the packet ordering in etherswitch

This patch fixes the order that packets gets pushed into the output fifo
of etherswitch. If two packets arrive at the same tick to the etherswitch,
we sort and push them based on their source port id.
In dist-gem5 simulations, if there is no ordering inforced while two
packets arrive at the same tick, it can lead to non-deterministic simulations

Committed by Jason Lowe-Power <power.jg@gmail.com>

8 years agosim: Make clang happy
Andreas Hansson [Tue, 7 Jun 2016 13:27:49 +0000 (14:27 +0100)]
sim: Make clang happy

Once again appeasing clang.

8 years agosim: added missing include to mathexpr.hh
Sergei Trofimov [Tue, 7 Jun 2016 13:27:35 +0000 (14:27 +0100)]
sim: added missing include to mathexpr.hh

mathexpr.hh uses std::function<> but was not including the appropriate
header, which resulted in an error

build/ARM/sim/mathexpr.hh:51:18: error: 'function' in namespace 'std'
does not name a template type
     typedef std::function<double(std::string)> EvalCallback;

This commit adds the missing include.

Change-Id: I6c01d77d4354c6de838538f137a38f75f9866166
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agostats: Add power stats to test references
Andreas Sandberg [Mon, 6 Jun 2016 16:16:44 +0000 (17:16 +0100)]
stats: Add power stats to test references

Change-Id: Ic827213134b199446822f128b81d4a480e777fee

8 years agosim: Only print the power state transition warning once
Andreas Sandberg [Mon, 6 Jun 2016 16:16:44 +0000 (17:16 +0100)]
sim: Only print the power state transition warning once

A lot of objects seem to request no-op power transitions which
currently results in large amounts of warnings. These warnings are
benign and risk hiding more serious warnings. Make the warning a
warn_once to prevent console flooding.

Change-Id: I86c74b4224b167f14469250ef86ab69fde7a227e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agopwr: Closing power and thermal feedback loop
David Guillen Fandos [Mon, 6 Jun 2016 16:16:44 +0000 (17:16 +0100)]
pwr: Closing power and thermal feedback loop

This patch makes thermal models use the power figures
calculated by power models. Since there is a circular
dependency between power and thermal (and thermal was
pushed before) this patch closes that loop.

Change-Id: I8bd5acf6a5026fdbbcfac47e33d27397f24a6f7d
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
8 years agosim: Adding support for power models
David Guillen Fandos [Mon, 6 Jun 2016 16:16:44 +0000 (17:16 +0100)]
sim: Adding support for power models

This patch adds some basic support for power models in gem5.

The power interface is defined so it can interact with thermal
models as well. It implements a simple power evaluator that
can be used for simple power models that express power in the
form of a math expression. These expressions can use stats
within the same SimObject (or down its hierarchy) and some
magic variables such as "temp" for temperature.
In future patches we will extend this functionality to allow
slightly more complex expressions.

The model allows it to be extended to use other kinds of models.

Change-Id: I76752f9638b6815e229fd74cdcb7721a305cbc4b

8 years agopwr: Low-power idle power state for idle CPUs
David Guillen Fandos [Mon, 6 Jun 2016 16:16:43 +0000 (17:16 +0100)]
pwr: Low-power idle power state for idle CPUs

Add functionality to the BaseCPU that will put the entire CPU
into a low-power idle state whenever all threads in it are idle.

Change-Id: I984d1656eb0a4863c87ceacd773d2d10de5cfd2b

8 years agostats: Silence unused power stats
Andreas Sandberg [Mon, 6 Jun 2016 16:16:43 +0000 (17:16 +0100)]
stats: Silence unused power stats

The power stats are currently very noisy even if no power model has
been loaded. Silence stats that are either zero or nan.

Change-Id: I7d0220c2fcf01131084a219228f140cfaddaf95b
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agopwr: Add power states to ClockedObject
David Guillen Fandos [Mon, 6 Jun 2016 16:16:43 +0000 (17:16 +0100)]
pwr: Add power states to ClockedObject

Add 4 power states to the ClockedObject, provides necessary access
functions to check and update the power state. Default power state
is UNDEFINED, it is responsibility of the respective simulation
model to provide the startup state and any other logic for state
change. Add number of transition stat. Add distribution of time
spent in clock gated state. Add power state residency stat. Add
dump call back function to allow stats update of distribution
and residency stats.

Change-Id: Id086090a2ed720c9fcb37812a3c98f0f724907c6

8 years agostats: Fixing regStats function for some SimObjects
David Guillen Fandos [Mon, 6 Jun 2016 16:16:43 +0000 (17:16 +0100)]
stats: Fixing regStats function for some SimObjects

Fixing an issue with regStats not calling the parent class method
for most SimObjects in Gem5. This causes issues if one adds new
stats in the base class (since they are never initialized properly!).

Change-Id: Iebc5aa66f58816ef4295dc8e48a357558d76a77c
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agosim: Call regStats of base-class as well
Stephan Diestelhorst [Mon, 6 Jun 2016 16:16:43 +0000 (17:16 +0100)]
sim: Call regStats of base-class as well

We want to extend the stats of objects hierarchically and thus it is necessary
to register the statistics of the base-class(es), as well.  For now, these are
empty, but generic stats will be added there.

Patch originally provided by Akash Bagdia at ARM Ltd.

8 years agostats: update EIO stats
Steve Reinhardt [Mon, 6 Jun 2016 04:18:34 +0000 (00:18 -0400)]
stats: update EIO stats

8 years agogpu-compute: Fixed a bug in global memory pipeline
Tuan Ta [Fri, 3 Jun 2016 20:20:08 +0000 (16:20 -0400)]
gpu-compute: Fixed a bug in global memory pipeline

Added a condition when inflightStores is incremented to prevent a deadlock
caused by many memory fence requests generated by a CU

8 years agoruby: Implement SwapReq support
Marco Elver [Fri, 3 Jun 2016 20:20:08 +0000 (16:20 -0400)]
ruby: Implement SwapReq support

This implements SwapReq for Ruby memory.

A SwapReq should be treated like a write, except that the response
packet contains the overwritten data.

Note that, in particular, the conditional checking for isStore/isLoad
needs to be reversed, as a SwapReq is both.

8 years agostats: Update ref stats to match ARM TLB changes
Andreas Sandberg [Thu, 2 Jun 2016 19:34:39 +0000 (20:34 +0100)]
stats: Update ref stats to match ARM TLB changes

8 years agoarm: refactor page table format determination
Curtis Dunham [Thu, 2 Jun 2016 15:44:57 +0000 (16:44 +0100)]
arm: refactor page table format determination

In particular, when EL0 is in AArch32 but EL1 is AArch64, AArch64
memory translation must be used.  This is essential for typical
AArch64/32 interworking use cases.

8 years agotests: Remove working dir assumption in tgen tests
Andreas Sandberg [Thu, 2 Jun 2016 14:20:24 +0000 (15:20 +0100)]
tests: Remove working dir assumption in tgen tests

The traffic generator tests currently assume that they are run from
the root of the source directory. This sometimes breaks tests when
they are run using the new test framework.

Change-Id: I6538a7902694c5d2c980295e076ea1c09acc4291
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agostats: Update to match ARM ISA changes
Andreas Sandberg [Thu, 2 Jun 2016 13:14:36 +0000 (14:14 +0100)]
stats: Update to match ARM ISA changes

8 years agoarm: Rewrite ERET to behave according to the ARMv8 ARM
Andreas Sandberg [Thu, 2 Jun 2016 12:41:26 +0000 (13:41 +0100)]
arm: Rewrite ERET to behave according to the ARMv8 ARM

The ERET instruction doesn't set PSTATE correctly in some cases
(particularly when returning to aarch32 code). Among other things,
this breaks EL0 thumb code when using a 64-bit kernel. This changeset
updates the ERET implementation to match the ARM ARM.

Change-Id: I408e7c69a23cce437859313dfe84e68744b07c98
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>
8 years agoarm: Correctly check FP/SIMD access permission in aarch32
Andreas Sandberg [Thu, 2 Jun 2016 12:38:30 +0000 (13:38 +0100)]
arm: Correctly check FP/SIMD access permission in aarch32

The current implementation of aarch32 FP/SIMD in gem5 assumes that EL1
and higher are all 32-bit. This breaks interprocessing since an
aarch64 EL1 uses different enable/disable bits. This change updates
the permission checks to according to what is prescribed by the ARM
ARM.

Change-Id: Icdcef31b00644cfeebec00216b3993aa1de12b88
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>
8 years agotests: add 'CHANGED' output to pickle viewer
Curtis Dunham [Thu, 2 Jun 2016 09:50:52 +0000 (10:50 +0100)]
tests: add 'CHANGED' output to pickle viewer

Change-Id: I64c69fde8657c273adea69122877c5348a4f867a
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agotests: Only run Ruby tests when testing Ruby targets
Andreas Sandberg [Thu, 2 Jun 2016 09:48:45 +0000 (10:48 +0100)]
tests: Only run Ruby tests when testing Ruby targets

Limit the test configs to Ruby-only configs when testing a Ruby target
that isn't MI_example. This avoids re-running configs that has already
been tested by the generic (non-Ruby) ISA target. This behavior was
the expected behavior prior to switching to the new test framework.

Change-Id: I3f138dbf9c7071ce862d1073aaec57c59afbc921
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agostyle: remove extra newline from white space verifier fix method
Gabor Dozsa [Thu, 2 Jun 2016 09:48:20 +0000 (10:48 +0100)]
style: remove extra newline from white space verifier fix method

Change-Id: I7bce7d1cb04efe20d31445eb67ea5ffd2a4a41f4
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostyle: respect per verifier ignores for git commit
Gabor Dozsa [Thu, 2 Jun 2016 09:48:16 +0000 (10:48 +0100)]
style: respect per verifier ignores for git commit

Change-Id: Id00379bdb17594e627ee49c077fb75f499ea550e
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostyle: Move the last bits of file_types.py to the style package
Andreas Sandberg [Thu, 2 Jun 2016 09:37:16 +0000 (10:37 +0100)]
style: Move the last bits of file_types.py to the style package

The commit that refactored the style checkers into a new Python
package (style: Refactor the style checker as a Python package)
accidentally left a fragment of file_types.py in the old location
(util/style.py). This was caused by a race between the commit that
moved the file and Nate's commit that added a copyright header to the
file.

This commit moves the last fragment (the copyright header) and removes
the old file.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
--HG--
extra : amend_source : 946f1f6fee034ae79bd50ea7dfc3299a60f070c0

8 years agostats: update and fix e273e86a873d
Curtis Dunham [Tue, 31 May 2016 15:55:47 +0000 (16:55 +0100)]
stats: update and fix e273e86a873d

8 years agoarm: Enable LPAE support by default
Andreas Sandberg [Tue, 31 May 2016 11:14:40 +0000 (12:14 +0100)]
arm: Enable LPAE support by default

LPAE has been tested with Linux 4.4 and seems to work just fine. Let's
enable it by default.

Change-Id: Id88c6e3c91ae9c353279d42f2aa1f8a78485bd32
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>
8 years agoarm: Correctly check translation mode (aarch64/aarch32)
Andreas Sandberg [Tue, 31 May 2016 11:14:37 +0000 (12:14 +0100)]
arm: Correctly check translation mode (aarch64/aarch32)

According to the ARM ARM (see AArch32.TranslateAddress in the
pseudocode library), the TLB should be operating in aarch64 mode if
the EL0 is aarch32 and EL1 is aarch64. This is currently not the case
in gem5, which breaks 64/32 interprocessing. Update the check to match
the reference manual.

Change-Id: I6f1444d57c0e2eb5f8880f513f33a9197b7cb2ce
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agoscons: Use the new test framework from scons
Andreas Sandberg [Tue, 31 May 2016 10:27:00 +0000 (11:27 +0100)]
scons: Use the new test framework from scons

Rewrite the SCons script responsible for launching tests to use the
new test framework. The biggest visible change after this changeset is
that SCons no longer produces a "status" file in test build
directories. Instead, it creates a status.pickle file. That file can
be inspected using the new tests.py script. Another visible change is
that timed out tests are now reported as failed rather than a using a
separate summary message.

Since the pickle file will remain in the build directory after running
tests, it's now possible to convert the test results into other
formats. For example:

./tests/tests.py show --format junit -o junit.xml \
    `find build/ -name status.pickle`

To better facilitate running outside of scons, there is now a set of
targets that generate test listings that can be used by the test
script. There are currently three targets, quick.list, long.list, and
all.list. For example:

scons build/ARM/tests/opt/all.list
for F in `cat build/ARM/tests/opt/all.list`; do
    ./tests/tests.py run build/ARM/gem5.opt $F
done

Change-Id: I2c0f8ca0080d7af737362e198eda4cb3a72e6c36
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agotests: Fix incorrect stat.txt ignore when updating refs
Andreas Sandberg [Tue, 31 May 2016 10:26:59 +0000 (11:26 +0100)]
tests: Fix incorrect stat.txt ignore when updating refs

ClassicTest was incorrectly ignoring stats.txt when updating reference
statistics. This was caused by ignore rules being applied too
aggressively when listing reference files. This changeset splits the
ignore rules into two different lists: 1) diff_ignore_files that lists
the files that shouldn't be diff:ed using the normal diff tool, and 2)
ref_ignore_files which lists files that should be ignored by the test
system.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostats: update for snoop filter tweak
Curtis Dunham [Tue, 31 May 2016 10:07:18 +0000 (11:07 +0100)]
stats: update for snoop filter tweak

--HG--
extra : source : 2323557eb4f4866fa1ea1575a9f5969e0022adc1

8 years agomem, config: Selective use of snoop filter
Stephan Diestelhorst [Fri, 27 May 2016 16:05:58 +0000 (17:05 +0100)]
mem, config: Selective use of snoop filter

Disable the default snoop filter in the SystemXBar so that the
typical membus does not have a snoop filter by default. Instead,
add the snoop filter only when there are caches added to the system
(with the caches / l2cache options).

The underlying problem is that the snoop filter grows without
bounds (for now) if there are no caches to tell it that lines have
been evicted. This causes slow regression runs for all the atomic
regressions. This patch fixes this behaviour.

--HG--
extra : source : f97c20511828209757440839ed48d741d02d428f

8 years agoscons: Bump minimum gcc version to 4.8
Andreas Hansson [Mon, 30 May 2016 06:10:48 +0000 (02:10 -0400)]
scons: Bump minimum gcc version to 4.8

After reaching consensus on the mailing list, this patch officially
makes gcc 4.8 the minimum.

A few checks in the SConstruct are cleaned up as a result. This patch
also adds "-fno-omit-frame-pointer" when using ASAN (which is part of
the gcc/clang  recommended flags).

8 years agocpu: fix lastStopped unserialisation
Ilias Vougioukas [Fri, 27 May 2016 15:55:01 +0000 (16:55 +0100)]
cpu: fix lastStopped unserialisation

MinorCPU fix for corrupt numCycles when resuming from a previous simulation.
---
 src/cpu/minor/cpu.cc | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

8 years agopower: Allow voltage to be configured via cmd line
Akash Bagdia [Fri, 27 May 2016 15:54:59 +0000 (16:54 +0100)]
power: Allow voltage to be configured via cmd line

---
 src/python/m5/params.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

8 years agoscons: Enable override suggestions on gcc 5.0+
Matteo Andreozzi [Fri, 27 May 2016 15:46:03 +0000 (16:46 +0100)]
scons: Enable override suggestions on gcc 5.0+

---
 SConstruct | 4 ++++
 1 file changed, 4 insertions(+)

8 years agoarm: Use the target EL state when determining fault format
Andreas Sandberg [Fri, 27 May 2016 14:02:01 +0000 (15:02 +0100)]
arm: Use the target EL state when determining fault format

We currently check the current state instead of the state of the
target EL when determining how we report a fault. This breaks
interprocessing since EL0 in aarch32 would report its fault status
using the aarch32 registers even if EL1 is in aarch64. Fix this to
report the fault using the format of the target EL.

Change-Id: Ic080267ac210783d1e01c722a4ddaa687dce280e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
8 years agoarm: Fix incorrect TLB permission check in aarch32
Andreas Sandberg [Thu, 26 May 2016 16:38:15 +0000 (17:38 +0100)]
arm: Fix incorrect TLB permission check in aarch32

The TLB currently assumes that the pxn bit in an LPAE page descriptor
disables execution from unprivileged mode. However, according to the
architecture manual, this bit should disable execution from privileged
modes. Update the TLB implementation to reflect this behavior.

Change-Id: I7f1bb232d7a94a93fd601a9230223195ac952947
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agoarm: Make EL checks available in SE mode
Andreas Sandberg [Thu, 26 May 2016 16:33:38 +0000 (17:33 +0100)]
arm: Make EL checks available in SE mode

A lot of code assumes that it is possible to test what the highest EL
is and if it is 64 bit. These calls currently don't work in SE mode
since they rely on an instance of an ArmSystem.

Change-Id: I0d1f261926a66ce3dc4fa116845ffb2a081446f2
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>
8 years agomem: Fix memory leak in handling of deferred snoops
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: Fix memory leak in handling of deferred snoops

This patch fixes a memory leak where deferred snoop packets never got
deallocated. On the call to MSHR::handleSnoop these snoops were
treated as if a response will be sent, as the MSHR was
pendingModified. Consequently, a copy of the packet was created and
added to the MSHR targets. However, an preceeding target to the same
MSHR, originally from a CPU, was serviced before the snoop, and caused
the block to be invalidated. This happens for ReadExReq and
UpgradeReq.

Note that the original snoop will receive a response, just not from
the cache in question, but instead from the cache upstream that issued
the ReadExReq or UpgradeReq.

Change-Id: I4ac012fbc8a46cf693ca390fe9476105d444e6f4
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agodev, arm: Add a flag to enable/disable gem5 GIC extensions
Andreas Sandberg [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
dev, arm: Add a flag to enable/disable gem5 GIC extensions

Make it possible to disable gem5 gic extensions by setting the
gem5_extensions param to False from Python.

Change-Id: Icb255105925ef49891d69cc9fe5cc55578ca066d
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Geoffrey Blake <geoffrey.blake@arm.com>
8 years agocpu: Add a basic progress check to the TrafficGen
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
cpu: Add a basic progress check to the TrafficGen

This patch adds a progress check to the TrafficGen so that it is
easier to detect deadlock scenarios where the generator gets stuck
waiting for a retry, and makes no further progress.

Change-Id: Ifb8779ad0939f52c0518d0e867bac73f99b82e2b
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
8 years agomem: Do not set cacheResponding on MSHR snoop if not responding
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: Do not set cacheResponding on MSHR snoop if not responding

This patch changes the flow control for HSHR::handleSnoop to ensure
that we only set cacheResponding on the snoop packet if we are
actually responding. This avoids situations where a responder is
stalling indefinitely on a response that never arrives.

Change-Id: I691dd01755b614b30203581aa74fc743b350eacc
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agomem: Fix MemChecker unique_ptr type mismatch
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: Fix MemChecker unique_ptr type mismatch

This patch fixes the type of the unique_ptr instances, to ensure that
the data that is allocated with new[] is also deleted with
delete[]. The issue was highlighted by ASAN.

Change-Id: I2c5510424959d862a9954d83e728d901bb18d309
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
8 years agoarm: Fix heap overflow issue in Neon64Load operation
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
arm: Fix heap overflow issue in Neon64Load operation

This patch fixes an issue identified by ASAN where the Neon64Load
operation assumes the packet always contains 16 bytes.

Change-Id: If24a7e461d60cb80970dfbe61d923d7d56926698
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agoarm, dev: Remove superfluous loop increment in flash device
Andreas Hansson [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
arm, dev: Remove superfluous loop increment in flash device

As identified by clang-3.8, there was a superfluous loop increment in
the flash device which is now removed.

Change-Id: If46a1c4f72d3d4c9f219124030894ca433c790af
Reviewed-by: Rene De Jong <rene.dejong@arm.com>
8 years agomem: fix headers include order in the cache related classes
Nikos Nikoleris [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: fix headers include order in the cache related classes

Change-Id: Ia57cc104978861ab342720654e408dbbfcbe4b69
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agomem: remove redudant check whether the cache forwards snoops
Nikos Nikoleris [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: remove redudant check whether the cache forwards snoops

Change-Id: I57b56771086e1e2f512977fb7248d93c171ab925
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agomem: change NULL to nullptr in the cache related classes
Nikos Nikoleris [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: change NULL to nullptr in the cache related classes

Change-Id: I5042410be54935650b7d05c84d8d9efbfcc06e70
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agomem: fix the line length in the cache related classes
Nikos Nikoleris [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
mem: fix the line length in the cache related classes

Change-Id: I6d1feb164a958dde0da87a1cd2698096112c4a82
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agotests: Add test infrastructure as a Python module
Andreas Sandberg [Thu, 26 May 2016 10:56:24 +0000 (11:56 +0100)]
tests: Add test infrastructure as a Python module

Implement gem5's test infrastructure as a Python module and a run
script that can be used without scons. The new implementation has
several features that were lacking from the previous test
infrastructure such as support for multiple output formats, automatic
runtime tracking, and better support for being run in a cluster
environment.

Tests consist of one or more steps (TestUnit). Units are run in two
stages, the first a run stage and then a verify stage. Units in the
verify stage are automatically skipped if any unit run stage wasn't
run. The library currently contains TestUnit implementations that run
gem5, diff stat files, and diff output files.

Existing tests are implemented by the ClassicTest class and "just
work". New tests can that don't rely on the old "run gem5 once and
diff output" strategy can be implemented by subclassing the Test base
class or ClassicTest.

Test results can be output in multiple formats. The module currently
supports JUnit, text (short and verbose), and Python's pickle
format. JUnit output allows CI systems to automatically get more
information about test failures. The pickled output contains all state
necessary to reconstruct a tests results object and is mainly intended
for the build system and CI systems.

Since many JUnit parsers parsers assume that test suite names look
like Java package names. We currently output path-like names with
slashes separating components. Test names are translated according to
these rules:

  * '.' -> '-"
  * '/' -> '.'

The test tool, tests.py, supports the following features:

  * Test listing. Example: ./tests.py list arm/quick

  * Running tests. Example:
    ./tests.py run -o output.pickle --format pickle \
        ../build/ARM/gem5.opt \
        quick/se/00.hello/arm/linux/simple-timing

  * Displaying pickled results. Example:
    ./tests.py show --format summary *.pickle

Change-Id: I527164bd791237aacfc65e7d7c0b67b695c5d17c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Joel Hestness <jthestness@gmail.com>
8 years agoconfig, x86: Properly space pad the X86IntelMPBus Entry descriptions
Bjoern A. Zeeb [Thu, 19 May 2016 20:19:35 +0000 (15:19 -0500)]
config, x86: Properly space pad the X86IntelMPBus Entry descriptions

According to the Intel Multi Processor Specification rev 1.4 (-006) (*),
section 4.3.2 Bus Entries, Bus type strings are >>6-character ASCII
(blank-filled) strings<<.
This patch properly pads the entries with the missing spaces at the end.

(*) http://www.intel.com/design/pentium/datashts/24201606.pdf

Committed by Jason Lowe-Power <power.jg@gmail.com>

8 years agoarm,dev: PL011 UART_FR read status enhancement
Bjoern A. Zeeb [Thu, 19 May 2016 20:19:35 +0000 (15:19 -0500)]
arm,dev: PL011 UART_FR read status enhancement

Given we do not simulate a FIFO currently there are only two states
we can be in upon read: empty or full.  Properly signal the latter.

Add and sort constants for states in the header file.

Committed by Jason Lowe-Power <power.jg@gmail.com>

8 years agox86, dev: properly space the APIC registers
Bjoern A. Zeeb [Thu, 19 May 2016 20:19:35 +0000 (15:19 -0500)]
x86, dev: properly space the APIC registers

Registers are 0x10 and not 0x8 apart.  The latter leads to invalid
calculations of index in array which in turn means that we will not
find the interrupt we were looking (been notified) for in the OS.

Committed by Jason Lowe-Power <power.jg@gmail.com>

8 years agodev, virtio: properly set PCI address space to use IOREG
Bjoern A. Zeeb [Thu, 19 May 2016 20:19:34 +0000 (15:19 -0500)]
dev, virtio: properly set PCI address space to use IOREG

VirtIO spec < 1.0 demands IOREG to be used on PCI and not memory mapped.
Set the correct bit on the PCI address accordingly.

Committed by Jason Lowe-Power <power.jg@gmail.com>

8 years agogpu-compute: fix bug in GPUDynInst::isScalarRegister()
Tony Gutierrez [Mon, 16 May 2016 19:36:24 +0000 (15:36 -0400)]
gpu-compute: fix bug in GPUDynInst::isScalarRegister()

8 years agoscons: Rewrite git style hook installer
Andreas Sandberg [Mon, 9 May 2016 10:32:11 +0000 (11:32 +0100)]
scons: Rewrite git style hook installer

The SCons script currently assumes that .git is a proper directory
with all git meta data. This isn't the case if the working directory
was checked out using git worktrees. In such case .git is a file with
meta data telling git where the repository data is stored.

This changeset updates changes the SConstruct file to rely on git
rev-parse to get the real git directory.

Change-Id: I3d0475eabc12e868193797067a88e540a9b6e927
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agotests: Enable test running outside of gem5's source tree
Andreas Sandberg [Mon, 9 May 2016 10:32:07 +0000 (11:32 +0100)]
tests: Enable test running outside of gem5's source tree

The learning gem5 scripts currently assumes that the current working
directory is the root of gem5's source tree. This isn't necessarily
the case when running the tests using gem5's new test runner.

Change-Id: Ief569bbe77b1b3e2b0fb0e6c575fb0705bbba9b3
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agotests: update EIO ref stats for removed cache stats
Steve Reinhardt [Sat, 7 May 2016 18:43:06 +0000 (14:43 -0400)]
tests: update EIO ref stats for removed cache stats

Complaints about changes in EIO tests were due to reference files
that still have removed cache stats from cset 11454:e55afadc4e19.

8 years agogpu-compute: fix spacing in GPUDynInst ctor
Tony Gutierrez [Fri, 6 May 2016 21:00:54 +0000 (17:00 -0400)]
gpu-compute: fix spacing in GPUDynInst ctor

8 years agogpu-compute: fix uninitialized member bug in GPUDynInst
Tony Gutierrez [Fri, 6 May 2016 20:44:38 +0000 (16:44 -0400)]
gpu-compute: fix uninitialized member bug in GPUDynInst

the n_reg field in the GPUDynInst is not currently set in the constructor.
if it is not set externally, there are assertion failures that may occur
if the random value it gets is just right. here we set it to 0 by default.

8 years agodev, arm: Update GIC to use GICv2 register naming
Andreas Sandberg [Fri, 6 May 2016 14:52:34 +0000 (15:52 +0100)]
dev, arm: Update GIC to use GICv2 register naming

The GICv2 has a new and slightly more consistent register
naming. Update gem5's GIC register names to match the new
documentation.

Change-Id: I8ef114eee8a95bf0b88b37c18a18e137be78675a
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
8 years agoarm: Update dts to work with the new HDLCD driver
Andreas Sandberg [Fri, 6 May 2016 14:51:45 +0000 (15:51 +0100)]
arm: Update dts to work with the new HDLCD driver

The dts files in system/arm/dt currently assume that an (unreleased)
gem5-specific virtual encoder is used as a remote endpoint for the
HDLCD. This driver won't be released as a more general virtual encoder
is about to be posted on the Linux DRI devel list and this encoder has
now been merged with gem5's kernel tree. This changeset updates gem5's
dts files to use that encoder.

Change-Id: Ic1a1be728efd31603752fdfba005b6dbdea42e7e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Rene De Jong <rene.dejong@arm.com>
8 years agoscons: emit correct message before installing git hook
Curtis Dunham [Thu, 28 Apr 2016 14:20:03 +0000 (15:20 +0100)]
scons: emit correct message before installing git hook

Change-Id: Ied2e018a9a1b6db446edbaac871ac4efd795ec36
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostyle: ignore test data in style checks
Curtis Dunham [Thu, 28 Apr 2016 14:19:58 +0000 (15:19 +0100)]
style: ignore test data in style checks

Change-Id: If797eaf3842b5c1604942bb60f091800ee814a2a
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostyle: respect ignores for git commit
Curtis Dunham [Thu, 28 Apr 2016 14:18:52 +0000 (15:18 +0100)]
style: respect ignores for git commit

Previously it ignored the ignores for git but not Mercurial.

Change-Id: I178fe879ebd268e863063eb9e30ec87e8ac8faec
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agostyle: improve compatibility with old git versions
Curtis Dunham [Thu, 28 Apr 2016 14:17:50 +0000 (15:17 +0100)]
style: improve compatibility with old git versions

Older versions of git need the '=' to connect --diff-filter to
its argument.

Change-Id: Ic62057567db061684be88a7c2d80a6a5d4c11dcf

8 years agostyle: Don't include diff context in git style hook
Andreas Sandberg [Thu, 28 Apr 2016 14:17:28 +0000 (15:17 +0100)]
style: Don't include diff context in git style hook

The git style hook currently includes a few lines of diff context when
determining changed regions. This is undesirable as this triggers
false positives when modifying existing files with a lot of style
violations. This change sets the amount of context to 0, which is the
default value when requesting staged regions from the git helper.

Change-Id: Ibe03123e329ea0241281e104183a68d6c495b190
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>
8 years agotests: Remove stale reference output files
Andreas Sandberg [Thu, 28 Apr 2016 14:16:52 +0000 (15:16 +0100)]
tests: Remove stale reference output files

Remove test reference files that are not generated any more:

    * chair.cook.ppm: This file should be generated by eon and not
      mcf, so it shouldn't be included as an output from mcf.

    * system.pc.terminal: The terminal device has been renamed so this
      file is no longer generated.

Change-Id: I3962efe1ff25479ca276115f7564eccb5fac8cf9
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
8 years agoarm: Remove BreakPCEvent on guest kernel panic
Andreas Sandberg [Wed, 27 Apr 2016 14:34:58 +0000 (15:34 +0100)]
arm: Remove BreakPCEvent on guest kernel panic

The LinuxArmSystem class normally provides support for panicing gem5
if the simulated kernel panics. When this is turned off (default),
gem5 uses a BreakPCEvent to provide a debugger hook into the simulator
when the kernel crashes. This hook unconditionally kills gem5 with a
SIGTRAP unless gem5 is compiled in fast mode. This is undesirable
since the panic_on_panic param already provides similar functionality.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agokvm, arm: Make GIC interrupt lines configurable
Andreas Sandberg [Wed, 27 Apr 2016 14:34:48 +0000 (15:34 +0100)]
kvm, arm: Make GIC interrupt lines configurable

Add support for overriding the number of interrupt lines in the ARM
KvmGic.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agokvm, arm: Refactor KVM GIC device
Andreas Sandberg [Wed, 27 Apr 2016 14:34:31 +0000 (15:34 +0100)]
kvm, arm: Refactor KVM GIC device

Factor out the kernel device wrapper from the KvmGIC and put it in a
separate class. This will simplify a future kernel/gem5 hybrid GIC.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agodev: Fix incorrect terminal backlog handling
Andreas Sandberg [Wed, 27 Apr 2016 14:33:58 +0000 (15:33 +0100)]
dev: Fix incorrect terminal backlog handling

The Terminal device currently uses the peek functionality in gem5's
circular buffer implementation to send existing buffered content on
the terminal when a new client attaches. This functionallity is
however not implemented correctly and re-sends the same block multiple
time.

Add the required functionality to peek with an offset into the
circular buffer and change the Terminal::accept() implementation to
send the buffered contents.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
8 years agoruby: Rename pkt to m_pkt so it may be accessed via SLICC
Matthew Poremba [Tue, 26 Apr 2016 16:07:51 +0000 (12:07 -0400)]
ruby: Rename pkt to m_pkt so it may be accessed via SLICC

Allow usage of packet class in ruby for convenience purposes. This may be
used to access members of the packet/request class (e.g., via helper
functions) and/or push protocol specific information to the packets
SenderState without needing to modify SLICC types and protocols in multiple
locations.

8 years agotests: Add a basic memcheck regression
Andreas Hansson [Mon, 25 Apr 2016 07:46:12 +0000 (03:46 -0400)]
tests: Add a basic memcheck regression

This patch adds a simple regression that calls the existing
memcheck.py script.

--HG--
rename : tests/configs/learning-gem5-p1-simple.py => tests/configs/memcheck.py
rename : tests/quick/se/70.tgen/test.py => tests/quick/se/51.memcheck/test.py

8 years agotests: Update learning gem5 tests scripts with copyright
Jason Power [Thu, 21 Apr 2016 22:25:31 +0000 (17:25 -0500)]
tests: Update learning gem5 tests scripts with copyright

8 years agostats: Update stats to reflect cache changes
Andreas Hansson [Thu, 21 Apr 2016 08:48:24 +0000 (04:48 -0400)]
stats: Update stats to reflect cache changes

Removed unused stats, now counting WriteLineReq, and changed how
uncacheable writes are handled while responses are outstanding.