Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Dec 2022 16:49:46 +0100
From:      Mario Marietto <marietto2008@gmail.com>
To:        freebsd-x11+help@freebsd.org,  FreeBSD virtualization <freebsd-virtualization@freebsd.org>, hackers@freebsd.org
Subject:   How to use the framebuffer as primary video device instead of the nvidia passed-through graphic card in a bhyve/linux vm
Message-ID:  <CA%2B1FSigGi%2BY-pqS9ARwY%2BdpRS2HBc-wxc0cd5ixKTAw%2Ba6uNZw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--00000000000075a67d05eeee695a
Content-Type: text/plain; charset="UTF-8"

Hello to everyone.

what Im trying to do is to set the framebuffer video adapter as primary
graphic card on my bhyve-ubuntu vm instead of the nvidia RTX 2080 ti card
that I have passed through. What I want to do really is to use both the
graphic adapters,but the primary should be the framebuffer and the
secondary the nvidia. I tried different Xorg configurations,but what I've
got is that Xorg failed to display some errors. So,the controller that you
see below should be used as primary inside the ubuntu vm :

00:1d.0 VGA compatible controller: Device fb5d:40fb

while the ones you see below as secondary :

08:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce
RTX 2080 Ti] (rev a1)
08:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio
Controller (rev a1)
08:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host
Controller (rev a1)
08:00.3 Serial bus controller: NVIDIA Corporation TU102 USB Type-C
UCSI Controller (rev a1)


The script that I use to launch the vm is the following :

#!/bin/sh
setxkbmap it
vms="$(ls /dev/vmm/*)"
vncs="$(ps ax | awk '/vncviewer [0]/{print $6}')"

for vm in $vms; do
                session="${vm##*/}"
                echo "bhyve session = $session"
                echo "vnc session = $vncs"
                if ! printf '%s\n' "${vncs}" | grep "${session}"; then
                                printf 'VNC session not
found,destroying ghost vms\n'
                                bhyvectl --vm=$session --destroy
                else
                                printf 'Found VNC session %s\n'
"${session},no ghost vms found,not destroying them"
                fi
done

vmdisk1=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
(2015020204055E)/ && d{print d}'`
echo "TOSHIBA External USB 3.0 1.8 TB ; $vmdisk1"

mount -t ufs /dev/$vmdisk1'p2' /mnt/$vmdisk1'p2'

bhyve -S -c sockets=1,cores=2,threads=2 -m 4G -w -H -A \
-s 0,hostbridge \
-s 2,virtio-blk,/mnt/$vmdisk1'p2'/bhyve/img/Linux/ubuntu2210.img,bootindex=1 \
-s 3,virtio-blk,/dev/$vmdisk4 \
-s 4,virtio-blk,/dev/$vmdisk2 \
-s 8:0,passthru,2/0/0 \
-s 8:1,passthru,2/0/1 \
-s 8:2,passthru,2/0/2 \
-s 8:3,passthru,2/0/3 \
-s 10,virtio-net,tap19 \
-s 11,virtio-9p,sharename=/ \
-s 29,fbuf,tcp=0.0.0.0:5919,w=1600,h=950,wait \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE.fd \
vm0:19 < /dev/null & sleep 2 && vncviewer 0:19

For sure ,on /boot/loader.conf I've added :

/boot/loader.conf

pptdevs="2/0/0 2/0/1 2/0/2 2/0/3"

As I said before,I tried two xorg conf files to achieve the goal. On the
first one I tried to add only the framebuffer,like this :


Section "Files"
    ModulePath   "/usr/lib/xorg/modules"
    FontPath     "/usr/share/fonts/X11/misc"
    FontPath     "/usr/share/fonts/X11/cyrillic"
    FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
    FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
    FontPath     "/usr/share/fonts/X11/Type1"
    FontPath     "/usr/share/fonts/X11/100dpi"
    FontPath     "/usr/share/fonts/X11/75dpi"
    FontPath     "built-ins"
EndSection

Section "Module"
    Load  "vnc"
    Load  "glx"
EndSection


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

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

EndSection

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

Section "Device"
   Identifier  "Card0"
   Driver      "modesetting"
   BusID       "PCI:0:29: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


but it didn't work. This is the log file that shows the errors
reported : https://pastebin.ubuntu.com/p/Gv7wgsDR4K/
I have also removed the xorg.conf file,but it didn't work either. This
is the log file that shows the errors reported :


https://pastebin.ubuntu.com/p/wNcfQTByQm/

Can someone give me some suggestions that can help me to understand
where the mistake is,please,thanks.

-- 
Mario.

--00000000000075a67d05eeee695a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hello to everyone.<br>
<br>
what Im trying to do is to set the framebuffer video adapter as primary=20
graphic card on my bhyve-ubuntu vm instead of the nvidia RTX 2080 ti=20
card that I have passed through. What I want to do really is to use both
 the graphic adapters,but the primary should be the framebuffer and the=20
secondary the nvidia. I tried different Xorg configurations,but what I&#39;=
ve
 got is that Xorg failed to display some errors. So,the controller
 that you see below should be used as primary inside the ubuntu vm :<br><di=
v><br></div><div><div class=3D"gmail-bbCodeBlock-content" dir=3D"ltr">
		<pre class=3D"gmail-bbCodeCode" dir=3D"ltr"><code>00:1d.0 VGA compatible =
controller: Device fb5d:40fb<br><br></code></pre>
	</div><div class=3D"gmail-bbCodeBlock-content" dir=3D"ltr">
while the ones you see below as secondary :</div><div class=3D"gmail-bbCode=
Block-content" dir=3D"ltr"><br></div></div><div><pre class=3D"gmail-bbCodeC=
ode" dir=3D"ltr"><code>08:00.0 VGA compatible controller: NVIDIA Corporatio=
n TU102 [GeForce RTX 2080 Ti] (rev a1)
08:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Contro=
ller (rev a1)
08:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host Controller (r=
ev a1)
08:00.3 Serial bus controller: NVIDIA Corporation TU102 USB Type-C UCSI Con=
troller (rev a1)</code></pre></div><div><br></div><div>

The script that I use to launch the vm is the following :</div><div><br></d=
iv><div><pre class=3D"gmail-bbCodeCode" dir=3D"ltr"><code>#!/bin/sh
setxkbmap it
vms=3D&quot;$(ls /dev/vmm/*)&quot;
vncs=3D&quot;$(ps ax | awk &#39;/vncviewer [0]/{print $6}&#39;)&quot;

for vm in $vms; do
                session=3D&quot;${vm##*/}&quot;
                echo &quot;bhyve session =3D $session&quot;
                echo &quot;vnc session =3D $vncs&quot;
                if ! printf &#39;%s\n&#39; &quot;${vncs}&quot; | grep &quot=
;${session}&quot;; then
                                printf &#39;VNC session not found,destroyin=
g ghost vms\n&#39;
                                bhyvectl --vm=3D$session --destroy         =
                 =20
                else
                                printf &#39;Found VNC session %s\n&#39; &qu=
ot;${session},no ghost vms found,not destroying them&quot;
                fi
done

vmdisk1=3D`geom disk list | awk &#39;/^Geom name: /{d=3D$NF} /^ *ident: (20=
15020204055E)/ &amp;&amp; d{print d}&#39;`
echo &quot;TOSHIBA External USB 3.0 1.8 TB ; $vmdisk1&quot;

mount -t ufs /dev/$vmdisk1&#39;p2&#39; /mnt/$vmdisk1&#39;p2&#39;

bhyve -S -c sockets=3D1,cores=3D2,threads=3D2 -m 4G -w -H -A \
-s 0,hostbridge \
-s 2,virtio-blk,/mnt/$vmdisk1&#39;p2&#39;/bhyve/img/Linux/ubuntu2210.img,bo=
otindex=3D1 \
-s 3,virtio-blk,/dev/$vmdisk4 \
-s 4,virtio-blk,/dev/$vmdisk2 \
-s 8:0,passthru,2/0/0 \
-s 8:1,passthru,2/0/1 \
-s 8:2,passthru,2/0/2 \
-s 8:3,passthru,2/0/3 \
-s 10,virtio-net,tap19 \
-s 11,virtio-9p,sharename=3D/ \
-s 29,fbuf,tcp=3D<a href=3D"http://0.0.0.0:5919">0.0.0.0:5919</a>,w=3D1600,=
h=3D950,wait \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE.fd \
vm0:19 &lt; /dev/null &amp; sleep 2 &amp;&amp; vncviewer 0:19<br><br>
<span style=3D"font-family:arial black,sans-serif">For sure ,on /boot/loade=
r.conf I&#39;ve added :<br><br></span></code></pre></div><div><pre class=3D=
"gmail-bbCodeCode" dir=3D"ltr"><code>/boot/loader.conf

pptdevs=3D&quot;2/0/0 2/0/1 2/0/2 2/0/3&quot;<br><br>
<span style=3D"font-family:arial black,sans-serif">As I said before,I tried=
 two xorg conf files to achieve the goal. On the
first one I tried to add only the framebuffer,like this :</span></code></pr=
e></div><div><pre class=3D"gmail-bbCodeCode" dir=3D"ltr"><code><br>Section =
&quot;Files&quot;
    ModulePath   &quot;/usr/lib/xorg/modules&quot;
    FontPath     &quot;/usr/share/fonts/X11/misc&quot;
    FontPath     &quot;/usr/share/fonts/X11/cyrillic&quot;
    FontPath     &quot;/usr/share/fonts/X11/100dpi/:unscaled&quot;
    FontPath     &quot;/usr/share/fonts/X11/75dpi/:unscaled&quot;
    FontPath     &quot;/usr/share/fonts/X11/Type1&quot;
    FontPath     &quot;/usr/share/fonts/X11/100dpi&quot;
    FontPath     &quot;/usr/share/fonts/X11/75dpi&quot;
    FontPath     &quot;built-ins&quot;
EndSection

Section &quot;Module&quot;
    Load  &quot;vnc&quot;
    Load  &quot;glx&quot;
EndSection


Section &quot;InputDevice&quot;
    Identifier  &quot;Keyboard0&quot;
    Driver      &quot;kbd&quot;
EndSection

Section &quot;InputDevice&quot;
    Identifier  &quot;Mouse0&quot;
    Driver      &quot;mouse&quot;
    Option        &quot;Protocol&quot; &quot;auto&quot;
    Option        &quot;Device&quot; &quot;/dev/input/mice&quot;
    Option        &quot;ZAxisMapping&quot; &quot;4 5 6 7&quot;

EndSection

Section &quot;Monitor&quot;
    Identifier   &quot;Monitor0&quot;
    VendorName   &quot;Monitor Vendor&quot;
    ModelName    &quot;Monitor Model&quot;
EndSection

Section &quot;Device&quot;
   Identifier  &quot;Card0&quot;
   Driver      &quot;modesetting&quot;
   BusID       &quot;PCI:0:29:0&quot;

EndSection

Section &quot;Screen&quot;
    Identifier &quot;Screen0&quot;
    Device     &quot;Card0&quot;
    Monitor    &quot;Monitor0&quot;
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     1
    EndSubSection
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     4
    EndSubSection
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     8
    EndSubSection
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     15
    EndSubSection
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     16
    EndSubSection
    SubSection &quot;Display&quot;
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection<br><br><br><span style=3D"font-family:arial black,sans-serif">bu=
t it didn&#39;t work. This is the log file that shows the errors reported :=
 <a href=3D"https://pastebin.ubuntu.com/p/Gv7wgsDR4K/" target=3D"_blank" cl=
ass=3D"gmail-link gmail-link--external" rel=3D"nofollow ugc noopener">https=
://pastebin.ubuntu.com/p/Gv7wgsDR4K/</a></span><br><span style=3D"font-fami=
ly:arial black,sans-serif">I have also removed the xorg.conf file,but it di=
dn&#39;t work either. This is the log file that shows the errors reported :=
</span><br><br><br><a href=3D"https://pastebin.ubuntu.com/p/wNcfQTByQm/">ht=
tps://pastebin.ubuntu.com/p/wNcfQTByQm/</a><br><br>
<span style=3D"font-family:arial black,sans-serif">Can someone give me some=
 suggestions that can help me to understand where the mistake is,please,tha=
nks.</span>
</code></pre></div><div>-- </div><div dir=3D"ltr" class=3D"gmail_signature"=
 data-smartmail=3D"gmail_signature">Mario.<br></div></div>

--00000000000075a67d05eeee695a--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B1FSigGi%2BY-pqS9ARwY%2BdpRS2HBc-wxc0cd5ixKTAw%2Ba6uNZw>