On Tue, Feb 19, 2013 at 06:35:03PM +0000, David Woodhouse wrote: > On Tue, 2013-02-19 at 20:13 +0200, Gleb Natapov wrote: > > > > > I take it you mean copy 0xfffe0000 to 0xe0000? That would not be > > fun. > > > SeaBIOS would need to detect that it's in the state (it's definitely > > > not correct to do that on real-hardware or on "working" kvm > > > instances), then setup a trampoline somewhere outside of > > > 0xe0000-0xfffff to do the memcpy, jump to that trampoline, copy the > > > memory, restore segment registers, and then jump to 0xfffffff0. > > > That's a lot of kvm specific code to add to seabios as a workaround > > > and it seems fragile anyway. > > > > > Isn't this exactly what qemu_prep_reset() is doing now? > > No. It doesn't do the trampoline thing because it doesn't *have* to; > it's copying an identical copy of the code back over itself. > Ah, yes of course. So does CSM takes the whole 0xe0000-0xfffff segment or it leaves OVMF code there somewhere. CSM reset code can jump into OVMF code in 0xe0000-0xfffff range and let it do the copy.
-- Gleb.