One other reason I just thought of is the same as the problem O3 had with pointers and things not being completely constructed yet. I want to put the code that sets up the timer in the platform since that's more in line with the timer being configured a certain way to start, aka it's a standard of the platform, not the device. I remember there being several phases of initialization m5 goes through with different functions you can override, and I think using one of those is probably what I want to do. Could someone (probably Nate) run through that quickly?

Gabe

Gabe Black wrote:
Two reasons. First, the BIOS is supposed to do that so if possible I'd like to keep it out of the device itself. That's not a big deal since it wouldn't be too hard to move if there ends up being an actual BIOS at some point. Second, I was concerned that initializing it in the constructor and then redoing it restoring from the checkpoint might cause problems, but in retrospect in this case I think it'll probably actually work out. I'll let you know if I discover otherwise, but for now that's what I'll do.

Gabe

nathan binkert wrote:
I concur with Ali.

On Fri, May 30, 2008 at 5:39 PM, Ali Saidi <[EMAIL PROTECTED]> wrote:
Why can't you just stick it in the constructor? You'll need to serialize that timer value when a checkpoint is dropped and create an event when the checkpoint is restored from, but you would need to do that anyway. You can
take a look at how we serialize the PIT for an idea.

Ali

On May 30, 2008, at 6:12 PM, Gabe Black wrote:

 The kernel is assuming that timer 0 has been set up to count with a
period of 0 (which is effectively 0xFFFF, it's maximum value) by the BIOS during system bring up. It's trying to watch the value of the timers count in order to switch from using the PIT for interrupts to the APIC right after the timer goes off/wraps around. This is all fine, except the BIOS never runs so the timer never gets set up, the count never changes, and the kernel hangs. What I need to do is to go in and fake the initialization as if the BIOS had done something, but I need to make sure it works with checkpointing and all that so I can't just stick it in a constructor. What do people think is a good place to do that? I'm thinking of making it the platform objects responsibility but the system object is the one that knows when things are coming up, right? I'm only really aware of ways to bring up the CPUs and not how to do ISA specific initialization of the system/platform/whatever else.

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

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


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

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

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

Reply via email to