Re:_How_to_use_the_framebuffer_ as_primary_video_device_instead _of_the_nvidia_passed-through_g raphic_card_in_a_bhyve/linux_vm

From: Corvin_Köhne <corvink_at_FreeBSD.org>
Date: Sun, 04 Dec 2022 09:40:25 UTC
On December 3, 2022 7:14:29 PM GMT+01:00, Mario Marietto <marietto2008@gmail.com> wrote:
>ok. I tried like this,but it didn't work :
>
>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 7,fbuf,tcp=0.0.0.0:5919,w=1600,h=950,wait \
>-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 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
>
>I tried specifying the bus ID of the framebuffer and I have used this
>xorg.conf file :
>
>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:7: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
>
>The error reported has been :
>
>https://ibb.co/1KX2h26
>https://ibb.co/Cv5FffB
>
>thanks.
>
>Il giorno sab 3 dic 2022 alle ore 17:34 Corvin Köhne <corvink@freebsd.org>
>ha scritto:
>
>> On December 3, 2022 4:49:46 PM GMT+01:00, Mario Marietto <
>> marietto2008@gmail.com> wrote:
>>>
>>> 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.
>>>
>>
>> Try to assign a lower pci slot number to the framebuffer device than to
>> the nvidia gpu in your bhyve command.
>> --
>> Best regards,
>> Corvin
>>
>
>
>-- 
>Mario.

I'm unfamiliar with X but according to your logs it looks like it selects the framebuffer device as primary graphics in the first place:


(--) PCI:*(0@0:7:0) ...
(--) PCI: (0@0:8:0) ...


-- 
Best regards,
Corvin