22.07.2015 19:37, Kevin O'Connor пишет: Hi,
Hi, Is the motivation of this patch to improve the correctness of the hardware emulation or is there some feature that the current QEMU implementation prevents?
The motivation is to improve correctness. The current QEMU PAM implementation prevents executing any guest that behave closer to specs about PAM than SeaBIOS.
There has been some interest recently in making SeaBIOS boot faster on QEMU and the shadow ram fixups in SeaBIOS have been shown to consume a notable amount of bootup time (~12ms on my machine). Will changing the PAM support improve overall boot times? I wonder if going from "mode 0" -> "mode 2" -> "mode 3" would be more expensive than the current SeaBIOS "mode 0" -> "mode 3" mechanism.
The patch does not touch emulation of modes 0 and 3. SeaBIOS still can use they, so no fixups are required in SeaBIOS. The SeaBIOS patch I listed in letter is only to show difference between current and new PAM implementations. An open-source BIOS is just simple way to do that. I measured time between QEMU start and original SeaBIOS attempt to boot from hard disk. With original PAM it equals 267ms against 269ms with new PAM. 100 measurements are made. Standard deviation is 15ms. Measurements are based on QEMU_CLOCK_REALTIME and SeaBIOS I/O 0x402 port output. I patched isa-debugcon device to add per-line timestamps. Onetime 2ms slowdown seems to be acceptable tradeoff.
Also note that SeaBIOS would still need to copy from the high memory location even if the PAM registers were fully implemented as SeaBIOS often exceeds 128K - the "mode 2" overwrite oneself trick would only work for the last 128K of the rom. Thanks, -Kevin
Vasily