[gem5-dev] Cannot build on mac anymore

2019-08-02 Thread Kamran Hasan
Hi,


I did a git pull and tried to build again but found that I couldn't. I also 
tried doing a clean git clone and building again but got the same error message 
that I'm pasting below. I'm running OS X Mojave (10.14.5) with Xcode 10.3. 
Before I did a git pull, I was able to build and run fine with this exact same 
setup. Any ideas on how I can fix this?


Thanks!




 [ TRACING]  -> X86/debug/Cache.hh

 [ TRACING]  -> X86/debug/CachePort.hh

 [ENUMDECL] Clusivity -> X86/enums/Clusivity.hh

 [SO PARAM] WriteAllocator -> X86/params/WriteAllocator.hh

 [ CXX] X86/mem/cache/tags/base_set_assoc.cc -> .o

 [ TRACING]  -> X86/debug/CacheComp.hh

 [SO PARAM] CompressedTags -> X86/params/CompressedTags.hh

 [SO PARAM] SectorTags -> X86/params/SectorTags.hh

 [ CXX] X86/mem/cache/tags/compressed_tags.cc -> .o

 [SO PARAM] FALRU -> X86/params/FALRU.hh

 [ CXX] X86/mem/cache/tags/fa_lru.cc -> .o

 [ CXX] X86/mem/cache/tags/sector_blk.cc -> .o

 [ CXX] X86/mem/cache/tags/sector_tags.cc -> .o

 [ CXX] X86/mem/cache/tags/super_blk.cc -> .o

In file included from build/X86/mem/cache/tags/compressed_tags.cc:36:

In file included from build/X86/mem/cache/tags/compressed_tags.hh:39:

In file included from 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:270:

In file included from 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__bit_reference:15:

In file included from 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/algorithm:644:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:58:
 error: destructor called on non-final 'SectorBlk' that has virtual functions 
but non-virtual

  destructor [-Werror,-Wdelete-non-virtual-dtor]

_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1742:18:
 note: in instantiation of member function 
'std::__1::allocator::destroy' requested here

{__a.destroy(__p);}

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1595:14:
 note: in instantiation of function template specialization

  'std::__1::allocator_traits 
>::__destroy' requested here

{__destroy(__has_destroy(), __a, __p);}

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:421:25:
 note: in instantiation of function template specialization

  'std::__1::allocator_traits 
>::destroy' requested here

__alloc_traits::destroy(__alloc(), 
_VSTD::__to_raw_pointer(--__soon_to_be_end));

^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:364:29:
 note: in instantiation of member function 'std::__1::__vector_base >::__destruct_at_end' requested here

void clear() _NOEXCEPT {__destruct_at_end(__begin_);}

^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:458:9:
 note: in instantiation of member function 'std::__1::__vector_base >::clear' requested here

clear();

^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iterator:1427:74:
 note: in instantiation of member function 'std::__1::__vector_base >::~__vector_base' requested here

template  friend class _LIBCPP_TEMPLATE_VIS vector;

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:64:
 note: qualify call to silence this warning

_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}

   ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:58:
 error: destructor called on non-final 'SuperBlk' that has virtual functions 
but non-virtual

  destructor [-Werror,-Wdelete-non-virtual-dtor]

_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1742:18:
 note: in instantiation of member function 
'std::__1::allocator::destroy' requested here

{__a.destroy(__p);}

 ^

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1595:14:
 note: in instantiation of function template specialization

  'std::__1::allocator_traits 

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Remove assertion with incorrect assumption

2019-08-02 Thread Anthony Gutierrez (Gerrit)
Anthony Gutierrez has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/19708 )


Change subject: mem-ruby: Remove assertion with incorrect assumption
..

mem-ruby: Remove assertion with incorrect assumption

Current code assumes that only one cacheline would either be in
RW. This is not true for GPU protocols, and may not be true
for some CPU-only protocols with state violations.

Change-Id: I70db4fbb4e80663551e8635307bb937a4db8dc63
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19708
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Anthony Gutierrez 
Reviewed-by: Nikos Nikoleris 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/mem/ruby/system/RubySystem.cc
1 file changed, 8 insertions(+), 2 deletions(-)

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



diff --git a/src/mem/ruby/system/RubySystem.cc  
b/src/mem/ruby/system/RubySystem.cc

index 572f5fe..83fa4c7 100644
--- a/src/mem/ruby/system/RubySystem.cc
+++ b/src/mem/ruby/system/RubySystem.cc
@@ -432,7 +432,6 @@
  access_perm == AccessPermission_NotPresent)
 num_invalid++;
 }
-assert(num_rw <= 1);

 // This if case is meant to capture what happens in a Broadcast/Snoop
 // protocol where the block does not exist in the cache hierarchy. You
@@ -451,7 +450,14 @@
 return true;
 }
 }
-} else if (num_ro > 0 || num_rw == 1) {
+} else if (num_ro > 0 || num_rw >= 1) {
+if (num_rw > 1) {
+// We iterate over the vector of abstract controllers, and  
return
+// the first copy found. If we have more than one cache with  
block
+// in writable permission, the first one found would be  
returned.
+warn("More than one Abstract Controller with RW permission  
for "

+ "addr: %#x on cacheline: %#x.", address, line_address);
+}
 // In Broadcast/Snoop protocols, this covers if you know the block
 // exists somewhere in the caching hierarchy, then you want to  
read any
 // valid RO or RW block.  In directory protocols, same thing, you  
want


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19708
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: I70db4fbb4e80663551e8635307bb937a4db8dc63
Gerrit-Change-Number: 19708
Gerrit-PatchSet: 5
Gerrit-Owner: Pouya Fotouhi 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: Pouya Fotouhi 
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]: sim-se: small refactor on pipe syscall

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


Change subject: sim-se: small refactor on pipe syscall
..

sim-se: small refactor on pipe syscall

Change-Id: I02ffb1c4af980554ff12ac7d11d32ba80fe261c5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12308
Reviewed-by: Brandon Potter 
Maintainer: Brandon Potter 
Tested-by: kokoro 
---
M src/sim/syscall_emul.cc
1 file changed, 7 insertions(+), 4 deletions(-)

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



diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index eaf90ec..142292d 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -868,8 +868,14 @@
 SyscallReturn
 pipeImpl(SyscallDesc *desc, int callnum, ThreadContext *tc, bool  
pseudoPipe)

 {
-int sim_fds[2], tgt_fds[2];
+Addr tgt_addr = 0;
 auto p = tc->getProcessPtr();
+if (!pseudoPipe) {
+int index = 0;
+tgt_addr = p->getSyscallArg(tc, index);
+}
+
+int sim_fds[2], tgt_fds[2];

 int pipe_retval = pipe(sim_fds);
 if (pipe_retval == -1)
@@ -898,9 +904,6 @@
 return tgt_fds[0];
 }

-int index = 0;
-Addr tgt_addr = p->getSyscallArg(tc, index);
-
 /**
  * Copy the target file descriptors into buffer space and then copy
  * the buffer space back into the target address space.

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12308
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: I02ffb1c4af980554ff12ac7d11d32ba80fe261c5
Gerrit-Change-Number: 12308
Gerrit-PatchSet: 23
Gerrit-Owner: Brandon Potter 
Gerrit-Reviewer: Alexandru Duțu 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: John Alsop 
Gerrit-Reviewer: Matt Sinclair 
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-02 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/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/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 
FAILED!
* 
build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level:
 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/simple-timing-ruby: 
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-atomic: 
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: 
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/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/simple-timing-ruby: 
CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED!
* 
build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple:
 CHANGED!
* build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual:
 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-dram-ctrl: CHANGED!
* build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: 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/03.learning-gem5/sparc/linux/learning-gem5-p1-simple:
 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/simple-atomic-mp:
 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/00.hello/sparc/linux/simple-timing-ruby: 
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/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/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple:
 CHANGED!
* 
build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level:
 CHANGED!
* 
build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-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-ruby: 
CHANGED!
* 

[gem5-dev] Change in gem5/gem5[master]: mem: Move eraseIfNullEntry to when holder is updated

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


Change subject: mem: Move eraseIfNullEntry to when holder is updated
..

mem: Move eraseIfNullEntry to when holder is updated

The entry should only be tested for deletion when holder is updated.

Change-Id: I5a10b6fa876912709b7467860d43c23c60f38568
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19750
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/snoop_filter.cc
1 file changed, 14 insertions(+), 17 deletions(-)

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



diff --git a/src/mem/snoop_filter.cc b/src/mem/snoop_filter.cc
index d368dd8..b0422e2 100644
--- a/src/mem/snoop_filter.cc
+++ b/src/mem/snoop_filter.cc
@@ -206,9 +206,6 @@

 SnoopItem& sf_item = sf_it->second;

-DPRINTF(SnoopFilter, "%s:   old SF value %x.%x\n",
-__func__, sf_item.requested, sf_item.holder);
-
 SnoopMask interested = (sf_item.holder | sf_item.requested);

 totSnoops++;
@@ -232,13 +229,14 @@
 // Early clear of the holder, if no other request is currently  
going on
 // @todo: This should possibly be updated even though we do not  
filter

 // upward snoops
+DPRINTF(SnoopFilter, "%s:   old SF value %x.%x\n",
+__func__, sf_item.requested, sf_item.holder);
 sf_item.holder = 0;
+DPRINTF(SnoopFilter, "%s:   new SF value %x.%x\n",
+__func__, sf_item.requested, sf_item.holder);
+eraseIfNullEntry(sf_it);
 }

-eraseIfNullEntry(sf_it);
-DPRINTF(SnoopFilter, "%s:   new SF value %x.%x interest: %x \n",
-__func__, sf_item.requested, sf_item.holder, interested);
-
 return snoopSelected(maskToPortList(interested), lookupLatency);
 }

@@ -320,21 +318,20 @@
 if (!is_hit)
 return;

-SnoopItem& sf_item = sf_it->second;
-
-DPRINTF(SnoopFilter, "%s:   old SF value %x.%x\n",
-__func__,  sf_item.requested, sf_item.holder);
-
 // If the snoop response has no sharers the line is passed in
 // Modified state, and we know that there are no other copies, or
 // they will all be invalidated imminently
 if (!cpkt->hasSharers()) {
-sf_item.holder = 0;
-}
-DPRINTF(SnoopFilter, "%s:   new SF value %x.%x\n",
-__func__, sf_item.requested, sf_item.holder);
-eraseIfNullEntry(sf_it);
+SnoopItem& sf_item = sf_it->second;

+DPRINTF(SnoopFilter, "%s:   old SF value %x.%x\n",
+__func__, sf_item.requested, sf_item.holder);
+sf_item.holder = 0;
+DPRINTF(SnoopFilter, "%s:   new SF value %x.%x\n",
+__func__, sf_item.requested, sf_item.holder);
+
+eraseIfNullEntry(sf_it);
+}
 }

 void

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19750
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: I5a10b6fa876912709b7467860d43c23c60f38568
Gerrit-Change-Number: 19750
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] Change in gem5/gem5[master]: mem: Encapsulate retry variables of SnoopFilter

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


Change subject: mem: Encapsulate retry variables of SnoopFilter
..

mem: Encapsulate retry variables of SnoopFilter

Group all variables related to the restoration of a snoop filter
entry due to a crossbar retry.

Change-Id: I4e03edb3afd06563b7a5812959739876709eceeb
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19749
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/snoop_filter.cc
M src/mem/snoop_filter.hh
2 files changed, 44 insertions(+), 21 deletions(-)

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



diff --git a/src/mem/snoop_filter.cc b/src/mem/snoop_filter.cc
index 8168c3d..d368dd8 100644
--- a/src/mem/snoop_filter.cc
+++ b/src/mem/snoop_filter.cc
@@ -76,8 +76,8 @@
 line_addr |= LineSecure;
 }
 SnoopMask req_port = portToMask(slave_port);
-reqLookupResult = cachedLocations.find(line_addr);
-bool is_hit = (reqLookupResult != cachedLocations.end());
+reqLookupResult.it = cachedLocations.find(line_addr);
+bool is_hit = (reqLookupResult.it != cachedLocations.end());

 // If the snoop filter has no entry, and we should not allocate,
 // do not create a new snoop filter entry, simply return a NULL
@@ -86,15 +86,17 @@
 return snoopDown(lookupLatency);

 // If no hit in snoop filter create a new element and update iterator
-if (!is_hit)
-reqLookupResult = cachedLocations.emplace(line_addr,  
SnoopItem()).first;

-SnoopItem& sf_item = reqLookupResult->second;
+if (!is_hit) {
+reqLookupResult.it =
+cachedLocations.emplace(line_addr, SnoopItem()).first;
+}
+SnoopItem& sf_item = reqLookupResult.it->second;
 SnoopMask interested = sf_item.holder | sf_item.requested;

 // Store unmodified value of snoop filter item in temp storage in
 // case we need to revert because of a send retry in
 // updateRequest.
-retryItem = sf_item;
+reqLookupResult.retryItem = sf_item;

 totRequests++;
 if (is_hit) {
@@ -155,25 +157,26 @@
 void
 SnoopFilter::finishRequest(bool will_retry, Addr addr, bool is_secure)
 {
-if (reqLookupResult != cachedLocations.end()) {
+if (reqLookupResult.it != cachedLocations.end()) {
 // since we rely on the caller, do a basic check to ensure
 // that finishRequest is being called following lookupRequest
 Addr line_addr = (addr & ~(Addr(linesize - 1)));
 if (is_secure) {
 line_addr |= LineSecure;
 }
-assert(reqLookupResult->first == line_addr);
+assert(reqLookupResult.it->first == line_addr);
 if (will_retry) {
+SnoopItem retry_item = reqLookupResult.retryItem;
 // Undo any changes made in lookupRequest to the snoop filter
 // entry if the request will come again. retryItem holds
 // the previous value of the snoopfilter entry.
-reqLookupResult->second = retryItem;
+reqLookupResult.it->second = retry_item;

 DPRINTF(SnoopFilter, "%s:   restored SF value %x.%x\n",
-__func__,  retryItem.requested, retryItem.holder);
+__func__,  retry_item.requested, retry_item.holder);
 }

-eraseIfNullEntry(reqLookupResult);
+eraseIfNullEntry(reqLookupResult.it);
 }
 }

diff --git a/src/mem/snoop_filter.hh b/src/mem/snoop_filter.hh
index 9c06615..4d1eea9 100644
--- a/src/mem/snoop_filter.hh
+++ b/src/mem/snoop_filter.hh
@@ -94,7 +94,7 @@
 typedef std::vector SnoopList;

 SnoopFilter (const SnoopFilterParams *p) :
-SimObject(p), reqLookupResult(cachedLocations.end()), retryItem{0,  
0},

+SimObject(p), reqLookupResult(cachedLocations.end()),
 linesize(p->system->cacheLineSize()),  
lookupLatency(p->lookup_latency),

 maxEntryCount(p->max_capacity / p->system->cacheLineSize())
 {
@@ -261,17 +261,37 @@

 /** Simple hash set of cached addresses. */
 SnoopFilterCache cachedLocations;
+
 /**
- * Iterator used to store the result from lookupRequest until we
- * call finishRequest.
+ * A request lookup must be followed by a call to finishRequest to  
inform

+ * the operation's success. If a retry is needed, however, all changes
+ * made to the snoop filter while performing the lookup must be undone.
+ * This structure keeps track of the state previous to such changes.
  */
-SnoopFilterCache::iterator reqLookupResult;
-/**
- * Variable to temporarily store value of snoopfilter entry
- * incase finishRequest needs to undo changes made in lookupRequest
- * (because of crossbar retry)
- */
-SnoopItem retryItem;
+struct 

[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Make H3 inherit from MultiBitSelBloomFilter

2019-08-02 Thread Daniel Carvalho (Gerrit)
Daniel Carvalho has uploaded a new patch set (#5). (  
https://gem5-review.googlesource.com/c/public/gem5/+/18873 )


Change subject: mem-ruby: Make H3 inherit from MultiBitSelBloomFilter
..

mem-ruby: Make H3 inherit from MultiBitSelBloomFilter

Make MultiBitSelBloomFilter a generic BloomFilter that maps
multiple entries to an address, and therefore uses multiple
hash functions. This allows the common functionality of both
filters to be merged into one, since they only differ in the
hash functions being used.

Change-Id: I0984067b710a208715f5f2727b8c4312feb6529b
Signed-off-by: Daniel R. Carvalho 
---
M src/mem/ruby/filters/BloomFilters.py
M src/mem/ruby/filters/H3BloomFilter.cc
M src/mem/ruby/filters/H3BloomFilter.hh
M src/mem/ruby/filters/MultiBitSelBloomFilter.cc
M src/mem/ruby/filters/MultiBitSelBloomFilter.hh
5 files changed, 64 insertions(+), 115 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18873
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: I0984067b710a208715f5f2727b8c4312feb6529b
Gerrit-Change-Number: 18873
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
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]: mem-ruby: Make MultiGrainBloomFilter generic

2019-08-02 Thread Daniel Carvalho (Gerrit)

Hello kokoro, Nikos Nikoleris,

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

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

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

Change subject: mem-ruby: Make MultiGrainBloomFilter generic
..

mem-ruby: Make MultiGrainBloomFilter generic

Allow combining any number of Bloom Filters in the MultiGrain.

Change-Id: I73ae33063e1feed731af6f625d2f64245f21df18
Signed-off-by: Daniel R. Carvalho 
---
M src/mem/ruby/filters/BloomFilters.py
M src/mem/ruby/filters/MultiGrainBloomFilter.cc
M src/mem/ruby/filters/MultiGrainBloomFilter.hh
3 files changed, 65 insertions(+), 48 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18869
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: I73ae33063e1feed731af6f625d2f64245f21df18
Gerrit-Change-Number: 18869
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
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]: mem-ruby: Define BloomFilter namespace

2019-08-02 Thread Daniel Carvalho (Gerrit)

Hello Nikos Nikoleris,

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

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

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

Change subject: mem-ruby: Define BloomFilter namespace
..

mem-ruby: Define BloomFilter namespace

Define a BloomFilter namespace and put all BloomFilter related
code in it.

As a side effect the BloomFilter classes have been renamed to
remove the "BloomFilter" suffix.

Change-Id: I3ee8cc225bf3b820e561c3e25a6bf38e0012e3a8
Signed-off-by: Daniel R. Carvalho 
---
M src/mem/ruby/filters/AbstractBloomFilter.hh
M src/mem/ruby/filters/BlockBloomFilter.cc
M src/mem/ruby/filters/BlockBloomFilter.hh
M src/mem/ruby/filters/BloomFilters.py
M src/mem/ruby/filters/BulkBloomFilter.cc
M src/mem/ruby/filters/BulkBloomFilter.hh
M src/mem/ruby/filters/H3BloomFilter.cc
M src/mem/ruby/filters/H3BloomFilter.hh
M src/mem/ruby/filters/LSB_CountingBloomFilter.cc
M src/mem/ruby/filters/LSB_CountingBloomFilter.hh
M src/mem/ruby/filters/MultiBitSelBloomFilter.cc
M src/mem/ruby/filters/MultiBitSelBloomFilter.hh
M src/mem/ruby/filters/MultiGrainBloomFilter.cc
M src/mem/ruby/filters/MultiGrainBloomFilter.hh
14 files changed, 185 insertions(+), 128 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18874
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: I3ee8cc225bf3b820e561c3e25a6bf38e0012e3a8
Gerrit-Change-Number: 18874
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-CC: 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]: base: Add a perfect bloom filter

2019-08-02 Thread Daniel Carvalho (Gerrit)

Hello Nikos Nikoleris,

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

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

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

Change subject: base: Add a perfect bloom filter
..

base: Add a perfect bloom filter

Add a bloom filter that keeps track of all observed entries, and
thus has no false negatives nor false positives.

Change-Id: Iba784e617a99c77554c688470d9b9e12c260f23b
Signed-off-by: Daniel R. Carvalho 
---
M src/base/filters/BloomFilters.py
M src/base/filters/SConscript
A src/base/filters/perfect_bloom_filter.cc
A src/base/filters/perfect_bloom_filter.hh
4 files changed, 170 insertions(+), 0 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18879
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: Iba784e617a99c77554c688470d9b9e12c260f23b
Gerrit-Change-Number: 18879
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-CC: 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]: mem-ruby: Move Bloom Filters to base

2019-08-02 Thread Daniel Carvalho (Gerrit)

Hello kokoro, Anthony Gutierrez, Nikos Nikoleris,

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

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

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

Change subject: mem-ruby: Move Bloom Filters to base
..

mem-ruby: Move Bloom Filters to base

All Bloom Filters are completely independent of Ruby, and
therefore can be used everywhere.

As a side effect, Ruby was not using the filters, so
their dependency was removed.

Change-Id: Ic5f430610c33c0791fb81c79101ebe737189497e
Signed-off-by: Daniel R. Carvalho 
---
R src/base/filters/BloomFilters.py
R src/base/filters/SConscript
R src/base/filters/base.hh
R src/base/filters/block_bloom_filter.cc
R src/base/filters/block_bloom_filter.hh
R src/base/filters/bulk_bloom_filter.cc
R src/base/filters/bulk_bloom_filter.hh
R src/base/filters/h3_bloom_filter.cc
R src/base/filters/h3_bloom_filter.hh
R src/base/filters/lsb_counting_bloom_filter.cc
R src/base/filters/lsb_counting_bloom_filter.hh
R src/base/filters/multi_bit_sel_bloom_filter.cc
R src/base/filters/multi_bit_sel_bloom_filter.hh
R src/base/filters/multi_bloom_filter.cc
R src/base/filters/multi_bloom_filter.hh
M src/mem/protocol/RubySlicc_Types.sm
M src/mem/ruby/SConscript
17 files changed, 108 insertions(+), 83 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18875
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: Ic5f430610c33c0791fb81c79101ebe737189497e
Gerrit-Change-Number: 18875
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Anthony Gutierrez 
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]: mem-ruby: Remove NonCountingBloomFilter

2019-08-02 Thread Daniel Carvalho (Gerrit)

Hello kokoro, Nikos Nikoleris,

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

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

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

Change subject: mem-ruby: Remove NonCountingBloomFilter
..

mem-ruby: Remove NonCountingBloomFilter

Make BlockBloomFilter accept having a single bitfield, in which
case it behaves exactly as the NonCountingBloomFilter, and thus
the latter can be removed.

Change-Id: I56d96a89290c933293ce434bbe0e8bcd4bbcaa42
Signed-off-by: Daniel R. Carvalho 
---
M src/mem/ruby/filters/BlockBloomFilter.cc
M src/mem/ruby/filters/BloomFilters.py
D src/mem/ruby/filters/NonCountingBloomFilter.cc
D src/mem/ruby/filters/NonCountingBloomFilter.hh
M src/mem/ruby/filters/SConscript
5 files changed, 2 insertions(+), 150 deletions(-)


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18871
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: I56d96a89290c933293ce434bbe0e8bcd4bbcaa42
Gerrit-Change-Number: 18871
Gerrit-PatchSet: 5
Gerrit-Owner: Daniel Carvalho 
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