[Bug 265522] base system/bhyve : What could keep in use the Intel GPU in my system

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 30 Jul 2022 17:05:34 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265522

            Bug ID: 265522
           Summary: base system/bhyve : What could keep in use the Intel
                    GPU in my system
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: marietto2008@gmail.com

Hello.

I'm running FreeBSD 13.1-RELEASE and I'm trying to passthru my CoffeeLake-S GT2
[UHD Graphics 630] on a Linux VM but it failed. This graphic card :


ppt4@pci0:0:2:0:        class=0x038000 rev=0x02 hdr=0x00 vendor=0x8086
device=0x3e98 subvendor=0x1458 subdevice=0xd000
vendor     = 'Intel Corporation'
device     = 'CoffeeLake-S GT2 [UHD Graphics 630]'
class      = display


below there are the bhyve parameters that I've used :


bhyve -S -c sockets=1,cores=2,threads=2 -m 4G -w -H -A \
-s 0,hostbridge \
-s 1,nvme,/dev/$vmdisk0,bootindex=1 \
-s 2,ahci-hd,/dev/$vmdisk2 \
-s 3,ahci-hd,/dev/$vmdisk4 \
-s 4,passthru,0/2/0 \
-s 7,virtio-net,tap4 \
-s 10,hda,play=/dev/dsp,rec=/dev/dsp \
-s 29,fbuf,tcp=0.0.0.0:5904,w=1500,h=950 \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_BHF_CODE.fd \
vm4 < /dev/null & sleep 2 && vncviewer 0:4


this is the error I get :


bhyve: Warning: Unable to reuse host address of Graphics Stolen Memory. 
GPU passthrough might not work properly.bhyve: gvt_d_setup_opregion: Unable to
get OpRegion base and length ;
bhyve: gvt_d_init: Unable to setup OpRegion ; device emulation initialization
error: Operation not supported by device


A bhyve developer replied to me in this way :


I thought in general we couldn't pass the GPU if it was being used by the host?
(Thus you would need to have two GPUs, one to allow the host to display its
output and one to passthrough. Unless the host is completely headless).


At this point I think that the intel GPU is actually in use,but I don't know
what could keep it in use. Infact :


I've removed the xf86-video-intel driver from the system with :


pkg remove xf86-video-intel


2) I haven't any i915kms or legacy intel module inside the memory :


# kldstat | grep i915 : nothing
# kldstat | grep kms : nothing
# kldstat | grep intel : nothing


3) this is my xorg.conf (where is there is no trace of intel driver)


Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" LeftOf "Screen1"
Screen      1  "Screen1"
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
ModulePath   "/usr/local/lib/xorg/modules"
FontPath     "/usr/local/share/fonts/misc/"
FontPath     "/usr/local/share/fonts/TTF/"
FontPath     "/usr/local/share/fonts/OTF/"
FontPath "/usr/local/share/fonts/Type1/"
FontPath "/usr/local/share/fonts/100dpi/"
FontPath "/usr/local/share/fonts/75dpi/"
FontPath "catalogue:/usr/local/etc/X11/fontpath.d"
EndSection

Section "Module"
Load  "glx"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option        "Protocol" "auto"
Option        "Device" "/dev/sysmouse"
Option        "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
EndSection

Section "Monitor"
Identifier   "Monitor1"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
EndSection

Section "Device"
Identifier  "Card0"
Driver      "nvidia"
BusID       "PCI:1:0:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
SubSection "Display"
Viewport   0 0
Depth     1
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     4
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     8
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     15
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     16
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device     "Card0"
Monitor    "Monitor1"
SubSection "Display"
Viewport   0 0
Depth     1
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     4
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     8
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     15
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     16
EndSubSection
SubSection "Display"
Viewport   0 0
Depth     24
EndSubSection
EndSection


I've just booted a linux vm passing thru the RTX 2080 ti using the same
parameters used before and it worked. I've detached the HDMI cable from the
1060 and I've attached it to the 2080 ti and I've got what I wanted from the
beginning : to choose between virtualize an OS with bhyve or more easily,only
using the second monitor without bhyve. Now I want also pass thru the intel
GPU.

What video card do I think provides the image I'm looking at on my monitor ?
The following scheme is valid to answer this question :


1) monitor AOC + monitor Samsung -> 1 HDMI cable (for the samsung) + 1 DP cable
(for the AOC) -> geforce 1060 - without a bhyve-Linux VM

2) monitor AOC + monitor Samsung -> 1 DP cable attached to the AOC and 1 hdmi
cable attached to the RTX 2080 ti - if I want to use a bhyve / Linux vm passing
the RTX 2080 ti GPU

3) monitor AOC + monitor Samsung -> 1 DP cable attached to the AOC and 1 HDMI
cable attached to the Intel GPU - if I want to use a bhyve / Linux VM passing
the Intel GPU


The Intel GPU is always kept free as well as the RTX 2080 ti. Even in the
BIOS,since I've chosen the 1060 as default GPU,but the Intel GPU is enabled.

-- 
You are receiving this mail because:
You are the assignee for the bug.