diff --git a/src/sim/clock_domain.cc b/src/sim/clock_domain.cc index 60c688b1a..1ccee7f1d 100644 --- a/src/sim/clock_domain.cc +++ b/src/sim/clock_domain.cc @@ -147,6 +147,11 @@ SrcClockDomain::perfLevel(PerfLevel perf_level) _perfLevel = perf_level; + signalPerfLevelUpdate(); +} + +void SrcClockDomain::signalPerfLevelUpdate() +{ // Signal the voltage domain that we have changed our perf level so that the // voltage domain can recompute its performance level voltageDomain()->sanitiseVoltages(); @@ -174,7 +179,7 @@ SrcClockDomain::startup() { // Perform proper clock update when all related components have been // created (i.e. after unserialization / object creation) - perfLevel(_perfLevel); + signalPerfLevelUpdate(); } SrcClockDomain * diff --git a/src/sim/clock_domain.hh b/src/sim/clock_domain.hh index 71627434a..6ba8b6396 100644 --- a/src/sim/clock_domain.hh +++ b/src/sim/clock_domain.hh @@ -243,6 +243,11 @@ class SrcClockDomain : public ClockDomain void unserialize(CheckpointIn &cp) override; private: + /** + * Inform other components about the changed performance level + */ + void signalPerfLevelUpdate(); + /** * List of possible frequency operational points, should be in * descending order