[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] Issue with Win8 guest VGA Passthrough



I'd seen people saying the GTX 285 worked for them with no changes to the drivers, but I'll see if I can get this to work. 

thanks,
-Kyle


On Wed, Feb 19, 2014 at 4:12 PM, Gordan Bobic <gordan@xxxxxxxxxx> wrote:
GeForce card won't work - only Quadro/Tesla/Grid cards are whitelisted in the driver to make them work. You can modify your GTX285's device ID by changing the straps in it's BIOS to make it into a Quadro.

This may be of interest:
http://www.altechnative.net/2013/11/25/virtualized-gaming-nvidia-cards-part-3-how-to-modify-a-fermi-based-geforce-into-a-quadro-geforce-gts450gtx470gtx480-to-quadro-200050006000/

The straps on the 2xx series are a little different (check the nouveau strap documentation), but the general method will be similar.

Gordan


On 02/19/2014 08:54 PM, Kyle Davis wrote:
Hello everyone,

I'd posted this over at the new user forum on xenproject, and was
directed here. Hopefully I'm not doing something stupid by copying and
pasting my post from there, but here goes:

I have a core i7-4770 on an ASRock Z87 Extreme 4 motherboard. I have a
PCI-based USB hub attached to deal with the fact that all the USB ports
on the motherboard are on the same controller for passthrough purposes.
I am using Debian Jessie with Xen 4.3 and a kernel based on 3.12.9. The
card I'm trying to passthrough is an NVIDIA GTX 285 (I've found folks
who say it worked fine for them, including on the boards here).

I created a kernel included the flags suggested by the xen wiki,
switched my toolstack over to xl (was on xm, and I'm unsure why), and
followed the wiki's guides for setting up xen and VGA passthrough.

I created a Windows 8 (HVM) guest that worked fine, but slowly, before
beginning the VGA passthrough guide. Changed my windows.cfg file to the
following:


builder='hvm'
bootloader ="/usr/bin/pygrub"
memory =8192
vcpus=4
name ="windows8"
vif =['bridge=xenbr0']
disk =['phy:/dev/vg0/windows,hda,w','file:/home/kyle/Desktop/Windows.iso,hdc:c$
device_model_version  ="qemu-xen-traditional"
device_model_override ="/usr/bin/qemu-x86_64"
acpi =1
pci=['01:00.0','04:00.0']
pci_permissive=1
boot="c"
sdl=0
serial='pty'
vnc=1
vnclisten=""
vncpasswd=""



When the config worked, pci_permissive was commented out, as was the pci
tag. The device override was set to qemu rather than qemu-x86_64, and
the model version was qemu-xen rather than traditional. I've tried
flipping things just to see if I could make it work to no avail.

The error I get upon running the config is:


libxl:  error:  libxl_dm.c:1275:device_model_spawn_outcome:  domain2  devicemodel:  spawn failed (rc=-3)
libxl:  error:  libxl_create.c:1075:domcreate_devmodel_started:  device model did notstart:  -3

libxl:  error:  libxl_dm.c:1306:libxl__destroy_device_model:  Device  Model  already exited



When I checked the log under /var/log/xen, I originally had
-gfx_passthru: invalid option. After playing with the config file, I now
have a hot mess:


usage: qemu-x86_64 [options] program [arguments...]
Linux CPU emulator (compiledfor  x86_64 emulation)

Optionsand  associated environment variables:


Argument      Env-variable      Description
-h                              print this help
-g port       QEMU_GDB          wait gdb connectionto  'port'
-L path       QEMU_LD_PREFIXset  the  elf interpreter prefixto  'path'
-s size       QEMU_STACK_SIZEset  the  stack sizeto  'size' bytes
-cpu model    QEMU_CPU          select CPU (-cpu helpfor  list)

-E var=value  QEMU_SET_ENV      sets targets environment variable (seebelow)
-U var        QEMU_UNSET_ENV    unsets targets environment variable (seebelow)
-0  argv0      QEMU_ARGV0        forces target process argv[0]to  be 'argv0'
-r uname      QEMU_UNAMEset  qemu uname releasestring  to  'uname'
-B address    QEMU_GUEST_BASEset  guest_base addressto  'address'

-R size       QEMU_RESERVED_VA  reserve 'size' bytesfor  guest virtual address $
-ditem[,...] QEMU_LOG          enable loggingof  specified items (use '-d help$
-D logfile    QEMU_LOG_FILENAMEwrite  logsto  'logfile' (default stderr)

-p pagesize   QEMU_PAGESIZEset  the  host page sizeto  'pagesize'
-singlestep   QEMU_SINGLESTEPrun  in  singlestep mode
-strace       QEMU_STRACElog  system calls
-version       QEMU_VERSION      displayversion  informationand  exit


Defaults:
QEMU_LD_PREFIX  = /etc/qemu-binfmt/x86_64
QEMU_STACK_SIZE =8388608  byte

You can use -Eand  -U optionsor  the  QEMU_SET_ENVand
QEMU_UNSET_ENV environment variablesto  set  and  unset
environment variablesfor  the  target process.
Itis  possibleto  provide several variablesby  separating them
by  commasin  getsubopt(3) style. Additionallyit  is  possibleto
providethe  -Eand  -U options multipletimes.
The following lines are equivalent:
     -E var1=val2 -E var2=val2 -U LD_PRELOAD -U LD_DEBUG
     -E var1=val2,var2=val2 -U LD_PRELOAD,LD_DEBUG
     QEMU_SET_ENV=var1=val2,var2=val2 QEMU_UNSET_ENV=LD_PRELOAD,LD_DEBUG
Notethat  if  you provide several changesto  a single variable
the  last  change will stayin  effect.




Does anyone have some insight on this? I feel like I'm very close to
getting my passthrough working, and that would be really awesome.

Additionally, I tried to go graphically after being unsuccessful with my
windows.cfg file, and tried the virtual machine manager. When I start
it, however, I get this:


Unableto  connectto  libvirt.

Failedto  connect socketto  '/var/run/libvirt/libvirt-sock': No suchfile  or  directory

Verifythat:
  - A Xen host kernel was booted
  - The Xen service has been started



and under details :


Unableto  connectto  libvirt.

Failedto  connect socketto  '/var/run/libvirt/libvirt-sock': No suchfile  or  directory

Verifythat:
  - A Xen host kernel was booted
  - The Xen service has been started

Libvirt URIis: xen:///

Traceback (most recent calllast):
   File"/usr/share/virt-manager/virtManager/connection.py", line1027,in  _open_thread
     self.vmm = self._try_open()
   File"/usr/share/virt-manager/virtManager/connection.py", line1009,in  _try_open

     flags)
   File"/usr/lib/python2.7/dist-packages/libvirt.py", line105,in  openAuth
     if  retis  None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: Failedto  connect socketto  '/var/run/libvirt/libvirt-sock': No suchfile  or  directory




The virtual machine manager does not, thereby, connect to localhost

I guess I should also mention that Windows 8 didn't always shut down
properly, but it wasn't reporting errors and things like the GPLPV
drivers seemed to install correctly.

Thanks for any insight,
-Kyle


_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxx
http://lists.xen.org/xen-users



_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxx
http://lists.xen.org/xen-users

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.