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
