[gem5-dev] Re: Kokoro failures

2022-02-03 Thread Bobby Bruce via gem5-dev
Are there examples of this timeout happening recently? I can't see any over
the past week.

There's a separate issue affecting one of Gabe's patches that I'm looking
into (here: https://gem5-review.googlesource.com/c/public/gem5/+/56303) but
these appear to be due to dynamic libraries not linking correctly.

The only change in testing in the last month has been using clang-11
instead of clang-9 to do the clang compilation check. It's possible
clang-11 takes longer than clang-9 did? In December I increase the timeout
to 7 hours to give us more time to run tests as we were experiencing some
timeouts, I think due to the inclusion of some more tests.

We could move some tests to the Nightly run fairly easily.

--
Dr. Bobby R. Bruce
Room 3050,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net


On Thu, Feb 3, 2022 at 7:00 AM Giacomo Travaglini <
giacomo.travagl...@arm.com> wrote:

> Hi all,
>
>
>
> I am seeing a lot of failures on kokoro due to timeouts.
>
> Have we recently added some extra tests to the quick/pre-submit
> regressions?
>
>
>
> Kind Regards
>
>
>
> Giacomo
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Replace MISCREG_CP14/15_UNIMPL with MISCREG_UNKNOWN

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev

Attention is currently required from: Andreas Sandberg, Richard Cooper.
Hello Andreas Sandberg, Richard Cooper,

I'd like you to do a code review.
Please visit

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

to review the following change.


Change subject: arch-arm: Replace MISCREG_CP14/15_UNIMPL with  
MISCREG_UNKNOWN

..

arch-arm: Replace MISCREG_CP14/15_UNIMPL with MISCREG_UNKNOWN

MISCREG_UNKNOWN is the MiscRegIdx of an invalid AArch64 system
register.  There is no need to define extra ids for AArch32 CP14/CP15
registers.

We are therefore removing them in favour of MISCREG_UNKNOWN instead

Signed-off-by: Giacomo Travaglini 
Change-Id: Ib41813dfcb6a9cad84b7cef9603bc530cf4b593d
Reviewed-by: Richard Cooper 
Reviewed-by: Andreas Sandberg 
---
M src/arch/arm/isa/formats/misc.isa
M src/arch/arm/regs/misc.cc
M src/arch/arm/regs/misc.hh
3 files changed, 25 insertions(+), 17 deletions(-)



diff --git a/src/arch/arm/isa/formats/misc.isa  
b/src/arch/arm/isa/formats/misc.isa

index 32fccc8..0a11ba5 100644
--- a/src/arch/arm/isa/formats/misc.isa
+++ b/src/arch/arm/isa/formats/misc.isa
@@ -166,7 +166,7 @@
 switch (miscReg) {
   case MISCREG_NOP:
 return new NopInst(machInst);
-  case MISCREG_CP14_UNIMPL:
+  case MISCREG_UNKNOWN:
 return new FailUnimplemented(isRead ? "mrc unknown" : "mcr  
unknown",

 machInst,
 csprintf("miscreg crn:%d opc1:%d crm:%d opc2:%d %s  
unknown",

@@ -211,7 +211,7 @@
   case MISCREG_NOP:
 return new McrMrcMiscInst(isRead ? "mrc nop" : "mcr nop",
   machInst, iss, MISCREG_NOP);
-  case MISCREG_CP15_UNIMPL:
+  case MISCREG_UNKNOWN:
 return new FailUnimplemented(isRead ? "mrc unkown" : "mcr  
unkown",

 machInst,
 csprintf("miscreg crn:%d opc1:%d crm:%d opc2:%d %s  
unknown",

@@ -301,7 +301,7 @@
 const bool isRead = bits(machInst, 20);

 switch (miscReg) {
-  case MISCREG_CP15_UNIMPL:
+  case MISCREG_UNKNOWN:
 return new FailUnimplemented(isRead ? "mrc" : "mcr", machInst,
 csprintf("miscreg crm:%d opc1:%d 64-bit %s unknown",
 crm, opc1, isRead ? "read" : "write"));
diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc
index 0e58d93..0a95a55 100644
--- a/src/arch/arm/regs/misc.cc
+++ b/src/arch/arm/regs/misc.cc
@@ -333,7 +333,7 @@
 // If we get here then it must be a register that we haven't  
implemented

 warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]",
  crn, opc1, crm, opc2);
-return MISCREG_CP14_UNIMPL;
+return MISCREG_UNKNOWN;
 }

 MiscRegIndex
@@ -1143,7 +1143,7 @@
 return MISCREG_IMPDEF_UNIMPL;
 }
 // Unrecognized register
-return MISCREG_CP15_UNIMPL;
+return MISCREG_UNKNOWN;
 }

 MiscRegIndex
@@ -1202,7 +1202,7 @@
 break;
 }
 // Unrecognized register
-return MISCREG_CP15_UNIMPL;
+return MISCREG_UNKNOWN;
 }

 std::tuple
@@ -4545,12 +4545,6 @@
   .allPrivileges();
 InitReg(MISCREG_RAZ)
   .allPrivileges().exceptUserMode().writes(0);
-InitReg(MISCREG_CP14_UNIMPL)
-  .unimplemented()
-  .warnNotFail();
-InitReg(MISCREG_CP15_UNIMPL)
-  .unimplemented()
-  .warnNotFail();
 InitReg(MISCREG_UNKNOWN);
 InitReg(MISCREG_IMPDEF_UNIMPL)
   .unimplemented()
diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh
index ea58ad2..b70e3fe 100644
--- a/src/arch/arm/regs/misc.hh
+++ b/src/arch/arm/regs/misc.hh
@@ -1059,7 +1059,7 @@

 // NUM_PHYS_MISCREGS specifies the number of actual physical
 // registers, not considering the following pseudo-registers
-// (dummy registers), like UNKNOWN, CP15_UNIMPL,  
MISCREG_IMPDEF_UNIMPL.

+// (dummy registers), like MISCREG_UNKNOWN, MISCREG_IMPDEF_UNIMPL.
 // Checkpointing should use this physical index when
 // saving/restoring register values.
 NUM_PHYS_MISCREGS,
@@ -1067,8 +1067,6 @@
 // Dummy registers
 MISCREG_NOP,
 MISCREG_RAZ,
-MISCREG_CP14_UNIMPL,
-MISCREG_CP15_UNIMPL,
 MISCREG_UNKNOWN,

 // Implementation defined register: this represent
@@ -2206,8 +2204,6 @@
 // Dummy registers
 "nop",
 "raz",
-"cp14_unimpl",
-"cp15_unimpl",
 "unknown",
 "impl_defined",
 "erridr_el1",

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib41813dfcb6a9cad84b7cef9603bc530cf4b593d
Gerrit-Change-Number: 56426
Gerrit-PatchSet: 1
Gerrit-Owner: Giacomo Travaglini 

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Fix typo in SDCR name

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev

Attention is currently required from: Andreas Sandberg, Richard Cooper.
Hello Andreas Sandberg, Richard Cooper,

I'd like you to do a code review.
Please visit

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

to review the following change.


Change subject: arch-arm: Fix typo in SDCR name
..

arch-arm: Fix typo in SDCR name

SDRC -> SDCR

Signed-off-by: Giacomo Travaglini 
Change-Id: Ib7fce528dbfcb7de2cac73b134cf05e78a186762
Reviewed-by: Richard Cooper 
Reviewed-by: Andreas Sandberg 
---
M src/arch/arm/regs/misc.hh
1 file changed, 15 insertions(+), 1 deletion(-)



diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh
index b70e3fe..0966a93 100644
--- a/src/arch/arm/regs/misc.hh
+++ b/src/arch/arm/regs/misc.hh
@@ -1392,7 +1392,7 @@
 "actlr_ns",
 "actlr_s",
 "cpacr",
-"sdrc",
+"sdcr",
 "scr",
 "sder",
 "nsacr",

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib7fce528dbfcb7de2cac73b134cf05e78a186762
Gerrit-Change-Number: 56427
Gerrit-PatchSet: 1
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Richard Cooper 
Gerrit-Attention: Andreas Sandberg 
Gerrit-Attention: Richard Cooper 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Gicv3 implementation of the Gicv3Registers interface

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/55612 )


 (

6 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.
 )Change subject: dev-arm: Gicv3 implementation of the Gicv3Registers  
interface

..

dev-arm: Gicv3 implementation of the Gicv3Registers interface

Signed-off-by: Giacomo Travaglini 
Change-Id: Iba23604cc6f7d5a1de91c287b4546154fcb20535
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55612
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/dev/arm/gic_v3.cc
M src/dev/arm/gic_v3.hh
M src/dev/arm/gic_v3_cpu_interface.cc
M src/dev/arm/gic_v3_cpu_interface.hh
M src/dev/arm/gic_v3_distributor.cc
M src/dev/arm/gic_v3_distributor.hh
M src/dev/arm/gic_v3_redistributor.cc
M src/dev/arm/gic_v3_redistributor.hh
8 files changed, 302 insertions(+), 12 deletions(-)

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




diff --git a/src/dev/arm/gic_v3.cc b/src/dev/arm/gic_v3.cc
index 223e86a..dde3818 100644
--- a/src/dev/arm/gic_v3.cc
+++ b/src/dev/arm/gic_v3.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2020 ARM Limited
+ * Copyright (c) 2019-2022 Arm Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -54,6 +54,80 @@
 namespace gem5
 {

+void
+Gicv3Registers::copyDistRegister(Gicv3Registers* from,
+ Gicv3Registers* to,
+ Addr daddr)
+{
+auto val = from->readDistributor(daddr);
+DPRINTF(GIC, "copy dist 0x%x 0x%08x\n", daddr, val);
+to->writeDistributor(daddr, val);
+}
+
+void
+Gicv3Registers::copyRedistRegister(Gicv3Registers* from,
+   Gicv3Registers* to,
+   const ArmISA::Affinity , Addr daddr)
+{
+auto val = from->readRedistributor(aff, daddr);
+DPRINTF(GIC,
+"copy redist (aff3: %d, aff2: %d, aff1: %d, aff0: %d) "
+"0x%x 0x%08x\n",
+aff.aff3, aff.aff2, aff.aff1, aff.aff0, daddr, val);
+
+to->writeRedistributor(aff, daddr, val);
+}
+
+void
+Gicv3Registers::copyCpuRegister(Gicv3Registers* from,
+Gicv3Registers* to,
+const ArmISA::Affinity ,
+ArmISA::MiscRegIndex misc_reg)
+{
+auto val = from->readCpu(aff, misc_reg);
+DPRINTF(GIC,
+"copy cpu (aff3: %d, aff2: %d, aff1: %d, aff0: %d) "
+"%s 0x%08x\n",
+aff.aff3, aff.aff2, aff.aff1, aff.aff0,
+ArmISA::miscRegName[misc_reg], val);
+
+to->writeCpu(aff, misc_reg, val);
+}
+
+void
+Gicv3Registers::clearRedistRegister(Gicv3Registers* to,
+const ArmISA::Affinity , Addr  
daddr)

+{
+to->writeRedistributor(aff, daddr, 0x);
+}
+
+void
+Gicv3Registers::copyRedistRange(Gicv3Registers* from,
+Gicv3Registers* to,
+const ArmISA::Affinity ,
+Addr daddr, size_t size)
+{
+for (auto a = daddr; a < daddr + size; a += 4)
+copyRedistRegister(from, to, aff, a);
+}
+
+void
+Gicv3Registers::copyDistRange(Gicv3Registers *from,
+  Gicv3Registers *to,
+  Addr daddr, size_t size)
+{
+for (auto a = daddr; a < daddr + size; a += 4)
+copyDistRegister(from, to, a);
+}
+
+void
+Gicv3Registers::clearDistRange(Gicv3Registers *to, Addr daddr, size_t size)
+{
+for (auto a = daddr; a < daddr + size; a += 4)
+to->writeDistributor(a, 0x);
+}
+
+
 Gicv3::Gicv3(const Params )
 : BaseGic(p)
 {
@@ -240,11 +314,17 @@
 return tc->getCpuPtr()->checkInterrupts(tc->threadId());
 }

+Gicv3CPUInterface *
+Gicv3::getCPUInterfaceByAffinity(const ArmISA::Affinity ) const
+{
+return getRedistributorByAffinity(aff)->getCPUInterface();
+}
+
 Gicv3Redistributor *
-Gicv3::getRedistributorByAffinity(uint32_t affinity) const
+Gicv3::getRedistributorByAffinity(const ArmISA::Affinity ) const
 {
 for (auto & redistributor : redistributors) {
-if (redistributor->getAffinity() == affinity) {
+if (redistributor->getAffinity() == aff) {
 return redistributor;
 }
 }
@@ -268,6 +348,63 @@
 return redistributors[redistributor_id];
 }

+uint32_t
+Gicv3::readDistributor(Addr daddr)
+{
+return distributor->read(daddr, 4, false);
+}
+
+uint32_t
+Gicv3::readRedistributor(const ArmISA::Affinity , Addr daddr)
+{
+auto redistributor = getRedistributorByAffinity(aff);
+assert(redistributor);
+return redistributor->read(daddr, 4, false);
+}
+
+RegVal
+Gicv3::readCpu(const ArmISA::Affinity , ArmISA::MiscRegIndex misc_reg)

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Define an Affinity type

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/55705 )


 (

1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.

 )Change subject: arch-arm: Define an Affinity type
..

arch-arm: Define an Affinity type

Signed-off-by: Giacomo Travaglini 
Change-Id: I42461de26886b1ba9e4db5b23a9fb970d3a1efd7
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55705
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/arch/arm/types.hh
M src/arch/arm/utility.cc
M src/arch/arm/utility.hh
3 files changed, 32 insertions(+), 7 deletions(-)

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




diff --git a/src/arch/arm/types.hh b/src/arch/arm/types.hh
index a4d1f33..734fe6f 100644
--- a/src/arch/arm/types.hh
+++ b/src/arch/arm/types.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2012-2013, 2017-2018 ARM Limited
+ * Copyright (c) 2010, 2012-2013, 2017-2018, 2022 Arm Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -202,6 +202,13 @@
 Bitfield<11, 8>  ltcoproc;
 EndBitUnion(ExtMachInst)

+BitUnion32(Affinity)
+Bitfield<31, 24> aff3;
+Bitfield<23, 16> aff2;
+Bitfield<15, 8>  aff1;
+Bitfield<7, 0>   aff0;
+EndBitUnion(Affinity)
+
 // Shift types for ARM instructions
 enum ArmShiftType
 {
diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc
index f81255d..6852aed 100644
--- a/src/arch/arm/utility.cc
+++ b/src/arch/arm/utility.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009-2014, 2016-2020 ARM Limited
+ * Copyright (c) 2009-2014, 2016-2020, 2022 Arm Limited
  * All rights reserved.
  *
  * The license below extends only to copyright in the software and shall
@@ -199,13 +199,13 @@
 static RegVal
 getAff2(ArmSystem *arm_sys, ThreadContext *tc)
 {
-return arm_sys->multiThread ? tc->socketId() << 16 : 0;
+return arm_sys->multiThread ? tc->socketId() : 0;
 }

 static RegVal
 getAff1(ArmSystem *arm_sys, ThreadContext *tc)
 {
-return arm_sys->multiThread ? tc->cpuId() << 8 : tc->socketId() << 8;
+return arm_sys->multiThread ? tc->cpuId() : tc->socketId();
 }

 static RegVal
@@ -214,10 +214,14 @@
 return arm_sys->multiThread ? tc->threadId() : tc->cpuId();
 }

-RegVal
+Affinity
 getAffinity(ArmSystem *arm_sys, ThreadContext *tc)
 {
-return getAff2(arm_sys, tc) | getAff1(arm_sys, tc) | getAff0(arm_sys,  
tc);

+Affinity aff = 0;
+aff.aff0 = getAff0(arm_sys, tc);
+aff.aff1 = getAff1(arm_sys, tc);
+aff.aff2 = getAff2(arm_sys, tc);
+return aff;
 }

 bool
diff --git a/src/arch/arm/utility.hh b/src/arch/arm/utility.hh
index 0e5f3bb..00b0acf 100644
--- a/src/arch/arm/utility.hh
+++ b/src/arch/arm/utility.hh
@@ -223,7 +223,7 @@
 RegVal getMPIDR(ArmSystem *arm_sys, ThreadContext *tc);

 /** Retrieves MPIDR_EL1.{Aff2,Aff1,Aff0} affinity numbers */
-RegVal getAffinity(ArmSystem *arm_sys, ThreadContext *tc);
+Affinity getAffinity(ArmSystem *arm_sys, ThreadContext *tc);

 static inline uint32_t
 mcrMrcIssBuild(bool isRead, uint32_t crm, IntRegIndex rt, uint32_t crn,

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I42461de26886b1ba9e4db5b23a9fb970d3a1efd7
Gerrit-Change-Number: 55705
Gerrit-PatchSet: 8
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Templatize MuxingKvmGic to support flexible hierarchy

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/55611 )


 (

8 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.
 )Change subject: arch-arm: Templatize MuxingKvmGic to support flexible  
hierarchy

..

arch-arm: Templatize MuxingKvmGic to support flexible hierarchy

By templatizing the MuxingKvmGic we decouple it from the GicV2
class, unlocking non GICv2 (e.g. GICv3) KVM and guest implementations

Signed-off-by: Giacomo Travaglini 
Change-Id: I26838903fa7c9f8b9de40678021329cb3390cc74
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55611
Tested-by: kokoro 
---
M src/arch/arm/kvm/KvmGic.py
M src/arch/arm/kvm/SConscript
M src/arch/arm/kvm/gic.cc
M src/arch/arm/kvm/gic.hh
M src/dev/arm/RealView.py
5 files changed, 104 insertions(+), 66 deletions(-)

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




diff --git a/src/arch/arm/kvm/KvmGic.py b/src/arch/arm/kvm/KvmGic.py
index c435f44..166d261 100644
--- a/src/arch/arm/kvm/KvmGic.py
+++ b/src/arch/arm/kvm/KvmGic.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2015, 2017 ARM Limited
+# Copyright (c) 2015, 2017, 2021 Arm Limited
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -38,10 +38,11 @@

 from m5.objects.Gic import GicV2

-class MuxingKvmGic(GicV2):
-type = 'MuxingKvmGic'
+class MuxingKvmGicV2(GicV2):
+type = 'MuxingKvmGicV2'
 cxx_header = "arch/arm/kvm/gic.hh"
-cxx_class = 'gem5::MuxingKvmGic'
+cxx_class = 'gem5::MuxingKvmGic'
+cxx_template_params = [ 'class Types' ]

 simulate_gic = Param.Bool(False,
 "Forcing the simulation to use the gem5 GIC instead of the host  
GIC")

diff --git a/src/arch/arm/kvm/SConscript b/src/arch/arm/kvm/SConscript
index 44134a4..d06501f 100644
--- a/src/arch/arm/kvm/SConscript
+++ b/src/arch/arm/kvm/SConscript
@@ -43,7 +43,8 @@
 if not (env['USE_KVM'] and env['KVM_ISA'] == 'arm'):
 Return()

-SimObject('KvmGic.py', sim_objects=['MuxingKvmGic'], tags='arm isa')
+SimObject('KvmGic.py',
+sim_objects=['MuxingKvmGicV2'], tags='arm isa')
 Source('gic.cc', tags='arm isa')

 SimObject('BaseArmKvmCPU.py', sim_objects=['BaseArmKvmCPU'], tags='arm  
isa')

diff --git a/src/arch/arm/kvm/gic.cc b/src/arch/arm/kvm/gic.cc
index 100f256..7d8ef75 100644
--- a/src/arch/arm/kvm/gic.cc
+++ b/src/arch/arm/kvm/gic.cc
@@ -42,7 +42,7 @@
 #include "arch/arm/kvm/base_cpu.hh"
 #include "debug/GIC.hh"
 #include "debug/Interrupt.hh"
-#include "params/MuxingKvmGic.hh"
+#include "params/MuxingKvmGicV2.hh"

 namespace gem5
 {
@@ -101,16 +101,16 @@
 vm.setIRQLine(line, high);
 }

-KvmKernelGicV2::KvmKernelGicV2(KvmVM &_vm, Addr cpu_addr, Addr dist_addr,
-   unsigned it_lines)
-: KvmKernelGic(_vm, KVM_DEV_TYPE_ARM_VGIC_V2, it_lines),
-  cpuRange(RangeSize(cpu_addr, KVM_VGIC_V2_CPU_SIZE)),
-  distRange(RangeSize(dist_addr, KVM_VGIC_V2_DIST_SIZE))
+KvmKernelGicV2::KvmKernelGicV2(KvmVM &_vm,
+   const MuxingKvmGicV2Params )
+: KvmKernelGic(_vm, KVM_DEV_TYPE_ARM_VGIC_V2, p.it_lines),
+  cpuRange(RangeSize(p.cpu_addr, KVM_VGIC_V2_CPU_SIZE)),
+  distRange(RangeSize(p.dist_addr, KVM_VGIC_V2_DIST_SIZE))
 {
 kdev.setAttr(
-KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_DIST, dist_addr);
+KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_DIST,  
p.dist_addr);

 kdev.setAttr(
-KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_CPU, cpu_addr);
+KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V2_ADDR_TYPE_CPU, p.cpu_addr);
 }

 uint32_t
@@ -169,27 +169,24 @@
 setGicReg(KVM_DEV_ARM_VGIC_GRP_CPU_REGS, vcpu, daddr, data);
 }

-MuxingKvmGic::MuxingKvmGic(const MuxingKvmGicParams )
-: GicV2(p),
-  system(*p.system),
-  kernelGic(nullptr),
-  usingKvm(false)
+template 
+MuxingKvmGic::MuxingKvmGic(const Params )
+  : SimGic(p),
+system(*p.system),
+kernelGic(nullptr),
+usingKvm(false)
 {
 auto vm = system.getKvmVM();
 if (vm && !p.simulate_gic) {
-kernelGic = new KvmKernelGicV2(*vm, p.cpu_addr, p.dist_addr,
-   p.it_lines);
+kernelGic = new KvmGic(*vm, p);
 }
 }

-MuxingKvmGic::~MuxingKvmGic()
-{
-}
-
+template 
 void
-MuxingKvmGic::startup()
+MuxingKvmGic::startup()
 {
-GicV2::startup();
+SimGic::startup();

 KvmVM *vm = system.getKvmVM();
 usingKvm = kernelGic && vm && vm->validEnvironment();
@@ -197,18 +194,20 @@
 fromGicToKvm();
 }

+template 
 DrainState
-MuxingKvmGic::drain()
+MuxingKvmGic::drain()
 {
 if (usingKvm)
 fromKvmToGic();
-return GicV2::drain();
+return SimGic::drain();
 }

+template 
 void
-MuxingKvmGic::drainResume()
+MuxingKvmGic::drainResume()
 {
-

[gem5-dev] Change in gem5/gem5[develop]: arch-arm, dev-arm: Remove generic BaseGicRegisters interface

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/55703 )


 (

4 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.
 )Change subject: arch-arm, dev-arm: Remove generic BaseGicRegisters  
interface

..

arch-arm, dev-arm: Remove generic BaseGicRegisters interface

The GICv3 register interface is different from the GICv2 one: from
the presence of redistributor registers up to the system register
implementation of the cpu-interface

We therefore make the current BaseGicRegisters interface GICv2 specific.
We will define a different Gic3Registers interface for GICv3 state
transfer

Signed-off-by: Giacomo Travaglini 
Change-Id: I42f15f48cab6e26aaf519e13c2ce70f661801117
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55703
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/arch/arm/kvm/gic.cc
M src/arch/arm/kvm/gic.hh
M src/dev/arm/base_gic.cc
M src/dev/arm/base_gic.hh
M src/dev/arm/gic_v2.cc
M src/dev/arm/gic_v2.hh
6 files changed, 119 insertions(+), 95 deletions(-)

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




diff --git a/src/arch/arm/kvm/gic.cc b/src/arch/arm/kvm/gic.cc
index f6a57da..100f256 100644
--- a/src/arch/arm/kvm/gic.cc
+++ b/src/arch/arm/kvm/gic.cc
@@ -292,13 +292,15 @@
 void
 MuxingKvmGic::fromGicToKvm()
 {
-copyGicState(static_cast(this), kernelGic);
+copyGicState(static_cast(this),
+ static_cast(kernelGic));
 }

 void
 MuxingKvmGic::fromKvmToGic()
 {
-copyGicState(kernelGic, static_cast(this));
+copyGicState(static_cast(kernelGic),
+ static_cast(this));

 // the values read for the Interrupt Priority Mask Register (PMR)
 // have been shifted by three bits due to its having been emulated by
diff --git a/src/arch/arm/kvm/gic.hh b/src/arch/arm/kvm/gic.hh
index 5201f58..af52079 100644
--- a/src/arch/arm/kvm/gic.hh
+++ b/src/arch/arm/kvm/gic.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2017, 2021 Arm Limited
+ * Copyright (c) 2015-2017, 2021-2022 Arm Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -54,7 +54,7 @@
  * model. It exposes an API that is similar to that of
  * software-emulated GIC models in gem5.
  */
-class KvmKernelGic : public BaseGicRegisters
+class KvmKernelGic
 {
   public:
 /**
@@ -131,7 +131,7 @@
 KvmDevice kdev;
 };

-class KvmKernelGicV2 : public KvmKernelGic
+class KvmKernelGicV2 : public KvmKernelGic, public GicV2Registers
 {
   public:
 /**
@@ -148,7 +148,7 @@
 KvmKernelGicV2(KvmVM , Addr cpu_addr, Addr dist_addr,
unsigned it_lines);

-  public: // BaseGicRegisters
+  public: // GicV2Registers
 uint32_t readDistributor(ContextID ctx, Addr daddr) override;
 uint32_t readCpu(ContextID ctx, Addr daddr) override;

diff --git a/src/dev/arm/base_gic.cc b/src/dev/arm/base_gic.cc
index c738c71..5694c37 100644
--- a/src/dev/arm/base_gic.cc
+++ b/src/dev/arm/base_gic.cc
@@ -80,61 +80,6 @@
 return dynamic_cast(_params);
 }

-void
-BaseGicRegisters::copyDistRegister(BaseGicRegisters* from,
-   BaseGicRegisters* to,
-   ContextID ctx, Addr daddr)
-{
-auto val = from->readDistributor(ctx, daddr);
-DPRINTF(GIC, "copy dist 0x%x 0x%08x\n", daddr, val);
-to->writeDistributor(ctx, daddr, val);
-}
-
-void
-BaseGicRegisters::copyCpuRegister(BaseGicRegisters* from,
-  BaseGicRegisters* to,
-  ContextID ctx, Addr daddr)
-{
-auto val = from->readCpu(ctx, daddr);
-DPRINTF(GIC, "copy cpu  0x%x 0x%08x\n", daddr, val);
-to->writeCpu(ctx, daddr, val);
-}
-
-void
-BaseGicRegisters::copyBankedDistRange(System *sys, BaseGicRegisters* from,
-  BaseGicRegisters* to,
-  Addr daddr, size_t size)
-{
-for (int ctx = 0; ctx < sys->threads.size(); ++ctx)
-for (auto a = daddr; a < daddr + size; a += 4)
-copyDistRegister(from, to, ctx, a);
-}
-
-void
-BaseGicRegisters::clearBankedDistRange(System *sys, BaseGicRegisters* to,
-   Addr daddr, size_t size)
-{
-for (int ctx = 0; ctx < sys->threads.size(); ++ctx)
-for (auto a = daddr; a < daddr + size; a += 4)
-to->writeDistributor(ctx, a, 0x);
-}
-
-void
-BaseGicRegisters::copyDistRange(BaseGicRegisters* from,
-BaseGicRegisters* to,
-Addr daddr, size_t size)
-{
-for (auto a = daddr; a < daddr + size; a += 4)
-copyDistRegister(from, to, 0, a);
-}
-
-void
-BaseGicRegisters::clearDistRange(BaseGicRegisters* to, 

[gem5-dev] Change in gem5/gem5[develop]: arch-arm: Fix gem5 build on aarch64 host

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/56346 )


 (

1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.

 )Change subject: arch-arm: Fix gem5 build on aarch64 host
..

arch-arm: Fix gem5 build on aarch64 host

vm is not a member variable of MuxingKvmGic. This was broken
by:

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

Signed-off-by: Giacomo Travaglini 
Change-Id: Iee8a3424eb28cfe2bc20df088dc0af05e9e8a7de
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/56346
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/arch/arm/kvm/gic.cc
1 file changed, 23 insertions(+), 0 deletions(-)

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




diff --git a/src/arch/arm/kvm/gic.cc b/src/arch/arm/kvm/gic.cc
index fd3eef7..f6a57da 100644
--- a/src/arch/arm/kvm/gic.cc
+++ b/src/arch/arm/kvm/gic.cc
@@ -190,6 +190,8 @@
 MuxingKvmGic::startup()
 {
 GicV2::startup();
+
+KvmVM *vm = system.getKvmVM();
 usingKvm = kernelGic && vm && vm->validEnvironment();
 if (usingKvm)
 fromGicToKvm();
@@ -207,6 +209,8 @@
 MuxingKvmGic::drainResume()
 {
 GicV2::drainResume();
+
+KvmVM *vm = system.getKvmVM();
 bool use_kvm = kernelGic && vm && vm->validEnvironment();
 if (use_kvm != usingKvm) {
 // Should only occur due to CPU switches

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Iee8a3424eb28cfe2bc20df088dc0af05e9e8a7de
Gerrit-Change-Number: 56346
Gerrit-PatchSet: 3
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Use ArmISA::getAffinity in GICv3 redistributor

2022-02-03 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/55704 )


 (

1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the  
submitted one.

 )Change subject: dev-arm: Use ArmISA::getAffinity in GICv3 redistributor
..

dev-arm: Use ArmISA::getAffinity in GICv3 redistributor

The GICv3 redistributor was reading the MPIDR value and manually
extracting the affinity numbers from it. This is not necessary as there
is already a getAffinity helper function

Signed-off-by: Giacomo Travaglini 
Change-Id: I6ef150937b51bb065575ed2f432f4f5f0bc38b07
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55704
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
Tested-by: kokoro 
---
M src/dev/arm/gic_v3_redistributor.cc
1 file changed, 19 insertions(+), 11 deletions(-)

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




diff --git a/src/dev/arm/gic_v3_redistributor.cc  
b/src/dev/arm/gic_v3_redistributor.cc

index 225e4cd..adfc5bc 100644
--- a/src/dev/arm/gic_v3_redistributor.cc
+++ b/src/dev/arm/gic_v3_redistributor.cc
@@ -1017,17 +1017,7 @@
 Gicv3Redistributor::getAffinity() const
 {
 ThreadContext *tc = gic->getSystem()->threads[cpuId];
-uint64_t mpidr = getMPIDR(gic->getSystem(), tc);
-/*
- * Aff3 = MPIDR[39:32]
- * (Note getMPIDR() returns uint32_t so Aff3 is always 0...)
- * Aff2 = MPIDR[23:16]
- * Aff1 = MPIDR[15:8]
- * Aff0 = MPIDR[7:0]
- * affinity = Aff3.Aff2.Aff1.Aff0
- */
-uint64_t affinity = ((mpidr & 0xff) >> 8) | (mpidr &  
(0xff));

-return affinity;
+return gem5::ArmISA::getAffinity(gic->getSystem(), tc);
 }

 bool

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I6ef150937b51bb065575ed2f432f4f5f0bc38b07
Gerrit-Change-Number: 55704
Gerrit-PatchSet: 9
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Kokoro failures

2022-02-03 Thread Giacomo Travaglini via gem5-dev
Hi all,

I am seeing a lot of failures on kokoro due to timeouts.
Have we recently added some extra tests to the quick/pre-submit regressions?

Kind Regards

Giacomo
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: python: Remove the m5.config and options.py mechanism.

2022-02-03 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/56387 )



Change subject: python: Remove the m5.config and options.py mechanism.
..

python: Remove the m5.config and options.py mechanism.

It appears that there is a mechanism where you could either have a .m5
directory in your home directory, or set an M5_CONFIG environment
variable to some other directory, where you could put an options.py
file. That file would then be passed the options dict which gem5's main
had extracted from its args, which it could modify as it liked.

First, I suspect that this mechanism was basically unknown and was just
a dark corner of gem5 people had forgotten about. Getting rid of it
will help clear out old cruft.

Second, this sort of file reaching in and fiddling with gem5's internal
data structures is dangerous and fragile, and could in almost any case
be replaced with a wrapper script or shell alias.

Change-Id: Ic828716979ea6379f60de796d23281ab075b38ec
---
D src/python/m5/config.py
M src/python/m5/main.py
2 files changed, 23 insertions(+), 56 deletions(-)



diff --git a/src/python/m5/config.py b/src/python/m5/config.py
deleted file mode 100644
index 926ea14..000
--- a/src/python/m5/config.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2008 The Hewlett-Packard Development Company
-# All rights reserved.
-#
-# 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.
-
-import os
-from os.path import isdir, isfile, join as joinpath
-
-
-confdir = os.environ.get('M5_CONFIG')
-
-if not confdir:
-# HOME is not set when running regressions, due to use of scons
-# Execute() function.
-homedir = os.environ.get('HOME')
-if homedir and isdir(joinpath(homedir, '.m5')):
-confdir = joinpath(homedir, '.m5')
-
-def get(name):
-if not confdir:
-return None
-conffile = joinpath(confdir, name)
-if not isfile(conffile):
-return None
-
-return conffile
-
diff --git a/src/python/m5/main.py b/src/python/m5/main.py
index f649e77..701d9f6 100644
--- a/src/python/m5/main.py
+++ b/src/python/m5/main.py
@@ -61,7 +61,6 @@


 def parse_options():
-from . import config
 from .options import OptionParser

 options = OptionParser(usage=usage, description=brief_copyright)
@@ -155,13 +154,6 @@
 option("--list-sim-objects", action='store_true', default=False,
 help="List all built-in SimObjects, their params and default  
values")


-# load the options.py config file to allow people to set their own
-# default options
-options_file = config.get('options.py')
-if options_file:
-scope = { 'options' : options }
-exec(compile(open(options_file).read(), options_file, 'exec'),  
scope)

-
 arguments = options.parse_args()
 return options,arguments


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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ic828716979ea6379f60de796d23281ab075b38ec
Gerrit-Change-Number: 56387
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: util: Rename util/vi to util/vim.

2022-02-03 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/56406 )



Change subject: util: Rename util/vi to util/vim.
..

util: Rename util/vi to util/vim.

Both files there, vimrc and ucode.vim, are for vim specifically, and
not old school vi. Calling it vi is misleading and may prevent people
from discovering what's there.

Change-Id: I8da2e10b0df83ce705a8d9e7c62e33374e740506
---
R util/vim/ucode.vim
R util/vim/vimrc
2 files changed, 13 insertions(+), 0 deletions(-)



diff --git a/util/vi/ucode.vim b/util/vim/ucode.vim
similarity index 100%
rename from util/vi/ucode.vim
rename to util/vim/ucode.vim
diff --git a/util/vi/vimrc b/util/vim/vimrc
similarity index 100%
rename from util/vi/vimrc
rename to util/vim/vimrc

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I8da2e10b0df83ce705a8d9e7c62e33374e740506
Gerrit-Change-Number: 56406
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: scons: Make CC, CXX and PROTOC no longer sticky.

2022-02-03 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/56386 )



Change subject: scons: Make CC, CXX and PROTOC no longer sticky.
..

scons: Make CC, CXX and PROTOC no longer sticky.

These variables will always be imported from the environment, and never
from previous builds. For SCons to actually use these values, they need
to not only be in the environment variables external commands SCons runs
sees, they also have to be promoted to actual SCons construction
variables.

Change-Id: I54035442d70972396f1788bd0773877222d7a7c5
---
M SConstruct
M site_scons/gem5_scons/defaults.py
M src/SConscript
3 files changed, 26 insertions(+), 3 deletions(-)



diff --git a/SConstruct b/SConstruct
index d7cd564..6cdffe5 100755
--- a/SConstruct
+++ b/SConstruct
@@ -253,8 +253,6 @@
 global_vars = Variables(global_vars_file, args=ARGUMENTS)

 global_vars.AddVariables(
-('CC', 'C compiler', environ.get('CC', main['CC'])),
-('CXX', 'C++ compiler', environ.get('CXX', main['CXX'])),
 ('CCFLAGS_EXTRA', 'Extra C and C++ compiler flags', ''),
 ('GEM5PY_CCFLAGS_EXTRA', 'Extra C and C++ gem5py compiler flags', ''),
 ('GEM5PY_LINKFLAGS_EXTRA', 'Extra marshal gem5py flags', ''),
@@ -262,7 +260,6 @@
 ('PYTHON_CONFIG', 'Python config binary to use',
  [ 'python3-config', 'python-config']
 ),
-('PROTOC', 'protoc tool', environ.get('PROTOC', 'protoc')),
 ('BATCH', 'Use batch pool for build and tests', False),
 ('BATCH_CMD', 'Batch pool submission command name', 'qdo'),
 ('M5_BUILD_CACHE', 'Cache built objects in this directory', False),
diff --git a/site_scons/gem5_scons/defaults.py  
b/site_scons/gem5_scons/defaults.py

index 1f8d5d5..4efaa26 100644
--- a/site_scons/gem5_scons/defaults.py
+++ b/site_scons/gem5_scons/defaults.py
@@ -63,6 +63,16 @@
 any([key.startswith(prefix) for prefix in use_prefixes]):
 env['ENV'][key] = val

+# These variables from the environment override/become SCons variables,
+# with a default if they weren't in the host environment.
+var_overrides = {
+'CC': env['CC'],
+'CXX': env['CXX'],
+'PROTOC': 'protoc'
+}
+for key,default in var_overrides.items():
+env[key] = env['ENV'].get(key, default)
+
 # Tell scons to avoid implicit command dependencies to avoid issues
 # with the param wrappes being compiled twice (see
 # https://github.com/SCons/scons/issues/2811
diff --git a/src/SConscript b/src/SConscript
index 6c8ccaf..75d15bd 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -239,6 +239,7 @@
 root, ext = os.path.splitext(source[0].get_abspath())
 return [root + '.pb.cc', root + '.pb.h'], source

+env.SetDefault(PROTOC='protoc')
 protoc_action = MakeAction('${PROTOC} --cpp_out ${BUILDDIR} '
 '--proto_path ${BUILDDIR} --proto_path ${SOURCE.dir} '
 '${SOURCE.get_abspath()}',

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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I54035442d70972396f1788bd0773877222d7a7c5
Gerrit-Change-Number: 56386
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s