Bug 728174

Summary: [RFE] Win32 QXL driver will not activate if QEMU has set multifunction=on for device
Product: Red Hat Enterprise Linux 8 Reporter: Daniel Berrangé <berrange>
Component: spice-qxl-xddmAssignee: David Blechter <dblechte>
Status: CLOSED WONTFIX QA Contact: SPICE QE bug list <spice-qe-bugs>
Severity: low Docs Contact:
Priority: low    
Version: ---CC: ajia, cpelland, dblechte, iheim, pvine, rbalakri, sstutsma, xfu
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: spice
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-08-21 17:50:30 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Spice RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 738388    
Bug Blocks: 727530    

Description Daniel Berrangé 2011-08-04 09:48:52 UTC
Description of problem:
With current RHEL-6.2 builds, libvirt sets the multifunction=on parameter for all PCI devices. This causes QEMU to set

  QEMU_PCI_CAP_MULTIFUNCTION_BITNR

in the 'caps_present' field of the PCI device capabilities. When this is set for any QXL device, the Windows QXL driver will fail to activate the device returning a 'Code 10' error. Google suggests this error usually means the driver failed to find the device.

cf this thread

  http://post-office.corp.redhat.com/archives/spice-list/2011-July/msg00106.html

Best guess is that this is a bug in the Win32 QXL driver, but there's of course a possibility that its a bug in the QEMU host side QXL driver instead.

Version-Release number of selected component (if applicable):
QXL driver version 4.5.52942.0, date 5/16/2011

How reproducible:
Always

Steps to Reproduce:
1. Start a QEMU binary with a WinXP guest and QXL driver installed, adding 2 extra heads:

-device qxl,id=video1,vram_size=33554432,bus=pci.0,multifunction=on,addr=0x6.0x0'
-device qxl,id=video2,vram_size=33554432,bus=pci.0,multifunction=off,addr=0x7.0x0'


2. Attempt to activate the additional QXL devices in the Windows XP guest
3.
  
Actual results:
Only the device with 'multifunction=off' will be able to start

Expected results:
 Both extra displays start

Additional info:

Comment 3 Daniel Berrangé 2011-09-02 15:16:54 UTC
> With current RHEL-6.2 builds, libvirt sets the multifunction=on parameter for
> all PCI devices.

This is actually incorrect. While libvirt in 6.2 has support for multifunction, it won't actually enable it since the RHEL6.2 KVM binary is too old.

So while, there is clearly a bug in QXL somewhere, it should not impact guests on a RHEL6.2 host, only Fedora 15+ hosts and future RHEL6.3 if multifunction is backported.

Comment 4 Andrew Cathrow 2011-09-02 15:25:47 UTC
Moving to RHEVM-future (3.1) we need to fix this upstream and then -> rhel6.3

Comment 5 David Blechter 2011-09-02 16:43:12 UTC
set devel_ack? will review at the time the milestone will be set

Comment 7 FuXiangChun 2013-07-01 15:14:54 UTC
command line script name is cli-905851, I have attached to attachment.

Comment 8 FuXiangChun 2013-07-01 15:15:41 UTC
sorry,ignore comment 7

Comment 9 David Blechter 2014-02-11 23:20:04 UTC
no plans for whql qxl driver in 3.4, moving to the future releases

Comment 12 Sandy Stutsman 2015-08-21 17:50:30 UTC
The qxl driver is not a pci multifunction device and can't support the multifunction=on setting.