On Thu, 6 Nov 2014, Andreas Hansson wrote:



On Oct. 31, 2014, 10:21 p.m., Nilay Vaish wrote:
Andreas, please review this patch.  I would like the ruby-related patches
be committed soon as possible.

I'm surprised this is needed. The busBusyUntil should be initialised to a 
sufficiently high value that this would never occur.

Could you elaborate on when the problem arises (under what conditions)?



I encountered problems when simulating with ruby and dram ctrl and starting from a checkpoint. Ruby issues memory requests in its startup() function when loading a checkpoint. It seems that the startup() was not called on the dram ctrl when ruby started issuing requests. This means that busBusyUntil was at 0 to begin with. Since busBusyUntil is unsigned, subtracting a higher value from it results in a very large tick value. This results in a dead lock. I added the checks as shown in the patch to avoid subtracting a larger number from a smaller number. This resolved the problem.

As of now I am unsure if this is right way to solve the problem. Is it possible to move the initialization of busBusyUntil to init() and unserialize()? What's the earliest stage in a sim object initialization phase that can call curTick()?


--
Nilay
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to