|
From: | Jakob Bohm |
Subject: | Re: [Qemu-discuss] USE QEMU + KVM TO RUN CUSTOM KERNEL |
Date: | Wed, 4 May 2016 11:23:35 +0200 |
User-agent: | Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.0 |
On 04/05/2016 10:50, giuseppe maugeri
wrote:
Have you tried varying the options for the virtual video card? Maybe the default video card does something like the following (I am guessing): qemu alone: Each write to the 128K block at A0000 is special cased as a call to the video card emulator, which instantly knows which character cell you wrote. qemu+kvm: Each write to the 128K block at A0000 triggers a page fault to the KVM driver which then uses a less efficient single instruction stepper to execute the faulting instruction (so the write actually goes through), then tells qemu which 4K page was modified. Then qemu has to figure out which bytes in those 4K were modified in order to figure out which character cell(s) to need to be redrawn. Even on a fast CPU this is not unlikely to consume the observed 25us per character. The above mechanisms are probably needed to emulate the special memory write behavior of VGA 640x480 graphics mode, and some similar modes, but are not the most efficient way to emulate a text mode MDA/HGA/CGA/EGA/VGA simple VRAM buffer if the final output device is a fast display and not e.g. a tty-protocol "terminal" or a remote X/VNC server. Choosing a different virtual video card might result in a different algorithm for managing the A0000/128K block when in classic text modes. As for the Fedora image, I don't know if that uses a different video mode where the qemu code is more optimized (because Fedora/RedHat are big promoters of KVM and would have optimized the default cases to work together).
Enjoy Jakob -- Jakob Bohm, CIO, Partner, WiseMo A/S. https://www.wisemo.com Transformervej 29, 2860 Søborg, Denmark. Direct +45 31 13 16 10 This public discussion message is non-binding and may contain errors. WiseMo - Remote Service Management for PCs, Phones and Embedded |
[Prev in Thread] | Current Thread | [Next in Thread] |