On 12/12/13 20:14, Laszlo Ersek wrote:
> On 12/12/13 18:47, Jordan Justen wrote:
>> On Thu, Dec 12, 2013 at 12:44 AM, Gerd Hoffmann <[email protected]> wrote:
> 
>>> Yes, we should fix drm/cirrus.
>>> Did you try cirrus S3 with seabios btw?
>>
>> Good question. Before this thread, I would have expected that seabios
>> would not try to restore this on resume.
> 
> And your expectation would have been correct, according to my testing :)
> 
>> And a meaner question... What happens with windows?
> 
> Windows 2008 R2 (which requires a CSM build) doesn't offer me the
> Suspend option in the Start menu. Not sure why, S3 is advertised and
> enabled in DSDT/SSDT.

I have an update on this.

(1) The initial configuration of my Windows 2008 R2 SP1 UEFI guest was
the following:

(a) Cirrus VGA emulation (-device cirrus-vga)
(b) an OVMF build including the SeaBIOS CSM
(c) a vgabios-cirrus SeaVGABIOS oprom that includes seabios commit
    2eeafbf5 ("Enable VGA output when setting Cirrus-specific mode"):

   -device cirrus-vga,romfile=vgabios-cirrus.bin,...

   (Note that the vgabios-cirrus.bin file packaged with the qemu 1.7
   distribution is not such an oprom.)

This allows the guest to boot and have working display.

However, S3 suspend is not supported; when the "powercfg -a" command is
issued at the "cmd" prompt, it says

    Standby (S3)
            The VGAPNP.SYS display driver does not support standby.
            Please consult your hardware vendor for an updated display
            driver.

(2) We have to switch to QXL underneath the VGA BIOS:

(a) -device qxl-vga
(b) same OVMF build (= includes CSM)
(c) a vgabios-qxl SeaVGABIOS oprom that includes seabios commit
    0069a314 ("Enable VGA output when settings bochs-specific mode").
    Such an oprom can be built in the SeaBIOS directory with:

    cat >.config <<EOT
    CONFIG_QEMU=y
    CONFIG_BUILD_VGABIOS=y
    CONFIG_VGA_BOCHS=y
    CONFIG_VGA_PCI=y
    CONFIG_DEBUG_LEVEL=20
    CONFIG_OVERRIDE_PCI_ID=y
    CONFIG_VGA_VID=0x1b36
    CONFIG_VGA_DID=0x0100
    EOT
    yes "" | make oldconfig
    make -j2 out/vgabios.bin
    mv out/vgabios.bin /.../vgabios-qxl.bin

This too allows the guest to boot and have working display.

VGAPNP.SYS continues to be incapable of S3 resume. However now we can
install the QXL guest driver! (This is what's missing under Windows 2012
at this moment.)

(3) Download "qxl_w7_x64.zip" from

  http://www.spice-space.org/download/windows/qxl/qxl-0.1-19/

and unzip it to a directory in the guest. Then

Device Manager
  Display Drivers
    Update Driver Software
      Browse my computer
        <enter unzipped directory>

This should install the QXL driver files, and the video card's name
should change to "Red Hat QXL GPU".

Additionally, the "powercfg -a" command will now report S3 as supported
(dependent on the

  -global PIIX4_PM.disable_s3=0

qemu flag).

(4) At this point I shut down the guest, and changed the OVMF build
*not* to include the CSM. Furthermore, the vgabios-qxl.bin oprom from
step (2) is not important any longer (it doesn't have to be passed extra
with the romfile=... option). IOW, the configuration is:

(a) QXL VGA (-device qxl-vga)
(b) OVMF build with S3 series, but no CSM
(c) no special oprom, QemuVideoDxe runs

There is a *short* corrupted screen during boot (the Win2k8r2 boot
progress bar, which likely uses the GOP incorrectly). Before and after
this short corrupted screen, the OVMF splash screen / menu (which use
the GOP), and the Win2k8r2 user login screen (which uses the QXL guest
driver) look fine.

(5) Log in, and set:

Control Panel
  Hardware
    Power Options
      Edit Plan Settings
        Change advanced power settings
          Balanced [Active]
            Power buttons and lid
              Power button action
                Setting: Sleep

This changes what the SCI will do (which can be triggered with the
Shutdown virt-manager button, or the "system_powerdown" qemu monitor
(HMP) command).

So, pray click that virt-manager button, or issue that monitor command.
The VM will suspend.

(6) Issue the "system_wakeup" qemu monitor command. The VM will resume
and ask you to unlock it with Ctrl+Alt+Del. I did so and then started
Firefox in the guest and loaded a website.

I also tested three (suspend, resume) pairs in a row.


Summary: if the QXL guest video driver is installed, Windows 2008 R2 SP1
- doesn't really depend on the CSM,
- can suspend and resume with the pending OVMF S3 patchset.

(This gives me hope that Windows 2012 R2 will resume just as fine, once
the QXL guest driver becomes available for it.)

Thanks,
Laszlo


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to