[gem5-dev] Cron /z/m5/regression/do-regression quick

2019-08-07 Thread Cron Daemon
* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: FAILED!
* 
build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer:
 FAILED!
* 
build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level:
 FAILED!
* 
build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory:
 FAILED!
* 
build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-atomic: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/o3-timing: 
FAILED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: 
CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple:
 CHANGED!
* build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual:
 CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual:
 CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: 
CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic:
 CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-openpage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-closepage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: 
CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: 
CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/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/40.m5threads-test-atomic/sparc/linux/simple-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: 
CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/10.mcf/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/simple-timing: CHANGED!
* 

[gem5-dev] Change in gem5/gem5[master]: arch-riscv: Create system file for RISCV FS

2019-08-07 Thread LIU YIFEI (Gerrit)

Hello Alec Roelke,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19828

to look at the new patch set (#2).

Change subject: arch-riscv: Create system file for RISCV FS
..

arch-riscv: Create system file for RISCV FS

This patch is part of the implementation of the RISC-V Full system mode.
The function of this patch is initialize the full system:
device tree blob, bootloader, kernel, uart, etc.
For reference, the full implemation can be found at:
https://github.com/john-liu2039/Gem5-RISCV-FullSystem

Change-Id: Iad2934016807408c25577ae45b2a7920a9e47004
---
M src/arch/riscv/RiscvSystem.py
M src/arch/riscv/SConscript
A src/arch/riscv/linux/system.cc
A src/arch/riscv/linux/system.hh
4 files changed, 247 insertions(+), 4 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19828
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Iad2934016807408c25577ae45b2a7920a9e47004
Gerrit-Change-Number: 19828
Gerrit-PatchSet: 2
Gerrit-Owner: LIU YIFEI 
Gerrit-Reviewer: Alec Roelke 
Gerrit-CC: Jason Lowe-Power 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Re: [gem5-dev] gently generalizing derived clock domains

2019-08-07 Thread Gabe Black
Although something here still needs to be virtual...

Gabe

On Wed, Aug 7, 2019 at 6:49 PM Gabe Black  wrote:

> Oh, never mind! I'd misunderstood the difference between members and
> children in the clock code. I think things are fine as is! I guess I'm
> still not all the way back from my trip :-).
>
> Gabe
>
> On Wed, Aug 7, 2019 at 6:33 PM Gabe Black  wrote:
>
>> You know, after writing that all out, I think maybe it would be better to
>> have a generic ClockWatcher interface where something (anything) could
>> watch a clock source and be notified of period updates. The
>> DerivedClockDomain would implement that interface, but then so could my
>> CPU. That would avoid having an awkward sort ClockDomain but not really
>> class which would be just to hijack the clock watching ability of the
>> DerivedClockDomain.
>>
>> I think that would also avoid having to rename anything, since even
>> though the DerivedClockDomain makes some overly simplifying assumptions
>> (clocks only go slower and in integer ratios), it wouldn't make any less
>> sense if the update mechanism was changed. I'll go ahead and do things that
>> way.
>>
>> Gabe
>>
>> On Wed, Aug 7, 2019 at 6:26 PM Gabe Black  wrote:
>>
>>> Hi folks. I'm working on making a CPU model out of a black box CPU
>>> implementation which doesn't explicitly schedule each of its clock ticks (I
>>> assume it does that internally), but does respect a clock which I can
>>> adjust.
>>>
>>> The existing clock domain mechanism lets a client call into it to see
>>> when the next clock edge is, for instance, but doesn't actively tell other
>>> entities when its clock rate has changed. In situations where the clock
>>> rate isn't polled (ie the one I'm working on), the clock rate could change
>>> without the CPU noticing.
>>>
>>> I see a mechanism in the clock domain classes which sort of already does
>>> this, where there can be a source clock and then derived clocks which are
>>> notified of input clock changes and can regenerate their output clock rate.
>>> Unfortunately, the DerivedClockDomain class assumes that all derived clocks
>>> are based on scaling with a simple divider/multiplier (probably mostly
>>> true), and doesn't give any way to hook into the clock update
>>> propagation mechanism otherwise.
>>>
>>> What I would like to do is to make the updateClockPeriod function in
>>> DerivedClockDomain virtual, and then move the dividing logic into a new,
>>> derived (in the C++ sense) class called, perhaps, ScaledClockDomain. Then I
>>> could create my own clock domain class who's only purpose would be to let
>>> my opaque CPU model know when the clock changes.
>>>
>>> Since this would change the names of the type of objects in configs, I
>>> figured I'd throw out an email letting people know before attempting this
>>> change. This would also make a normal method virtual which would add a
>>> slight performance penalty when calling it, but since updating
>>> frequency/clocking domains probably doesn't happen that often relatively
>>> speaking and the overhead would be very small, that seems like a reasonable
>>> trade off.
>>>
>>> Gabe
>>>
>>
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Re: [gem5-dev] gently generalizing derived clock domains

2019-08-07 Thread Gabe Black
Oh, never mind! I'd misunderstood the difference between members and
children in the clock code. I think things are fine as is! I guess I'm
still not all the way back from my trip :-).

Gabe

On Wed, Aug 7, 2019 at 6:33 PM Gabe Black  wrote:

> You know, after writing that all out, I think maybe it would be better to
> have a generic ClockWatcher interface where something (anything) could
> watch a clock source and be notified of period updates. The
> DerivedClockDomain would implement that interface, but then so could my
> CPU. That would avoid having an awkward sort ClockDomain but not really
> class which would be just to hijack the clock watching ability of the
> DerivedClockDomain.
>
> I think that would also avoid having to rename anything, since even though
> the DerivedClockDomain makes some overly simplifying assumptions (clocks
> only go slower and in integer ratios), it wouldn't make any less sense if
> the update mechanism was changed. I'll go ahead and do things that way.
>
> Gabe
>
> On Wed, Aug 7, 2019 at 6:26 PM Gabe Black  wrote:
>
>> Hi folks. I'm working on making a CPU model out of a black box CPU
>> implementation which doesn't explicitly schedule each of its clock ticks (I
>> assume it does that internally), but does respect a clock which I can
>> adjust.
>>
>> The existing clock domain mechanism lets a client call into it to see
>> when the next clock edge is, for instance, but doesn't actively tell other
>> entities when its clock rate has changed. In situations where the clock
>> rate isn't polled (ie the one I'm working on), the clock rate could change
>> without the CPU noticing.
>>
>> I see a mechanism in the clock domain classes which sort of already does
>> this, where there can be a source clock and then derived clocks which are
>> notified of input clock changes and can regenerate their output clock rate.
>> Unfortunately, the DerivedClockDomain class assumes that all derived clocks
>> are based on scaling with a simple divider/multiplier (probably mostly
>> true), and doesn't give any way to hook into the clock update
>> propagation mechanism otherwise.
>>
>> What I would like to do is to make the updateClockPeriod function in
>> DerivedClockDomain virtual, and then move the dividing logic into a new,
>> derived (in the C++ sense) class called, perhaps, ScaledClockDomain. Then I
>> could create my own clock domain class who's only purpose would be to let
>> my opaque CPU model know when the clock changes.
>>
>> Since this would change the names of the type of objects in configs, I
>> figured I'd throw out an email letting people know before attempting this
>> change. This would also make a normal method virtual which would add a
>> slight performance penalty when calling it, but since updating
>> frequency/clocking domains probably doesn't happen that often relatively
>> speaking and the overhead would be very small, that seems like a reasonable
>> trade off.
>>
>> Gabe
>>
>
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Re: [gem5-dev] gently generalizing derived clock domains

2019-08-07 Thread Gabe Black
You know, after writing that all out, I think maybe it would be better to
have a generic ClockWatcher interface where something (anything) could
watch a clock source and be notified of period updates. The
DerivedClockDomain would implement that interface, but then so could my
CPU. That would avoid having an awkward sort ClockDomain but not really
class which would be just to hijack the clock watching ability of the
DerivedClockDomain.

I think that would also avoid having to rename anything, since even though
the DerivedClockDomain makes some overly simplifying assumptions (clocks
only go slower and in integer ratios), it wouldn't make any less sense if
the update mechanism was changed. I'll go ahead and do things that way.

Gabe

On Wed, Aug 7, 2019 at 6:26 PM Gabe Black  wrote:

> Hi folks. I'm working on making a CPU model out of a black box CPU
> implementation which doesn't explicitly schedule each of its clock ticks (I
> assume it does that internally), but does respect a clock which I can
> adjust.
>
> The existing clock domain mechanism lets a client call into it to see when
> the next clock edge is, for instance, but doesn't actively tell other
> entities when its clock rate has changed. In situations where the clock
> rate isn't polled (ie the one I'm working on), the clock rate could change
> without the CPU noticing.
>
> I see a mechanism in the clock domain classes which sort of already does
> this, where there can be a source clock and then derived clocks which are
> notified of input clock changes and can regenerate their output clock rate.
> Unfortunately, the DerivedClockDomain class assumes that all derived clocks
> are based on scaling with a simple divider/multiplier (probably mostly
> true), and doesn't give any way to hook into the clock update
> propagation mechanism otherwise.
>
> What I would like to do is to make the updateClockPeriod function in
> DerivedClockDomain virtual, and then move the dividing logic into a new,
> derived (in the C++ sense) class called, perhaps, ScaledClockDomain. Then I
> could create my own clock domain class who's only purpose would be to let
> my opaque CPU model know when the clock changes.
>
> Since this would change the names of the type of objects in configs, I
> figured I'd throw out an email letting people know before attempting this
> change. This would also make a normal method virtual which would add a
> slight performance penalty when calling it, but since updating
> frequency/clocking domains probably doesn't happen that often relatively
> speaking and the overhead would be very small, that seems like a reasonable
> trade off.
>
> Gabe
>
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-x86: Updating fault condition for write to cr4

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19892 )



Change subject: arch-x86: Updating fault condition for write to cr4
..

arch-x86: Updating fault condition for write to cr4

A fault is generated if there is a bit set that's above bit 11.
However, there are lots of bits above 11 now.
In particular, our implementation of CPUID returns 0x04000209 for
RCX (family 0: Standard Functions, function 1: FamilyModelStepping)
which sets bit 26 (XSAVE) on RCX - which is bit 18 on cr4.

Change-Id: I17c1c341d85e51d532a0ddbd622b9139025a5276
---
M src/arch/x86/isa/microops/regop.isa
1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/src/arch/x86/isa/microops/regop.isa  
b/src/arch/x86/isa/microops/regop.isa

index 6f2901b..9dd9375 100644
--- a/src/arch/x86/isa/microops/regop.isa
+++ b/src/arch/x86/isa/microops/regop.isa
@@ -1414,7 +1414,7 @@
 {
 CR4 cr4 = newVal;
 // PAE can't be disabled in long mode.
-if (bits(newVal, 63, 11) ||
+if (bits(newVal, 63, 22) ||
 (machInst.mode.mode == LongMode  
&& !cr4.pae))

 fault = std::make_shared(0);
 }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19892
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I17c1c341d85e51d532a0ddbd622b9139025a5276
Gerrit-Change-Number: 19892
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] gently generalizing derived clock domains

2019-08-07 Thread Gabe Black
Hi folks. I'm working on making a CPU model out of a black box CPU
implementation which doesn't explicitly schedule each of its clock ticks (I
assume it does that internally), but does respect a clock which I can
adjust.

The existing clock domain mechanism lets a client call into it to see when
the next clock edge is, for instance, but doesn't actively tell other
entities when its clock rate has changed. In situations where the clock
rate isn't polled (ie the one I'm working on), the clock rate could change
without the CPU noticing.

I see a mechanism in the clock domain classes which sort of already does
this, where there can be a source clock and then derived clocks which are
notified of input clock changes and can regenerate their output clock rate.
Unfortunately, the DerivedClockDomain class assumes that all derived clocks
are based on scaling with a simple divider/multiplier (probably mostly
true), and doesn't give any way to hook into the clock update
propagation mechanism otherwise.

What I would like to do is to make the updateClockPeriod function in
DerivedClockDomain virtual, and then move the dividing logic into a new,
derived (in the C++ sense) class called, perhaps, ScaledClockDomain. Then I
could create my own clock domain class who's only purpose would be to let
my opaque CPU model know when the clock changes.

Since this would change the names of the type of objects in configs, I
figured I'd throw out an email letting people know before attempting this
change. This would also make a normal method virtual which would add a
slight performance penalty when calling it, but since updating
frequency/clocking domains probably doesn't happen that often relatively
speaking and the overhead would be very small, that seems like a reasonable
trade off.

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

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Use check_on_cache_probe on MOESI hammer

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19891 )



Change subject: mem-ruby: Use check_on_cache_probe on MOESI hammer
..

mem-ruby: Use check_on_cache_probe on MOESI hammer

This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MOESI hammer.

Change-Id: I2c43f22aba5af3a57e54b1c435e5d3fbba86d1d5
---
M src/mem/protocol/MOESI_hammer-cache.sm
1 file changed, 4 insertions(+), 0 deletions(-)



diff --git a/src/mem/protocol/MOESI_hammer-cache.sm  
b/src/mem/protocol/MOESI_hammer-cache.sm

index 9cbd277..4086f42 100644
--- a/src/mem/protocol/MOESI_hammer-cache.sm
+++ b/src/mem/protocol/MOESI_hammer-cache.sm
@@ -468,7 +468,9 @@
   }
 } else {
   // No room in the L1, so we need to make room
+  // Check if the line we want to evict is not locked
   Addr l1i_victim_addr :=  
L1Icache.cacheProbe(in_msg.LineAddress);

+  check_on_cache_probe(mandatoryQueue_in, l1i_victim_addr);
   if (L2cache.cacheAvail(l1i_victim_addr)) {
 // The L2 has room, so we move the line from the L1 to the  
L2

 trigger(Event:L1_to_L2,
@@ -525,7 +527,9 @@
   }
 } else {
   // No room in the L1, so we need to make room
+  // Check if the line we want to evict is not locked
   Addr l1d_victim_addr :=  
L1Dcache.cacheProbe(in_msg.LineAddress);

+  check_on_cache_probe(mandatoryQueue_in, l1i_victim_addr);
   if (L2cache.cacheAvail(l1d_victim_addr)) {
 // The L2 has room, so we move the line from the L1 to the  
L2

 trigger(Event:L1_to_L2,

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19891
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I2c43f22aba5af3a57e54b1c435e5d3fbba86d1d5
Gerrit-Change-Number: 19891
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Use check_on_cache_probe on MOESI CMP

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19908 )



Change subject: mem-ruby: Use check_on_cache_probe on MOESI CMP
..

mem-ruby: Use check_on_cache_probe on MOESI CMP

This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MOESI CMP.

Change-Id: I3a8879e10ebd94ef68194836475e656761fed62c
---
M src/mem/protocol/MOESI_CMP_directory-L1cache.sm
1 file changed, 6 insertions(+), 0 deletions(-)



diff --git a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm  
b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm

index 1f57316..3c49023 100644
--- a/src/mem/protocol/MOESI_CMP_directory-L1cache.sm
+++ b/src/mem/protocol/MOESI_CMP_directory-L1cache.sm
@@ -412,6 +412,9 @@
   TBEs[in_msg.LineAddress]);
 } else {
   // No room in the L1, so we need to make room in the L1
+  // Check if the line we want to evict is not locked
+  Addr addr := L1Icache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, addr);
   trigger(Event:L1_Replacement,
   L1Icache.cacheProbe(in_msg.LineAddress),

getL1ICacheEntry(L1Icache.cacheProbe(in_msg.LineAddress)),

@@ -443,6 +446,9 @@
   TBEs[in_msg.LineAddress]);
 } else {
   // No room in the L1, so we need to make room in the L1
+  // Check if the line we want to evict is not locked
+  Addr addr := L1Dcache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, addr);
   trigger(Event:L1_Replacement,
   L1Dcache.cacheProbe(in_msg.LineAddress),

getL1DCacheEntry(L1Dcache.cacheProbe(in_msg.LineAddress)),


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19908
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I3a8879e10ebd94ef68194836475e656761fed62c
Gerrit-Change-Number: 19908
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Use check_on_cache_probe on MOESI

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19890 )



Change subject: mem-ruby: Use check_on_cache_probe on MOESI
..

mem-ruby: Use check_on_cache_probe on MOESI

This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MOESI.

Change-Id: Ie650ccdc15bb41b4088e534975b662408aaccf24
---
M src/mem/protocol/MOESI_AMD_Base-CorePair.sm
1 file changed, 6 insertions(+), 0 deletions(-)



diff --git a/src/mem/protocol/MOESI_AMD_Base-CorePair.sm  
b/src/mem/protocol/MOESI_AMD_Base-CorePair.sm

index e1504de..140bbc4 100644
--- a/src/mem/protocol/MOESI_AMD_Base-CorePair.sm
+++ b/src/mem/protocol/MOESI_AMD_Base-CorePair.sm
@@ -543,7 +543,9 @@
   tbe);
 }
   } else {
+// Check if the line we want to evict is not locked
 Addr victim := L1Icache.cacheProbe(in_msg.LineAddress);
+check_on_cache_probe(mandatoryQueue_in, victim);
 trigger(Event:L1I_Repl, victim,
 getCacheEntry(victim), TBEs.lookup(victim));
   }
@@ -582,7 +584,9 @@
 cache_entry, tbe);
   }
 } else {
+  // Check if the line we want to evict is not locked
   Addr victim := L1D1cache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, victim);
   trigger(Event:L1D1_Repl, victim,
   getCacheEntry(victim), TBEs.lookup(victim));
 }
@@ -618,7 +622,9 @@
 cache_entry, tbe);
   }
 } else {
+  // Check if the line we want to evict is not locked
   Addr victim := L1D0cache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, victim);
   trigger(Event:L1D0_Repl, victim, getCacheEntry(victim),
   TBEs.lookup(victim));
 }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19890
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ie650ccdc15bb41b4088e534975b662408aaccf24
Gerrit-Change-Number: 19890
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: cpu: Pull more arch specialization to the top of BaseCPU.py.

2019-08-07 Thread Gabe Black (Gerrit)
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19889 )



Change subject: cpu: Pull more arch specialization to the top of BaseCPU.py.
..

cpu: Pull more arch specialization to the top of BaseCPU.py.

This simplifies the logic of the CPU python class, and brings us ever
so slightly closer to factoring hardcoded ISA behavior out of non-ISA
specific components.

Change-Id: I7e4511dd4e6076f5c214be5af2a0e33af0142563
---
M src/cpu/BaseCPU.py
1 file changed, 38 insertions(+), 77 deletions(-)



diff --git a/src/cpu/BaseCPU.py b/src/cpu/BaseCPU.py
index 6dd460c..a63f650 100644
--- a/src/cpu/BaseCPU.py
+++ b/src/cpu/BaseCPU.py
@@ -64,40 +64,47 @@

 if buildEnv['TARGET_ISA'] == 'alpha':
 from m5.objects.AlphaTLB import AlphaDTB as ArchDTB, AlphaITB as  
ArchITB

-from m5.objects.AlphaInterrupts import AlphaInterrupts
-from m5.objects.AlphaISA import AlphaISA
-default_isa_class = AlphaISA
+from m5.objects.AlphaInterrupts import AlphaInterrupts as  
ArchInterrupts

+from m5.objects.AlphaISA import AlphaISA as ArchISA
+ArchInterruptsParam = VectorParam.AlphaInterrupts
+ArchISAsParam = VectorParam.AlphaISA
 elif buildEnv['TARGET_ISA'] == 'sparc':
 from m5.objects.SparcTLB import SparcTLB as ArchDTB, SparcTLB as  
ArchITB

-from m5.objects.SparcInterrupts import SparcInterrupts
-from m5.objects.SparcISA import SparcISA
-default_isa_class = SparcISA
+from m5.objects.SparcInterrupts import SparcInterrupts as  
ArchInterrupts

+from m5.objects.SparcISA import SparcISA as ArchISA
+ArchInterruptsParam = VectorParam.SparcInterrupts
+ArchISAsParam = VectorParam.SparcISA
 elif buildEnv['TARGET_ISA'] == 'x86':
 from m5.objects.X86TLB import X86TLB as ArchDTB, X86TLB as ArchITB
-from m5.objects.X86LocalApic import X86LocalApic
-from m5.objects.X86ISA import X86ISA
-default_isa_class = X86ISA
+from m5.objects.X86LocalApic import X86LocalApic as ArchInterrupts
+from m5.objects.X86ISA import X86ISA as ArchISA
+ArchInterruptsParam = VectorParam.X86LocalApic
+ArchISAsParam = VectorParam.X86ISA
 elif buildEnv['TARGET_ISA'] == 'mips':
 from m5.objects.MipsTLB import MipsTLB as ArchDTB, MipsTLB as ArchITB
-from m5.objects.MipsInterrupts import MipsInterrupts
-from m5.objects.MipsISA import MipsISA
-default_isa_class = MipsISA
+from m5.objects.MipsInterrupts import MipsInterrupts as ArchInterrupts
+from m5.objects.MipsISA import MipsISA as ArchISA
+ArchInterruptsParam = VectorParam.MipsInterrupts
+ArchISAsParam = VectorParam.MipsISA
 elif buildEnv['TARGET_ISA'] == 'arm':
 from m5.objects.ArmTLB import ArmTLB as ArchDTB, ArmTLB as ArchITB
 from m5.objects.ArmTLB import ArmStage2IMMU, ArmStage2DMMU
-from m5.objects.ArmInterrupts import ArmInterrupts
-from m5.objects.ArmISA import ArmISA
-default_isa_class = ArmISA
+from m5.objects.ArmInterrupts import ArmInterrupts as ArchInterrupts
+from m5.objects.ArmISA import ArmISA as ArchISA
+ArchInterruptsParam = VectorParam.ArmInterrupts
+ArchISAsParam = VectorParam.ArmISA
 elif buildEnv['TARGET_ISA'] == 'power':
 from m5.objects.PowerTLB import PowerTLB as ArchDTB, PowerTLB as  
ArchITB

-from m5.objects.PowerInterrupts import PowerInterrupts
-from m5.objects.PowerISA import PowerISA
-default_isa_class = PowerISA
+from m5.objects.PowerInterrupts import PowerInterrupts as  
ArchInterrupts

+from m5.objects.PowerISA import PowerISA as ArchISA
+ArchInterruptsParam = VectorParam.PowerInterrupts
+ArchISAsParam = VectorParam.PowerISA
 elif buildEnv['TARGET_ISA'] == 'riscv':
 from m5.objects.RiscvTLB import RiscvTLB as ArchDTB, RiscvTLB as  
ArchITB

-from m5.objects.RiscvInterrupts import RiscvInterrupts
-from m5.objects.RiscvISA import RiscvISA
-default_isa_class = RiscvISA
+from m5.objects.RiscvInterrupts import RiscvInterrupts as  
ArchInterrupts

+from m5.objects.RiscvISA import RiscvISA as ArchISA
+ArchInterruptsParam = VectorParam.RiscvInterrupts
+ArchISAsParam = VectorParam.RiscvISA

 class BaseCPU(ClockedObject):
 type = 'BaseCPU'
@@ -171,40 +178,13 @@

 dtb = Param.BaseTLB(ArchDTB(), "Data TLB")
 itb = Param.BaseTLB(ArchITB(), "Instruction TLB")
-if buildEnv['TARGET_ISA'] == 'sparc':
-interrupts = VectorParam.SparcInterrupts(
-[], "Interrupt Controller")
-isa = VectorParam.SparcISA([], "ISA instance")
-elif buildEnv['TARGET_ISA'] == 'alpha':
-interrupts = VectorParam.AlphaInterrupts(
-[], "Interrupt Controller")
-isa = VectorParam.AlphaISA([], "ISA instance")
-elif buildEnv['TARGET_ISA'] == 'x86':
-interrupts = VectorParam.X86LocalApic([], "Interrupt Controller")
-isa = VectorParam.X86ISA([], "ISA instance")
-elif buildEnv['TARGET_ISA'] == 

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Use check_on_cache_probe on MI

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19888 )



Change subject: mem-ruby: Use check_on_cache_probe on MI
..

mem-ruby: Use check_on_cache_probe on MI

This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MI.

Change-Id: I276822e987e52f7682ff30f55880f295b6af023d
---
M src/mem/protocol/MI_example-cache.sm
1 file changed, 3 insertions(+), 0 deletions(-)



diff --git a/src/mem/protocol/MI_example-cache.sm  
b/src/mem/protocol/MI_example-cache.sm

index b8036c1..dcfa148 100644
--- a/src/mem/protocol/MI_example-cache.sm
+++ b/src/mem/protocol/MI_example-cache.sm
@@ -254,6 +254,9 @@
 if (is_invalid(cache_entry) &&
 cacheMemory.cacheAvail(in_msg.LineAddress) == false ) {
   // make room for the block
+  // Check if the line we want to evict is not locked
+  Addr addr := cacheMemory.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, addr);
   trigger(Event:Replacement,  
cacheMemory.cacheProbe(in_msg.LineAddress),

getCacheEntry(cacheMemory.cacheProbe(in_msg.LineAddress)),

   TBEs[cacheMemory.cacheProbe(in_msg.LineAddress)]);

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19888
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I276822e987e52f7682ff30f55880f295b6af023d
Gerrit-Change-Number: 19888
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Use check_on_cache_probe to protect locked lines from eviction

2019-08-07 Thread Pouya Fotouhi (Gerrit)
Pouya Fotouhi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19868 )



Change subject: mem-ruby: Use check_on_cache_probe to protect locked lines  
from eviction

..

mem-ruby: Use check_on_cache_probe to protect locked lines from eviction

This change uses check_on_cache_probe statement to check if the cacheline
subject to eviction is locked in MESI Three Level.

Change-Id: Ib0de54aa067c7603db1f7321cc4825b123b641ac
---
M src/mem/protocol/MESI_Three_Level-L0cache.sm
1 file changed, 6 insertions(+), 0 deletions(-)



diff --git a/src/mem/protocol/MESI_Three_Level-L0cache.sm  
b/src/mem/protocol/MESI_Three_Level-L0cache.sm

index a87a3d9..399ca34 100644
--- a/src/mem/protocol/MESI_Three_Level-L0cache.sm
+++ b/src/mem/protocol/MESI_Three_Level-L0cache.sm
@@ -324,6 +324,9 @@
   Icache_entry, TBEs[in_msg.LineAddress]);
 } else {
   // No room in the L0, so we need to make room in the L0
+  // Check if the line we want to evict is not locked
+  Addr addr := Icache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, addr);
   trigger(Event:L0_Replacement,  
Icache.cacheProbe(in_msg.LineAddress),

getICacheEntry(Icache.cacheProbe(in_msg.LineAddress)),

   TBEs[Icache.cacheProbe(in_msg.LineAddress)]);
@@ -354,6 +357,9 @@
   Dcache_entry, TBEs[in_msg.LineAddress]);
 } else {
   // No room in the L1, so we need to make room in the L0
+  // Check if the line we want to evict is not locked
+  Addr addr := Dcache.cacheProbe(in_msg.LineAddress);
+  check_on_cache_probe(mandatoryQueue_in, addr);
   trigger(Event:L0_Replacement,  
Dcache.cacheProbe(in_msg.LineAddress),

getDCacheEntry(Dcache.cacheProbe(in_msg.LineAddress)),

   TBEs[Dcache.cacheProbe(in_msg.LineAddress)]);

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19868
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ib0de54aa067c7603db1f7321cc4825b123b641ac
Gerrit-Change-Number: 19868
Gerrit-PatchSet: 1
Gerrit-Owner: Pouya Fotouhi 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: sim-se, tests: add a new sim-se test

2019-08-07 Thread Brandon Potter (Gerrit)
Brandon Potter has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/17112 )


Change subject: sim-se, tests: add a new sim-se test
..

sim-se, tests: add a new sim-se test

This changeset adds a test to check the redirection features
added in faux-filesystem changeset. The test contains a
"chdir" system call to "/proc" which should be redirected to
"$(gem5-dir)/m5out/fs/proc" (as specified by the config files).

After "chdir", the test subsequently outputs the "/proc/cpuinfo"
file which should output a configuration of a fake cpu with
values set by a Python configuration file.

Note, the test will call "clone" once. To avoid a runtime error,
make sure that you run this test with "-n2" supplied to the
"config/example/se.py" script.

Change-Id: I505b046b7a4feddfa93a6ef0f0773ac43078cc94
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17112
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
---
A tests/test-progs/chdir-print/Makefile
A tests/test-progs/chdir-print/README.txt
A tests/test-progs/chdir-print/chdir-print.c
3 files changed, 167 insertions(+), 0 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/tests/test-progs/chdir-print/Makefile  
b/tests/test-progs/chdir-print/Makefile

new file mode 100644
index 000..6a357d5
--- /dev/null
+++ b/tests/test-progs/chdir-print/Makefile
@@ -0,0 +1,20 @@
+
+CPP := g++
+
+TEST_OBJS := chdir-print.o
+TEST_PROGS := $(TEST_OBJS:.o=)
+
+#  Rules  
==

+
+.PHONY: default clean
+
+default: $(TEST_PROGS)
+
+clean:
+   $(RM)  $(TEST_OBJS) $(TEST_PROGS)
+
+$(TEST_PROGS): $(TEST_OBJS)
+   $(CPP)  -static -o $@  $@.o
+
+%.o: %.c Makefile
+   $(CPP) -c -o $@ $*.c -msse3
diff --git a/tests/test-progs/chdir-print/README.txt  
b/tests/test-progs/chdir-print/README.txt

new file mode 100644
index 000..b1e9213
--- /dev/null
+++ b/tests/test-progs/chdir-print/README.txt
@@ -0,0 +1,67 @@
+# example test compile and run parameters
+# Note: the absolute path to the chdir-print binary should be specified
+# in the run command even if running from the same folder. This is needed
+# because chdir is executed before triggering a clone for the file read,
+# and the cloned process won't be able to find the executable if a relative
+# path is provided.
+
+# compile examples
+scons --default=X86 ./build/X86/gem5.opt PROTOCOL=MOESI_hammer
+scons --default=X86 ./build/X86/gem5.opt PROTOCOL=MESI_Three_Level
+
+# run parameters
+/build/X86/gem5.opt /configs/example/se.py -c  
/tests/test-progs/chdir-print/chdir-print -n2 --ruby

+
+
+# example successful output for MESI_Three_Level:
+
+<...>
+
+ REAL SIMULATION 
+info: Entering event queue @ 0.  Starting simulation...
+warn: Replacement policy updates recently became the responsibility of  
SLICC state machines. Make sure to setMRU() near callbacks in .sm files!
+cwd:  
/proj/research_simu/users/jalsop/gem5-mem_dif_debug/tests/test-progs/chdir-print/

+cwd: /proc
+
+<...>
+
+processor   : 0
+vendor_id   : Generic
+cpu family  : 0
+model   : 0
+model name  : Generic
+stepping: 0
+cpu MHz : 2000
+cache size: : 2048K
+physical id : 0
+siblings: 2
+core id : 0
+cpu cores   : 2
+fpu : yes
+fpu exception   : yes
+cpuid level : 1
+wp  : yes
+flags   : fpu
+cache alignment : 64
+
+processor   : 1
+vendor_id   : Generic
+cpu family  : 0
+model   : 0
+model name  : Generic
+stepping: 0
+cpu MHz : 2000
+cache size: : 2048K
+physical id : 0
+siblings: 2
+core id : 1
+cpu cores   : 2
+fpu : yes
+fpu exception   : yes
+cpuid level : 1
+wp  : yes
+flags   : fpu
+cache alignment : 64
+
+SUCCESS
+Exiting @ tick 2694923000 because exiting with last active thread context
diff --git a/tests/test-progs/chdir-print/chdir-print.c  
b/tests/test-progs/chdir-print/chdir-print.c

new file mode 100644
index 000..9fe42cd
--- /dev/null
+++ b/tests/test-progs/chdir-print/chdir-print.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2011-2015 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 

[gem5-dev] Change in gem5/gem5[master]: tests: Refactor the Gem5Fixture to derive from UniqueFixture

2019-08-07 Thread Nikos Nikoleris (Gerrit)

Hello kokoro, Ciro Santilli, Giacomo Travaglini, Jason Lowe-Power,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19251

to look at the new patch set (#10).

Change subject: tests: Refactor the Gem5Fixture to derive from UniqueFixture
..

tests: Refactor the Gem5Fixture to derive from UniqueFixture

Gem5Fixture is used to define a fixture for building the gem5
binary. Most tests are expected to define their own Gem5Fixture,
however, as some might depend on the same binary (e.g.,
./build/ARM/gem5.opt), they will try to re-define a fixture for the
same target. This patchset changes Gem5Fixture to derive from
UniqueFixture.

In addition, this patchset changes the way global fixtures are
discovered to work with the new Gem5Fixture class. Instead of
enumerating them when test definitions are loaded, we do so after the
tests have been filtered according to specified tags (e.g., include
opt variant, exclude fast, debug variants).

Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
---
M ext/testlib/fixture.py
M ext/testlib/loader.py
M ext/testlib/main.py
M ext/testlib/wrappers.py
M tests/gem5/fixture.py
5 files changed, 51 insertions(+), 121 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19251
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
Gerrit-Change-Number: 19251
Gerrit-PatchSet: 10
Gerrit-Owner: Nikos Nikoleris 
Gerrit-Assignee: Jason Lowe-Power 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: cpu-o3: fix atomic instructions non-speculative

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19815 )


Change subject: cpu-o3: fix atomic instructions non-speculative
..

cpu-o3: fix atomic instructions non-speculative

Fix problem with O3 and AMO instructions. At initial stages amo
instruction is considered a type of non-speculative store. After
the instruction has been commited and during the squash step,
acquire_release version of the AMO operation is considered speculative,
that differents results in an assert fault. This fix ensures that AMO
instructions are always considered non-speculative, during early stages
and during squas/removal of the instruction.

Change-Id: Ia0c5fbb9dc44a9991337b57eb759b1ed08e4149e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19815
Maintainer: Jason Lowe-Power 
Reviewed-by: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/cpu/o3/inst_queue_impl.hh
1 file changed, 0 insertions(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/cpu/o3/inst_queue_impl.hh b/src/cpu/o3/inst_queue_impl.hh
index c3e3fdf..f3362f2 100644
--- a/src/cpu/o3/inst_queue_impl.hh
+++ b/src/cpu/o3/inst_queue_impl.hh
@@ -1262,7 +1262,6 @@

 bool is_acq_rel = squashed_inst->isMemBarrier() &&
  (squashed_inst->isLoad() ||
-  squashed_inst->isAtomic() ||
   (squashed_inst->isStore() &&
  !squashed_inst->isStoreConditional()));


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19815
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ia0c5fbb9dc44a9991337b57eb759b1ed08e4149e
Gerrit-Change-Number: 19815
Gerrit-PatchSet: 11
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Jordi Vaquero 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: Tuan Ta 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: cpu-o3: added _amo_op parameter in o3 LSQ

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19814 )


Change subject: cpu-o3: added _amo_op parameter in o3 LSQ
..

cpu-o3: added _amo_op parameter in o3 LSQ

Fix bug with AMO (or RMW) instructions where the amo_op variable
is not being propagated to the LSQ request.

Change-Id: I60c59641d9b497051376f638e27f3c4cc361f615
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19814
Maintainer: Andreas Sandberg 
Maintainer: Anthony Gutierrez 
Tested-by: kokoro 
Reviewed-by: Andreas Sandberg 
Reviewed-by: Anthony Gutierrez 
---
M src/cpu/o3/lsq.hh
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  Anthony Gutierrez: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/cpu/o3/lsq.hh b/src/cpu/o3/lsq.hh
index 4701a8c..29c76f7 100644
--- a/src/cpu/o3/lsq.hh
+++ b/src/cpu/o3/lsq.hh
@@ -366,7 +366,7 @@
 isAnyActiveElement(byteEnable.begin(), byteEnable.end())) {
 auto request = std::make_shared(_inst->getASID(),
 addr, size, _flags, _inst->masterId(),
-_inst->instAddr(), _inst->contextId());
+_inst->instAddr(), _inst->contextId(), _amo_op);
 if (!byteEnable.empty()) {
 request->setByteEnable(byteEnable);
 }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19814
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I60c59641d9b497051376f638e27f3c4cc361f615
Gerrit-Change-Number: 19814
Gerrit-PatchSet: 11
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Jordi Vaquero 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19810 )


Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic  
instructions

..

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19810
Reviewed-by: Giacomo Travaglini 
Maintainer: Giacomo Travaglini 
Tested-by: kokoro 
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)

Approvals:
  Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/insts/mem64.hh b/src/arch/arm/insts/mem64.hh
index 8e21bb3..34eb43f 100644
--- a/src/arch/arm/insts/mem64.hh
+++ b/src/arch/arm/insts/mem64.hh
@@ -260,6 +260,52 @@
 std::string generateDisassembly(
 Addr pc, const SymbolTable *symtab) const override;
 };
+
+/**
+ * A generic atomic op class
+ */
+
+template
+class AtomicGeneric2Op : public TypedAtomicOpFunctor
+{
+  public:
+AtomicGeneric2Op(T _a, std::function _op)
+: a(_a), op(_op)
+{}
+AtomicOpFunctor* clone() override
+{
+return new AtomicGeneric2Op(*this);
+}
+void execute(T *b) override
+{
+op(b, a);
+}
+  private:
+T a;
+std::function op;
+ };
+
+template
+class AtomicGeneric3Op : public TypedAtomicOpFunctor
+{
+  public:
+AtomicGeneric3Op(T _a, T _c, std::function _op)
+: a(_a), c(_c), op(_op)
+{}
+AtomicOpFunctor* clone() override
+{
+return new AtomicGeneric3Op(*this);
+}
+void execute(T *b) override
+{
+op(b, a, c);
+}
+  private:
+T a;
+T c;
+std::function op;
+};
+
 }

 #endif //__ARCH_ARM_INSTS_MEM_HH__

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19810
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Gerrit-Change-Number: 19810
Gerrit-PatchSet: 5
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jordi Vaquero 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Cron /z/m5/regression/do-regression quick

2019-08-07 Thread Cron Daemon
* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: FAILED!
* 
build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer:
 FAILED!
* 
build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level:
 FAILED!
* 
build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory:
 FAILED!
* 
build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-atomic: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/o3-timing: 
FAILED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: 
CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-closepage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-openpage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: 
CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: 
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-atomic: 
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-timing: 
CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: 
CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp:
 CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: 
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-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-two-level:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-atomic: CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: 
CHANGED!
* build/X86/tests/opt/quick/fs/10.linux-boot/x86/linux/pc-simple-timing: 
CHANGED!
* build/X86/tests/opt/quick/fs/10.linux-boot/x86/linux/pc-simple-atomic: 
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-timing: CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-simple:
 CHANGED!
* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing-checker: 
CHANGED!
* build/ARM/tests/opt/quick/se/10.mcf/arm/linux/simple-timing: CHANGED!
* build/ARM/tests/opt/quick/se/70.twolf/arm/linux/simple-atomic: CHANGED!
* 

[gem5-dev] Change in gem5/gem5[master]: tests: Refactor the Gem5Fixture to derive from UniqueFixture

2019-08-07 Thread Nikos Nikoleris (Gerrit)

Hello kokoro, Ciro Santilli, Giacomo Travaglini, Jason Lowe-Power,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19251

to look at the new patch set (#9).

Change subject: tests: Refactor the Gem5Fixture to derive from UniqueFixture
..

tests: Refactor the Gem5Fixture to derive from UniqueFixture

Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
---
M ext/testlib/fixture.py
M ext/testlib/loader.py
M ext/testlib/main.py
M ext/testlib/wrappers.py
M tests/gem5/fixture.py
5 files changed, 51 insertions(+), 121 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19251
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
Gerrit-Change-Number: 19251
Gerrit-PatchSet: 9
Gerrit-Owner: Nikos Nikoleris 
Gerrit-Assignee: Jason Lowe-Power 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: adding register control flags enabling LSE implementation

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19809 )


Change subject: arch-arm: adding register control flags enabling LSE  
implementation

..

arch-arm: adding register control flags enabling LSE implementation

Added changes on arch-arm architecture to accept Atomic instructions
following ARM v8.1 documentation. That includes enabling atomic bit
in ID registers and add have_lse variable into arm system.

Change-Id: Ic28d3215d74ff129142fb51cb2fa217d3b1482de
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19809
Reviewed-by: Giacomo Travaglini 
Maintainer: Giacomo Travaglini 
Tested-by: kokoro 
---
M src/arch/arm/ArmSystem.py
M src/arch/arm/isa.cc
M src/arch/arm/isa.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
5 files changed, 20 insertions(+), 0 deletions(-)

Approvals:
  Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py
index daf94a9..a92ae4f 100644
--- a/src/arch/arm/ArmSystem.py
+++ b/src/arch/arm/ArmSystem.py
@@ -86,6 +86,8 @@
 "True if SVE is implemented (ARMv8)")
 sve_vl = Param.SveVectorLength(1,
 "SVE vector length in quadwords (128-bit)")
+have_lse = Param.Bool(True,
+"True if LSE is implemented (ARMv8.1)")
 have_pan = Param.Bool(True,
 "True if Priviledge Access Never is implemented (ARMv8.1)")

diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc
index 23738c6..299698d 100644
--- a/src/arch/arm/isa.cc
+++ b/src/arch/arm/isa.cc
@@ -93,6 +93,7 @@
 haveSVE = system->haveSVE();
 havePAN = system->havePAN();
 sveVL = system->sveVL();
+haveLSE = system->haveLSE();
 } else {
 highestELIs64 = true; // ArmSystem::highestELIs64 does the same
 haveSecurity = haveLPAE = haveVirtualization = false;
@@ -102,6 +103,7 @@
 haveSVE = true;
 havePAN = false;
 sveVL = p->sve_vl_se;
+haveLSE = true;
 }

 // Initial rename mode depends on highestEL
@@ -393,6 +395,10 @@
 miscRegs[MISCREG_ID_AA64ISAR0_EL1] = insertBits(
 miscRegs[MISCREG_ID_AA64ISAR0_EL1], 19, 4,
 haveCrypto ? 0x1112 : 0x0);
+// LSE
+miscRegs[MISCREG_ID_AA64ISAR0_EL1] = insertBits(
+miscRegs[MISCREG_ID_AA64ISAR0_EL1], 23, 20,
+haveLSE ? 0x2 : 0x0);
 // PAN
 miscRegs[MISCREG_ID_AA64MMFR1_EL1] = insertBits(
 miscRegs[MISCREG_ID_AA64MMFR1_EL1], 23, 20,
diff --git a/src/arch/arm/isa.hh b/src/arch/arm/isa.hh
index 63051cd..5e337c2 100644
--- a/src/arch/arm/isa.hh
+++ b/src/arch/arm/isa.hh
@@ -95,6 +95,7 @@
 bool haveGICv3CPUInterface;
 uint8_t physAddrRange;
 bool haveSVE;
+bool haveLSE;
 bool havePAN;

 /** SVE vector length in quadwords */
@@ -687,6 +688,7 @@
 SERIALIZE_SCALAR(physAddrRange);
 SERIALIZE_SCALAR(haveSVE);
 SERIALIZE_SCALAR(sveVL);
+SERIALIZE_SCALAR(haveLSE);
 SERIALIZE_SCALAR(havePAN);
 }
 void unserialize(CheckpointIn )
@@ -704,6 +706,7 @@
 UNSERIALIZE_SCALAR(physAddrRange);
 UNSERIALIZE_SCALAR(haveSVE);
 UNSERIALIZE_SCALAR(sveVL);
+UNSERIALIZE_SCALAR(haveLSE);
 UNSERIALIZE_SCALAR(havePAN);
 }

diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index 874e3b0..4ea0d1a 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -73,6 +73,7 @@
   _haveLargeAsid64(p->have_large_asid_64),
   _haveSVE(p->have_sve),
   _sveVL(p->sve_vl),
+  _haveLSE(p->have_lse),
   _havePAN(p->have_pan),
   _m5opRange(p->m5ops_base ?
  RangeSize(p->m5ops_base, 0x1) :
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index e09f477..46c58e8 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -130,6 +130,11 @@
 /** SVE vector length at reset, in quadwords */
 const unsigned _sveVL;

+/**
+ * True if LSE is implemented (ARMv8.1)
+ */
+const bool _haveLSE;
+
 /** True if Priviledge Access Never is implemented */
 const unsigned _havePAN;

@@ -244,6 +249,9 @@
 /** Returns the SVE vector length at reset, in quadwords */
 unsigned sveVL() const { return _sveVL; }

+/** Returns true if LSE is implemented (ARMv8.1) */
+bool haveLSE() const { return _haveLSE; }
+
 /** Returns true if Priviledge Access Never is implemented */
 bool havePAN() const { return _havePAN; }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19809
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ic28d3215d74ff129142fb51cb2fa217d3b1482de
Gerrit-Change-Number: 

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, kokoro, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19810

to look at the new patch set (#4).

Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic  
instructions

..

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19810
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Gerrit-Change-Number: 19810
Gerrit-PatchSet: 4
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jordi Vaquero 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Adding CAS/CASP AMO instr including new TypedAtomic func

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19811

to look at the new patch set (#6).

Change subject: arch-arm: Adding CAS/CASP AMO instr including new  
TypedAtomic func

..

arch-arm: Adding CAS/CASP AMO instr including new TypedAtomic func

CAS/CASP atomic instruction implementation
This change includes:
+ Instructions decode
+ new amo64.isa file where CAS/CASP main functional code is implemented
+ mem64.isa include Execute/complete/initiatie skeletons,
contructor and declarator
+ Added TypedAtomic function for pair register CASP instruction

Change-Id: I4a4acdec4ab1c8b888f10ef5dc1e896be8c432bf
---
M src/arch/arm/insts/mem64.hh
M src/arch/arm/isa/formats/aarch64.isa
A src/arch/arm/isa/insts/amo64.isa
M src/arch/arm/isa/insts/insts.isa
M src/arch/arm/isa/templates/mem64.isa
5 files changed, 696 insertions(+), 7 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19811
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I4a4acdec4ab1c8b888f10ef5dc1e896be8c432bf
Gerrit-Change-Number: 19811
Gerrit-PatchSet: 6
Gerrit-Owner: Jordi Vaquero 
Gerrit-Assignee: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jordi Vaquero 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, kokoro, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19810

to look at the new patch set (#3).

Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic  
instructions

..

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19810
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Gerrit-Change-Number: 19810
Gerrit-PatchSet: 3
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Added LD/ST atomic instruction family and SWP instrs

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19812

to look at the new patch set (#5).

Change subject: arch-arm: Added LD/ST atomic instruction family and SWP  
instrs

..

arch-arm: Added LD/ST atomic instruction family and SWP instrs

Adding LD/ST/SWP family of instructions, LD/ST include a set of
operations like ADD/CLR/EOR/SET/UMAX/UMIN/SMAX/SMIN
This commit includes:
+ Instruction decode
+ Instruction functional code
+ New set of skeletons for Ex/Com/Ini/Constructor and declaration.

Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
---
M src/arch/arm/isa/formats/aarch64.isa
M src/arch/arm/isa/insts/amo64.isa
M src/arch/arm/isa/templates/mem64.isa
3 files changed, 1,039 insertions(+), 27 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19812
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
Gerrit-Change-Number: 19812
Gerrit-PatchSet: 5
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: cpu-o3: added _amo_op parameter in o3 LSQ

2019-08-07 Thread Jordi Vaquero (Gerrit)
Hello Andreas Sandberg, kokoro, Giacomo Travaglini, Anthony Gutierrez,  
Jason Lowe-Power,


I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19814

to look at the new patch set (#7).

Change subject: cpu-o3: added _amo_op parameter in o3 LSQ
..

cpu-o3: added _amo_op parameter in o3 LSQ

Fix bug with AMO (or RMW) instructions where the amo_op variable
is not being propagated to the LSQ request.

Change-Id: I60c59641d9b497051376f638e27f3c4cc361f615
---
M src/cpu/o3/lsq.hh
1 file changed, 1 insertion(+), 1 deletion(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19814
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I60c59641d9b497051376f638e27f3c4cc361f615
Gerrit-Change-Number: 19814
Gerrit-PatchSet: 7
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: adding register control flags enabling LSE implementation

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, kokoro,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19809

to look at the new patch set (#3).

Change subject: arch-arm: adding register control flags enabling LSE  
implementation

..

arch-arm: adding register control flags enabling LSE implementation

Added changes on arch-arm architecture to accept Atomic instructions
following ARM v8.1 documentation. That includes enabling atomic bit
in ID registers and add have_lse variable into arm system.

Change-Id: Ic28d3215d74ff129142fb51cb2fa217d3b1482de
---
M src/arch/arm/ArmSystem.py
M src/arch/arm/isa.cc
M src/arch/arm/isa.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
5 files changed, 20 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19809
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ic28d3215d74ff129142fb51cb2fa217d3b1482de
Gerrit-Change-Number: 19809
Gerrit-PatchSet: 3
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Giacomo Travaglini 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has uploaded a new patch set (#2). (  
https://gem5-review.googlesource.com/c/public/gem5/+/19849 )


Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic  
instructions

..

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: I8b6d9d3738bec5cfaf7449fd787551be2db8cd81
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19849
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I8b6d9d3738bec5cfaf7449fd787551be2db8cd81
Gerrit-Change-Number: 19849
Gerrit-PatchSet: 2
Gerrit-Owner: Jordi Vaquero 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Added LD/ST atomic instruction family and SWP instrs

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19812

to look at the new patch set (#4).

Change subject: arch-arm: Added LD/ST atomic instruction family and SWP  
instrs

..

arch-arm: Added LD/ST atomic instruction family and SWP instrs

Adding LD/ST/SWP family of instructions, LD/ST include a set of
operations like ADD/CLR/EOR/SET/UMAX/UMIN/SMAX/SMIN
This commit includes:
+ Instruction decode
+ Instruction functional code
+ New set of skeletons for Ex/Com/Ini/Constructor and declaration.

Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
---
M src/arch/arm/isa/formats/aarch64.isa
M src/arch/arm/isa/insts/amo64.isa
M src/arch/arm/isa/templates/mem64.isa
3 files changed, 1,039 insertions(+), 27 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19812
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
Gerrit-Change-Number: 19812
Gerrit-PatchSet: 4
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Adding CAS/CASP AMO instr including new TypedAtomic func

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19811

to look at the new patch set (#4).

Change subject: arch-arm: Adding CAS/CASP AMO instr including new  
TypedAtomic func

..

arch-arm: Adding CAS/CASP AMO instr including new TypedAtomic func

CAS/CASP atomic instruction implementation
This change includes:
+ Instructions decode
+ new amo64.isa file where CAS/CASP main functional code is implemented
+ mem64.isa include Execute/complete/initiatie skeletons,
contructor and declarator
+ Added TypedAtomic function for pair register CASP instruction

Change-Id: I4a4acdec4ab1c8b888f10ef5dc1e896be8c432bf
---
M src/arch/arm/insts/mem64.hh
M src/arch/arm/isa/formats/aarch64.isa
A src/arch/arm/isa/insts/amo64.isa
M src/arch/arm/isa/insts/insts.isa
M src/arch/arm/isa/templates/mem64.isa
5 files changed, 695 insertions(+), 7 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19811
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I4a4acdec4ab1c8b888f10ef5dc1e896be8c432bf
Gerrit-Change-Number: 19811
Gerrit-PatchSet: 4
Gerrit-Owner: Jordi Vaquero 
Gerrit-Assignee: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: adding register control flags enabling LSE implementation

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has uploaded a new patch set (#2). (  
https://gem5-review.googlesource.com/c/public/gem5/+/19848 )


Change subject: arch-arm: adding register control flags enabling LSE  
implementation

..

arch-arm: adding register control flags enabling LSE implementation

Added changes on arch-arm architecture to accept Atomic instructions
following ARM v8.1 documentation. That includes enabling atomic bit
in ID registers and add have_lse variable into arm system.

Change-Id: I79c65170f9a4dbc317041f987897444c025fb536
---
M src/arch/arm/ArmSystem.py
M src/arch/arm/isa.cc
M src/arch/arm/isa.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
5 files changed, 20 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19848
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I79c65170f9a4dbc317041f987897444c025fb536
Gerrit-Change-Number: 19848
Gerrit-PatchSet: 2
Gerrit-Owner: Jordi Vaquero 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: adding register control flags enabling LSE implementation

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19848 )



Change subject: arch-arm: adding register control flags enabling LSE  
implementation

..

arch-arm: adding register control flags enabling LSE implementation

Added changes on arch-arm architecture to accept Atomic instructions
following ARM v8.1 documentation. That includes enabling atomic bit
in control registers and add have_lse variable into arm system.

Change-Id: I79c65170f9a4dbc317041f987897444c025fb536
---
M src/arch/arm/ArmSystem.py
M src/arch/arm/isa.cc
M src/arch/arm/isa.hh
M src/arch/arm/system.cc
M src/arch/arm/system.hh
5 files changed, 20 insertions(+), 0 deletions(-)



diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py
index daf94a9..a92ae4f 100644
--- a/src/arch/arm/ArmSystem.py
+++ b/src/arch/arm/ArmSystem.py
@@ -86,6 +86,8 @@
 "True if SVE is implemented (ARMv8)")
 sve_vl = Param.SveVectorLength(1,
 "SVE vector length in quadwords (128-bit)")
+have_lse = Param.Bool(True,
+"True if LSE is implemented (ARMv8.1)")
 have_pan = Param.Bool(True,
 "True if Priviledge Access Never is implemented (ARMv8.1)")

diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc
index 23738c6..299698d 100644
--- a/src/arch/arm/isa.cc
+++ b/src/arch/arm/isa.cc
@@ -93,6 +93,7 @@
 haveSVE = system->haveSVE();
 havePAN = system->havePAN();
 sveVL = system->sveVL();
+haveLSE = system->haveLSE();
 } else {
 highestELIs64 = true; // ArmSystem::highestELIs64 does the same
 haveSecurity = haveLPAE = haveVirtualization = false;
@@ -102,6 +103,7 @@
 haveSVE = true;
 havePAN = false;
 sveVL = p->sve_vl_se;
+haveLSE = true;
 }

 // Initial rename mode depends on highestEL
@@ -393,6 +395,10 @@
 miscRegs[MISCREG_ID_AA64ISAR0_EL1] = insertBits(
 miscRegs[MISCREG_ID_AA64ISAR0_EL1], 19, 4,
 haveCrypto ? 0x1112 : 0x0);
+// LSE
+miscRegs[MISCREG_ID_AA64ISAR0_EL1] = insertBits(
+miscRegs[MISCREG_ID_AA64ISAR0_EL1], 23, 20,
+haveLSE ? 0x2 : 0x0);
 // PAN
 miscRegs[MISCREG_ID_AA64MMFR1_EL1] = insertBits(
 miscRegs[MISCREG_ID_AA64MMFR1_EL1], 23, 20,
diff --git a/src/arch/arm/isa.hh b/src/arch/arm/isa.hh
index 63051cd..5e337c2 100644
--- a/src/arch/arm/isa.hh
+++ b/src/arch/arm/isa.hh
@@ -95,6 +95,7 @@
 bool haveGICv3CPUInterface;
 uint8_t physAddrRange;
 bool haveSVE;
+bool haveLSE;
 bool havePAN;

 /** SVE vector length in quadwords */
@@ -687,6 +688,7 @@
 SERIALIZE_SCALAR(physAddrRange);
 SERIALIZE_SCALAR(haveSVE);
 SERIALIZE_SCALAR(sveVL);
+SERIALIZE_SCALAR(haveLSE);
 SERIALIZE_SCALAR(havePAN);
 }
 void unserialize(CheckpointIn )
@@ -704,6 +706,7 @@
 UNSERIALIZE_SCALAR(physAddrRange);
 UNSERIALIZE_SCALAR(haveSVE);
 UNSERIALIZE_SCALAR(sveVL);
+UNSERIALIZE_SCALAR(haveLSE);
 UNSERIALIZE_SCALAR(havePAN);
 }

diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index 874e3b0..4ea0d1a 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -73,6 +73,7 @@
   _haveLargeAsid64(p->have_large_asid_64),
   _haveSVE(p->have_sve),
   _sveVL(p->sve_vl),
+  _haveLSE(p->have_lse),
   _havePAN(p->have_pan),
   _m5opRange(p->m5ops_base ?
  RangeSize(p->m5ops_base, 0x1) :
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index e09f477..46c58e8 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -130,6 +130,11 @@
 /** SVE vector length at reset, in quadwords */
 const unsigned _sveVL;

+/**
+ * True if LSE is implemented (ARMv8.1)
+ */
+const bool _haveLSE;
+
 /** True if Priviledge Access Never is implemented */
 const unsigned _havePAN;

@@ -244,6 +249,9 @@
 /** Returns the SVE vector length at reset, in quadwords */
 unsigned sveVL() const { return _sveVL; }

+/** Returns true if LSE is implemented (ARMv8.1) */
+bool haveLSE() const { return _haveLSE; }
+
 /** Returns true if Priviledge Access Never is implemented */
 bool havePAN() const { return _havePAN; }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19848
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I79c65170f9a4dbc317041f987897444c025fb536
Gerrit-Change-Number: 19848
Gerrit-PatchSet: 1
Gerrit-Owner: Jordi Vaquero 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: cpu-o3: fix atomic instructions non-speculative

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19850 )



Change subject: cpu-o3: fix atomic instructions non-speculative
..

cpu-o3: fix atomic instructions non-speculative

Fix problem with O3 and AMO instructions. At initial stages amo
instruction is considered a type of non-speculative store. After
the instruction has been commited and during the squash step,
acquire_release version of the AMO operation is considered speculative,
that differents results in an assert fault. This fix ensures that AMO
instructions are always considered non-speculative, during early stages
and during squas/removal of the instruction.

Change-Id: Iccd981bc6d271b8259399ae668b3c1851562fb84
---
M src/cpu/o3/inst_queue_impl.hh
1 file changed, 0 insertions(+), 1 deletion(-)



diff --git a/src/cpu/o3/inst_queue_impl.hh b/src/cpu/o3/inst_queue_impl.hh
index c3e3fdf..f3362f2 100644
--- a/src/cpu/o3/inst_queue_impl.hh
+++ b/src/cpu/o3/inst_queue_impl.hh
@@ -1262,7 +1262,6 @@

 bool is_acq_rel = squashed_inst->isMemBarrier() &&
  (squashed_inst->isLoad() ||
-  squashed_inst->isAtomic() ||
   (squashed_inst->isStore() &&
  !squashed_inst->isStoreConditional()));


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19850
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Iccd981bc6d271b8259399ae668b3c1851562fb84
Gerrit-Change-Number: 19850
Gerrit-PatchSet: 1
Gerrit-Owner: Jordi Vaquero 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

2019-08-07 Thread Jordi Vaquero (Gerrit)
Jordi Vaquero has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19849 )



Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic  
instructions

..

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: I8b6d9d3738bec5cfaf7449fd787551be2db8cd81
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)



diff --git a/src/arch/arm/insts/mem64.hh b/src/arch/arm/insts/mem64.hh
index 8e21bb3..57328a7 100644
--- a/src/arch/arm/insts/mem64.hh
+++ b/src/arch/arm/insts/mem64.hh
@@ -260,6 +260,52 @@
 std::string generateDisassembly(
 Addr pc, const SymbolTable *symtab) const override;
 };
+
+/**
+ * A generic atomic op class
+ */
+
+template
+class AtomicGenericOp : public TypedAtomicOpFunctor
+{
+  public:
+AtomicGenericOp(T _a, std::function _op)
+: a(_a), op(_op)
+{}
+AtomicOpFunctor* clone()
+{
+  return new AtomicGenericOp(*this);
+}
+void execute(T *b)
+{
+  op(b, a);
+}
+  private:
+T a;
+std::function op;
+ };
+
+template
+class AtomicGenericOp3Param : public TypedAtomicOpFunctor
+{
+  public:
+AtomicGenericOp3Param(T _a, T _c, std::function _op)
+  : a(_a), c(_c), op(_op)
+{}
+AtomicOpFunctor* clone()
+{
+  return new AtomicGenericOp3Param(*this);
+}
+void execute(T *b)
+{
+  op(b, a, c);
+}
+  private:
+T a;
+T c;
+std::function op;
+};
+
 }

 #endif //__ARCH_ARM_INSTS_MEM_HH__

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19849
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I8b6d9d3738bec5cfaf7449fd787551be2db8cd81
Gerrit-Change-Number: 19849
Gerrit-PatchSet: 1
Gerrit-Owner: Jordi Vaquero 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: arch-arm: Added LD/ST atomic instruction family and SWP instrs

2019-08-07 Thread Jordi Vaquero (Gerrit)

Hello Andreas Sandberg, Giacomo Travaglini,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19812

to look at the new patch set (#3).

Change subject: arch-arm: Added LD/ST atomic instruction family and SWP  
instrs

..

arch-arm: Added LD/ST atomic instruction family and SWP instrs

Adding LD/ST/SWP family of instructions, LD/ST include a set of
operations like ADD/CLR/EOR/SET/UMAX/UMIN/SMAX/SMIN
This commit includes:
+ Instruction decode
+ Instruction functional code
+ New set of skeletons for Ex/Com/Ini/Constructor and declaration.

Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
---
M src/arch/arm/isa/formats/aarch64.isa
M src/arch/arm/isa/insts/amo64.isa
M src/arch/arm/isa/templates/mem64.isa
3 files changed, 1,039 insertions(+), 27 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19812
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
Gerrit-Change-Number: 19812
Gerrit-PatchSet: 3
Gerrit-Owner: Jordi Vaquero 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: tests: Add base class for fixtures that generate a target file

2019-08-07 Thread Nikos Nikoleris (Gerrit)

Hello kokoro, Ciro Santilli, Giacomo Travaglini, Jason Lowe-Power,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19250

to look at the new patch set (#8).

Change subject: tests: Add base class for fixtures that generate a target  
file

..

tests: Add base class for fixtures that generate a target file

The new TargetFixture can be used as a base class for fixtures that
generate/download a file. These fixtures are guarrantied to be unique
and their setup function is only executed once.

Change-Id: I6a8737b06c4e74f3e29736ec363f61251d85da8c
Signed-off-by: Nikos Nikoleris 
---
M tests/gem5/fixture.py
1 file changed, 52 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19250
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I6a8737b06c4e74f3e29736ec363f61251d85da8c
Gerrit-Change-Number: 19250
Gerrit-PatchSet: 8
Gerrit-Owner: Nikos Nikoleris 
Gerrit-Assignee: Jason Lowe-Power 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: tests: Refactor the Gem5Fixture to derive from UniqueFixture

2019-08-07 Thread Nikos Nikoleris (Gerrit)

Hello kokoro, Ciro Santilli, Giacomo Travaglini, Jason Lowe-Power,

I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/19251

to look at the new patch set (#8).

Change subject: tests: Refactor the Gem5Fixture to derive from UniqueFixture
..

tests: Refactor the Gem5Fixture to derive from UniqueFixture

Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
---
M ext/testlib/fixture.py
M ext/testlib/loader.py
M ext/testlib/main.py
M ext/testlib/wrappers.py
M tests/gem5/fixture.py
5 files changed, 50 insertions(+), 119 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19251
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ie868a7e18ef6c3271f3c8a658229657cd43997cb
Gerrit-Change-Number: 19251
Gerrit-PatchSet: 8
Gerrit-Owner: Nikos Nikoleris 
Gerrit-Assignee: Jason Lowe-Power 
Gerrit-Reviewer: Ciro Santilli 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: tests: Add Arm full system regressions to the new framework

2019-08-07 Thread Nikos Nikoleris (Gerrit)
Hello Andreas Sandberg, Rahul Thakur, kokoro, Giacomo Travaglini, Jason  
Lowe-Power,


I'd like you to reexamine a change. Please visit

https://gem5-review.googlesource.com/c/public/gem5/+/18989

to look at the new patch set (#13).

Change subject: tests: Add Arm full system regressions to the new framework
..

tests: Add Arm full system regressions to the new framework

Change-Id: I7e0499c8c3d63798d44f936580eecd40dc650694
Signed-off-by: Nikos Nikoleris 
---
A tests/gem5/fs/linux/arm/run.py
A tests/gem5/fs/linux/arm/test.py
2 files changed, 196 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18989
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I7e0499c8c3d63798d44f936580eecd40dc650694
Gerrit-Change-Number: 18989
Gerrit-PatchSet: 13
Gerrit-Owner: Nikos Nikoleris 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: Rahul Thakur 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Change in gem5/gem5[master]: dev-arm: Perform SMMUv3 CFG Invalidation at device interface

2019-08-07 Thread Giacomo Travaglini (Gerrit)
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19813 )


Change subject: dev-arm: Perform SMMUv3 CFG Invalidation at device interface
..

dev-arm: Perform SMMUv3 CFG Invalidation at device interface

In the current SMMUv3 model, multiple micro/mainTLB are present at the
device interface (SMMUv3SlaveInterface), caching translations specific
to a device.
Those distributed TLBs are checked for a translation before checking for
centralized TLBs (shared by devices), like the configuration cache, walk
cache etc.  This means that if a hit in these TLBs occurs, there won't
be a need to enter configuration stage (which is where the STE and CD
are retrieved).  So if we invalidate a cached configuration (in
ConfigCache), we need to invalidate those interface TLB entries as well,
otherwise in theory we will keep the same translation even after a
change in configuration tables.

Change-Id: I4aa36ba8392a530267517bef7562318b282bee25
Signed-off-by: Giacomo Travaglini 
Reviewed-by: Michiel van Tol 
Reviewed-by: Andreas Sandberg 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19813
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/dev/arm/smmu_v3.cc
M src/dev/arm/smmu_v3_caches.cc
M src/dev/arm/smmu_v3_caches.hh
3 files changed, 66 insertions(+), 1 deletion(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/dev/arm/smmu_v3.cc b/src/dev/arm/smmu_v3.cc
index 2853929..f17ef95 100644
--- a/src/dev/arm/smmu_v3.cc
+++ b/src/dev/arm/smmu_v3.cc
@@ -395,6 +395,11 @@
 case CMD_CFGI_STE: {
 DPRINTF(SMMUv3, "CMD_CFGI_STE sid=%#x\n", cmd.dw0.sid);
 configCache.invalidateSID(cmd.dw0.sid);
+
+for (auto slave_interface : slaveInterfaces) {
+slave_interface->microTLB->invalidateSID(cmd.dw0.sid);
+slave_interface->mainTLB->invalidateSID(cmd.dw0.sid);
+}
 break;
 }

@@ -405,12 +410,23 @@
 // range = 31
 DPRINTF(SMMUv3, "CMD_CFGI_ALL\n");
 configCache.invalidateAll();
+
+for (auto slave_interface : slaveInterfaces) {
+slave_interface->microTLB->invalidateAll();
+slave_interface->mainTLB->invalidateAll();
+}
 } else {
 DPRINTF(SMMUv3, "CMD_CFGI_STE_RANGE\n");
 const auto start_sid = cmd.dw0.sid & ~((1 << (range + 1))  
- 1);

 const auto end_sid = start_sid + (1 << (range + 1)) - 1;
-for (auto sid = start_sid; sid <= end_sid; sid++)
+for (auto sid = start_sid; sid <= end_sid; sid++) {
 configCache.invalidateSID(sid);
+
+for (auto slave_interface : slaveInterfaces) {
+slave_interface->microTLB->invalidateSID(sid);
+slave_interface->mainTLB->invalidateSID(sid);
+}
+}
 }
 break;
 }
@@ -419,12 +435,24 @@
 DPRINTF(SMMUv3, "CMD_CFGI_CD sid=%#x ssid=%#x\n",
 cmd.dw0.sid, cmd.dw0.ssid);
 configCache.invalidateSSID(cmd.dw0.sid, cmd.dw0.ssid);
+
+for (auto slave_interface : slaveInterfaces) {
+slave_interface->microTLB->invalidateSSID(
+cmd.dw0.sid, cmd.dw0.ssid);
+slave_interface->mainTLB->invalidateSSID(
+cmd.dw0.sid, cmd.dw0.ssid);
+}
 break;
 }

 case CMD_CFGI_CD_ALL: {
 DPRINTF(SMMUv3, "CMD_CFGI_CD_ALL sid=%#x\n", cmd.dw0.sid);
 configCache.invalidateSID(cmd.dw0.sid);
+
+for (auto slave_interface : slaveInterfaces) {
+slave_interface->microTLB->invalidateSID(cmd.dw0.sid);
+slave_interface->mainTLB->invalidateSID(cmd.dw0.sid);
+}
 break;
 }

diff --git a/src/dev/arm/smmu_v3_caches.cc b/src/dev/arm/smmu_v3_caches.cc
index 6dcaec6..63f0b05 100644
--- a/src/dev/arm/smmu_v3_caches.cc
+++ b/src/dev/arm/smmu_v3_caches.cc
@@ -258,6 +258,34 @@
 }

 void
+SMMUTLB::invalidateSSID(uint32_t sid, uint32_t ssid)
+{
+Set  = sets[pickSetIdx(sid, ssid)];
+
+for (size_t i = 0; i < set.size(); i++) {
+Entry  = set[i];
+
+if (e.sid == sid && e.ssid == ssid)
+e.valid = false;
+}
+}
+
+void
+SMMUTLB::invalidateSID(uint32_t sid)
+{
+for (size_t s = 0; s < sets.size(); s++) {
+Set  = sets[s];
+
+for (size_t i = 0; i < set.size(); i++) {
+Entry  = set[i];
+
+if (e.sid == sid)
+e.valid = false;
+}
+}
+}
+
+void
 SMMUTLB::invalidateVA(Addr va, uint16_t asid, uint16_t vmid)
 {
 Set  = 

[gem5-dev] Change in gem5/gem5[master]: mem-cache: Fix non-virtual base destructor of Repl Entry

2019-08-07 Thread Daniel Carvalho (Gerrit)
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19808 )


Change subject: mem-cache: Fix non-virtual base destructor of Repl Entry
..

mem-cache: Fix non-virtual base destructor of Repl Entry

ReplaceableEntry contains a virtual method, yet its destructor
was not virtual, causing errors in some compilers.

Change-Id: I13deec843f4007d9deb924882a8d98ff6a89c84f
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19808
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/replacement_policies/replaceable_entry.hh
1 file changed, 9 insertions(+), 6 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/replacement_policies/replaceable_entry.hh  
b/src/mem/cache/replacement_policies/replaceable_entry.hh

index dffa4cf..c558bee 100644
--- a/src/mem/cache/replacement_policies/replaceable_entry.hh
+++ b/src/mem/cache/replacement_policies/replaceable_entry.hh
@@ -63,12 +63,15 @@
  */
 uint32_t _way;

-   public:
- /**
-  * Replacement data associated to this entry.
-  * It must be instantiated by the replacement policy before being  
used.

-  */
- std::shared_ptr replacementData;
+  public:
+ReplaceableEntry() = default;
+virtual ~ReplaceableEntry() = default;
+
+/**
+ * Replacement data associated to this entry.
+ * It must be instantiated by the replacement policy before being used.
+ */
+std::shared_ptr replacementData;

 /**
  * Set both the set and way. Should be called only once.

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19808
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I13deec843f4007d9deb924882a8d98ff6a89c84f
Gerrit-Change-Number: 19808
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

[gem5-dev] Cron /z/m5/regression/do-regression quick

2019-08-07 Thread Cron Daemon
* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: FAILED!
* 
build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer:
 FAILED!
* 
build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level:
 FAILED!
* 
build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory:
 FAILED!
* 
build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token:
 FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-atomic: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/o3-timing: 
FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby:
 FAILED!
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/o3-timing: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing: 
FAILED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: 
CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: 
CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: CHANGED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple:
 CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: CHANGED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: 
CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual:
 CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual:
 CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: 
CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic:
 CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-openpage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: CHANGED!
* build/NULL/tests/opt/quick/se/80.dram-closepage/null/none/dram-lowp: 
CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: 
CHANGED!
* build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp:
 CHANGED!
* 
build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 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-ruby: 
CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: 
CHANGED!
* 
build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: 
CHANGED!
* build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: 
CHANGED!
* build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: CHANGED!
* build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: 
CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level:
 CHANGED!
*