X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsim%2Fclock_domain.cc;h=8f45bba0930138397a24c0b7665c56c39f16dae0;hb=072f78471d11c31b6009beb572296f704912d0f7;hp=746ef12fd554c4ba52af40e30db2b37653bd6ff8;hpb=65cea4708e2f2f2cb361e12b6385d4bc29618223;p=gem5.git diff --git a/src/sim/clock_domain.cc b/src/sim/clock_domain.cc index 746ef12fd..8f45bba09 100644 --- a/src/sim/clock_domain.cc +++ b/src/sim/clock_domain.cc @@ -136,6 +136,11 @@ SrcClockDomain::perfLevel(PerfLevel perf_level) { assert(validPerfLevel(perf_level)); + if (perf_level == _perfLevel) { + // Silently ignore identical overwrites + return; + } + DPRINTF(ClockDomain, "DVFS: Switching performance level of domain %s "\ "(id: %d) from %d to %d\n", name(), domainID(), _perfLevel, perf_level); @@ -162,6 +167,13 @@ SrcClockDomain::unserialize(Checkpoint *cp, const std::string §ion) { ClockDomain::unserialize(cp, section); UNSERIALIZE_SCALAR(_perfLevel); +} + +void +SrcClockDomain::startup() +{ + // Perform proper clock update when all related components have been + // created (i.e. after unserialization / object creation) perfLevel(_perfLevel); }