Hi again,

I think I've solved the issue myself. I was incorrectly using a static
variable instead of a member variable, causing both CPUs to be suspended.
I've got it working now with suspending and resuming.

-David


On Fri, Nov 30, 2012 at 1:45 PM, David Gloe <[email protected]> wrote:

> Hello,
>
> I'm running a two CPU simulation in SE mode with a queue to transmit
> information between the CPUs. I would like to be able to suspend or idle
> the first CPU if the queue is full, and resume once the second CPU dequeues.
>
> However, I've been having an issue where it looks like the second CPU
> isn't executing at all, so it doesn't have a chance to dequeue anything.
> Whenever I suspend the first CPU, I get the message 'Exiting because
> simulate() limit reached'. When I simply ignore a full queue, the
> simulation runs fine.
>
> I'm suspending using tc->suspend() and waking up with tc->activate(),
> though I don't think the activate ever gets called. I'm using a modified
> AtomicSimpleCPU in SE mode with two CPUs (-n 2).
>
> Here are some questions I have:
> * Will a quiesce() on a two-CPU system suspend both CPUs?
> * If so, is there a way to suspend or idle only one CPU and later resume?
> * Is the tick() function still called if a CPU is idle or suspended?
>
> Thanks,
> David G.
>
>
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to