David Woodhouse <dw...@infradead.org> writes: > On Tue, 2013-02-19 at 16:17 -0600, Anthony Liguori wrote: >> Right, this is what's strange to me. There's no hardware analog AFAICT >> so I'm not sure why we're exposing it as a qemu_irq other than we want >> to jump through a function pointer invocation instead of making a >> straight funciton call :-) > > Hey, don't ask me. I was just trying to do what Paolo said in response > to me first attempt — which just accessed the 'hard reset' flag in the > PIIX directly from the I440FX reset handler. > >> > That just sets a flag to say that the coming *system* reset is a hard >> > reset and not a soft reset. >> >> Yes, but this flag is in PIIX, not the i440fx. > > Yes. The Reset Control Register is in the PIIX. And the i440fx just > happens to be the only other device that *cares* if it's a hard reset or > a soft reset. For now. Thankfully they're implemented in the same C file > and even initialised together, which lets us do a special-case hack > relatively easily. > >> I suspect what we need to do is convert qemu_system_reset_request() into >> a qemu_system_cpu_reset() that takes a callback. Once the VCPUs have >> been reset, the callback can then be used to reset all or some of the >> device model. This of course means removing the reset handlers in the >> CPUs as they exist today. >> >> Cc'ing Andreas to get his thoughts. >> >> FWIW, I'm not expecting you to do this to fix this issue. Just thinking >> out loud here really. > > Sounds good to me. I'm beginning to wish I'd just ignored the fact that > we need a properly working "soft" reset to get back from 286 protected > mode to real mode, and wired up the damn PAM reset unconditionally. I'm > not convinced that the protected->real mode transition will work for > anyone anyway.
Can you try out the following tree: git://github.com/aliguori/qemu.git soft-reset.2 Or better yet, post binaries of Tiano Core + SeaBIOS as a CSM for me to try out? The above implements a CPU-only soft reset that should fix the problem you're having with PAM resetting unconditionally. If it works, I'll fixup the other PC callers of reset too. Regards, Anthony Liguori