Skip to content

Commit 4f29ac0

Browse files
Iouri Tarassovchessturo
authored andcommitted
drivers: hv: dxgkrnl: Added support for compute only adapters
Signed-off-by: Iouri Tarassov <iourit@linux.microsoft.com> [kms: forward port to 6.6 from 6.1. No code changes made.] Signed-off-by: Kelsey Steele <kelseysteele@microsoft.com>
1 parent a19eaf8 commit 4f29ac0

4 files changed

Lines changed: 16 additions & 1 deletion

File tree

drivers/hv/dxgkrnl/dxgkrnl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ struct dxgadapter {
478478
struct winluid luid; /* VM bus channel luid */
479479
u16 device_description[80];
480480
u16 device_instance_id[WIN_MAX_PATH];
481+
bool compute_only;
481482
bool stopping_adapter;
482483
};
483484

drivers/hv/dxgkrnl/dxgmodule.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
#define PCI_VENDOR_ID_MICROSOFT 0x1414
2222
#define PCI_DEVICE_ID_VIRTUAL_RENDER 0x008E
23+
#define PCI_DEVICE_ID_COMPUTE_ACCELERATOR 0x008A
2324

2425
#undef pr_fmt
2526
#define pr_fmt(fmt) "dxgk: " fmt
@@ -270,6 +271,8 @@ int dxgglobal_create_adapter(struct pci_dev *dev, guid_t *guid,
270271

271272
adapter->adapter_state = DXGADAPTER_STATE_WAITING_VMBUS;
272273
adapter->host_vgpu_luid = host_vgpu_luid;
274+
if (dev->device == PCI_DEVICE_ID_COMPUTE_ACCELERATOR)
275+
adapter->compute_only = true;
273276
kref_init(&adapter->adapter_kref);
274277
init_rwsem(&adapter->core_lock);
275278
mutex_init(&adapter->device_creation_lock);
@@ -622,6 +625,12 @@ static struct pci_device_id dxg_pci_id_table[] = {
622625
.subvendor = PCI_ANY_ID,
623626
.subdevice = PCI_ANY_ID
624627
},
628+
{
629+
.vendor = PCI_VENDOR_ID_MICROSOFT,
630+
.device = PCI_DEVICE_ID_COMPUTE_ACCELERATOR,
631+
.subvendor = PCI_ANY_ID,
632+
.subdevice = PCI_ANY_ID
633+
},
625634
{ 0 }
626635
};
627636

@@ -962,4 +971,4 @@ module_exit(dxg_drv_exit);
962971

963972
MODULE_LICENSE("GPL");
964973
MODULE_DESCRIPTION("Microsoft Dxgkrnl virtual compute device Driver");
965-
MODULE_VERSION("2.0.1");
974+
MODULE_VERSION("2.0.2");

drivers/hv/dxgkrnl/dxgvmbus.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3774,6 +3774,7 @@ int dxgvmb_send_query_adapter_info(struct dxgprocess *process,
37743774
adapter_type->indirect_display_device = 0;
37753775
adapter_type->acg_supported = 0;
37763776
adapter_type->support_set_timings_from_vidpn = 0;
3777+
adapter_type->compute_only = !!adapter->compute_only;
37773778
break;
37783779
}
37793780
default:

drivers/hv/dxgkrnl/ioctl.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ dxgkp_enum_adapters(struct dxgprocess *process,
254254

255255
list_for_each_entry(entry, &dxgglobal->adapter_list_head,
256256
adapter_list_entry) {
257+
if (entry->compute_only && !filter.include_compute_only)
258+
continue;
257259
if (dxgadapter_acquire_lock_shared(entry) == 0) {
258260
struct d3dkmt_adapterinfo *inf = &info[adapter_count];
259261

@@ -474,6 +476,8 @@ dxgkio_enum_adapters(struct dxgprocess *process, void *__user inargs)
474476

475477
list_for_each_entry(entry, &dxgglobal->adapter_list_head,
476478
adapter_list_entry) {
479+
if (entry->compute_only)
480+
continue;
477481
if (dxgadapter_acquire_lock_shared(entry) == 0) {
478482
struct d3dkmt_adapterinfo *inf = &info[adapter_count];
479483

0 commit comments

Comments
 (0)