All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Gordan Bobic <gordan@bobich.net>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Xen-devel List <xen-devel@lists.xen.org>
Subject: Re: Nvidia GPU passthrough and Device IDs
Date: Mon, 2 Dec 2013 16:06:21 -0500	[thread overview]
Message-ID: <20131202210621.GC11209@phenom.dumpdata.com> (raw)
In-Reply-To: <1c514247578d36d799ddccf57584d50e@mail.shatteredsilicon.net>

On Thu, Nov 28, 2013 at 11:29:49AM +0000, Gordan Bobic wrote:
> On Thu, 28 Nov 2013 11:27:09 +0000, Andrew Cooper
> <andrew.cooper3@citrix.com> wrote:
> >On 28/11/13 11:21, Gordan Bobic wrote:
> >>This has recently come to my attention:
> >>
> >>http://www.nvidia.com/object/user-selectable-machines.html
> >>
> >>along with this snippet of information:
> >>
> >>- Physical Function PCIid: 10ed:11bf - GK104GL [GRID K2]
> >>- Virtual Function selectable from
> >>PCIid: 10ed:118b - GK104 [GeForce K2 USM]
> >>PCIid: 10ed:118c - GK104 [NVS K2 USM]
> >>PCIid: 10ed: 11b0 - GK104GL [Quadro K2 USM]
> >>PCIid: 10ed:11b1 - GK104GL [Tesla K2 USM]
> >>
> >>The way this reads to me is that it means that a different
> >>device ID is exposed to domU than what runs on the host.
> >>
> >>Therefore, it must be possible to change the device ID
> >>visible to domU to something other than what is visible
> >>on the host.
> >>
> >>So, as per a question that has recently been asked, is
> >>there a way to apply a software shim to expose a different
> >>device ID to the domU when doing PCI passthrough? This
> >>might completely avoid the need to modify the GeForce
> >>cards in ways discussed here recently to make them
> >>work in PCI passthrough mode by simply faking the
> >>device ID exposed.
> >>
> >>Gordan
> >
> >All config space accesses get vetted by Qemu or pcifront.
> >
> >We have had one bug for a particular graphics card with PCI
> >passthrough
> >which was fixed by faking up the wrong class code.  (There was a
> >windows
> >XPDM/WDDM stack issue with the affected card, and the cirrus emulated
> >graphics card was detected as "better" than the passed-through one)
> 
> I'll take that to be a resounding "yes" in answer to my
> question. :)
> 
> Could you please point me in the rough direction of the code
> and process flow that handles this?

You would be wanting to look in /git/xen/tools/qemu-xen-dir/hw/xen_pt_config_init.c

There is this code:

591     /* Device ID reg */                                                         
 592     {                                                                           
 593         .offset     = PCI_DEVICE_ID,                                            
 594         .size       = 2,                                                        
 595         .init_val   = 0x0000,                                                   
 596         .ro_mask    = 0xFFFF,                                                   
 597         .emu_mask   = 0xFFFF,                                                   
 598         .init       = xen_pt_device_reg_init,                                   
 599         .u.w.read   = xen_pt_word_reg_read,                                     
 600         .u.w.write  = xen_pt_word_reg_write,                                    
 601     },                                                                          

And the xen_pt_... are the default ones. You want to over-write 
xen_pt_device_reg_init with your own function that sets
the init_val to something. Or modify xen_pt_device_reg_init a bit.

something that provides a different value.

Looking forward to hearing how it goes!

      reply	other threads:[~2013-12-02 21:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-28 11:21 Nvidia GPU passthrough and Device IDs Gordan Bobic
2013-11-28 11:27 ` Andrew Cooper
2013-11-28 11:29   ` Gordan Bobic
2013-12-02 21:06     ` Konrad Rzeszutek Wilk [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131202210621.GC11209@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=gordan@bobich.net \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.