dev-arm: FVPBasePwrCtrl, fix vector resizing
(1) ThreadContexts are registered into System in BaseCPU::init. (2) FVPBasePwrCtrl state is resized based on registered ThreadContexts in FVPBasePwrCtrl::init. FVPBasePwrCtrl::init may be called before BaseCPU::init based on the model names alphabetical order, leading to segmentation faults. To fix this, (2) is now carried out in FVPBasePwrCtrl::startup. Change-Id: Ica6c5b7448da556d61aee53f8777a709fcad2212 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35075 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -58,13 +58,13 @@ FVPBasePwrCtrl::FVPBasePwrCtrl(FVPBasePwrCtrlParams *const params)
|
||||
}
|
||||
|
||||
void
|
||||
FVPBasePwrCtrl::init()
|
||||
FVPBasePwrCtrl::startup()
|
||||
{
|
||||
// All cores are ON by default (PwrStatus.{l0,l1} = 0b1)
|
||||
corePwrStatus.resize(sys->threads.size(), 0x60000000);
|
||||
for (const auto &tc : sys->threads)
|
||||
poweredCoresPerCluster[tc->socketId()] += 1;
|
||||
BasicPioDevice::init();
|
||||
BasicPioDevice::startup();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -88,7 +88,7 @@ class FVPBasePwrCtrl : public BasicPioDevice
|
||||
*/
|
||||
void clearWakeRequest(ThreadContext *const tc);
|
||||
|
||||
void init() override;
|
||||
void startup() override;
|
||||
|
||||
protected:
|
||||
Tick read(PacketPtr pkt) override;
|
||||
|
||||
Reference in New Issue
Block a user