[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Enable set size increase

2019-05-30 Thread John Alsop (Gerrit)
Hello kokoro, Tiago Mück, Bradford Beckmann, Anthony Gutierrez, Jason  
Lowe-Power,


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

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

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

Change subject: mem-ruby: Enable set size increase
..

mem-ruby: Enable set size increase

Add NUMBER_BITS_PER_SET environment variable to control
the size of the bitmask in Set.hh (default=64).
Necessary for configs which require >64 instances of a given
machine type. This can be set in the build_opts file, e.g.
by adding the following line:
NUMBER_BITS_PER_SET = 

Change-Id: I314a3cadca8ce975fcf4a60d9022494751688e88
---
M SConstruct
M src/mem/ruby/common/SConscript
M src/mem/ruby/common/Set.hh
3 files changed, 20 insertions(+), 3 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18968
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: I314a3cadca8ce975fcf4a60d9022494751688e88
Gerrit-Change-Number: 18968
Gerrit-PatchSet: 3
Gerrit-Owner: John Alsop 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: John Alsop 
Gerrit-Reviewer: Tiago Mück 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Nikos Nikoleris 
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 initial support for SVE gather/scatter loads/stores

2019-05-30 Thread Giacomo Gabrielli (Gerrit)
Giacomo Gabrielli has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/13521 )


Change subject: arch-arm: Add initial support for SVE gather/scatter  
loads/stores

..

arch-arm: Add initial support for SVE gather/scatter loads/stores

Change-Id: I891623015b47a39f61ed616f8896f32a7134c8e2
Signed-off-by: Giacomo Gabrielli 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13521
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
A src/arch/arm/insts/sve_macromem.hh
M src/arch/arm/isa/formats/sve_2nd_level.isa
M src/arch/arm/isa/includes.isa
M src/arch/arm/isa/insts/sve_mem.isa
M src/arch/arm/isa/operands.isa
M src/arch/arm/isa/templates/sve_mem.isa
M src/arch/arm/registers.hh
7 files changed, 1,403 insertions(+), 100 deletions(-)

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



diff --git a/src/arch/arm/insts/sve_macromem.hh  
b/src/arch/arm/insts/sve_macromem.hh

new file mode 100644
index 000..a31af9b
--- /dev/null
+++ b/src/arch/arm/insts/sve_macromem.hh
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2018 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Giacomo Gabrielli
+ */
+
+#ifndef __ARCH_ARM_SVE_MACROMEM_HH__
+#define __ARCH_ARM_SVE_MACROMEM_HH__
+
+#include "arch/arm/generated/decoder.hh"
+#include "arch/arm/insts/pred_inst.hh"
+
+namespace ArmISA {
+
+template  class MicroopType>
+class SveIndexedMemVI : public PredMacroOp
+{
+  protected:
+IntRegIndex dest;
+IntRegIndex gp;
+IntRegIndex base;
+uint64_t imm;
+
+  public:
+SveIndexedMemVI(const char *mnem, ExtMachInst machInst, OpClass  
__opClass,

+IntRegIndex _dest, IntRegIndex _gp, IntRegIndex _base,
+uint64_t _imm)
+: PredMacroOp(mnem, machInst, __opClass),
+  dest(_dest), gp(_gp), base(_base), imm(_imm)
+{
+bool isLoad = (__opClass == MemReadOp);
+
+int num_elems = ((machInst.sveLen + 1) * 16) / sizeof(RegElemType);
+
+numMicroops = num_elems;
+if (isLoad) {
+numMicroops++;
+}
+
+microOps = new StaticInstPtr[numMicroops];
+
+StaticInstPtr *uop = microOps;
+
+if (isLoad) {
+// The first microop of a gather load copies the source vector
+// register used for address calculation to an auxiliary  
register,
+// with all subsequent microops reading from the latter.  This  
is

+// needed to properly handle cases where the source vector
+// register is the same as the destination register
+*uop = new ArmISAInst::SveGatherLoadCpySrcVecMicroop(
+mnem, machInst, _base, this);
+uop++;
+}
+
+for (int i = 0; i < num_elem

[gem5-dev] Change in gem5/gem5[master]: cpu: Fix rescheduling of progress check events

2019-05-30 Thread Tiago Mück (Gerrit)
Tiago Mück has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18793 )


Change subject: cpu: Fix rescheduling of progress check events
..

cpu: Fix rescheduling of progress check events

noRequestEvent needs to be rescheduled on recvRetry, otherwise the timeout
may be triggered even though packets are being eventually sent.
noResponseEvent scheduling is also fixed. This timeout should not be
active when we are not expecting a response.

Change-Id: If9edb75b5b803caf9f99bf41ea3948b15a3f3d71
Signed-off-by: Tiago Muck 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18793
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/cpu/testers/memtest/memtest.cc
1 file changed, 12 insertions(+), 4 deletions(-)

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



diff --git a/src/cpu/testers/memtest/memtest.cc  
b/src/cpu/testers/memtest/memtest.cc

index 93a6ac6..742cf3b 100644
--- a/src/cpu/testers/memtest/memtest.cc
+++ b/src/cpu/testers/memtest/memtest.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 ARM Limited
+ * Copyright (c) 2015, 2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -120,7 +120,6 @@
 // kick things into action
 schedule(tickEvent, curTick());
 schedule(noRequestEvent, clockEdge(progressCheck));
-schedule(noResponseEvent, clockEdge(progressCheck));
 }

 Port &
@@ -189,8 +188,12 @@
 // the packet will delete the data
 delete pkt;

-// finally shift the response timeout forward
-reschedule(noResponseEvent, clockEdge(progressCheck), true);
+// finally shift the response timeout forward if we are still
+// expecting responses; deschedule it otherwise
+if (outstandingAddrs.size() != 0)
+reschedule(noResponseEvent, clockEdge(progressCheck));
+else if (noResponseEvent.scheduled())
+deschedule(noResponseEvent);
 }

 void
@@ -303,6 +306,10 @@
 } else {
 DPRINTF(MemTest, "Waiting for retry\n");
 }
+
+// Schedule noResponseEvent now if we are expecting a response
+if (!noResponseEvent.scheduled() && (outstandingAddrs.size() != 0))
+schedule(noResponseEvent, clockEdge(progressCheck));
 }

 void
@@ -327,6 +334,7 @@
 retryPkt = nullptr;
 // kick things into action again
 schedule(tickEvent, clockEdge(interval));
+reschedule(noRequestEvent, clockEdge(progressCheck), true);
 }
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18793
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: If9edb75b5b803caf9f99bf41ea3948b15a3f3d71
Gerrit-Change-Number: 18793
Gerrit-PatchSet: 3
Gerrit-Owner: Tiago Mück 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Tiago Mück 
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: Add include guards to auto-gen. decode header

2019-05-30 Thread Giacomo Gabrielli (Gerrit)
Giacomo Gabrielli has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18911 )


Change subject: arch: Add include guards to auto-gen. decode header
..

arch: Add include guards to auto-gen. decode header

Change-Id: I03bfc9035b82bc1a42e799cf645d43cb5dafb4cb
Signed-off-by: Giacomo Gabrielli 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18911
Tested-by: kokoro 
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
---
M src/arch/isa_parser.py
1 file changed, 6 insertions(+), 1 deletion(-)

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



diff --git a/src/arch/isa_parser.py b/src/arch/isa_parser.py
index 48bc23f..7f09b16 100755
--- a/src/arch/isa_parser.py
+++ b/src/arch/isa_parser.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2014, 2016, 2019 ARM Limited
+# Copyright (c) 2014, 2016, 2018-2019 ARM Limited
 # All rights reserved
 #
 # The license below extends only to copyright in the software and shall
@@ -1652,6 +1652,9 @@
 # decoder header - everything depends on this
 file = 'decoder.hh'
 with self.open(file) as f:
+f.write('#ifndef __ARCH_%(isa)s_GENERATED_DECODER_HH__\n'
+'#define __ARCH_%(isa)s_GENERATED_DECODER_HH__\n\n' %
+{'isa': self.isa_name.upper()})
 fn = 'decoder-g.hh.inc'
 assert(fn in self.files)
 f.write('#include "%s"\n' % fn)
@@ -1660,6 +1663,8 @@
 assert(fn in self.files)
 f.write('namespace %s {\n#include "%s"\n}\n'
 % (self.namespace, fn))
+f.write('\n#endif  // __ARCH_%s_GENERATED_DECODER_HH__\n' %
+self.isa_name.upper())

 # decoder method - cannot be split
 file = 'decoder.cc'

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18911
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: I03bfc9035b82bc1a42e799cf645d43cb5dafb4cb
Gerrit-Change-Number: 18911
Gerrit-PatchSet: 4
Gerrit-Owner: Giacomo Gabrielli 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Gabrielli 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Giacomo Travaglini 
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: Add support for pinned writes

2019-05-30 Thread Giacomo Gabrielli (Gerrit)
Giacomo Gabrielli has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/13520 )


Change subject: cpu-o3: Add support for pinned writes
..

cpu-o3: Add support for pinned writes

This patch adds support for pinning registers for a certain number of
consecutive writes.  This is only relevant for timing CPU models
(functional-only models are unaffected), and it is primarily needed to
provide a realistic execution model for micro-coded operations whose
microops can write to non-overlapping portions of a destination
register, e.g. vector gather loads.  In those cases, this mechanism
can disable renaming for a sequence of consecutive writes, thus making
the resulting execution more efficient: allocating a new physical
register for each microop would introduce a read-modify-write chain of
dependencies, while with these modifications the microops can write
back in parallel.

Please note that this new feature is only leveraged by O3CPU for the
time being.

Additional authors:
- Gabor Dozsa 

Change-Id: I07eb5fdbd1fa0b748c9bdc1174d9f330fda34f81
Signed-off-by: Giacomo Gabrielli 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13520
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/cpu/base_dyn_inst.hh
M src/cpu/base_dyn_inst_impl.hh
M src/cpu/o3/free_list.hh
M src/cpu/o3/iew_impl.hh
M src/cpu/o3/inst_queue_impl.hh
M src/cpu/o3/regfile.cc
M src/cpu/o3/regfile.hh
M src/cpu/o3/rename_impl.hh
M src/cpu/o3/rename_map.cc
M src/cpu/reg_class.hh
10 files changed, 183 insertions(+), 45 deletions(-)

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



diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh
index 22a32ec..6f9555a 100644
--- a/src/cpu/base_dyn_inst.hh
+++ b/src/cpu/base_dyn_inst.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, 2016-2018 ARM Limited
+ * Copyright (c) 2011, 2013, 2016-2019 ARM Limited
  * Copyright (c) 2013 Advanced Micro Devices, Inc.
  * All rights reserved.
  *
@@ -116,6 +116,9 @@
 SquashedInIQ,/// Instruction is squashed in the IQ
 SquashedInLSQ,   /// Instruction is squashed in the LSQ
 SquashedInROB,   /// Instruction is squashed in the ROB
+PinnedRegsRenamed,   /// Pinned registers are renamed
+PinnedRegsWritten,   /// Pinned registers are written back
+PinnedRegsSquashDone,/// Regs pinning status updated after  
squash

 RecoverInst, /// Is a recover instruction
 BlockingInst,/// Is a blocking instruction
 ThreadsyncWait,  /// Is a thread synchronization  
instruction

@@ -173,12 +176,14 @@
 /** PC state for this instruction. */
 TheISA::PCState pc;

+  private:
 /* An amalgamation of a lot of boolean values into one */
 std::bitset instFlags;

 /** The status of this BaseDynInst.  Several bits can be set. */
 std::bitset status;

+  protected:
  /** Whether or not the source register is ready.
  *  @todo: Not sure this should be here vs the derived class.
  */
@@ -385,6 +390,8 @@
 {
 _destRegIdx[idx] = renamed_dest;
 _prevDestRegIdx[idx] = previous_rename;
+if (renamed_dest->isPinned())
+setPinnedRegsRenamed();
 }

 /** Renames a source logical register to the physical register which
@@ -767,7 +774,7 @@
 bool isCommitted() const { return status[Committed]; }

 /** Sets this instruction as squashed. */
-void setSquashed() { status.set(Squashed); }
+void setSquashed();

 /** Returns whether or not this instruction is squashed. */
 bool isSquashed() const { return status[Squashed]; }
@@ -802,7 +809,7 @@
 bool isInLSQ() const { return status[LsqEntry]; }

 /** Sets this instruction as squashed in the LSQ. */
-void setSquashedInLSQ() { status.set(SquashedInLSQ);}
+void setSquashedInLSQ() { status.set(SquashedInLSQ);  
status.set(Squashed);}


 /** Returns whether or not this instruction is squashed in the LSQ. */
 bool isSquashedInLSQ() const { return status[SquashedInLSQ]; }
@@ -825,6 +832,41 @@
 /** Returns whether or not this instruction is squashed in the ROB. */
 bool isSquashedInROB() const { return status[SquashedInROB]; }

+/** Returns whether pinned registers are renamed */
+bool isPinnedRegsRenamed() const { return status[PinnedRegsRenamed]; }
+
+/** Sets the destination registers as renamed */
+void
+setPinnedRegsRenamed()
+{
+assert(!status[PinnedRegsSquashDone]);
+assert(!status[PinnedRegsWritten]);
+status.set(PinnedRegsRenamed);
+}
+
+/** Returns whether destination registers are written */
+bool isPinnedRegsWritten() const { return status[PinnedRegsWritten]; }
+
+/** Sets destination regis

[gem5-dev] Change in gem5/gem5[master]: dev-arm: Implement a SMMUv3 model

2019-05-30 Thread Giacomo Travaglini (Gerrit)

Hello Andreas Sandberg,

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

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

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

Change subject: dev-arm: Implement a SMMUv3 model
..

dev-arm: Implement a SMMUv3 model

This is an implementation of the SMMUv3 architecture.

What can it do?
- Single-stage and nested translation with 4k or 64k granule.  16k would
  be straightforward to add.
- Large pages are supported.
- Works with any gem5 device as long as it is issuing packets with a
  valid (Sub)StreamId

What it can't do?
- Fragment stage 1 page when the underlying stage 2 page is smaller.  S1
  page size > S2 page size is not supported
- Invalidations take zero time. This wouldn't be hard to fix.
- Checkpointing is not supported
- Stall/resume for faulting transactions is not supported

Additional contributors:
- Michiel W. van Tol 
- Giacomo Travaglini 

Change-Id: Ibc606fccd9199b2c1ba739c6335c846ffaa4d564
Signed-off-by: Giacomo Travaglini 
Reviewed-by: Andreas Sandberg 
---
M src/dev/arm/SConscript
A src/dev/arm/SMMUv3.py
A src/dev/arm/amba.hh
A src/dev/arm/smmu_v3.cc
A src/dev/arm/smmu_v3.hh
A src/dev/arm/smmu_v3_caches.cc
A src/dev/arm/smmu_v3_caches.hh
A src/dev/arm/smmu_v3_cmdexec.cc
A src/dev/arm/smmu_v3_cmdexec.hh
A src/dev/arm/smmu_v3_defs.hh
A src/dev/arm/smmu_v3_events.cc
A src/dev/arm/smmu_v3_events.hh
A src/dev/arm/smmu_v3_ports.cc
A src/dev/arm/smmu_v3_ports.hh
A src/dev/arm/smmu_v3_proc.cc
A src/dev/arm/smmu_v3_proc.hh
A src/dev/arm/smmu_v3_ptops.cc
A src/dev/arm/smmu_v3_ptops.hh
A src/dev/arm/smmu_v3_slaveifc.cc
A src/dev/arm/smmu_v3_slaveifc.hh
A src/dev/arm/smmu_v3_transl.cc
A src/dev/arm/smmu_v3_transl.hh
22 files changed, 6,571 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19008
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: Ibc606fccd9199b2c1ba739c6335c846ffaa4d564
Gerrit-Change-Number: 19008
Gerrit-PatchSet: 2
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
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]: mem: Remove the now unused Copy* methods from the FS port proxy.

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18576 )


Change subject: mem: Remove the now unused Copy* methods from the FS port  
proxy.

..

mem: Remove the now unused Copy* methods from the FS port proxy.

Change-Id: Ie433a9e4c9ee748911060eb7b1b47e617aa297a6
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18576
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Brandon Potter 
Reviewed-by: Andreas Sandberg 
Maintainer: Jason Lowe-Power 
---
M src/mem/fs_translating_port_proxy.cc
M src/mem/fs_translating_port_proxy.hh
2 files changed, 0 insertions(+), 49 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  Andreas Sandberg: Looks good to me, approved
  Brandon Potter: Looks good to me, but someone else must approve
  kokoro: Regressions pass



diff --git a/src/mem/fs_translating_port_proxy.cc  
b/src/mem/fs_translating_port_proxy.cc

index 2e17cbf..6a25d11 100644
--- a/src/mem/fs_translating_port_proxy.cc
+++ b/src/mem/fs_translating_port_proxy.cc
@@ -119,47 +119,3 @@
 }
 return true;
 }
-
-void
-CopyOut(ThreadContext *tc, void *dest, Addr src, size_t cplen)
-{
-uint8_t *dst = (uint8_t *)dest;
-tc->getVirtProxy().readBlob(src, dst, cplen);
-}
-
-void
-CopyIn(ThreadContext *tc, Addr dest, const void *source, size_t cplen)
-{
-uint8_t *src = (uint8_t *)source;
-tc->getVirtProxy().writeBlob(dest, src, cplen);
-}
-
-void
-CopyStringOut(ThreadContext *tc, char *dst, Addr vaddr, size_t maxlen)
-{
-char *start = dst;
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
-
-bool foundNull = false;
-while ((dst - start + 1) < maxlen && !foundNull) {
-vp.readBlob(vaddr++, (uint8_t*)dst, 1);
-if (*dst == '\0')
-foundNull = true;
-dst++;
-}
-
-if (!foundNull)
-*dst = '\0';
-}
-
-void
-CopyStringIn(ThreadContext *tc, const char *src, Addr vaddr)
-{
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
-for (ChunkGenerator gen(vaddr, strlen(src),  
TheISA::PageBytes); !gen.done();

- gen.next())
-{
-vp.writeBlob(gen.addr(), (uint8_t*)src, gen.size());
-src += gen.size();
-}
-}
diff --git a/src/mem/fs_translating_port_proxy.hh  
b/src/mem/fs_translating_port_proxy.hh

index 78adf1a..410eb7d 100644
--- a/src/mem/fs_translating_port_proxy.hh
+++ b/src/mem/fs_translating_port_proxy.hh
@@ -97,9 +97,4 @@
 bool tryMemsetBlob(Addr address, uint8_t  v, int size) const override;
 };

-void CopyOut(ThreadContext *tc, void *dest, Addr src, size_t cplen);
-void CopyIn(ThreadContext *tc, Addr dest, const void *source, size_t  
cplen);
-void CopyStringOut(ThreadContext *tc, char *dst, Addr vaddr, size_t  
maxlen);

-void CopyStringIn(ThreadContext *tc, const char *src, Addr vaddr);
-
 #endif //__MEM_FS_TRANSLATING_PORT_PROXY_HH__

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18576
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: Ie433a9e4c9ee748911060eb7b1b47e617aa297a6
Gerrit-Change-Number: 18576
Gerrit-PatchSet: 6
Gerrit-Owner: Gabe Black 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
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] Change in gem5/gem5[master]: kern: Replace an explicitly instantiated port proxy with one from the...

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18578 )


Change subject: kern: Replace an explicitly instantiated port proxy with  
one from the tc.

..

kern: Replace an explicitly instantiated port proxy with one from the tc.

That avoids having to know what type of proxy to create.

Change-Id: I311e770ab720061b52f29df0dcc2273e028aa34a
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18578
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Brandon Potter 
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
---
M src/kern/linux/helpers.cc
1 file changed, 1 insertion(+), 1 deletion(-)

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



diff --git a/src/kern/linux/helpers.cc b/src/kern/linux/helpers.cc
index ed58427..e514ef8 100644
--- a/src/kern/linux/helpers.cc
+++ b/src/kern/linux/helpers.cc
@@ -94,7 +94,7 @@
 {
 System *system = tc->getSystemPtr();
 const SymbolTable *symtab = system->kernelSymtab;
-FSTranslatingPortProxy proxy(tc);
+PortProxy &proxy = tc->getVirtProxy();

 Addr addr_lb = 0, addr_lb_len = 0, addr_first = 0, addr_next = 0;
 const bool found_symbols =

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18578
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: I311e770ab720061b52f29df0dcc2273e028aa34a
Gerrit-Change-Number: 18578
Gerrit-PatchSet: 6
Gerrit-Owner: Gabe Black 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
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] Change in gem5/gem5[master]: cpu: Store the translating proxy with the same pointer in SE or FS mode.

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18580 )


Change subject: cpu: Store the translating proxy with the same pointer in  
SE or FS mode.

..

cpu: Store the translating proxy with the same pointer in SE or FS mode.

Only one is active at a time, so they can share the same pointer.

Change-Id: Ie4ae1f0ffbf9448f6730f9c7d072bc85d6d423da
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18580
Tested-by: kokoro 
Maintainer: Gabe Black 
Reviewed-by: Brandon Potter 
---
M src/cpu/thread_state.cc
M src/cpu/thread_state.hh
2 files changed, 9 insertions(+), 12 deletions(-)

Approvals:
  Brandon Potter: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc
index c9fc564..3396c75 100644
--- a/src/cpu/thread_state.cc
+++ b/src/cpu/thread_state.cc
@@ -49,7 +49,7 @@
   _contextId(0), _threadId(_tid), lastActivate(0), lastSuspend(0),
   profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL),
   kernelStats(NULL), process(_process), physProxy(NULL),  
virtProxy(NULL),

-  proxy(NULL), funcExeInst(0), storeCondFailures(0)
+  funcExeInst(0), storeCondFailures(0)
 {
 }

@@ -59,8 +59,6 @@
 delete physProxy;
 if (virtProxy != NULL)
 delete virtProxy;
-if (proxy != NULL)
-delete proxy;
 }

 void
@@ -118,8 +116,8 @@
 assert(virtProxy == NULL);
 virtProxy = new FSTranslatingPortProxy(tc);
 } else {
-assert(proxy == NULL);
-proxy = new SETranslatingPortProxy(baseCpu->getDataPort(),
+assert(virtProxy == NULL);
+virtProxy = new SETranslatingPortProxy(baseCpu->getDataPort(),
process,
 
SETranslatingPortProxy::NextPage);

 }
@@ -145,8 +143,8 @@
 ThreadState::getMemProxy()
 {
 assert(!FullSystem);
-assert(proxy != NULL);
-return *proxy;
+assert(virtProxy != NULL);
+return *virtProxy;
 }

 void
diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh
index e00c86f..db4a3f4 100644
--- a/src/cpu/thread_state.hh
+++ b/src/cpu/thread_state.hh
@@ -115,9 +115,9 @@
  * the se translating port proxy needs to be reinitialized since it
  * holds a pointer to the process class.
  */
-if (proxy) {
-delete proxy;
-proxy = NULL;
+if (virtProxy) {
+delete virtProxy;
+virtProxy = NULL;
 initMemProxies(NULL);
 }
 }
@@ -197,8 +197,7 @@

 /** A translating port proxy, outgoing only, for functional
  * accesse to virtual addresses. */
-FSTranslatingPortProxy *virtProxy;
-SETranslatingPortProxy *proxy;
+PortProxy *virtProxy;

   public:
 /*

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18580
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: Ie4ae1f0ffbf9448f6730f9c7d072bc85d6d423da
Gerrit-Change-Number: 18580
Gerrit-PatchSet: 6
Gerrit-Owner: Gabe Black 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
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] Change in gem5/gem5[master]: cpu, sim: Return PortProxy &s from all the proxy accessors.

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18579 )


Change subject: cpu, sim: Return PortProxy &s from all the proxy accessors.
..

cpu, sim: Return PortProxy &s from all the proxy accessors.

This is a step towards merging the accessors for SE and FS modes.

Change-Id: I76818ab88b97097ac363e243be9cc1911b283090
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18579
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Brandon Potter 
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
---
M src/cpu/checker/thread_context.hh
M src/cpu/o3/thread_context.hh
M src/cpu/o3/thread_context_impl.hh
M src/cpu/simple_thread.hh
M src/cpu/thread_context.hh
M src/cpu/thread_state.cc
M src/cpu/thread_state.hh
M src/sim/process.cc
8 files changed, 19 insertions(+), 20 deletions(-)

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



diff --git a/src/cpu/checker/thread_context.hh  
b/src/cpu/checker/thread_context.hh

index ed8add6..46ade24 100644
--- a/src/cpu/checker/thread_context.hh
+++ b/src/cpu/checker/thread_context.hh
@@ -146,7 +146,7 @@

 PortProxy &getPhysProxy() override { return actualTC->getPhysProxy(); }

-FSTranslatingPortProxy &
+PortProxy &
 getVirtProxy() override
 {
 return actualTC->getVirtProxy();
@@ -164,7 +164,7 @@
 actualTC->connectMemPorts(tc);
 }

-SETranslatingPortProxy &
+PortProxy &
 getMemProxy() override
 {
 return actualTC->getMemProxy();
diff --git a/src/cpu/o3/thread_context.hh b/src/cpu/o3/thread_context.hh
index e5f0187..a3698cf 100644
--- a/src/cpu/o3/thread_context.hh
+++ b/src/cpu/o3/thread_context.hh
@@ -132,7 +132,7 @@

 PortProxy &getPhysProxy() override { return thread->getPhysProxy(); }

-FSTranslatingPortProxy &getVirtProxy() override;
+PortProxy &getVirtProxy() override;

 void
 initMemProxies(ThreadContext *tc) override
@@ -140,7 +140,7 @@
 thread->initMemProxies(tc);
 }

-SETranslatingPortProxy &
+PortProxy &
 getMemProxy() override
 {
 return thread->getMemProxy();
diff --git a/src/cpu/o3/thread_context_impl.hh  
b/src/cpu/o3/thread_context_impl.hh

index 58dee98..e05721b 100644
--- a/src/cpu/o3/thread_context_impl.hh
+++ b/src/cpu/o3/thread_context_impl.hh
@@ -54,7 +54,7 @@
 #include "debug/O3CPU.hh"

 template 
-FSTranslatingPortProxy&
+PortProxy&
 O3ThreadContext::getVirtProxy()
 {
 return thread->getVirtProxy();
diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh
index 8b5e49a..991c6bd 100644
--- a/src/cpu/simple_thread.hh
+++ b/src/cpu/simple_thread.hh
@@ -216,18 +216,14 @@
 }

 PortProxy &getPhysProxy() override { return  
ThreadState::getPhysProxy(); }

-FSTranslatingPortProxy &
-getVirtProxy() override
-{
-return ThreadState::getVirtProxy();
-}
+PortProxy &getVirtProxy() override { return  
ThreadState::getVirtProxy(); }


 void initMemProxies(ThreadContext *tc) override
 {
 ThreadState::initMemProxies(tc);
 }

-SETranslatingPortProxy &
+PortProxy &
 getMemProxy() override
 {
 return ThreadState::getMemProxy();
diff --git a/src/cpu/thread_context.hh b/src/cpu/thread_context.hh
index bdf5a00..f8b69d0 100644
--- a/src/cpu/thread_context.hh
+++ b/src/cpu/thread_context.hh
@@ -65,8 +65,6 @@
 class CheckerCPU;
 class Checkpoint;
 class EndQuiesceEvent;
-class SETranslatingPortProxy;
-class FSTranslatingPortProxy;
 class PortProxy;
 class Process;
 class System;
@@ -152,7 +150,7 @@

 virtual PortProxy &getPhysProxy() = 0;

-virtual FSTranslatingPortProxy &getVirtProxy() = 0;
+virtual PortProxy &getVirtProxy() = 0;

 /**
  * Initialise the physical and virtual port proxies and tie them to
@@ -162,7 +160,7 @@
  */
 virtual void initMemProxies(ThreadContext *tc) = 0;

-virtual SETranslatingPortProxy &getMemProxy() = 0;
+virtual PortProxy &getMemProxy() = 0;

 virtual Process *getProcessPtr() = 0;

diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc
index acb2971..c9fc564 100644
--- a/src/cpu/thread_state.cc
+++ b/src/cpu/thread_state.cc
@@ -133,7 +133,7 @@
 return *physProxy;
 }

-FSTranslatingPortProxy &
+PortProxy &
 ThreadState::getVirtProxy()
 {
 assert(FullSystem);
@@ -141,7 +141,7 @@
 return *virtProxy;
 }

-SETranslatingPortProxy &
+PortProxy &
 ThreadState::getMemProxy()
 {
 assert(!FullSystem);
diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh
index 2006339..e00c86f 100644
--- a/src/cpu/thread_state.hh
+++ b/src/cpu/thread_state.hh
@@ -47,6 +47,9 @@

 class Checkpoint;

+class FSTranslatingPortProxy;
+class SETranslatingPortProxy;
+
 /**
  *  Struct fo

gem5-dev@gem5.org

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18577 )


Change subject: arch, base, sim: Demote (SE|FS)TranslatingPortProxy &s to  
PortProxy &s.

..

arch, base, sim: Demote (SE|FS)TranslatingPortProxy &s to PortProxy &s.

Al(most) all of the interesting differences between the two classes
have been removed. There are some control methods which are still
specific to each type which may require treating them as their true
type, but most code that consumes them doesn't need to worry about
which is which.

Change-Id: Ie592676f1e496c7940605b66e55cd7fae18e59d6
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18577
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Brandon Potter 
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
---
M src/arch/alpha/linux/system.cc
M src/arch/alpha/stacktrace.cc
M src/arch/alpha/utility.cc
M src/arch/arm/stacktrace.cc
M src/arch/arm/utility.cc
M src/arch/mips/stacktrace.cc
M src/arch/sparc/utility.cc
M src/arch/x86/linux/process.cc
M src/arch/x86/pseudo_inst.cc
M src/arch/x86/stacktrace.cc
M src/base/remote_gdb.cc
M src/sim/process_impl.hh
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
M src/sim/syscall_emul_buf.hh
M src/sim/vptr.hh
16 files changed, 38 insertions(+), 37 deletions(-)

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



diff --git a/src/arch/alpha/linux/system.cc b/src/arch/alpha/linux/system.cc
index d963d29..ae9e5ef 100644
--- a/src/arch/alpha/linux/system.cc
+++ b/src/arch/alpha/linux/system.cc
@@ -176,7 +176,7 @@
 if (kernelSymtab->findAddress("loops_per_jiffy", addr)) {
 Tick cpuFreq = tc->getCpuPtr()->frequency();
 assert(intrFreq);
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 vp.write(addr, (uint32_t)((cpuFreq / intrFreq) * 0.9988),
  GuestByteOrder);
 }
diff --git a/src/arch/alpha/stacktrace.cc b/src/arch/alpha/stacktrace.cc
index f5833b0..bf2d5b3 100644
--- a/src/arch/alpha/stacktrace.cc
+++ b/src/arch/alpha/stacktrace.cc
@@ -49,7 +49,7 @@
 : tc(_tc)
 {
 Addr addr = 0;
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 SymbolTable *symtab = tc->getSystemPtr()->kernelSymtab;

 if (!symtab->findAddress("thread_info_size", addr))
@@ -82,7 +82,7 @@

 Addr tsk;

-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 tsk = vp.read(base + task_off, GuestByteOrder);

 return tsk;
@@ -97,7 +97,7 @@

 uint16_t pd;

-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 pd = vp.read(task + pid_off, GuestByteOrder);

 return pd;
diff --git a/src/arch/alpha/utility.cc b/src/arch/alpha/utility.cc
index c644911..8264c94 100644
--- a/src/arch/alpha/utility.cc
+++ b/src/arch/alpha/utility.cc
@@ -53,7 +53,7 @@
 return tc->readIntReg(16 + number);
 } else {
 Addr sp = tc->readIntReg(StackPointerReg);
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 uint64_t arg = vp.read(sp +
  (number-NumArgumentRegs) *
  sizeof(uint64_t));
diff --git a/src/arch/arm/stacktrace.cc b/src/arch/arm/stacktrace.cc
index 837b6ad..8fadb81 100644
--- a/src/arch/arm/stacktrace.cc
+++ b/src/arch/arm/stacktrace.cc
@@ -47,7 +47,7 @@
 static int32_t
 readSymbol(ThreadContext *tc, const std::string name)
 {
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 SymbolTable *symtab = tc->getSystemPtr()->kernelSymtab;

 Addr addr;
@@ -75,7 +75,7 @@

 Addr tsk;

-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 tsk = vp.read(base + task_off, GuestByteOrder);

 return tsk;
@@ -90,7 +90,7 @@

 uint16_t pd;

-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 pd = vp.read(task + pid_off, GuestByteOrder);

 return pd;
diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc
index 2888ebb..2f7d916 100644
--- a/src/arch/arm/utility.cc
+++ b/src/arch/arm/utility.cc
@@ -107,7 +107,7 @@
 }
 } else {
 Addr sp = tc->readIntReg(StackPointerReg);
-FSTranslatingPortProxy &vp = tc->getVirtProxy();
+PortProxy &vp = tc->getVirtProxy();
 uint64_t arg;
 if (size == sizeof(uint64_t)) {
 // If the argument is even it must be aligned
diff --git a/src/arch/mips/stacktrace.cc b/src/arch/mips/stacktrace.cc

[gem5-dev] Change in gem5/gem5[master]: arch, base, cpu, gpu, sim: Merge getMemProxy and getVirtProxy.

2019-05-30 Thread Gabe Black (Gerrit)
Gabe Black has submitted this change and it was merged. (  
https://gem5-review.googlesource.com/c/public/gem5/+/18581 )


Change subject: arch, base, cpu, gpu, sim: Merge getMemProxy and  
getVirtProxy.

..

arch, base, cpu, gpu, sim: Merge getMemProxy and getVirtProxy.

These two functions were performing the same function but had two
different names for historical reasons. This change merges them
together, keeping the getVirtProxy name to be consistent with the
getPhysProxy method used to get a non-translating proxy port.

Change-Id: Idd83c6b899f9343795075b030ccbc723a79e52a4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18581
Tested-by: kokoro 
Reviewed-by: Andreas Sandberg 
Reviewed-by: Jason Lowe-Power 
Maintainer: Andreas Sandberg 
---
M src/arch/alpha/linux/process.cc
M src/arch/arm/freebsd/process.cc
M src/arch/arm/linux/process.cc
M src/arch/mips/linux/process.cc
M src/arch/power/linux/process.cc
M src/arch/riscv/linux/process.cc
M src/arch/sparc/linux/syscalls.cc
M src/arch/sparc/process.cc
M src/arch/sparc/solaris/process.cc
M src/arch/x86/linux/process.cc
M src/arch/x86/pseudo_inst.cc
M src/base/remote_gdb.cc
M src/cpu/checker/thread_context.hh
M src/cpu/o3/thread_context.hh
M src/cpu/simple_thread.hh
M src/cpu/thread_context.hh
M src/cpu/thread_state.cc
M src/cpu/thread_state.hh
M src/gpu-compute/cl_driver.cc
M src/sim/process.cc
M src/sim/syscall_emul.cc
M src/sim/syscall_emul.hh
22 files changed, 178 insertions(+), 213 deletions(-)

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



diff --git a/src/arch/alpha/linux/process.cc  
b/src/arch/alpha/linux/process.cc

index d342c5d..f129b26 100644
--- a/src/arch/alpha/linux/process.cc
+++ b/src/arch/alpha/linux/process.cc
@@ -89,7 +89,7 @@
 strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
 strcpy(name->machine, "alpha");

-name.copyOut(tc->getMemProxy());
+name.copyOut(tc->getVirtProxy());
 return 0;
 }

@@ -111,7 +111,7 @@
   TypedBufferArg fpcr(bufPtr);
   // I don't think this exactly matches the HW FPCR
   *fpcr = 0;
-  fpcr.copyOut(tc->getMemProxy());
+  fpcr.copyOut(tc->getVirtProxy());
   return 0;
   }

@@ -139,7 +139,7 @@
   case 14: { // SSI_IEEE_FP_CONTROL
   TypedBufferArg fpcr(bufPtr);
   // I don't think this exactly matches the HW FPCR
-  fpcr.copyIn(tc->getMemProxy());
+  fpcr.copyIn(tc->getVirtProxy());
   DPRINTFR(SyscallVerbose, "osf_setsysinfo(SSI_IEEE_FP_CONTROL): "
" setting FPCR to 0x%x\n", gtoh(*(uint64_t*)fpcr));
   return 0;
diff --git a/src/arch/arm/freebsd/process.cc  
b/src/arch/arm/freebsd/process.cc

index 41549ea..69424c9 100644
--- a/src/arch/arm/freebsd/process.cc
+++ b/src/arch/arm/freebsd/process.cc
@@ -109,13 +109,13 @@
 BufferArg buf3(oldlenp, sizeof(size_t));
 BufferArg buf4(newp, sizeof(size_t));

-buf.copyIn(tc->getMemProxy());
-buf2.copyIn(tc->getMemProxy());
-buf3.copyIn(tc->getMemProxy());
+buf.copyIn(tc->getVirtProxy());
+buf2.copyIn(tc->getVirtProxy());
+buf3.copyIn(tc->getVirtProxy());

 void *hnewp = NULL;
 if (newp) {
-buf4.copyIn(tc->getMemProxy());
+buf4.copyIn(tc->getVirtProxy());
 hnewp = (void *)buf4.bufferPtr();
 }

@@ -125,11 +125,11 @@

 ret = sysctl((int *)hnamep, namelen, holdp, holdlenp, hnewp, newlen);

-buf.copyOut(tc->getMemProxy());
-buf2.copyOut(tc->getMemProxy());
-buf3.copyOut(tc->getMemProxy());
+buf.copyOut(tc->getVirtProxy());
+buf2.copyOut(tc->getVirtProxy());
+buf3.copyOut(tc->getVirtProxy());
 if (newp)
-buf4.copyOut(tc->getMemProxy());
+buf4.copyOut(tc->getVirtProxy());

 return (ret);
 }
diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index 3fcb01f..426f66a 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -117,7 +117,7 @@
 strcpy(name->version, "#1 SMP Sat Dec  1 00:00:00 GMT 2012");
 strcpy(name->machine, "armv7l");

-name.copyOut(tc->getMemProxy());
+name.copyOut(tc->getVirtProxy());
 return 0;
 }

@@ -135,7 +135,7 @@
 strcpy(name->version, "#1 SMP Sat Dec  1 00:00:00 GMT 2012");
 strcpy(name->machine, "armv8l");

-name.copyOut(tc->getMemProxy());
+name.copyOut(tc->getVirtProxy());
 return 0;
 }

@@ -147,7 +147,7 @@
 auto process = tc->getProcessPtr();
 uint32_t tlsPtr = process->getSyscallArg(tc, index);

-tc->getMemProxy().writeBlob(ArmLinuxProcess32::commPage + 0x0ff0,
+tc->getVirtProxy().writeBlob(ArmLinuxProcess32::commPage + 0x0ff0,
 &tlsPtr, sizeof(tlsPtr));
 tc->setMiscReg(MISCREG_TPIDRURO,tlsPtr);
 return 0;
@@ -1737,8 +1737,8 @@

 // Fill t

[gem5-dev] Change in gem5/gem5[master]: cpu-o3: Add support for pinned writes

2019-05-30 Thread Giacomo Gabrielli (Gerrit)

Hello Giacomo Travaglini,

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

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

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

Change subject: cpu-o3: Add support for pinned writes
..

cpu-o3: Add support for pinned writes

This patch adds support for pinning registers for a certain number of
consecutive writes.  This is only relevant for timing CPU models
(functional-only models are unaffected), and it is primarily needed to
provide a realistic execution model for micro-coded operations whose
microops can write to non-overlapping portions of a destination
register, e.g. vector gather loads.  In those cases, this mechanism
can disable renaming for a sequence of consecutive writes, thus making
the resulting execution more efficient: allocating a new physical
register for each microop would introduce a read-modify-write chain of
dependencies, while with these modifications the microops can write
back in parallel.

Please note that this new feature is only leveraged by O3CPU for the
time being.

Additional authors:
- Gabor Dozsa 

Change-Id: I07eb5fdbd1fa0b748c9bdc1174d9f330fda34f81
Signed-off-by: Giacomo Gabrielli 
---
M src/cpu/base_dyn_inst.hh
M src/cpu/base_dyn_inst_impl.hh
M src/cpu/o3/free_list.hh
M src/cpu/o3/iew_impl.hh
M src/cpu/o3/inst_queue_impl.hh
M src/cpu/o3/regfile.cc
M src/cpu/o3/regfile.hh
M src/cpu/o3/rename_impl.hh
M src/cpu/o3/rename_map.cc
M src/cpu/reg_class.hh
10 files changed, 183 insertions(+), 45 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/13520
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: I07eb5fdbd1fa0b748c9bdc1174d9f330fda34f81
Gerrit-Change-Number: 13520
Gerrit-PatchSet: 8
Gerrit-Owner: Giacomo Gabrielli 
Gerrit-Reviewer: Giacomo Gabrielli 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-CC: Andreas Sandberg 
Gerrit-CC: Jason Lowe-Power 
Gerrit-MessageType: newpatchset
___
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-05-30 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/ARM/tests/opt/quick/fs/10.linux-boot/arm/linux/realview-simple-atomic-dual:
 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/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/simple-atomic: 
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: 
FAILED!
* 
build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby:
 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/01.hello-2T-smt/alpha/linux/o3-timing-mt: 
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/00.hello/alpha/linux/minor-timing: CHANGED!
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level:
 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-two-level:
 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-timing-ruby: 
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-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-timing: 
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/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/o3-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/o3-timing-mp:
 CHANGED!
* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: 
CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic:
 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/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED!
* build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: C

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Enable set size increase

2019-05-30 Thread John Alsop (Gerrit)

Hello kokoro, Tiago Mück, Bradford Beckmann, Jason Lowe-Power,

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

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

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

Change subject: mem-ruby: Enable set size increase
..

mem-ruby: Enable set size increase

Add NUMBER_BITS_PER_SET environment variable to control
the size of the bitmask in Set.hh (default=64).
Necessary for configs which require >64 instances of a given
machine type. This can be set in the build_opts file, e.g.
by adding the following line:
NUMBER_BITS_PER_SET = 

Change-Id: I314a3cadca8ce975fcf4a60d9022494751688e88
---
M SConstruct
M src/mem/ruby/common/SConscript
M src/mem/ruby/common/Set.hh
3 files changed, 20 insertions(+), 3 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18968
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: I314a3cadca8ce975fcf4a60d9022494751688e88
Gerrit-Change-Number: 18968
Gerrit-PatchSet: 2
Gerrit-Owner: John Alsop 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: John Alsop 
Gerrit-Reviewer: Tiago Mück 
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: Added the Multiperspective Perceptron Predictor (8KB and 64KB)

2019-05-30 Thread Javier Bueno Hedo (Gerrit)

Hello Andreas Sandberg, kokoro, Giacomo Travaglini, Ilias Vougioukas,

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

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

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

Change subject: cpu: Added the Multiperspective Perceptron Predictor (8KB  
and 64KB)

..

cpu: Added the Multiperspective Perceptron Predictor (8KB and 64KB)

Described by the following article:
  Jiménez, D. "Multiperspective perceptron predictor."
  Championship Branch Prediction (CBP-5) (2016).

Change-Id: Iaa68ead7696e0b6ba05b4417d0322e8053e10d30
---
M src/cpu/pred/BranchPredictor.py
M src/cpu/pred/SConscript
A src/cpu/pred/multiperspective_perceptron.cc
A src/cpu/pred/multiperspective_perceptron.hh
A src/cpu/pred/multiperspective_perceptron_64KB.cc
A src/cpu/pred/multiperspective_perceptron_64KB.hh
A src/cpu/pred/multiperspective_perceptron_8KB.cc
A src/cpu/pred/multiperspective_perceptron_8KB.hh
8 files changed, 2,191 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/15495
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: Iaa68ead7696e0b6ba05b4417d0322e8053e10d30
Gerrit-Change-Number: 15495
Gerrit-PatchSet: 12
Gerrit-Owner: Javier Bueno Hedo 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: Ilias Vougioukas 
Gerrit-Reviewer: Javier Bueno Hedo 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: newpatchset
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev