diff options
Diffstat (limited to 'src/mem/dram_ctrl.cc')
-rw-r--r-- | src/mem/dram_ctrl.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index ac78a3d1e..c9d944faa 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -62,6 +62,7 @@ DRAMCtrl::DRAMCtrl(const DRAMCtrlParams* p) : nextReqEvent(this), respondEvent(this), activateEvent(this), prechargeEvent(this), refreshEvent(this), powerEvent(this), drainManager(NULL), + deviceSize(p->device_size), deviceBusWidth(p->device_bus_width), burstLength(p->burst_length), deviceRowBufferSize(p->device_rowbuffer_size), devicesPerRank(p->devices_per_rank), @@ -139,6 +140,16 @@ DRAMCtrl::DRAMCtrl(const DRAMCtrlParams* p) : // determine the rows per bank by looking at the total capacity uint64_t capacity = ULL(1) << ceilLog2(AbstractMemory::size()); + // determine the dram actual capacity from the DRAM config in Mbytes + uint64_t deviceCapacity = deviceSize / (1024 * 1024) * devicesPerRank * + ranksPerChannel; + + // if actual DRAM size does not match memory capacity in system warn! + if (deviceCapacity != capacity / (1024 * 1024)) + warn("DRAM device capacity (%d Mbytes) does not match the " + "address range assigned (%d Mbytes)\n", deviceCapacity, + capacity / (1024 * 1024)); + DPRINTF(DRAM, "Memory capacity %lld (%lld) bytes\n", capacity, AbstractMemory::size()); |