From nobody Mon Apr 6 10:42:03 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 757193FEB1A for ; Thu, 19 Mar 2026 20:25:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773951966; cv=none; b=IVC7upwUWMf/NQtoCBVyEYLsJXcJjEnk+IwG4UZoais4SoqQrOFbrZXZjTxywO0TZFLLyzOxcxgTJfR6ywGt3M/mns5jT5ZpJrWBBo4qk0zMhGrUKfDDK/St6svve8F9gfwisOs86FHAoWMWJAcYcFdeI2INQCZu3dY+2SuVWwg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773951966; c=relaxed/simple; bh=YAI3oxAVt3oTr3r4AmayAs+BzXpkJkmninzM6NStvCg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iSPewcyhlSYblj2OQDvkru+t9V7RWe0PZ3d1S42G+XR9DP4e3W0mmy7wwFwUyeYfBbRB6rwhNYxpA3DGFyF3ASou8elb0l/gdHGLRv9JuiZH3swEUm87H5Vtl6OtCmMizlKBnXWjVHn46GA5XZwPen+7ZCX331MX4BFDqPooelw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dj4x5gkF; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dj4x5gkF" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-43b527ac5d0so668831f8f.2 for ; Thu, 19 Mar 2026 13:25:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773951958; x=1774556758; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yOG7RwxCRsOgk4hVW4tWFSrS7iXDUAIOM5CTFXqelFw=; b=dj4x5gkFMBLraEybzDmGsG5oR6bWFn7VzpOG4sHsA+HoRTco6dmxL5wg8jvRSquV46 cfOtLb3D5dnNdrfPdoSHK94tyfQHA/WKXFAIGc8kvEdpzYLMTjE/qhbUtO8k1esDj5j+ OZGT1XXuGoyscQ/AtjVds9gqPWnTG5Ph01GNvgAd+zJMRqquy6212t6PVTOEoLdwHS3U r5ktqKCYtA12dAO1Q1xU2HQcy/J9vyfL3mp2eyY9YkcB5BD12Ed8tNzd21BVoKFqaSJm nq0/mktlAgcVW9NNv5YHHV/agsW+QBrWApE01BylH+QyMm9B8S0S/f7YWABYHRC3UzjD BBdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773951958; x=1774556758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yOG7RwxCRsOgk4hVW4tWFSrS7iXDUAIOM5CTFXqelFw=; b=qiTdVTkLCO5/LTNnMp2KzK+YmuQgxcSHnKEZkPD6M+M8shFxUZywKWqlhTnUK8t4V8 nHf7taPWLkRzncwjSRZsHWF9y+zy61R1QGOc5uTqrBPb9f4wwpc3HrpBaMTTFh5XvzT8 2d8DT6i73p2TCRFzOU0JT4iwlbg1Wl59c+d5KhobW/RU9uE2Eb6FTfBGBQAgPczatCdY 8a5HnRepF8U2dKs1CHhOapZOs6sPPfwJXIIjBKWHhin6sIylp8H5IFTAzk3E4yQbb2rC KmBsouTILoOPF8fENMdI7xCG83G6HCp7mG7+KOpUDGtfD6W1cZ6Epd/0jpZazTRvEjZu M25A== X-Gm-Message-State: AOJu0YwLNnrksJIRKDcW/K5smAJd8Jt1e5r8T4v/PgBxRJ3OZNOOsosn rAy3k/FgTnIppaRmPs0l4GlXu5cBDg/0OtN+JDQRoYTXyNczgxH6XrOB X-Gm-Gg: ATEYQzw/aDhDlFX64jpj+QQPq//gDylNFJjvAGK1lO/XfSoNwQnZvCUrFvQRiw0TNOA Q27Uzixq7kLErmf25iOmZpL+kvTXjIv3Q1mPnORwN1niRPouewtplTzqj8vSzU9ScYcaWlGuHJj Wme3dzZhd7d/9ICiqXI0itcG71PLX/SR4TxwSQovdflPBZ7XQYEonTkr6dyXiseXd2nFNNFae55 3nmUq8pWSEaFVZLRea8dpqcGwr7Dm6iZ265oO9Ij2YUKoJAoAyIfb1gdA6CS04XmQ1ilwPq9Hgl 7+HFRahFCTRTwqYok4quD4EL4EahQofe8u7D8X7sM+25+Gr0LAEo1lyJNHJILLYTjqA4Vs3Y1HX ADD0osZNgB4J6uxUA6+qO66Uaj3YLRb3uw4CRy5AsQLfC1iwwBXqeX1r/ePeT4u8CHeeXp/Epzh 7wto+3mKtEmK0QwD/ZMi7PARv0z3kYNpACR/Jt19XDde+n1UGb X-Received: by 2002:a5d:588f:0:b0:439:b3a3:7239 with SMTP id ffacd0b85a97d-43b6423fb3dmr1307686f8f.5.1773951957610; Thu, 19 Mar 2026 13:25:57 -0700 (PDT) Received: from LQ5W56KC4T ([2001:8a0:672f:7800:e0e1:55cd:f0b:b1e5]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b644ae16fsm1347544f8f.8.2026.03.19.13.25.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 19 Mar 2026 13:25:57 -0700 (PDT) From: Eric Curtin X-Google-Original-From: Eric Curtin To: linux-hyperv@vger.kernel.org Cc: linux-kernel@vger.kernel.org, iourit@linux.microsoft.com, wei.liu@kernel.org, decui@microsoft.com, haiyangz@microsoft.com Subject: [PATCH 39/55] drivers: hv: dxgkrnl: Added support for compute only adapters Date: Thu, 19 Mar 2026 20:24:53 +0000 Message-ID: <20260319202509.63802-40-eric.curtin@docker.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260319202509.63802-1-eric.curtin@docker.com> References: <20260319202509.63802-1-eric.curtin@docker.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Iouri Tarassov Signed-off-by: Iouri Tarassov [kms: forward port to 6.6 from 6.1. No code changes made.] Signed-off-by: Kelsey Steele --- drivers/hv/dxgkrnl/dxgkrnl.h | 1 + drivers/hv/dxgkrnl/dxgmodule.c | 11 ++++++++++- drivers/hv/dxgkrnl/dxgvmbus.c | 1 + drivers/hv/dxgkrnl/ioctl.c | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/hv/dxgkrnl/dxgkrnl.h b/drivers/hv/dxgkrnl/dxgkrnl.h index c5ed23cb90df..d20489317c0b 100644 --- a/drivers/hv/dxgkrnl/dxgkrnl.h +++ b/drivers/hv/dxgkrnl/dxgkrnl.h @@ -478,6 +478,7 @@ struct dxgadapter { struct winluid luid; /* VM bus channel luid */ u16 device_description[80]; u16 device_instance_id[WIN_MAX_PATH]; + bool compute_only; bool stopping_adapter; }; =20 diff --git a/drivers/hv/dxgkrnl/dxgmodule.c b/drivers/hv/dxgkrnl/dxgmodule.c index f419597f711a..0fafb6167229 100644 --- a/drivers/hv/dxgkrnl/dxgmodule.c +++ b/drivers/hv/dxgkrnl/dxgmodule.c @@ -20,6 +20,7 @@ =20 #define PCI_VENDOR_ID_MICROSOFT 0x1414 #define PCI_DEVICE_ID_VIRTUAL_RENDER 0x008E +#define PCI_DEVICE_ID_COMPUTE_ACCELERATOR 0x008A =20 #undef pr_fmt #define pr_fmt(fmt) "dxgk: " fmt @@ -270,6 +271,8 @@ int dxgglobal_create_adapter(struct pci_dev *dev, guid_= t *guid, =20 adapter->adapter_state =3D DXGADAPTER_STATE_WAITING_VMBUS; adapter->host_vgpu_luid =3D host_vgpu_luid; + if (dev->device =3D=3D PCI_DEVICE_ID_COMPUTE_ACCELERATOR) + adapter->compute_only =3D true; kref_init(&adapter->adapter_kref); init_rwsem(&adapter->core_lock); mutex_init(&adapter->device_creation_lock); @@ -622,6 +625,12 @@ static struct pci_device_id dxg_pci_id_table[] =3D { .subvendor =3D PCI_ANY_ID, .subdevice =3D PCI_ANY_ID }, + { + .vendor =3D PCI_VENDOR_ID_MICROSOFT, + .device =3D PCI_DEVICE_ID_COMPUTE_ACCELERATOR, + .subvendor =3D PCI_ANY_ID, + .subdevice =3D PCI_ANY_ID + }, { 0 } }; =20 @@ -962,4 +971,4 @@ module_exit(dxg_drv_exit); =20 MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Microsoft Dxgkrnl virtual compute device Driver"); -MODULE_VERSION("2.0.1"); +MODULE_VERSION("2.0.2"); diff --git a/drivers/hv/dxgkrnl/dxgvmbus.c b/drivers/hv/dxgkrnl/dxgvmbus.c index eb3f4c5153a6..5f17efc937c3 100644 --- a/drivers/hv/dxgkrnl/dxgvmbus.c +++ b/drivers/hv/dxgkrnl/dxgvmbus.c @@ -3774,6 +3774,7 @@ int dxgvmb_send_query_adapter_info(struct dxgprocess = *process, adapter_type->indirect_display_device =3D 0; adapter_type->acg_supported =3D 0; adapter_type->support_set_timings_from_vidpn =3D 0; + adapter_type->compute_only =3D !!adapter->compute_only; break; } default: diff --git a/drivers/hv/dxgkrnl/ioctl.c b/drivers/hv/dxgkrnl/ioctl.c index 98350583943e..f735b18fcc14 100644 --- a/drivers/hv/dxgkrnl/ioctl.c +++ b/drivers/hv/dxgkrnl/ioctl.c @@ -254,6 +254,8 @@ dxgkp_enum_adapters(struct dxgprocess *process, =20 list_for_each_entry(entry, &dxgglobal->adapter_list_head, adapter_list_entry) { + if (entry->compute_only && !filter.include_compute_only) + continue; if (dxgadapter_acquire_lock_shared(entry) =3D=3D 0) { struct d3dkmt_adapterinfo *inf =3D &info[adapter_count]; =20 @@ -474,6 +476,8 @@ dxgkio_enum_adapters(struct dxgprocess *process, void *= __user inargs) =20 list_for_each_entry(entry, &dxgglobal->adapter_list_head, adapter_list_entry) { + if (entry->compute_only) + continue; if (dxgadapter_acquire_lock_shared(entry) =3D=3D 0) { struct d3dkmt_adapterinfo *inf =3D &info[adapter_count];