From nobody Fri Jul 10 09:28:25 2026 X-Original-To: virtualization@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gxRMs67rcz6krQc for ; Fri, 10 Jul 2026 09:28:25 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gxRMs55CKz3G5K for ; Fri, 10 Jul 2026 09:28:25 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783675705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DPlBjkhr2zSOchJYNOVpKJr3v9qv0dcUVYvivO85SKc=; b=k8JWQBeqLBJeDnlgnpFQOvCut8jGwW9FJ5nwTZzrEic4aZiQTu6RIsOq0n4Z7NxIksJWGX G1q6w1nXh/allnc7NWyViJ2t/1AioeSfhygvyEy+SGFf7vyIQnxsUcBA4M6GU9WWE7XX8R ASc1WQE7Vfpop1Oggtrd6FFha0w8KraJjh04xy1v5olR+69R3gDmDooh+OtmLvFIgftFG+ +qmdovUFH9sePTLwcIS8mtLmjPiXgySXwnduaCI+7Y4zsdXQF7gO/nJaZLw/Z7Hg4HZulB 7PA+juixsfL1jE0CcJIRvTwGS+044bjZ0ac7gwBOTqFKonvh9qOQBFXGdY4LYg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783675705; a=rsa-sha256; cv=none; b=TtoBJuU8iQaOz3tLxpcvqr3cPAO4fpEyUGCQZGbHzW+NHpcUGO9/fdI93x0ScLkzXVljVk G68x/csQhqdnQWyOkw3eFSyctrs71urjs41vtfRaiH9j0n2DXqA9nECZXoiSG6i5PUzi1Z HBwS/OW0/2+KXUQGJgsHSS8t2LYrzP3SPSAxOo8YNGZ4K9mPid9dD00WUnhKl6hFDES2h1 umQbxTEAOBdUmYnO/LA4sSG0jg6pwDp5vAVDGJcW8ZJEpwCT4/SIZNza+nXGb5KBfuvFTL 7FEwJ7BQ/vCovBOlLx+7qbrpgpfVZTLm9cEqweQqydpxcUc0zUAjVk+nUYR7PA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783675705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DPlBjkhr2zSOchJYNOVpKJr3v9qv0dcUVYvivO85SKc=; b=Ed1Kb3yCT/gxo2hJZ5ZX0+GKeiow4vxAm5UvmQEy83vr1hr6JKctzomq3XT3gH01ag0T67 CDjtn0QmnUQt6+k29cPqL7+xqaEVKuVwWFK3RrhCo3ik0PRmI+23U1EdBmTwcJg5tU9yU5 kNedUGbdl1AZTfukeTfRxYEHcwSsc/97YsKwAbTEjHf4U27gT4EZzVJhlaSsW4tNdfa1zB K1lSZTb32IkzuT4U2pQ2AGGu+8SiuUmM3EZYg+y1ShshHXOKOHYiGn7XYdP6R8GuruHbgG 31Ulv3v4fXmXT7X9MqBcr0rEFA9nrbnGX9geHatMW5SJs7qjkSkX+vZ1Y+TpVA== Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2610:1c1:1:606c::50:1d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4gxRMs3nFZzpbS for ; Fri, 10 Jul 2026 09:28:25 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.5]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id 66A9SPHv094500 for ; Fri, 10 Jul 2026 09:28:25 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 66A9SPhE094499 for virtualization@FreeBSD.org; Fri, 10 Jul 2026 09:28:25 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: virtualization@FreeBSD.org Subject: [Bug 296663] bhyve: gvt-d probe claims discrete Intel GPUs (Arc/DG2), VM startup fails with "Unknown IGD device" / GSM errors Date: Fri, 10 Jul 2026 09:28:25 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bhyve X-Bugzilla-Version: 15.1-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: truegrom@gmail.com X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: virtualization@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated List-Id: Discussion List-Archive: https://lists.freebsd.org/archives/freebsd-virtualization List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: freebsd-virtualization@freebsd.org Sender: owner-freebsd-virtualization@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D296663 Bug ID: 296663 Summary: bhyve: gvt-d probe claims discrete Intel GPUs (Arc/DG2), VM startup fails with "Unknown IGD device" / GSM errors Product: Base System Version: 15.1-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Some People Priority: --- Component: bhyve Assignee: virtualization@FreeBSD.org Reporter: truegrom@gmail.com Created attachment 272689 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D272689&action= =3Dedit Proof of concept, not for commit: skip GVT-d quirks for devices not in the = IGD table ### Environment Same system as bug #296662: FreeBSD 15.1-RELEASE amd64, AMD Ryzen (Cezanne) host with AMD-Vi, Intel Arc A380 (8086:56a5) on ppt(4), Ubuntu 24.04 guest via vm-bhyve/grub-bhyve. ### Overview usr.sbin/bhyve/amd64/pci_gvt-d.c registers quirks for passing through Intel integrated GPUs (Graphics Stolen Memory, OpRegion). Its probe matches on vendor =3D=3D Intel && class =3D=3D display only: gvt_d_probe(): vendor =3D=3D 0x8086 ? class =3D=3D PCIC_DISPLAY ? -> claim the device This also matches discrete Intel GPUs (Arc/DG2, e.g. 8086:56a5), which have no GSM and no OpRegion. gvt_d_init() then fails =E2=80=94 depending on= the host, either at the hw.intel_graphics_stolen_* sysctls / E820 allocation, at get_igd_ops() ("Unknown IGD device. It's not supported yet!"), or at gvt_d_setup_opregion() ("Invalid OpRegion signature") =E2=80= =94 and because a pe_init failure is fatal in init_pci(), the VM does not start at all. This failure mode was previously reported on freebsd-virtualization for an Arc A380 on an EPYC host ("Unable to setup Graphics Stolen Memory" / "Invalid OpRegion signature", January 2025), where the suggested direction was to skip the GVT-d quirks for such devices. Note: on my system this failure mode was masked in an unfortunate way =E2= =80=94 because of the FLR recovery bug (bug #296662), gvt_d_probe() read 0xffff as the vendor ID from the still-unresponsive device and silently declined it, so the VM started but with an invisible GPU. Once the FLR issue is fixed, every Arc passthrough attempt would instead die in gvt_d_init(). The two bugs together make Arc passthrough impossible in different ways, whichever one you hit first. ### Steps to Reproduce 1. Ensure the GPU responds to config space accesses at probe time (fix or work around the FLR-timing issue from bug #296662). 2. Start a bhyve VM with an Arc GPU function as a passthru device. 3. bhyve exits during initialization with GSM/IGD/OpRegion errors. ### Expected Results Discrete Intel GPUs are passed through as plain passthru devices; the GVT-d quirks apply only to the integrated GPUs they were written for. ### Root cause confirmation (proof of concept) To confirm the analysis, a proof-of-concept change was tested on the affected system (see attachment): in gvt_d_probe(), return ENXIO when get_igd_ops() has no entry for the device, so unknown/discrete devices fall through to the generic passthru path instead of failing VM startup. Tested together with the PoC from bug #296662: the Arc A380 passes through cleanly to an Ubuntu 24.04 guest, i915 initializes fully (GuC 70.36.0 / HuC authenticated), VA-API hardware transcoding works. The one-line direction (restrict the GVT-d probe to devices the code actually knows how to handle) matches what was suggested on freebsd-virtualization; the exact criterion (device table vs. host bus 0/2/0 vs. something else) is left to the maintainers. usr.sbin/bhyve/amd64/pci_gvt-d.c is currently identical in main and releng/15.1, so the PoC applies unmodified to both; all testing was done on 15.1-RELEASE. ### Provenance disclosure The analysis was performed interactively on the affected hardware. The attached proof-of-concept diff was developed with the assistance of an LLM (Anthropic Claude). I am not a C developer and have not performed a full code review, so I am explicitly NOT proposing it for commit; it is attached to document how the root cause was confirmed and as a temporary mitigation for affected users. I am happy to test any proposed fix on the affected hardware. See also bug #296662 (bhyve passthru caches the PCI config header while the device is still recovering from FLR) =E2=80=94 both bugs must be addres= sed for Intel Arc passthrough to work. --=20 You are receiving this mail because: You are the assignee for the bug.=