[lkml]   [2022]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH v1 1/9] drivers: hv: dxgkrnl: Driver initialization and creation of dxgadapter

On 1/12/2022 11:46 PM, Greg KH wrote:
> On Wed, Jan 12, 2022 at 11:55:06AM -0800, Iouri Tarassov wrote:
> > + dev_dbg(dxgglobaldev, "%s: %x:%x %p %pUb\n",
> > + __func__, adapter->luid.b, adapter->luid.a, hdev->channel,
> > + &hdev->channel->offermsg.offer.if_instance);
> When I see something like "global device pointer", that is a HUGE red
> flag.
> No driver should ever have anything that is static to the driver like
> this, it should always be per-device. Please use the correct device
> model here, which does not include a global pointer, but rather unique
> ones that are given to you by the driver core. That way you are never
> tied to only "one device per system" as that is a constraint that you
> will have to fix eventually, might as well do it all correctly the first
> time as it is not any extra effort to do so
Hi Greg,

dxgglobaldev is a pointer to the global driver data. By design there is a
single hyper-v VM bus and a single corresponding /dev/dxg device.
Virtual GPU adapters are present on the VM bus. /dev/dxg device is used
to enumerate all virtual GPUs, which are accessible only via IOCTLs
to /dev/dxg. dxgglobaldev has a list of all vGPU adapters and
other global driver state. This follows the design on Windows where a single
global object in dxgkrnl.sys driver is used to enumerate and access all
GPU devices. This is also how the public D3DKMT interface to dxgkrnl is


 \ /
  Last update: 2022-01-14 01:08    [W:0.057 / U:1.988 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site