SeaBIOS has a couple of different methods to accomplish this mode switching - it can directly switch modes (C16_BIG switch) or it can use a helper in SMM mode to perform the switch (C16_SMM). The preferred method is C16_SMM as C16_BIG isn't available in VM86 mode and it also clobbers the 16bit segment registers.
Hi Kevin,
Why does SeaBios use VM86 mode? vtx supports real mode long time ago.
C16_SMM is slow because it causes several extra switches between VM and QEMU. I would prefer C16_BIG for better performance. Does SeaBios know if it runs in real mode or VM86 mode? Can SeaBios choose C16_SMM/C16_BIG based on VCPU mode?
Thanks, Anthony