Re: [gem5-dev] Review Request 3838: ext: Update DRAMPower

2017-03-01 Thread Matthias Jung


> On Feb. 26, 2017, 9:52 vorm., Andreas Hansson wrote:
> > Great. Thanks Matthias!
> > 
> > How can we best make sure the functionality is matched by the DRAMCtrl? Is 
> > there anyone that already played around with bank-wise refresh?
> 
> Radhika Jagtap wrote:
> I've got a patch that matches DRAMCtrl to the new DRAMPower API which I'm 
> working on merging with this ext/* patch to make a single commit. Expect a 
> post in a couple days. Not played around with bank-wise refresh yet. By 
> default it is disabled. The main issue now resloved is that intermediate 
> statsdump in gem5 will now use window energy calculations from DRAMPower to 
> give correct energy deltas over a statsdump period (previously the dumped 
> stats were cumulative).
> 
> Matthias Jung wrote:
> We have a full bankwise refresh implementation in DRAMSys. It shouldnt be 
> hard to bring that to gem5 too.

Should I bring this to the new git, as it is? or should i add a submodule?


- Matthias


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/3838/#review9483
---


On Feb. 24, 2017, 9:56 nachm., Matthias Jung wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/3838/
> ---
> 
> (Updated Feb. 24, 2017, 9:56 nachm.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> ---
> 
> Changeset 11881:910b9376009a
> ---
> ext: Update DRAMPower
> 
> This patch syncs the DRAMPower library of gem5 to the external
> one on github (https://github.com/ravenrd/DRAMPower) of which
> I am one of the maintainers.
> 
> The version used is the commit:
> 90d6290f802c29b3de9e10233ceee22290907ce6
> from 30. Oct. 2016.
> 
> The new version features a bank-wise power estimation.
> Furthermore, PASR and Per-Bank Refresh is supported.
> 
> More Informtation can be found in the following papers:
> 
> A Bank-Wise DRAM Power Model for System Simulations
> Deepak M. Mathew, Eder F. Zulian, Subash. Kannoth, Matthias Jung, Christian 
> Weis, Norbert Wehn.
> International Conference on High-Performance and Embedded Architectures and 
> Compilers 2016 (HiPEAC), Workshop on: Rapid Simulation and Performance 
> Evaluation: Methods and Tools (RAPIDO), Stockholm, 2017.
> 
> A New Bank Sensitive DRAMPower Model for Efficient Design Space Exploration
> Matthias Jung, Deepak M. Mathew, Eder F. Zulian, Christian Weis, Norbert Wehn.
> International Workshop on Power And Timing Modeling, Optimization and 
> Simulation (PATMOS 2016), September, 2016, Bremen, Germany
> 
> 
> Diffs
> -
> 
>   ext/drampower/README.md 5ea85692a53e 
>   ext/drampower/SConscript 5ea85692a53e 
>   ext/drampower/src/CAHelpers.cc PRE-CREATION 
>   ext/drampower/src/CmdHandlers.cc PRE-CREATION 
>   ext/drampower/src/CommandAnalysis.h 5ea85692a53e 
>   ext/drampower/src/CommandAnalysis.cc 5ea85692a53e 
>   ext/drampower/src/MemBankWiseParams.h PRE-CREATION 
>   ext/drampower/src/MemBankWiseParams.cc PRE-CREATION 
>   ext/drampower/src/MemCommand.h 5ea85692a53e 
>   ext/drampower/src/MemPowerSpec.h 5ea85692a53e 
>   ext/drampower/src/MemPowerSpec.cc 5ea85692a53e 
>   ext/drampower/src/MemTimingSpec.h 5ea85692a53e 
>   ext/drampower/src/MemTimingSpec.cc 5ea85692a53e 
>   ext/drampower/src/MemoryPowerModel.h 5ea85692a53e 
>   ext/drampower/src/MemoryPowerModel.cc 5ea85692a53e 
>   ext/drampower/src/TraceParser.h 5ea85692a53e 
>   ext/drampower/src/TraceParser.cc 5ea85692a53e 
>   ext/drampower/src/libdrampower/LibDRAMPower.h 5ea85692a53e 
>   ext/drampower/src/libdrampower/LibDRAMPower.cc 5ea85692a53e 
>   ext/drampower/test/libdrampowertest/Makefile 5ea85692a53e 
>   ext/drampower/test/libdrampowertest/commands.trace 5ea85692a53e 
>   ext/drampower/test/libdrampowertest/lib_test.cc 5ea85692a53e 
> 
> Diff: http://reviews.gem5.org/r/3838/diff/
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Matthias Jung
> 
>

___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Re: [gem5-dev] Migrating to git and gerrit

2017-03-01 Thread Jason Lowe-Power
Hi Brandon,

You can make your changes to the code, then run "git commit --amend" to
amend the most recent commit. Basically, you want to update the same commit
that you pushed before. After that, you can push it using the same command
and gerrit will figure it out.

Does this answer your question about the commit log? Basically, the main
difference between hg and git is that git allows you to easily change
history. Whereas hg makes it impossible (or very hard) to change history.
There are arguments for both sides, but let's be honest, git won.

I'm not git expert, so maybe others have better answers (and it looks like
Gabe replied while I was writing this anyway).

Cheers,
Jason

On Wed, Mar 1, 2017 at 4:31 PM Potter, Brandon 
wrote:

> Hello Andreas,
>
> Newbie gerrit/git questions here:
>
> If someone requests a modification to a changeset in a review (or I
> realize something is wrong with the changeset myself), how do I update the
> posted review on Gerrit for the specified changeset? Mercurial/Reviewboard
> would be something like hg qref followed by hg postreview -oue  and the
> patch on Reviewboard would be updated to reflect the changes. How do we
> achieve a similar behavior here?
>
> Furthermore, what does the resulting commit log look like given whatever
> workflow you use? Ideally, we'd like the commit log to reflect coherent,
> atomic changes that implement one specific feature at a time. I don't want
> to public many incoherent changesets that are iterating to the
> right/accepted solution to implement a feature.
>
> Regards,
> Brandon
>
> -Original Message-
> From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Andreas
> Sandberg
> Sent: Wednesday, March 1, 2017 8:44 AM
> To: gem5 Developer List 
> Subject: Re: [gem5-dev] Migrating to git and gerrit
>
> Hi Everyone,
>
> The new Gerrit-based infrastructure is now live with the old Mercurial
> repository as a read-only mirror. Mirroring is currently done using a cron
> job that executes every 15 minutes, which means that there is some amount
> of lag between the gerrit master version and the mirrors.
>
> Those of you with commit access who plan to submit patches that have been
> on reviewed using the old infrastructure will need to convert these patches
> to git and push them to the main repository. It is highly recommended that
> patches without reviews are discarded and re-posted using the Gerrit flow
> to reduce the maintenance overhead of committing patches.
>
> Existing Mercurial patches (e.g., from patch queues) can be converted
> using the hg-patch-to-git-patch [1] script from Mozilla. The patch
> conversion script makes sure that the commit message and author information
> can be understood by git. Before converting your patches, make sure they
> apply cleanly on the current master branch. The best way to check this is
> by qpop:ing your patch queue, pulling in new changes, and then reapplying
> it. If you get warnings when applying patches, you need to qrefresh them to
> make sure that the diffs are up to date.
> Failing to do so will result in git refusing the patch.
>
> Once you have a patch queue that applies cleanly, you can import it into a
> new git branch using the following commands:
>
> # Create a new clone of the master repository git clone
> https://gem5.googlesource.com/public/gem5 gem5 cd gem5 # Install Gerrit's
> commit message hook. This is done automatically by scons when you build
> gem5.
> cp ext/git-commit-msg .git/hooks/commit-msg
>
> # Create a new branch for the outgoing changes git checkout -b fixes
> origin/master
>
> hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patch1.patch | git am
> # Run the commit message hook to generate a Change-id by amending the
> commit git commit --amend ...
> hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patchN.patch | git am
> git commit --amend
>
> To push the branch for review (remember to test it and verify that the
> commit log looks OK first!), execute the following command:
>
> git push origin HEAD:refs/for/master
>
> It's sometimes useful to set a patch series topic if you're submitting
> multiple patches. To do that when you submit patches for review, use this
> command instead:
>
> git push origin HEAD:refs/for/master%topic=my/topic
>
> Some users can bypass reviews and push changes straight into the master
> branch. This should only be done for code that has been reviewed using the
> ReviewBoard-based flow. If you're one of the select few, you can use the
> following push command to bypass review:
>
> git push origin HEAD:refs/heads/master
>
>
> Cheers,
> Andreas
>
> [1]
> https://github.com/mozilla/moz-git-tools/raw/master/hg-patch-to-git-patch
>
>
> On 16/02/2017 16:54, Jason Lowe-Power wrote:
> > Hi all,
> >
> > We've been talking about this for a while, but now it's time! Special
> > thanks to Andreas Sandberg for all of his hard work for putting this
> > together.
> >
> > We will be 

Re: [gem5-dev] Migrating to git and gerrit

2017-03-01 Thread Gabe Black
In the gerrit instances we use at work, the changes will have a commit ID
in their commit message (added automatically by a hook, at least in our
work flow) and that will uniquely identify a change to gerrit even if it
changes significantly, is rebased, etc. You can use git commit --amend to
update an existing commit, and git rebase -i to manage a local branch of
changes and combine them together, reorder them, get rid of them, etc.

One workflow people use with git is to make a lot of little commits which
as an aggregate do whatever they're trying to do, and then at the end
squash them together (or their tool does, but gerrit does not) for review.
What I do is to keep a set of patches which are more like the finished
product, and when I need to make additional changes I fold that into the
commits immediately with the commands I mentioned. Either should work.

Gabe

On Wed, Mar 1, 2017 at 1:31 PM, Potter, Brandon 
wrote:

> Hello Andreas,
>
> Newbie gerrit/git questions here:
>
> If someone requests a modification to a changeset in a review (or I
> realize something is wrong with the changeset myself), how do I update the
> posted review on Gerrit for the specified changeset? Mercurial/Reviewboard
> would be something like hg qref followed by hg postreview -oue  and the
> patch on Reviewboard would be updated to reflect the changes. How do we
> achieve a similar behavior here?
>
> Furthermore, what does the resulting commit log look like given whatever
> workflow you use? Ideally, we'd like the commit log to reflect coherent,
> atomic changes that implement one specific feature at a time. I don't want
> to public many incoherent changesets that are iterating to the
> right/accepted solution to implement a feature.
>
> Regards,
> Brandon
>
> -Original Message-
> From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Andreas
> Sandberg
> Sent: Wednesday, March 1, 2017 8:44 AM
> To: gem5 Developer List 
> Subject: Re: [gem5-dev] Migrating to git and gerrit
>
> Hi Everyone,
>
> The new Gerrit-based infrastructure is now live with the old Mercurial
> repository as a read-only mirror. Mirroring is currently done using a cron
> job that executes every 15 minutes, which means that there is some amount
> of lag between the gerrit master version and the mirrors.
>
> Those of you with commit access who plan to submit patches that have been
> on reviewed using the old infrastructure will need to convert these patches
> to git and push them to the main repository. It is highly recommended that
> patches without reviews are discarded and re-posted using the Gerrit flow
> to reduce the maintenance overhead of committing patches.
>
> Existing Mercurial patches (e.g., from patch queues) can be converted
> using the hg-patch-to-git-patch [1] script from Mozilla. The patch
> conversion script makes sure that the commit message and author information
> can be understood by git. Before converting your patches, make sure they
> apply cleanly on the current master branch. The best way to check this is
> by qpop:ing your patch queue, pulling in new changes, and then reapplying
> it. If you get warnings when applying patches, you need to qrefresh them to
> make sure that the diffs are up to date.
> Failing to do so will result in git refusing the patch.
>
> Once you have a patch queue that applies cleanly, you can import it into a
> new git branch using the following commands:
>
> # Create a new clone of the master repository git clone
> https://gem5.googlesource.com/public/gem5 gem5 cd gem5 # Install Gerrit's
> commit message hook. This is done automatically by scons when you build
> gem5.
> cp ext/git-commit-msg .git/hooks/commit-msg
>
> # Create a new branch for the outgoing changes git checkout -b fixes
> origin/master
>
> hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patch1.patch | git am
> # Run the commit message hook to generate a Change-id by amending the
> commit git commit --amend ...
> hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patchN.patch | git am
> git commit --amend
>
> To push the branch for review (remember to test it and verify that the
> commit log looks OK first!), execute the following command:
>
> git push origin HEAD:refs/for/master
>
> It's sometimes useful to set a patch series topic if you're submitting
> multiple patches. To do that when you submit patches for review, use this
> command instead:
>
> git push origin HEAD:refs/for/master%topic=my/topic
>
> Some users can bypass reviews and push changes straight into the master
> branch. This should only be done for code that has been reviewed using the
> ReviewBoard-based flow. If you're one of the select few, you can use the
> following push command to bypass review:
>
> git push origin HEAD:refs/heads/master
>
>
> Cheers,
> Andreas
>
> [1]
> https://github.com/mozilla/moz-git-tools/raw/master/hg-patch-to-git-patch
>
>
> On 16/02/2017 16:54, Jason Lowe-Power wrote:
> > Hi all,

Re: [gem5-dev] Migrating to git and gerrit

2017-03-01 Thread Potter, Brandon
Hello Andreas,

Newbie gerrit/git questions here:

If someone requests a modification to a changeset in a review (or I realize 
something is wrong with the changeset myself), how do I update the posted 
review on Gerrit for the specified changeset? Mercurial/Reviewboard would be 
something like hg qref followed by hg postreview -oue  and the patch on 
Reviewboard would be updated to reflect the changes. How do we achieve a 
similar behavior here?

Furthermore, what does the resulting commit log look like given whatever 
workflow you use? Ideally, we'd like the commit log to reflect coherent, atomic 
changes that implement one specific feature at a time. I don't want to public 
many incoherent changesets that are iterating to the right/accepted solution to 
implement a feature.

Regards,
Brandon

-Original Message-
From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Andreas Sandberg
Sent: Wednesday, March 1, 2017 8:44 AM
To: gem5 Developer List 
Subject: Re: [gem5-dev] Migrating to git and gerrit

Hi Everyone,

The new Gerrit-based infrastructure is now live with the old Mercurial 
repository as a read-only mirror. Mirroring is currently done using a cron job 
that executes every 15 minutes, which means that there is some amount of lag 
between the gerrit master version and the mirrors.

Those of you with commit access who plan to submit patches that have been on 
reviewed using the old infrastructure will need to convert these patches to git 
and push them to the main repository. It is highly recommended that patches 
without reviews are discarded and re-posted using the Gerrit flow to reduce the 
maintenance overhead of committing patches.

Existing Mercurial patches (e.g., from patch queues) can be converted using the 
hg-patch-to-git-patch [1] script from Mozilla. The patch conversion script 
makes sure that the commit message and author information can be understood by 
git. Before converting your patches, make sure they apply cleanly on the 
current master branch. The best way to check this is by qpop:ing your patch 
queue, pulling in new changes, and then reapplying it. If you get warnings when 
applying patches, you need to qrefresh them to make sure that the diffs are up 
to date.
Failing to do so will result in git refusing the patch.

Once you have a patch queue that applies cleanly, you can import it into a new 
git branch using the following commands:

# Create a new clone of the master repository git clone 
https://gem5.googlesource.com/public/gem5 gem5 cd gem5 # Install Gerrit's 
commit message hook. This is done automatically by scons when you build gem5.
cp ext/git-commit-msg .git/hooks/commit-msg

# Create a new branch for the outgoing changes git checkout -b fixes 
origin/master

hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patch1.patch | git am # Run 
the commit message hook to generate a Change-id by amending the commit git 
commit --amend ...
hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patchN.patch | git am git 
commit --amend

To push the branch for review (remember to test it and verify that the commit 
log looks OK first!), execute the following command:

git push origin HEAD:refs/for/master

It's sometimes useful to set a patch series topic if you're submitting multiple 
patches. To do that when you submit patches for review, use this command 
instead:

git push origin HEAD:refs/for/master%topic=my/topic

Some users can bypass reviews and push changes straight into the master branch. 
This should only be done for code that has been reviewed using the 
ReviewBoard-based flow. If you're one of the select few, you can use the 
following push command to bypass review:

git push origin HEAD:refs/heads/master


Cheers,
Andreas

[1]
https://github.com/mozilla/moz-git-tools/raw/master/hg-patch-to-git-patch


On 16/02/2017 16:54, Jason Lowe-Power wrote:
> Hi all,
>
> We've been talking about this for a while, but now it's time! Special 
> thanks to Andreas Sandberg for all of his hard work for putting this 
> together.
>
> We will be migrating our infrastructure from the self-hosted mercurial 
> repo at repo.gem5.org and reviewboard to git and gerrit hosted on 
> Google's new googlesource website. You can find a live version (not 
> ready for primetime) of this at https://gem5.googlesource.com/.
>
> We are planning on flipping the switch on *March 1st*, unless there is 
> an objection from the community. Note: I'm announcing this on gem5-dev 
> before announcing on gem5-users and gem5-announce in case there's any 
> details we've missed.
>
> I've posted a patch on reviewboard that contains a new CONTRIBUTING 
> document that details the new contribution process. Please review that 
> document so it can be pushed before we transition. (
> http://reviews.gem5.org/r/3814/)
>
> The major changes are detailed below:
> 1. REPOSITORIES
>* The canonical version of gem5 will now live at 
> https://gem5.googlesource.com/, not repo.gem5.org

[gem5-dev] Change in public/gem5[master]: syscall-emul: Ignore unimplemented system calls

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2270



Change subject: syscall-emul: Ignore unimplemented system calls
..

syscall-emul: Ignore unimplemented system calls

This changeset sets the implementation policy for a subset of
system calls to the ignoreFunc implementation (for x86 only).
The ignored system calls likely will never be implemented and
this allows a warning to be issued instead of the simulation
exiting with a fatal.

Change-Id: I8d9741ad683151e88cc71156d3602e2d0ccb0acf
---
M src/arch/x86/linux/process.cc
1 file changed, 17 insertions(+), 17 deletions(-)



diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index be57229..4591cf9 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -244,11 +244,11 @@
 /*  21 */ SyscallDesc("access", ignoreFunc),
 /*  22 */ SyscallDesc("pipe", pipeFunc),
 /*  23 */ SyscallDesc("select", unimplementedFunc),
-/*  24 */ SyscallDesc("sched_yield", unimplementedFunc),
+/*  24 */ SyscallDesc("sched_yield", ignoreFunc),
 /*  25 */ SyscallDesc("mremap", mremapFunc),
 /*  26 */ SyscallDesc("msync", unimplementedFunc),
 /*  27 */ SyscallDesc("mincore", unimplementedFunc),
-/*  28 */ SyscallDesc("madvise", unimplementedFunc),
+/*  28 */ SyscallDesc("madvise", ignoreFunc),
 /*  29 */ SyscallDesc("shmget", unimplementedFunc),
 /*  30 */ SyscallDesc("shmat", unimplementedFunc),
 /*  31 */ SyscallDesc("shmctl", unimplementedFunc),
@@ -337,7 +337,7 @@
 /* 114 */ SyscallDesc("setregid", unimplementedFunc),
 /* 115 */ SyscallDesc("getgroups", unimplementedFunc),
 /* 116 */ SyscallDesc("setgroups", unimplementedFunc),
-/* 117 */ SyscallDesc("setresuid", unimplementedFunc),
+/* 117 */ SyscallDesc("setresuid", ignoreFunc),
 /* 118 */ SyscallDesc("getresuid", unimplementedFunc),
 /* 119 */ SyscallDesc("setresgid", unimplementedFunc),
 /* 120 */ SyscallDesc("getresgid", unimplementedFunc),
@@ -361,7 +361,7 @@
 /* 138 */ SyscallDesc("fstatfs", unimplementedFunc),
 /* 139 */ SyscallDesc("sysfs", unimplementedFunc),
 /* 140 */ SyscallDesc("getpriority", unimplementedFunc),
-/* 141 */ SyscallDesc("setpriority", unimplementedFunc),
+/* 141 */ SyscallDesc("setpriority", ignoreFunc),
 /* 142 */ SyscallDesc("sched_setparam", unimplementedFunc),
 /* 143 */ SyscallDesc("sched_getparam", unimplementedFunc),
 /* 144 */ SyscallDesc("sched_setscheduler", unimplementedFunc),
@@ -424,7 +424,7 @@
 /* 201 */ SyscallDesc("time", timeFunc),
 /* 202 */ SyscallDesc("futex", futexFunc),
 /* 203 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
-/* 204 */ SyscallDesc("sched_getaffinity", unimplementedFunc),
+/* 204 */ SyscallDesc("sched_getaffinity", ignoreFunc),
 /* 205 */ SyscallDesc("set_thread_area", unimplementedFunc),
 /* 206 */ SyscallDesc("io_setup", unimplementedFunc),
 /* 207 */ SyscallDesc("io_destroy", unimplementedFunc),
@@ -459,7 +459,7 @@
 /* 236 */ SyscallDesc("vserver", unimplementedFunc),
 /* 237 */ SyscallDesc("mbind", unimplementedFunc),
 /* 238 */ SyscallDesc("set_mempolicy", unimplementedFunc),
-/* 239 */ SyscallDesc("get_mempolicy", unimplementedFunc),
+/* 239 */ SyscallDesc("get_mempolicy", ignoreFunc),
 /* 240 */ SyscallDesc("mq_open", unimplementedFunc),
 /* 241 */ SyscallDesc("mq_unlink", unimplementedFunc),
 /* 242 */ SyscallDesc("mq_timedsend", unimplementedFunc),
@@ -493,7 +493,7 @@
 /* 270 */ SyscallDesc("pselect6", unimplementedFunc),
 /* 271 */ SyscallDesc("ppoll", unimplementedFunc),
 /* 272 */ SyscallDesc("unshare", unimplementedFunc),
-/* 273 */ SyscallDesc("set_robust_list", unimplementedFunc),
+/* 273 */ SyscallDesc("set_robust_list", ignoreFunc),
 /* 274 */ SyscallDesc("get_robust_list", unimplementedFunc),
 /* 275 */ SyscallDesc("splice", unimplementedFunc),
 /* 276 */ SyscallDesc("tee", unimplementedFunc),
@@ -646,9 +646,9 @@
 /*  94 */ SyscallDesc("fchmod", unimplementedFunc),
 /*  95 */ SyscallDesc("fchown", unimplementedFunc),
 /*  96 */ SyscallDesc("getpriority", unimplementedFunc),
-/*  97 */ SyscallDesc("setpriority", unimplementedFunc),
+/*  97 */ SyscallDesc("setpriority", ignoreFunc),
 /*  98 */ SyscallDesc("profil", unimplementedFunc),
-/*  99 */ SyscallDesc("statfs", unimplementedFunc),
+/*  99 */ SyscallDesc("statfs", ignoreFunc),
 /* 100 */ SyscallDesc("fstatfs", unimplementedFunc),
 /* 101 */ SyscallDesc("ioperm", unimplementedFunc),
 /* 102 */ SyscallDesc("socketcall", unimplementedFunc),
@@ -707,13 +707,13 @@
 /* 155 */ SyscallDesc("sched_getparam", unimplementedFunc),
 /* 156 */ SyscallDesc("sched_setscheduler", unimplementedFunc),
 /* 157 */ SyscallDesc("sched_getscheduler", unimplementedFunc),
-/* 158 */ 

[gem5-dev] Change in public/gem5[master]: syscall-emul: Adds SE mode signal feature

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2267



Change subject: syscall-emul: Adds SE mode signal feature
..

syscall-emul: Adds SE mode signal feature

This changeset adds a simple class definition and a member
in the System object to track signals sent between processes.
The implementation cannot support all signals that might be
sent between processes, but it can support some of the simple
use cases like SIGCHLD.

Change-Id: Id5f95aa60e7f49da1c5b5596fbfa26e729453ac7
---
M src/sim/SConscript
A src/sim/se_signal.cc
A src/sim/se_signal.hh
M src/sim/system.hh
4 files changed, 105 insertions(+), 0 deletions(-)



diff --git a/src/sim/SConscript b/src/sim/SConscript
index c36b33b..a3d5464 100644
--- a/src/sim/SConscript
+++ b/src/sim/SConscript
@@ -66,6 +66,7 @@
 Source('stat_register.cc', skip_no_python=True)
 Source('clock_domain.cc')
 Source('voltage_domain.cc')
+Source('se_signal.cc')
 Source('linear_solver.cc')
 Source('system.cc')
 Source('dvfs_handler.cc')
diff --git a/src/sim/se_signal.cc b/src/sim/se_signal.cc
new file mode 100644
index 000..de62208
--- /dev/null
+++ b/src/sim/se_signal.cc
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014-2016 Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * For use for simulation and test purposes only
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are  
met:

+ *
+ * 1. Redistributions of source code must retain the above copyright  
notice,

+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright  
notice,
+ * this list of conditions and the following disclaimer in the  
documentation

+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from  
this

+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  
THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  
PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS  
BE

+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF  
THE

+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Brandon Potter
+ */
+
+#include "sim/se_signal.hh"
+
+BasicSignal::BasicSignal(Process *send, Process *receive, int signal_val)
+: sender(send),
+  receiver(receive),
+  signalValue(signal_val)
+{
+}
+
+
+BasicSignal::~BasicSignal()
+{
+}
diff --git a/src/sim/se_signal.hh b/src/sim/se_signal.hh
new file mode 100644
index 000..f4cca95
--- /dev/null
+++ b/src/sim/se_signal.hh
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2014-2016 Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * For use for simulation and test purposes only
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are  
met:

+ *
+ * 1. Redistributions of source code must retain the above copyright  
notice,

+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright  
notice,
+ * this list of conditions and the following disclaimer in the  
documentation

+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from  
this

+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  
THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  
PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS  
BE

+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF 

[gem5-dev] Change in public/gem5[master]: syscall-emul: Add or extend dup, dup2, and pipe

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2266



Change subject: syscall-emul: Add or extend dup, dup2, and pipe
..

syscall-emul: Add or extend dup, dup2, and pipe

This changeset extends the pipe system call to work with
architectures other than Alpha (and enables the syscall for
x86). For the dup system call, it sets the clone-on-exec
flag by default. For the dup2 system call, the changeset
adds an implementation (and enables it for x86).

Change-Id: I00ddb416744ee7dd61a5cd02c4c3d97f30543878
---
M src/arch/x86/linux/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
3 files changed, 95 insertions(+), 23 deletions(-)



diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index f90022b..aad5151 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -242,7 +242,7 @@
 /*  19 */ SyscallDesc("readv", unimplementedFunc),
 /*  20 */ SyscallDesc("writev", writevFunc),
 /*  21 */ SyscallDesc("access", ignoreFunc),
-/*  22 */ SyscallDesc("pipe", unimplementedFunc),
+/*  22 */ SyscallDesc("pipe", pipeFunc),
 /*  23 */ SyscallDesc("select", unimplementedFunc),
 /*  24 */ SyscallDesc("sched_yield", unimplementedFunc),
 /*  25 */ SyscallDesc("mremap", mremapFunc),
@@ -253,7 +253,7 @@
 /*  30 */ SyscallDesc("shmat", unimplementedFunc),
 /*  31 */ SyscallDesc("shmctl", unimplementedFunc),
 /*  32 */ SyscallDesc("dup", dupFunc),
-/*  33 */ SyscallDesc("dup2", unimplementedFunc),
+/*  33 */ SyscallDesc("dup2", dup2Func),
 /*  34 */ SyscallDesc("pause", unimplementedFunc),
 /*  35 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
 /*  36 */ SyscallDesc("getitimer", unimplementedFunc),
@@ -591,7 +591,7 @@
 /*  39 */ SyscallDesc("mkdir", unimplementedFunc),
 /*  40 */ SyscallDesc("rmdir", unimplementedFunc),
 /*  41 */ SyscallDesc("dup", dupFunc),
-/*  42 */ SyscallDesc("pipe", unimplementedFunc),
+/*  42 */ SyscallDesc("pipe", pipeFunc),
 /*  43 */ SyscallDesc("times", timesFunc),
 /*  44 */ SyscallDesc("prof", unimplementedFunc),
 /*  45 */ SyscallDesc("brk", brkFunc),
@@ -612,7 +612,7 @@
 /*  60 */ SyscallDesc("umask", unimplementedFunc),
 /*  61 */ SyscallDesc("chroot", unimplementedFunc),
 /*  62 */ SyscallDesc("ustat", unimplementedFunc),
-/*  63 */ SyscallDesc("dup2", unimplementedFunc),
+/*  63 */ SyscallDesc("dup2", dup2Func),
 /*  64 */ SyscallDesc("getppid", unimplementedFunc),
 /*  65 */ SyscallDesc("getpgrp", unimplementedFunc),
 /*  66 */ SyscallDesc("setsid", unimplementedFunc),
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index 9680193..1441592 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -626,13 +626,11 @@
 return (result == -1) ? -errno : result;
 }

-
 /**
- * TODO: there's a bit more involved here since file descriptors created  
with
- * dup are supposed to share a file description. So, there is a problem  
with

- * maintaining fields like file offset or flags since an update to such a
- * field won't be reflected in the metadata for the fd entries that we
- * maintain to hold metadata for checkpoint restoration.
+ * FIXME: The file description is not shared among file descriptors created
+ * with dup. Really, it's difficult to maintain fields like file offset or
+ * flags since an update to such a field won't be reflected in the metadata
+ * for the fd entries that we maintain for checkpoint restoration.
  */
 SyscallReturn
 dupFunc(SyscallDesc *desc, int num, Process *p, ThreadContext *tc)
@@ -646,13 +644,44 @@
 int sim_fd = old_hbfdp->getSimFD();

 int result = dup(sim_fd);
-int local_errno = errno;
+if (result == -1)
+return -errno;

-std::shared_ptr new_fdep = old_hbfdp->clone();
-auto new_hbfdp = std::dynamic_pointer_cast(new_fdep);
+auto new_hbfdp =  
std::dynamic_pointer_cast(old_hbfdp->clone());

 new_hbfdp->setSimFD(result);
+new_hbfdp->setCOE(false);
+return p->fds->allocFD(new_hbfdp);
+}

-return (result == -1) ? -local_errno : p->fds->allocFD(new_fdep);
+SyscallReturn
+dup2Func(SyscallDesc *desc, int num, Process *p, ThreadContext *tc)
+{
+int index = 0;
+
+int old_tgt_fd = p->getSyscallArg(tc, index);
+auto old_hbp =  
std::dynamic_pointer_cast((*p->fds)[old_tgt_fd]);

+if (!old_hbp)
+return -EBADF;
+int old_sim_fd = old_hbp->getSimFD();
+
+/**
+ * We need a valid host file descriptor number to be able to pass into
+ * the second parameter for dup2 (newfd), but we don't know what the
+ * viable numbers are; we execute the open call to retrieve one.
+ */
+int res_fd = dup2(old_sim_fd, open("/dev/null", O_RDONLY));
+if (res_fd == -1)
+return -errno;
+
+int new_tgt_fd = p->getSyscallArg(tc, index);
+auto 

[gem5-dev] Change in public/gem5[master]: syscall-emul: Add functionality to open syscalls

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2265



Change subject: syscall-emul: Add functionality to open syscalls
..

syscall-emul: Add functionality to open syscalls

This changeset adds refactors the existing open system call,
adds the openat variant (enabled for x86 builds), and adds
additional "special file" test cases for /proc/meminfo and
/etc/passwd.

Change-Id: I6f429db65bbf2a28ffa3fd12df518c2d0de49663
---
M src/arch/x86/linux/process.cc
M src/kern/linux/linux.cc
M src/kern/linux/linux.hh
M src/kern/solaris/solaris.hh
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
6 files changed, 151 insertions(+), 75 deletions(-)



diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index 806d860..f90022b 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -477,7 +477,7 @@
 /* 254 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
 /* 255 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
 /* 256 */ SyscallDesc("migrate_pages", unimplementedFunc),
-/* 257 */ SyscallDesc("openat", unimplementedFunc),
+/* 257 */ SyscallDesc("openat", openatFunc),
 /* 258 */ SyscallDesc("mkdirat", unimplementedFunc),
 /* 259 */ SyscallDesc("mknodat", unimplementedFunc),
 /* 260 */ SyscallDesc("fchownat", unimplementedFunc),
@@ -844,7 +844,7 @@
 /* 292 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
 /* 293 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
 /* 294 */ SyscallDesc("migrate_pages", unimplementedFunc),
-/* 295 */ SyscallDesc("openat", unimplementedFunc),
+/* 295 */ SyscallDesc("openat", openatFunc),
 /* 296 */ SyscallDesc("mkdirat", unimplementedFunc),
 /* 297 */ SyscallDesc("mknodat", unimplementedFunc),
 /* 298 */ SyscallDesc("fchownat", unimplementedFunc),
diff --git a/src/kern/linux/linux.cc b/src/kern/linux/linux.cc
index 493be96..bd0b4d0 100644
--- a/src/kern/linux/linux.cc
+++ b/src/kern/linux/linux.cc
@@ -33,6 +33,7 @@
 #include 
 #include 

+#include "cpu/base.hh"
 #include "debug/SyscallVerbose.hh"
 #include "sim/process.hh"
 #include "sim/system.hh"
@@ -41,21 +42,35 @@
 Linux::openSpecialFile(std::string path, Process *process,
ThreadContext *tc)
 {
-DPRINTF(SyscallVerbose, "Opening special file: %s\n", path.c_str());
+DPRINTFR(SyscallVerbose,
+ "%d: %s: generic-open: opening special file: %s\n",
+ curTick(), tc->getCpuPtr()->name(), path.c_str());
+
+bool matched = false;
+std::string data;
+
 if (path.compare(0, 13, "/proc/meminfo") == 0) {
-std::string data = Linux::procMeminfo(process, tc);
+data = Linux::procMeminfo(process, tc);
+matched = true;
+} else if (path.compare(0, 11, "/etc/passwd") == 0) {
+data = Linux::etcPasswd(process, tc);
+matched = true;
+}
+
+if (matched) {
 FILE *f = tmpfile();
 int fd = fileno(f);
 size_t ret M5_VAR_USED = fwrite(data.c_str(), 1, data.size(), f);
 assert(ret == data.size());
 rewind(f);
 return fd;
+} else {
+warn("Attempting to open special file: %s. Ignoring. Simulation  
may "
+ "take un-expected code path or be non-deterministic until  
proper "

+ "handling is implemented.\n", path.c_str());
+errno = EACCES;
+return -1;
 }
-
-warn("Attempting to open special file: %s. Ignoring. Simulation may"
-" take un-expected code path or be non-deterministic until  
proper"

-"  handling is implemented.\n", path.c_str());
-return -1;
 }

 std::string
@@ -66,3 +81,9 @@
 process->system->freeMemSize() >> 10);
 }

+std::string
+Linux::etcPasswd(Process *process, ThreadContext *tc)
+{
+return csprintf("gem5-user:x:1000:1000:gem5-user,,,:%s:/bin/bash\n",
+process->getcwd());
+}
diff --git a/src/kern/linux/linux.hh b/src/kern/linux/linux.hh
index e6899a9..b24ee38 100644
--- a/src/kern/linux/linux.hh
+++ b/src/kern/linux/linux.hh
@@ -226,6 +226,7 @@
 static int openSpecialFile(std::string path, Process *process,
ThreadContext *tc);
 static std::string procMeminfo(Process *process, ThreadContext *tc);
+static std::string etcPasswd(Process *process, ThreadContext *tc);

 // For futex system call
 static const unsigned TGT_FUTEX_WAIT  = 0;
diff --git a/src/kern/solaris/solaris.hh b/src/kern/solaris/solaris.hh
index 9cd5af1..d875f44 100644
--- a/src/kern/solaris/solaris.hh
+++ b/src/kern/solaris/solaris.hh
@@ -114,6 +114,9 @@
 char machine[_SYS_NMLN];//!< Machine type.
 } utsname;

+// for *at syscalls
+static const int TGT_AT_FDCWD   = -100;
+
 };  // class Solaris

 #endif // __SOLARIS_HH__
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index 

[gem5-dev] Change in public/gem5[master]: style: Correct some style issues

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2264



Change subject: style: Correct some style issues
..

style: Correct some style issues

This changeset fixes line alignment issues, spacing, spelling,
etc. for files that are used during SE Mode.

Change-Id: Ie61b8d0eb4ebb5af554d72f1297808027833616e
---
M src/arch/x86/linux/process.cc
M src/arch/x86/process.cc
M src/base/loader/elf_object.hh
M src/base/loader/object_file.hh
M src/sim/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
7 files changed, 87 insertions(+), 91 deletions(-)



diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index c2d67eb..806d860 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -83,7 +83,7 @@
 GetGS = 0x1004
 };

-//First argument is the code, second is the address
+// First argument is the code, second is the address
 int index = 0;
 int code = process->getSyscallArg(tc, index);
 uint64_t addr = process->getSyscallArg(tc, index);
@@ -91,7 +91,7 @@
 SETranslatingPortProxy  = tc->getMemProxy();
 switch(code)
 {
-  //Each of these valid options should actually check addr.
+  // Each of these valid options should actually check addr.
   case SetFS:
 tc->setMiscRegNoEffect(MISCREG_FS_BASE, addr);
 tc->setMiscRegNoEffect(MISCREG_FS_EFF_BASE, addr);
diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc
index 1e6401b..d7a0571 100644
--- a/src/arch/x86/process.cc
+++ b/src/arch/x86/process.cc
@@ -73,9 +73,9 @@
 INTREG_RDI,
 INTREG_RSI,
 INTREG_RDX,
-//This argument register is r10 for syscalls and rcx for C.
+// This argument register is r10 for syscalls and rcx for C.
 INTREG_R10W,
-//INTREG_RCX,
+// INTREG_RCX,
 INTREG_R8W,
 INTREG_R9W
 };
@@ -183,7 +183,7 @@

 argsInit(PageBytes);

-   // Set up the vsyscall page for this process.
+// Set up the vsyscall page for this process.
 allocateMem(vsyscallPage.base, vsyscallPage.size);
 uint8_t vtimeBlob[] = {
 0x48,0xc7,0xc0,0xc9,0x00,0x00,0x00,// mov$0xc9,%rax
@@ -566,7 +566,7 @@
 dataAttr.expandDown = 0;
 dataAttr.system = 1;

-//Initialize the segment registers.
+// Initialize the segment registers.
 for (int seg = 0; seg < NUM_SEGMENTREGS; seg++) {
 tc->setMiscRegNoEffect(MISCREG_SEG_BASE(seg), 0);
 tc->setMiscRegNoEffect(MISCREG_SEG_EFF_BASE(seg), 0);
@@ -598,7 +598,7 @@
 efer.ffxsr = 1; // Turn on fast fxsave and fxrstor.
 tc->setMiscReg(MISCREG_EFER, efer);

-//Set up the registers that describe the operating mode.
+// Set up the registers that describe the operating mode.
 CR0 cr0 = 0;
 cr0.pg = 1; // Turn on paging.
 cr0.cd = 0; // Don't disable caching.
@@ -677,7 +677,7 @@
 dataAttr.expandDown = 0;
 dataAttr.system = 1;

-//Initialize the segment registers.
+// Initialize the segment registers.
 for (int seg = 0; seg < NUM_SEGMENTREGS; seg++) {
 tc->setMiscRegNoEffect(MISCREG_SEG_BASE(seg), 0);
 tc->setMiscRegNoEffect(MISCREG_SEG_EFF_BASE(seg), 0);
@@ -718,7 +718,7 @@
 efer.ffxsr = 1; // Turn on fast fxsave and fxrstor.
 tc->setMiscReg(MISCREG_EFER, efer);

-//Set up the registers that describe the operating mode.
+// Set up the registers that describe the operating mode.
 CR0 cr0 = 0;
 cr0.pg = 1; // Turn on paging.
 cr0.cd = 0; // Don't disable caching.
@@ -755,7 +755,7 @@
 else
 filename = argv[0];

-//We want 16 byte alignment
+// We want 16 byte alignment
 uint64_t align = 16;

 // Patch the ld_bias for dynamic executables.
@@ -841,13 +841,13 @@
 //X86_IA64Processor |
 0;

-//Bits which describe the system hardware capabilities
-//XXX Figure out what these should be
+// Bits which describe the system hardware capabilities
+// XXX Figure out what these should be
 auxv.push_back(auxv_t(M5_AT_HWCAP, features));
-//The system page size
+// The system page size
 auxv.push_back(auxv_t(M5_AT_PAGESZ, X86ISA::PageBytes));
-//Frequency at which times() increments
-//Defined to be 100 in the kernel source.
+// Frequency at which times() increments
+// Defined to be 100 in the kernel source.
 auxv.push_back(auxv_t(M5_AT_CLKTCK, 100));
 // This is the virtual address of the program header tables if they
 // appear in the executable image.
@@ -860,32 +860,32 @@
 // zero for static executables or contain the base address for
 // dynamic executables.
 

[gem5-dev] Change in public/gem5[master]: syscall-emul: Add the tgkill system call

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2268



Change subject: syscall-emul: Add the tgkill system call
..

syscall-emul: Add the tgkill system call

This changeset adds support to kill a thread group by calling
the tgkill system call. The functionality is needed in some
pthread applications.

Change-Id: I0413a3331be69b74dfab30de95384113ec4efb63
---
M src/arch/x86/linux/process.cc
M src/sim/syscall_emul.hh
2 files changed, 51 insertions(+), 2 deletions(-)



diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc
index aad5151..be57229 100644
--- a/src/arch/x86/linux/process.cc
+++ b/src/arch/x86/linux/process.cc
@@ -454,7 +454,7 @@
 /* 231 */ SyscallDesc("exit_group", exitGroupFunc),
 /* 232 */ SyscallDesc("epoll_wait", unimplementedFunc),
 /* 233 */ SyscallDesc("epoll_ctl", unimplementedFunc),
-/* 234 */ SyscallDesc("tgkill", unimplementedFunc),
+/* 234 */ SyscallDesc("tgkill", tgkillFunc),
 /* 235 */ SyscallDesc("utimes", unimplementedFunc),
 /* 236 */ SyscallDesc("vserver", unimplementedFunc),
 /* 237 */ SyscallDesc("mbind", unimplementedFunc),
@@ -819,7 +819,7 @@
 /* 267 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
 /* 268 */ SyscallDesc("statfs64", unimplementedFunc),
 /* 269 */ SyscallDesc("fstatfs64", unimplementedFunc),
-/* 270 */ SyscallDesc("tgkill", unimplementedFunc),
+/* 270 */ SyscallDesc("tgkill", tgkillFunc),
 /* 271 */ SyscallDesc("utimes", unimplementedFunc),
 /* 272 */ SyscallDesc("fadvise64_64", unimplementedFunc),
 /* 273 */ SyscallDesc("vserver", unimplementedFunc),
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index d75841c..2380e47 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -1973,5 +1973,54 @@
 return sec;
 }

+template 
+SyscallReturn
+tgkillFunc(SyscallDesc *desc, int num, Process *process, ThreadContext *tc)
+{
+int index = 0;
+int tgid = process->getSyscallArg(tc, index);
+int tid = process->getSyscallArg(tc, index);
+int sig = process->getSyscallArg(tc, index);
+
+/**
+ * This system call is intended to allow killing a specific thread
+ * within an arbitrary thread group if sanctioned with permission  
checks.
+ * It's usually true that threads share the termination signal as  
pointed

+ * out by the pthread_kill man page and this seems to be the intended
+ * usage. Due to this being an emulated environment, assume the  
following:

+ * Threads are allowed to call tgkill because the EUID for all threads
+ * should be the same. There is no signal handling mechanism for kernel
+ * registration of signal handlers since signals are poorly supported  
in

+ * emulation mode. Since signal handlers cannot be registered, all
+ * threads within in a thread group must share the termination signal.
+ * We never exhaust PIDs so there's no chance of finding the wrong one
+ * due to PID rollover.
+ */
+
+System *sys = tc->getSystemPtr();
+Process *tgt_proc = nullptr;
+for (int i = 0; i < sys->numContexts(); i++) {
+Process *temp = sys->threadContexts[i]->getProcessPtr();
+if (temp->pid() == tid) {
+tgt_proc = temp;
+break;
+}
+}
+
+if (sig != 0 || sig != OS::TGT_SIGABRT)
+return -EINVAL;
+
+if (tgt_proc == nullptr)
+return -ESRCH;
+
+if (tgid != -1 && tgt_proc->tgid() != tgid)
+return -ESRCH;
+
+if (sig == OS::TGT_SIGABRT)
+exitGroupFunc(desc, 252, process, tc);
+
+return 0;
+}
+

 #endif // __SIM_SYSCALL_EMUL_HH__

--
To view, visit https://gem5-review.googlesource.com/2268
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0413a3331be69b74dfab30de95384113ec4efb63
Gerrit-Change-Number: 2268
Gerrit-PatchSet: 1
Gerrit-Owner: Brandon Potter 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in public/gem5[master]: style: change NULL to nullptr in syscall files

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2271



Change subject: style: change NULL to nullptr in syscall files
..

style: change NULL to nullptr in syscall files

Change-Id: I02719f3572f6665cace1eb5681f297dcde9e71ce
---
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
2 files changed, 3 insertions(+), 3 deletions(-)



diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index 722581e..b6d7a56 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -887,7 +887,7 @@
 return 0;
 }

-Process *matched_ph = NULL;
+Process *matched_ph = nullptr;
 System *sysh = tc->getSystemPtr();

 // Retrieves process pointer from active/suspended thread contexts.
@@ -901,7 +901,7 @@
 }
 }

-assert(matched_ph != NULL);
+assert(matched_ph);
 matched_ph->setpgid((pgid == 0) ? matched_ph->pid() : pgid);

 return 0;
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index a0fb7e4..a1c3b29 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -1484,7 +1484,7 @@
 return -EBADF;
 sim_fd = ffdp->getSimFD();

-pmap = (decltype(pmap))mmap(NULL, length, PROT_READ, MAP_PRIVATE,
+pmap = (decltype(pmap))mmap(nullptr, length, PROT_READ,  
MAP_PRIVATE,

 sim_fd, offset);

 if (pmap == (decltype(pmap))-1) {

--
To view, visit https://gem5-review.googlesource.com/2271
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I02719f3572f6665cace1eb5681f297dcde9e71ce
Gerrit-Change-Number: 2271
Gerrit-PatchSet: 1
Gerrit-Owner: Brandon Potter 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in public/gem5[master]: syscall-emul: Rewrite system call exit code

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2269



Change subject: syscall-emul: Rewrite system call exit code
..

syscall-emul: Rewrite system call exit code

The changeset does a major refactor on the exit, exit_group, and
futex system calls regarding exit functionality.

A FutexMap class and related structures are added into a new
file. This increases code clarity by encapsulating the futex
operations and the futex state into an object.

Several exit conditions were added to allow the simulator to end
processes under certain conditions. Also, the simulation only
exits now when all processes have finished executing.

Change-Id: I1ee244caa9b5586fe7375e5b9b50fd3959b9655e
---
M src/arch/riscv/registers.hh
A src/sim/futex_map.hh
M src/sim/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
M src/sim/system.hh
6 files changed, 284 insertions(+), 113 deletions(-)



diff --git a/src/arch/riscv/registers.hh b/src/arch/riscv/registers.hh
index d897703..0793398 100644
--- a/src/arch/riscv/registers.hh
+++ b/src/arch/riscv/registers.hh
@@ -50,9 +50,9 @@
 #include 
 #include 

+#include "arch/isa_traits.hh"
 #include "arch/riscv/generated/max_inst_regs.hh"
 #include "base/types.hh"
-#include "sim/system.hh"

 namespace RiscvISA {

diff --git a/src/sim/futex_map.hh b/src/sim/futex_map.hh
new file mode 100644
index 000..086c0c9
--- /dev/null
+++ b/src/sim/futex_map.hh
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2014-2016 Advanced Micro Devices, Inc.
+ * All rights reserved.
+ *
+ * For use for simulation and test purposes only
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are  
met:

+ *
+ * 1. Redistributions of source code must retain the above copyright  
notice,

+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright  
notice,
+ * this list of conditions and the following disclaimer in the  
documentation

+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from  
this

+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  
THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  
PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS  
BE

+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF  
THE

+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Brandon Potter
+ *  Steve Reinhardt
+ *  Alexandru Dutu
+ */
+
+#ifndef __FUTEX_MAP_HH__
+#define __FUTEX_MAP_HH__
+
+#include 
+
+#include 
+
+/**
+ * FutexKey class defines an unique identifier for a particular futex in  
the

+ * system. The tgid and an address are the unique values needed as the key.
+ */
+class FutexKey {
+  public:
+uint64_t addr;
+uint64_t tgid;
+
+FutexKey(uint64_t addr_in, uint64_t tgid_in)
+: addr(addr_in), tgid(tgid_in)
+{
+}
+
+bool
+operator==(const FutexKey ) const
+{
+return addr == in.addr && tgid == in.tgid;
+}
+};
+
+namespace std {
+/**
+ * The unordered_map structure needs the parenthesis operator defined  
for

+ * std::hash if a user defined key is used. Our key is is user defined
+ * so we need to provide the hash functor.
+ */
+template <>
+struct hash
+{
+size_t operator()(const FutexKey& in) const
+{
+size_t hash = 65521;
+for (int i = 0; i < sizeof(uint64_t) / sizeof(size_t); i++) {
+hash ^= (size_t)(in.addr >> sizeof(size_t) * i) ^
+(size_t)(in.tgid >> sizeof(size_t) * i);
+}
+return hash;
+}
+};
+}
+
+typedef std::list ThreadContextList;
+
+/**
+ * FutexMap class holds a map of all futexes used in the system
+ */
+class FutexMap : public std::unordered_map
+{
+  public:
+/** Inserts a futex into the map with one waiting TC */
+void
+suspend(Addr addr, uint64_t tgid, ThreadContext *tc)
+{
+FutexKey key(addr, tgid);
+auto it = find(key);
+
+if (it == end()) {
+ThreadContextList tcList {tc};
+ 

[gem5-dev] Change in public/gem5[master]: syscall-emul: Remove unused class and member

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2262



Change subject: syscall-emul: Remove unused class and member
..

syscall-emul: Remove unused class and member

The WaitRec structure in the Process class is unnecessary. There
is a member declaration inside of the Process class, waitList,
that uses the WaitRec definition. However, waitList is unused so
they are both dead bits of code. This changeset removes both the
WaitRec struct and waitList member from Process.

Change-Id: Ia6ee7488b9f47fd0f0ae29c818fba6ea0710699c
---
M src/sim/process.hh
1 file changed, 0 insertions(+), 12 deletions(-)



diff --git a/src/sim/process.hh b/src/sim/process.hh
index 9dc29dc..52a06be 100644
--- a/src/sim/process.hh
+++ b/src/sim/process.hh
@@ -62,15 +62,6 @@
 class Process : public SimObject
 {
   public:
-struct WaitRec
-{
-Addr waitChan;
-ThreadContext *waitingContext;
-
-WaitRec(Addr chan, ThreadContext *ctx)
-: waitChan(chan), waitingContext(ctx)
-{ }
-};

 struct MemState
 {
@@ -205,9 +196,6 @@

 void clone(ThreadContext *old_tc, ThreadContext *new_tc, Process  
*new_p,

TheISA::IntReg flags);
-
-// list of all blocked contexts
-std::list waitList;

 // thread contexts associated with this process
 std::vector contextIds;

--
To view, visit https://gem5-review.googlesource.com/2262
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia6ee7488b9f47fd0f0ae29c818fba6ea0710699c
Gerrit-Change-Number: 2262
Gerrit-PatchSet: 1
Gerrit-Owner: Brandon Potter 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in public/gem5[master]: syscall-emul: Move memState into its own file

2017-03-01 Thread Brandon Potter (Gerrit)
Brandon Potter has uploaded this change for review. (  
https://gem5-review.googlesource.com/2263



Change subject: syscall-emul: Move memState into its own file
..

syscall-emul: Move memState into its own file

The Process class is full of implementation details and
structures related to SE Mode. This changeset factors out an
internal class from Process and moves it into a separate file.
The purpose behind doing this is to clean up the code and make
it a bit more modular.

Change-Id: Ic6941a1657751e8d51d5b6b1dcc04f1195884280
---
M src/arch/alpha/process.cc
M src/arch/arm/process.cc
M src/arch/mips/process.cc
M src/arch/power/process.cc
M src/arch/riscv/process.cc
M src/arch/sparc/process.cc
M src/arch/sparc/process.hh
M src/arch/x86/process.cc
M src/gpu-compute/shader.cc
A src/sim/mem_state.hh
M src/sim/process.cc
M src/sim/process.hh
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
14 files changed, 332 insertions(+), 247 deletions(-)



diff --git a/src/arch/alpha/process.cc b/src/arch/alpha/process.cc
index 64d0b54..9be1d6c 100644
--- a/src/arch/alpha/process.cc
+++ b/src/arch/alpha/process.cc
@@ -50,21 +50,24 @@
 AlphaProcess::AlphaProcess(ProcessParams *params, ObjectFile *objFile)
 : Process(params, objFile)
 {
-memState->brkPoint = objFile->dataBase() + objFile->dataSize() +
- objFile->bssSize();
-memState->brkPoint = roundUp(memState->brkPoint, PageBytes);
+Addr brk_point = objFile->dataBase() + objFile->dataSize() +
+ objFile->bssSize();
+brk_point = roundUp(brk_point, PageBytes);

 // Set up stack.  On Alpha, stack goes below text section.  This
 // code should get moved to some architecture-specific spot.
-memState->stackBase = objFile->textBase() - (409600+4096);
+Addr stack_base = objFile->textBase() - (409600+4096);

-// Set up region for mmaps.  Tru64 seems to start just above 0 and
-// grow up from there.
-memState->mmapEnd = 0x1;
+// Set up region for mmaps.
+Addr mmap_end = 0x1;
+
+Addr max_stack_size = 8 * 1024 * 1024;

 // Set pointer for next thread stack.  Reserve 8M for main stack.
-memState->nextThreadStackBase = memState->stackBase - (8 * 1024 *  
1024);

+Addr next_thread_stack_base = stack_base - max_stack_size;

+memState = make_shared(brk_point, stack_base, max_stack_size,
+ next_thread_stack_base, mmap_end);
 }

 void
@@ -131,15 +134,16 @@
 space_needed = 32*1024;

 // set bottom of stack
-memState->stackMin = memState->stackBase - space_needed;
+memState->setStackMin(memState->getStackBase() - space_needed);
 // align it
-memState->stackMin = roundDown(memState->stackMin, pageSize);
-memState->stackSize = memState->stackBase - memState->stackMin;
+memState->setStackMin(roundDown(memState->getStackMin(), pageSize));
+memState->setStackSize(memState->getStackBase() -  
memState->getStackMin());

 // map memory
-allocateMem(memState->stackMin, roundUp(memState->stackSize,  
pageSize));

+allocateMem(memState->getStackMin(), roundUp(memState->getStackSize(),
+pageSize));

 // map out initial stack contents
-Addr argv_array_base = memState->stackMin + intSize; // room for argc
+Addr argv_array_base = memState->getStackMin() + intSize; // room for  
argc

 Addr envp_array_base = argv_array_base + argv_array_size;
 Addr auxv_array_base = envp_array_base + envp_array_size;
 Addr arg_data_base = auxv_array_base + auxv_array_size;
@@ -154,7 +158,7 @@
 else
 panic("Unknown int size");

-initVirtMem.writeBlob(memState->stackMin, (uint8_t*), intSize);
+initVirtMem.writeBlob(memState->getStackMin(), (uint8_t*),  
intSize);


 copyStringArray(argv, argv_array_base, arg_data_base, initVirtMem);
 copyStringArray(envp, envp_array_base, env_data_base, initVirtMem);
@@ -171,7 +175,7 @@

 setSyscallArg(tc, 0, argc);
 setSyscallArg(tc, 1, argv_array_base);
-tc->setIntReg(StackPointerReg, memState->stackMin);
+tc->setIntReg(StackPointerReg, memState->getStackMin());

 tc->pcState(getStartPC());
 }
diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc
index fd0243c..eb8abfb 100644
--- a/src/arch/arm/process.cc
+++ b/src/arch/arm/process.cc
@@ -70,36 +70,30 @@
ObjectFile::Arch _arch)
 : ArmProcess(params, objFile, _arch)
 {
-memState->stackBase = 0xbf00L;
+Addr brk_point = roundUp(objFile->dataBase() + objFile->dataSize() +
+ objFile->bssSize(), PageBytes);
+Addr stack_base = 0xbf00L;
+Addr max_stack_size = 8 * 1024 * 1024;
+Addr next_thread_stack_base = stack_base - max_stack_size;
+Addr mmap_end = 0x4000L;

-// Set pointer for next thread stack.  Reserve 8M for main stack.
-memState->nextThreadStackBase = 

[gem5-dev] Change in public/gem5[master]: arm, kvm: fix saving/restoring conditional flags in ARM KVM64

2017-03-01 Thread Rahul Thakur (Gerrit)
Rahul Thakur has uploaded this change for review. (  
https://gem5-review.googlesource.com/2260



Change subject: arm, kvm: fix saving/restoring conditional flags in ARM  
KVM64

..

arm, kvm: fix saving/restoring conditional flags in ARM KVM64

The gem5 stores flags separately from other fields CPSR, so we need to
split them out and recombine on trips to/from KVM.

Change-Id: I28ed00eb6f0e2a1436adfbc51b6ccf056958afeb
---
M src/arch/arm/kvm/armv8_cpu.cc
1 file changed, 29 insertions(+), 3 deletions(-)



diff --git a/src/arch/arm/kvm/armv8_cpu.cc b/src/arch/arm/kvm/armv8_cpu.cc
index e8a77b0..5145fba 100644
--- a/src/arch/arm/kvm/armv8_cpu.cc
+++ b/src/arch/arm/kvm/armv8_cpu.cc
@@ -102,7 +102,6 @@
 };

 const std::vector ArmV8KvmCPU::miscRegMap = {
-MiscRegInfo(INT_REG(regs.pstate), MISCREG_CPSR, "PSTATE"),
 MiscRegInfo(INT_REG(elr_el1), MISCREG_ELR_EL1, "ELR(EL1)"),
 MiscRegInfo(INT_REG(spsr[KVM_SPSR_EL1]),  
MISCREG_SPSR_EL1, "SPSR(EL1)"),
 MiscRegInfo(INT_REG(spsr[KVM_SPSR_ABT]),  
MISCREG_SPSR_ABT, "SPSR(ABT)"),

@@ -135,6 +134,8 @@

 for (const auto  : intRegMap)
 inform("  %s: %s\n", ri.name, getAndFormatOneReg(ri.kvm));
+
+inform("  %s: %s\n", "PSTATE",  
getAndFormatOneReg(INT_REG(regs.pstate)));


 for (const auto  : miscRegMap)
 inform("  %s: %s\n", ri.name, getAndFormatOneReg(ri.kvm));
@@ -188,6 +189,20 @@
 ArmV8KvmCPU::updateKvmState()
 {
 DPRINTF(KvmContext, "In updateKvmState():\n");
+
+// update pstate register state
+CPSR cpsr(tc->readMiscReg(MISCREG_CPSR));
+cpsr.nz = tc->readCCReg(CCREG_NZ);
+cpsr.c = tc->readCCReg(CCREG_C);
+cpsr.v = tc->readCCReg(CCREG_V);
+if (cpsr.width) {
+cpsr.ge = tc->readCCReg(CCREG_GE);
+} else {
+cpsr.ge = 0;
+}
+DPRINTF(KvmContext, "  %s := 0x%x\n", "PSTATE", cpsr);
+setOneReg(INT_REG(regs.pstate), cpsr);
+
 for (const auto  : miscRegMap) {
 const uint64_t value(tc->readMiscReg(ri.idx));
 DPRINTF(KvmContext, "  %s := 0x%x\n", ri.name, value);
@@ -231,7 +246,19 @@
 {
 DPRINTF(KvmContext, "In updateThreadContext():\n");

-// Update core misc regs first as they (particularly PSTATE/CPSR)
+// Update pstate thread context
+const auto cpsr_value(getOneRegU64(INT_REG(regs.pstate)));
+DPRINTF(KvmContext, "  %s := 0x%x\n", "PSTATE", cpsr_value);
+tc->setMiscRegNoEffect(MISCREG_CPSR, cpsr_value);
+const CPSR cpsr(tc->readMiscRegNoEffect(MISCREG_CPSR));
+tc->setCCReg(CCREG_NZ, cpsr.nz);
+tc->setCCReg(CCREG_C, cpsr.c);
+tc->setCCReg(CCREG_V, cpsr.v);
+if (cpsr.width) {
+tc->setCCReg(CCREG_GE, cpsr.ge);
+}
+
+// Update core misc regs first as they
 // affect how other registers are mapped.
 for (const auto  : miscRegMap) {
 const auto value(getOneRegU64(ri.kvm));
@@ -266,7 +293,6 @@
 tc->setMiscRegNoEffect(ri.idx, value);
 }

-const CPSR cpsr(tc->readMiscRegNoEffect(MISCREG_CPSR));
 PCState pc(getOneRegU64(INT_REG(regs.pc)));
 pc.aarch64(inAArch64(tc));
 pc.thumb(cpsr.t);

--
To view, visit https://gem5-review.googlesource.com/2260
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I28ed00eb6f0e2a1436adfbc51b6ccf056958afeb
Gerrit-Change-Number: 2260
Gerrit-PatchSet: 1
Gerrit-Owner: Rahul Thakur 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in public/gem5[master]: arm, kvm: enable running 32-bit Guest under ARM KVM64

2017-03-01 Thread Rahul Thakur (Gerrit)
Rahul Thakur has uploaded this change for review. (  
https://gem5-review.googlesource.com/2261



Change subject: arm, kvm: enable running 32-bit Guest under ARM KVM64
..

arm, kvm: enable running 32-bit Guest under ARM KVM64

1) Pass KVM_ARM_VCPU_EL1_32BIT to kvmArmVCpuInit
   when running 32-bit OS

2) Correctly map 64-bit registers to banked 32-bit ones

Change-Id: I1dec6427d6f5c3bba599ccdd804f1dfe80d3e670
---
M src/arch/arm/kvm/armv8_cpu.cc
M src/arch/arm/kvm/base_cpu.cc
2 files changed, 10 insertions(+), 1 deletion(-)



diff --git a/src/arch/arm/kvm/armv8_cpu.cc b/src/arch/arm/kvm/armv8_cpu.cc
index 5145fba..af99cbe 100644
--- a/src/arch/arm/kvm/armv8_cpu.cc
+++ b/src/arch/arm/kvm/armv8_cpu.cc
@@ -269,7 +269,13 @@
 for (int i = 0; i < NUM_XREGS; ++i) {
 const auto value(getOneRegU64(kvmXReg(i)));
 DPRINTF(KvmContext, "  X%i := 0x%x\n", i, value);
-tc->setIntReg(INTREG_X0 + i, value);
+// KVM64 returns registers in 64-bit layout. If we are in aarch32
+// mode, we need to map these to banked ARM32 registers.
+if (inAArch64(tc)) {
+tc->setIntReg(INTREG_X0 + i, value);
+} else {
+tc->setIntRegFlat(IntReg64Map[INTREG_X0 + i], value);
+}
 }

 for (const auto  : intRegMap) {
diff --git a/src/arch/arm/kvm/base_cpu.cc b/src/arch/arm/kvm/base_cpu.cc
index e511fd6..e25112c 100644
--- a/src/arch/arm/kvm/base_cpu.cc
+++ b/src/arch/arm/kvm/base_cpu.cc
@@ -79,6 +79,9 @@
 memset(_config, 0, sizeof(target_config));

 vm.kvmArmPreferredTarget(target_config);
+if (!((ArmSystem *)system)->highestELIs64()) {
+target_config.features[0] |= (1 << KVM_ARM_VCPU_EL1_32BIT);
+}
 kvmArmVCpuInit(target_config);
 }


--
To view, visit https://gem5-review.googlesource.com/2261
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1dec6427d6f5c3bba599ccdd804f1dfe80d3e670
Gerrit-Change-Number: 2261
Gerrit-PatchSet: 1
Gerrit-Owner: Rahul Thakur 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in public/gem5[master]: ext: Include SystemC 2.3.1 into gem5

2017-03-01 Thread Matthias Jung (Gerrit)
Matthias Jung has uploaded this change for review. (  
https://gem5-review.googlesource.com/2240



Change subject: ext: Include SystemC 2.3.1 into gem5
..

ext: Include SystemC 2.3.1 into gem5

In the past it happened several times that some changes in gem5 broke the
SystemC coupling. Recently Accelera has changed the licence for SystemC from
their own licence to Apache2.0, which is compatible with gem5. However,  
SystemC
usually relies on the Boost library, but I was able to exchange the boost  
calls

by c++11 alternatives. The recent SystemC version is placed into /ext and is
integrated into gem5's build system. The goal is to integrate some SystemC
tests for the CI in some following patches.

Change-Id: I4b66ec806b5e3cffc1d7c85d3735ff4fa5b31fd0
---
M SConstruct
A ext/systemc/AUTHORS
A ext/systemc/ChangeLog
A ext/systemc/INSTALL
A ext/systemc/LICENSE
A ext/systemc/NEWS
A ext/systemc/NOTICE
A ext/systemc/README.md
A ext/systemc/README.sysc
A ext/systemc/RELEASENOTES
A ext/systemc/SConscript
A ext/systemc/src/README_TLM.txt
A ext/systemc/src/sysc/communication/sc_buffer.h
A ext/systemc/src/sysc/communication/sc_clock.cpp
A ext/systemc/src/sysc/communication/sc_clock.h
A ext/systemc/src/sysc/communication/sc_clock_ports.h
A ext/systemc/src/sysc/communication/sc_communication_ids.h
A ext/systemc/src/sysc/communication/sc_event_finder.cpp
A ext/systemc/src/sysc/communication/sc_event_finder.h
A ext/systemc/src/sysc/communication/sc_event_queue.cpp
A ext/systemc/src/sysc/communication/sc_event_queue.h
A ext/systemc/src/sysc/communication/sc_export.cpp
A ext/systemc/src/sysc/communication/sc_export.h
A ext/systemc/src/sysc/communication/sc_fifo.h
A ext/systemc/src/sysc/communication/sc_fifo_ifs.h
A ext/systemc/src/sysc/communication/sc_fifo_ports.h
A ext/systemc/src/sysc/communication/sc_host_mutex.h
A ext/systemc/src/sysc/communication/sc_interface.cpp
A ext/systemc/src/sysc/communication/sc_interface.h
A ext/systemc/src/sysc/communication/sc_mutex.cpp
A ext/systemc/src/sysc/communication/sc_mutex.h
A ext/systemc/src/sysc/communication/sc_mutex_if.h
A ext/systemc/src/sysc/communication/sc_port.cpp
A ext/systemc/src/sysc/communication/sc_port.h
A ext/systemc/src/sysc/communication/sc_prim_channel.cpp
A ext/systemc/src/sysc/communication/sc_prim_channel.h
A ext/systemc/src/sysc/communication/sc_semaphore.cpp
A ext/systemc/src/sysc/communication/sc_semaphore.h
A ext/systemc/src/sysc/communication/sc_semaphore_if.h
A ext/systemc/src/sysc/communication/sc_signal.cpp
A ext/systemc/src/sysc/communication/sc_signal.h
A ext/systemc/src/sysc/communication/sc_signal_ifs.h
A ext/systemc/src/sysc/communication/sc_signal_ports.cpp
A ext/systemc/src/sysc/communication/sc_signal_ports.h
A ext/systemc/src/sysc/communication/sc_signal_resolved.cpp
A ext/systemc/src/sysc/communication/sc_signal_resolved.h
A ext/systemc/src/sysc/communication/sc_signal_resolved_ports.cpp
A ext/systemc/src/sysc/communication/sc_signal_resolved_ports.h
A ext/systemc/src/sysc/communication/sc_signal_rv.h
A ext/systemc/src/sysc/communication/sc_signal_rv_ports.h
A ext/systemc/src/sysc/communication/sc_writer_policy.h
A ext/systemc/src/sysc/datatypes/bit/sc_bit.cpp
A ext/systemc/src/sysc/datatypes/bit/sc_bit.h
A ext/systemc/src/sysc/datatypes/bit/sc_bit_ids.h
A ext/systemc/src/sysc/datatypes/bit/sc_bit_proxies.h
A ext/systemc/src/sysc/datatypes/bit/sc_bv.h
A ext/systemc/src/sysc/datatypes/bit/sc_bv_base.cpp
A ext/systemc/src/sysc/datatypes/bit/sc_bv_base.h
A ext/systemc/src/sysc/datatypes/bit/sc_logic.cpp
A ext/systemc/src/sysc/datatypes/bit/sc_logic.h
A ext/systemc/src/sysc/datatypes/bit/sc_lv.h
A ext/systemc/src/sysc/datatypes/bit/sc_lv_base.cpp
A ext/systemc/src/sysc/datatypes/bit/sc_lv_base.h
A ext/systemc/src/sysc/datatypes/bit/sc_proxy.h
A ext/systemc/src/sysc/datatypes/fx/fx.h
A ext/systemc/src/sysc/datatypes/fx/sc_context.h
A ext/systemc/src/sysc/datatypes/fx/sc_fix.h
A ext/systemc/src/sysc/datatypes/fx/sc_fixed.h
A ext/systemc/src/sysc/datatypes/fx/sc_fx_ids.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxcast_switch.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxcast_switch.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxdefs.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxdefs.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxnum.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxnum.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxnum_observer.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxnum_observer.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxtype_params.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxtype_params.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxval.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxval.h
A ext/systemc/src/sysc/datatypes/fx/sc_fxval_observer.cpp
A ext/systemc/src/sysc/datatypes/fx/sc_fxval_observer.h
A ext/systemc/src/sysc/datatypes/fx/sc_ufix.h
A ext/systemc/src/sysc/datatypes/fx/sc_ufixed.h
A ext/systemc/src/sysc/datatypes/fx/scfx_ieee.h
A 

Re: [gem5-dev] ISA Deprecation

2017-03-01 Thread Andreas Hansson
Hi all,

I am in favour of revisiting this on a regular basis. Our previous
discussion started with SPARC being the #1 candidate for removal (due to
level of functionality and lack of testing as well as maintainers), but
eventually we landed on ALPHA being a more likely candidate (due to
absence of an up-to-date tool chain and modern kernels etc).

What I would propose to make some progress is to update
http://gem5.org/Supported_Architectures with a simple table, for each ISA:

Maintainers (none, or a list of names)

Level of functionality/ISA support (low, med, high)
OS support (Linux, BSD, etc)
Test coverage (low, med, high)
Tool chain availability (yes, no)
Kernel availability (yes, no)

Others? Are these the right ones?

Then for each ISA it is fairly obvious which ones are candidates for
removal, based on our priorities.

Brandon, would you be happy to take a first stab at such a table?

Andreas


On 27/02/2017, 18:01, "gem5-dev on behalf of Potter, Brandon"
 wrote:

>Hi Jason,
>
>Thanks for the links; I was not aware that they existed.
>
>I am not going to try to press the issue if others want to keep the ISAs.
>I was not sure what the consensus was on keeping them, but it seems that
>some folks want them to stick around.
>
>Regards,
>Brandon
>
>-Original Message-
>From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Jason
>Lowe-Power
>Sent: Monday, February 27, 2017 10:24 AM
>To: gem5 Developer List 
>Subject: Re: [gem5-dev] ISA Deprecation
>
>Hi Brandon,
>
>See this discussion for some of the history here:
>http://comments.gmane.org/gmane.comp.emulators.m5.devel/30510
>
>Let me try to summarize for everyone.
>
>There are a number of reasons to deprecate/phase out most of the
>supported ISAs. Briefly:
> - Less work for contributors especially when updating SE mode
> - Less testing time
> - Some ISAs have no maintainer
> - Some ISAs have (basically) no tests, or the tests are proprietary
> - Causes confusion for users (e.g., they run experiments with an
>incomplete ISA, or worse)
>
>However, some people *do* use the code for ISAs other than x86, ARM,
>RISC-V, and HSAIL. For instance:
> - From Jakub "[gem5 is] the only existing and basically working open
>source sun4v simulator.
> - Boris uses gem5's support for MIPS and POWER to do retargetable
>compiler research, and "dropping them would be pretty much equivalent to
>discontinuing GEM5 altogether"
>
>I think Steve makes one of the best arguments both for and against this
>in this message:
>http://www.mail-archive.com/gem5-dev@gem5.org/msg19429.html.
>
>-- My opinions below:
>
>From our discussion at HPCA, I think it comes down to "what does the
>community want gem5 to be?" Right now, gem5 has a wide variety of
>different use cases. I think we need to decide as a community what use
>cases we want to support and focus our limited developer time on those
>use cases. For instance, do we think it is worth it to support MIPS
>emulation?
>
>Maybe someone can come up with a list of "gem5 use cases" for us to look
>at and discuss. I don't have time in the next week or so, but after that
>I'll put it on my to do list.
>
>At a higher level, I strongly believe we need to take a step back and
>make sure that gem5 is serving its users as best as it can. There's a lot
>of unmaintained code in gem5 that is hurting and not helping. For
>instance, it would be great if Brandon could focus his time purely on
>improving x86 SE mode, which many people use, and not fixing bugs with
>SPARC.
>
>Cheers,
>Jason
>
>On Thu, Feb 23, 2017 at 4:47 PM Potter, Brandon 
>wrote:
>
>Hello all,
>
>A colleague mentioned that ISA deprecation was discussed during the recent
>gem5 meeting. I am wondering what the community's feelings are toward the
>idea and which ISAs would be on the chopping block. Personally, I'd like
>to kill ALPHA, MIPS, POWER, and SPARC. This means that we'd retain X86,
>ARM, RISCV, and HSAIL-X86.
>
>I can help out with the removal if we decide that we want to kill some of
>them. We might wait until March 1st to start the process since we're
>supposed to transition to fully transition to Git on that day; we could
>create a tag for the ISA deprecation in case someone wants to revive one
>of them in the future (i.e. MIPS or POWER if someone wants to maintain
>them).
>
>Regards,
>Brandon
>
>
>___
>gem5-dev mailing list
>gem5-dev@gem5.org
>http://m5sim.org/mailman/listinfo/gem5-dev
>___
>gem5-dev mailing list
>gem5-dev@gem5.org
>http://m5sim.org/mailman/listinfo/gem5-dev
>___
>gem5-dev mailing list
>gem5-dev@gem5.org
>http://m5sim.org/mailman/listinfo/gem5-dev

IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please 

Re: [gem5-dev] Migrating to git and gerrit

2017-03-01 Thread Andreas Sandberg

Hi Everyone,

The new Gerrit-based infrastructure is now live with the old Mercurial
repository as a read-only mirror. Mirroring is currently done using a
cron job that executes every 15 minutes, which means that there is some
amount of lag between the gerrit master version and the mirrors.

Those of you with commit access who plan to submit patches that have
been on reviewed using the old infrastructure will need to convert these
patches to git and push them to the main repository. It is highly
recommended that patches without reviews are discarded and re-posted
using the Gerrit flow to reduce the maintenance overhead of committing
patches.

Existing Mercurial patches (e.g., from patch queues) can be converted
using the hg-patch-to-git-patch [1] script from Mozilla. The patch
conversion script makes sure that the commit message and author
information can be understood by git. Before converting your patches,
make sure they apply cleanly on the current master branch. The best way
to check this is by qpop:ing your patch queue, pulling in new changes,
and then reapplying it. If you get warnings when applying patches, you
need to qrefresh them to make sure that the diffs are up to date.
Failing to do so will result in git refusing the patch.

Once you have a patch queue that applies cleanly, you can import it into
a new git branch using the following commands:

# Create a new clone of the master repository
git clone https://gem5.googlesource.com/public/gem5 gem5
cd gem5
# Install Gerrit's commit message hook. This is done automatically by
scons when you build gem5.
cp ext/git-commit-msg .git/hooks/commit-msg

# Create a new branch for the outgoing changes
git checkout -b fixes origin/master

hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patch1.patch | git am
# Run the commit message hook to generate a Change-id by amending the commit
git commit --amend
...
hg-patch-to-git-patch /path/to/old/gem5/.hg/patches/patchN.patch | git am
git commit --amend

To push the branch for review (remember to test it and verify that the
commit log looks OK first!), execute the following command:

git push origin HEAD:refs/for/master

It's sometimes useful to set a patch series topic if you're submitting
multiple patches. To do that when you submit patches for review, use
this command instead:

git push origin HEAD:refs/for/master%topic=my/topic

Some users can bypass reviews and push changes straight into the master
branch. This should only be done for code that has been reviewed using
the ReviewBoard-based flow. If you're one of the select few, you can use
the following push command to bypass review:

git push origin HEAD:refs/heads/master


Cheers,
Andreas

[1]
https://github.com/mozilla/moz-git-tools/raw/master/hg-patch-to-git-patch


On 16/02/2017 16:54, Jason Lowe-Power wrote:

Hi all,

We've been talking about this for a while, but now it's time! Special
thanks to Andreas Sandberg for all of his hard work for putting this
together.

We will be migrating our infrastructure from the self-hosted mercurial repo
at repo.gem5.org and reviewboard to git and gerrit hosted on Google's new
googlesource website. You can find a live version (not ready for primetime)
of this at https://gem5.googlesource.com/.

We are planning on flipping the switch on *March 1st*, unless there is an
objection from the community. Note: I'm announcing this on gem5-dev before
announcing on gem5-users and gem5-announce in case there's any details
we've missed.

I've posted a patch on reviewboard that contains a new CONTRIBUTING
document that details the new contribution process. Please review that
document so it can be pushed before we transition. (
http://reviews.gem5.org/r/3814/)

The major changes are detailed below:
1. REPOSITORIES
   * The canonical version of gem5 will now live at
https://gem5.googlesource.com/, not repo.gem5.org
   * The mercurial repository at repo.gem5.org will be a read-only mirror of
the googlesource repo.
   * We will keep the github mirror
2. CODE REVIEWS
   * All reviews will happen on https://gem5-review.googlesource.com/.
   * No new patches will be accepted on reviewboard after March 1. Any
patches still on reviewboard will be discussed/reviewed there, but
committers will have to manually commit them to the git repo (not unlike
our current situation).

Main differences for developers:
1. You will have to learn to use git, if you haven't already
2. Developers who submit patches will be able to *commit their own patches*
after review. No more waiting for me to push patches for you!
3. Continuous integration tests are coming soon, and must pass before a
patch is committed.
4. Gerrit has a different user-interface than reviewboard... sorry for the
change.
5. Many of the policies we have for commits will be *strictly enforced*
automatically by gerrit. E.g., it will no longer be possible to post a
patch that has a non-conforming commit message.
6. Instead of using postreview, patches will be posted by pushing to
special 

[gem5-dev] Change in public/gem5[master]: config: exit with fatal() if error

2017-03-01 Thread Pierre-Yves Péneau (Gerrit)
Pierre-Yves Péneau has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/2221 )


Change subject: config: exit with fatal() if error
..

config: exit with fatal() if error

If output redirection is activated, the error message is printed in
simout. This change ensure it will be printed in simerr.

Change-Id: Ie661ac6b6978bf2e4aaaccdf23134795d764d459
Signed-off-by: Pierre-Yves Péneau 
Reviewed-on: https://gem5-review.googlesource.com/2221
Reviewed-by: Andreas Sandberg 
Reviewed-by: Jason Lowe-Power 
Maintainer: Andreas Sandberg 
---
M configs/common/PlatformConfig.py
1 file changed, 5 insertions(+), 2 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved



diff --git a/configs/common/PlatformConfig.py  
b/configs/common/PlatformConfig.py

index 3541c07..e2589c0 100644
--- a/configs/common/PlatformConfig.py
+++ b/configs/common/PlatformConfig.py
@@ -1,6 +1,8 @@
 # Copyright (c) 2012, 2015 ARM Limited
 # All rights reserved.
 #
+# Copyright (c) 2017, Centre National de la Recherche Scientifique (CNRS)
+#
 # The license below extends only to copyright in the software and shall
 # not be construed as granting a license to any other intellectual
 # property including but not limited to intellectual property relating
@@ -34,10 +36,12 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 # Authors: Andreas Sandberg
+#  Pierre-Yves Peneau

 import m5.objects
 import inspect
 import sys
+from m5.util import fatal
 from textwrap import TextWrapper

 # Dictionary of mapping names of real CPU models to classes.
@@ -74,8 +78,7 @@
 try:
 return _platform_classes[real_name]
 except KeyError:
-print "%s is not a valid Platform model." % (name,)
-sys.exit(1)
+fatal("%s is not a valid Platform model." % (name,))

 def print_platform_list():
 """Print a list of available Platform classes including their  
aliases."""


--
To view, visit https://gem5-review.googlesource.com/2221
To unsubscribe, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie661ac6b6978bf2e4aaaccdf23134795d764d459
Gerrit-Change-Number: 2221
Gerrit-PatchSet: 2
Gerrit-Owner: Pierre-Yves Péneau 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Pierre-Yves Péneau 
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick

2017-03-01 Thread Cron Daemon
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!Statistics mismatch
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: 
CHANGED!*** diff[simout]: SKIPPED
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: 
CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: 
CHANGED!
Statistics mismatch* 
build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: 
CHANGED!
*** diff[smred.sav]: SKIPPED* 
build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: 
CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: 
CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/X86/tests/opt/quick/se/10.mcf/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing: CHANGED!*** 
diff[config.ini]: SKIPPED
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing-checker: 
CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/minor-timing: 
CHANGED!Statistics mismatch
* 
build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic-dummychecker: 
CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-two-level:
 CHANGED!
*** gem5: OK* build/ARM/tests/opt/quick/se/10.mcf/arm/linux/simple-timing: 
CHANGED!
* build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/50.vortex/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/70.twolf/arm/linux/simple-atomic: CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/10.mcf/arm/linux/simple-atomic: CHANGED!*** 
gem5: OK
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-simple:
 CHANGED!
* build/ARM/tests/opt/quick/se/70.twolf/arm/linux/simple-timing: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/minor-timing: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/o3-timing: CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-atomic: 
CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-timing: 
CHANGED!
* build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/simple-timing-ruby: 
CHANGED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/minor-timing: 
CHANGED!*** stat_diff: FAILURE: Statistics mismatch--- 
quick/se/02.insttest/riscv/linux-rv64a/simple-timing ---
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/simple-atomic: 
CHANGED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/simple-timing: 
CHANGED!
*