[vfio-users] BSOD when installing drivers for R9 290

Eddie Yen missile0407 at gmail.com
Thu Feb 25 07:52:40 UTC 2016


For me, I usually delete this line in <device> tags

* <address type='pci' domain='0x0000' bus='0x00' slot='0x08'
function='0x0'/>*

Don't delete the <address> tag inside the <source>.
I usually delete this line, this line means the virtual address that
pass-throughed device will set in VM.
And it will not get error if you save XML file, it will generate
automatically while VM started.
So that u don't have to worry about virtual address conflicts.

2016-02-23 4:58 GMT+08:00 Eric Griffith <egriffith92 at gmail.com>:

>
> On Thu, Jan 28, 2016 at 8:47 PM, Stewart Adam <maillist at diffingo.com>
> wrote:
>
>> On 2016-01-21 12:32 PM, Eric Griffith wrote:
>>
>>>
>>> On Jan 17, 2016 16:10, "Stewart Adam" <maillist at diffingo.com
>>> <mailto:maillist at diffingo.com>> wrote:
>>>  >
>>>  > On 2016-01-17 1:27 PM, Eric Griffith wrote:
>>>  >>
>>>  >> On Jan 17, 2016 13:15, "Stewart Adam" <maillist at diffingo.com
>>> <mailto:maillist at diffingo.com>
>>>  >> <mailto:maillist at diffingo.com <mailto:maillist at diffingo.com>>>
>>> wrote:
>>>  >>  >
>>>  >>  > On 2016-01-07 11:30 AM, Eric Griffith wrote:
>>>  >>  >>
>>>  >>  >> My problem is.. The Win7 (and Win8.1) guests are perfectly fine
>>> and
>>> stable
>>>  >>  >> until I try to install the amd crimson drivers. Then Windows
>>> BSODs,
>>> yelling
>>>  >>  >> about an unhandled exception. If I unpack the install and
>>> install things
>>>  >>  >> piecemeal, then I can install the HDMI audio driver, and
>>> everything else
>>>  >>  >> okay...except for the display driver. Installing the display
>>> driver
>>> causes
>>>  >>  >> the BSOD.
>>>  >>  >
>>>  >>  > How are you booting the guest (e.g. manually executing QEMU, or
>>> manually
>>>  >> created libvirt XML or virt-manager+libvirt)?
>>>  >>  >
>>>  >>
>>>  >> Virt-manager+libvirt
>>>  >>
>>>  >>  > I had a very similar symptom on my guest, in the end it was the
>>> guest's
>>>  >> machine flag "vmport=off" that virt-manager had added that resulted
>>> in the
>>>  >> hang/BSOD upon installation of the driver.
>>>  >>
>>>  >> I tried removing the vmport=off flag but still BSOD'ed :(
>>>  >>
>>>  >> > After attempting a driver install, does the guest boot correctly
>>> but hang
>>>  >> when attempting to show the login screen (i.e. when the 3D driver
>>> initializes)?
>>>  >>
>>>  >> Sometimes yes, other times itd just do the boot as if I had never
>>> tried to
>>>  >> install the driver.
>>>  >
>>>  >
>>>  > Sounds like the same issue I was experiencing... Have you also added a
>>> ioh3420 device edited your configuration so that the GPU is attached to
>>> it
>>> instead the default PCI/PCIE buses? If you're not sure, please attach the
>>> output of "virsh dumpxml your-vm-name".
>>>
>>> I did not do that, I just passed through the card and the card's audio.
>>> Are
>>> there any available instructions on how to do so?
>>>
>>> Also I appreciate the pointer, Stewart :)
>>>
>> Sorry for the delay - here are those instructions:
>>
>> You'll want to execute 'virsh edit domname' as root to edit your domain's
>> config file, and then add this XML after the 'pci-bridge' controller block:
>>
>>     <controller type='pci' index='3' model='pcie-root-port'>
>>       <model name='ioh3420'/>
>>       <target chassis='1' port='0x1'/>
>>       <alias name='pci.3'/>
>>       <address type='pci' domain='0x0000' bus='0x00' slot='0x1c'
>> function='0x0' multifunction='on'/>
>>     </controller>
>>
>> Then scroll down to the <hostdev> block for your GPU, and alter it to use
>> the controller (bus 3) we just created:
>>
>>     <hostdev mode='subsystem' type='pci' managed='yes'>
>>       <driver name='vfio'/>
>>       <source>
>>         <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
>>       </source>
>>       <alias name='hostdev0'/>
>>       <address type='pci' domain='0x0000' bus='0x03' slot='0x00'
>> function='0x0' multifunction='on'/>
>>     </hostdev>
>>
>> Regards,
>> Stewart
>>
>
> Hey Stewart, long time no talk. Sorry about the delaying in getting back
> to you on this topic, classes really kicking into high gear and life became
> kind of crazy.
>
> Copy pasted below is the dumpxml of my Win8.1 VM. I tried to add in the
> two code blocks that you linked above, but I got errors when I did so. I've
> bolded and marked in red where I added the first code block, the pci
> definition, and then did the same for the two devices that make up my GPU.
>
> Edit: just incase anyone's mail client doesn't like the bold / text color
> change, I've also off-set the area by adding a blank line.
>
> XML WALL OF TEXT:
>
> <domain type='kvm'>
>   <name>win8.1</name>
>   <uuid>(UUID)</uuid>
>   <memory unit='KiB'>4194304</memory>
>   <currentMemory unit='KiB'>4194304</currentMemory>
>   <vcpu placement='static'>2</vcpu>
>   <os>
>     <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
>     <loader readonly='yes'
> type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
>     <nvram>/var/lib/libvirt/qemu/nvram/win8.1_VARS.fd</nvram>
>   </os>
>   <features>
>     <acpi/>
>     <apic/>
>     <hyperv>
>       <relaxed state='on'/>
>       <vapic state='on'/>
>       <spinlocks state='on' retries='8191'/>
>     </hyperv>
>   </features>
>   <cpu mode='custom' match='exact'>
>     <model fallback='allow'>core2duo</model>
>   </cpu>
>   <clock offset='localtime'>
>     <timer name='rtc' tickpolicy='catchup'/>
>     <timer name='pit' tickpolicy='delay'/>
>     <timer name='hpet' present='no'/>
>     <timer name='hypervclock' present='yes'/>
>   </clock>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>restart</on_crash>
>   <pm>
>     <suspend-to-mem enabled='no'/>
>     <suspend-to-disk enabled='no'/>
>   </pm>
>   <devices>
>     <emulator>/usr/bin/qemu-kvm</emulator>
>     <disk type='file' device='cdrom'>
>       <driver name='qemu' type='raw'/>
>       <source file='/usr/share/virtio-win/virtio-win-0.1.102.iso'/>
>       <target dev='sda' bus='sata'/>
>       <readonly/>
>       <boot order='3'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
>     </disk>
>     <disk type='file' device='disk'>
>       <driver name='qemu' type='qcow2'/>
>       <source file='/var/lib/libvirt/images/win8.1.qcow2'/>
>       <target dev='sdb' bus='sata'/>
>       <boot order='1'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='1'/>
>     </disk>
>     <disk type='file' device='cdrom'>
>       <driver name='qemu' type='raw'/>
>       <source file='/var/lib/libvirt/images/Win8.1_English_x64.iso'/>
>       <target dev='sdc' bus='sata'/>
>       <readonly/>
>       <boot order='2'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='2'/>
>     </disk>
>     <controller type='usb' index='0' model='ich9-ehci1'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x7'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci1'>
>       <master startport='0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x0' multifunction='on'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci2'>
>       <master startport='2'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x1'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci3'>
>       <master startport='4'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x2'/>
>     </controller>
>
> *<!-- ADDED PCI BLOCK HERE -->*
>
>     <controller type='pci' index='0' model='pci-root'/>
>     <controller type='sata' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
>     </controller>
>     <controller type='virtio-serial' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
> function='0x0'/>
>     </controller>
>     <interface type='network'>
>       <mac address='52:54:00:7d:c6:85'/>
>       <source network='default'/>
>       <model type='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
> function='0x0'/>
>     </interface>
>     <serial type='pty'>
>       <target port='0'/>
>     </serial>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <channel type='spicevmc'>
>       <target type='virtio' name='com.redhat.spice.0'/>
>       <address type='virtio-serial' controller='0' bus='0' port='1'/>
>     </channel>
>     <input type='tablet' bus='usb'/>
>     <sound model='ich9'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
>     </sound>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *<hostdev mode='subsystem' type='pci' managed='yes'>      <source>
> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
> </source>      <address type='pci' domain='0x0000' bus='0x00' slot='0x07'
> function='0x0'/>    </hostdev>    <hostdev mode='subsystem' type='pci'
> managed='yes'>      <source>        <address domain='0x0000' bus='0x01'
> slot='0x00' function='0x1'/>      </source>      <address type='pci'
> domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>    </hostdev>*
> <hostdev mode='subsystem' type='usb' managed='yes'>
>       <source>
>         <vendor id='0x24f0'/>
>         <product id='0x0140'/>
>       </source>
>     </hostdev>
>     <hostdev mode='subsystem' type='usb' managed='yes'>
>       <source>
>         <vendor id='0x046d'/>
>         <product id='0xc52b'/>
>       </source>
>     </hostdev>
>     <hostdev mode='subsystem' type='usb' managed='yes'>
>       <source>
>         <vendor id='0x0a5c'/>
>         <product id='0x21e8'/>
>       </source>
>     </hostdev>
>     <redirdev bus='usb' type='spicevmc'>
>     </redirdev>
>     <redirdev bus='usb' type='spicevmc'>
>     </redirdev>
>     <memballoon model='virtio'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x09'
> function='0x0'/>
>     </memballoon>
>   </devices>
> </domain>
>
>
> Adding them in was no problem in and of itself, it was saving it that
> caused a problem. Virsh didn't like those two definitions. Editing the
> "address type=pci" lines of both, and changing THOSE bus= definitions to
> say 0x03, instead of 0x00 gives me this error:
>
> error: XML error: Invalid PCI address 0000:03:07.0. slot must be <= 0
>
>
> Editing the one above it, the "address domain=" line, and changing the bus
> from 0x01 to 0x03 gives me this error:
>
> error: XML error: The device information for 0000:00:1c.0 has no PCI
> connection types listed
>
>
> Any thoughts?
>
> Half tempted to say 'screw it' and just hold off on doing a VFIO setup
> until I snag an Nvidia Polaris card later this year ><
>
> _______________________________________________
> vfio-users mailing list
> vfio-users at redhat.com
> https://www.redhat.com/mailman/listinfo/vfio-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20160225/0fc8f062/attachment.htm>


More information about the vfio-users mailing list