Re: devctl: Failed to detach pci0:1:0:0: Device not configured
- In reply to: Mario Marietto : "devctl: Failed to detach pci0:1:0:0: Device not configured"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 27 Jan 2023 07:12:35 UTC
On 1/27/2023 1:54 AM, Mario Marietto wrote:
> Hello FreeBSD Virtualization Team.
>
> I've created this bhyve script that suits my needs,but unfortunately
> it does not work properly. Can someone help me to understand where the
> error is ?
>
> *./20-Ubuntu-2004-Focal-Stable-Diffusion-vm20.sh*
>
> #!/bin/sh
>
> vms="$(ls /dev/vmm/*)"
> vncs="vm$(ps ax | awk '/vncviewer [0]/{print $6}')"
> echo "*** checkpoint 1"
> echo "*** checkpoint 1"
> echo "*** checkpoint 1"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
> 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
> #devctl detach pci0:1:0:0
> #devctl detach pci0:1:0:1
> #devctl set driver pci0:1:0:0 ppt
> #devctl set driver pci0:1:0:1 ppt
> echo "*** checkpoint 2"
> echo "*** checkpoint 2"
> echo "*** checkpoint 2"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
> #sleep 999
> else
> printf 'Found VNC session %s\n'
> "${session},no ghost vms found,not destroying them"
> #devctl detach pci0:1:0:0
> #devctl detach pci0:1:0:1
> #devctl set driver pci0:1:0:0 ppt
> #devctl set driver pci0:1:0:1 ppt
> echo "*** checkpoint 3"
> echo "*** checkpoint 3"
> echo "*** checkpoint 3"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
> #sleep 999
> fi
> done
>
> echo "*** checkpoint 4"
> echo "*** checkpoint 4"
> echo "*** checkpoint 4"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
>
> vmdisk0=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (NM13N4CZ)/ && d{print d}'`
> echo "Seagate M3 Portable 1.8 TB ; $vmdisk0"
>
> vmdisk1=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (2015020204055E)/ && d{print d}'`
> echo "TOSHIBA External USB 1.8 TB ; $vmdisk1"
>
> vmdisk2=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (2022285F1175)/ && d{print d}'`
> echo "CT1000P1SSD8 ; $vmdisk2"
>
> vmdisk3=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (20130506005976F)/ && d{print d}'`
> echo "TOSHIBA External USB 932GB ; echo $vmdisk3"
>
> vmdisk4=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (BE0191500218)/ && d{print d}'`
> echo "G-DISK ; $vmdisk4"
>
> vmdisk5=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (38434B4237354B45)/ && d{print d}'`
> echo "Elements ; $vmdisk5"
>
> vmdisk6=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (WD-WCAV2X597309)/ && d{print d}'`
> echo "WDC WD3200AAJS-00L7A0-298GB ; $vmdisk6"
>
> vmdisk7=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (0774911DDC4200A6)/ && d{print d}'`
> echo "SanDisk Cruzer-15GB ; $vmdisk7"
>
> vmdisk8=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (60A44C4138D8F311190A0149)/ && d{print d}'`
> echo "Kingston DataTraveler 2.0 ; $vmdisk8"
>
> vmdisk9=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (20140100006C)/ && d{print d}'`
> echo "SAMSUNG HM320JI ; $vmdisk9"
>
> vmdisk10=`geom disk list | awk '/^Geom name: /{d=$NF} /^ *ident:
> (1924E20B2AE5)/ && d{print d}'`
> echo "CT500MX500SSD4 ; $vmdisk10"
>
> mount -t ufs /dev/$vmdisk1'p2' /mnt/$vmdisk1'p2'
>
> echo "*** checkpoint 5"
> echo "*** checkpoint 5"
> echo "*** checkpoint 5"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
> devctl detach pci0:1:0:0
> devctl detach pci0:1:0:1
> devctl set driver pci0:1:0:0 ppt
> devctl set driver pci0:1:0:1 ppt
>
> bhyve -S -c sockets=2,cores=2,threads=2 -m 4G -w -H -A \
> -s 0,hostbridge \
> -s
> 1,virtio-blk,/mnt/$vmdisk0'p2'/bhyve/img/Linux/focal-stable-diffusion.img,bootindex=1
> \
> -s 2,virtio-blk,/dev/$vmdisk3 \
> -s 8:0,passthru,1/0/0 \
> -s 8:1,passthru,1/0/1 \
> -s 11,virtio-net,tap20 \
> -s 12,virtio-9p,sharename=/ \
> -s 13,hda,play=/dev/dsp,rec=/dev/dsp \
> -s 29,fbuf,tcp=0.0.0.0:5920 <http://0.0.0.0:5920>,w=1600,h=950 \
> -s 30,xhci,tablet \
> -s 31,lpc \
> -l bootrom,/usr/local/share/uefi-firmware/BHYVE_BHF_CODE.fd \
> vm0:20 < /dev/null & sleep 2 && vncviewer 0:20
>
> echo "*** checkpoint 6"
> echo "*** checkpoint 6"
> echo "*** checkpoint 6"
> ls /dev/vmm
> pciconf -l | grep 0:1:0:
> sleep 999
>
> This is what happens when I launch it,regularly,but not always :
>
> root@marietto:/usr/home/marietto/bhyve #
> ./20-Ubuntu-2004-Focal-Stable-Diffusion-vm20.sh
>
> *** checkpoint 1
> *** checkpoint 1
> *** checkpoint 1
>
> vm0:20
> pcib1@pci0:0:1:0: class=0x060400 rev=0x0d hdr=0x01 vendor=0x8086
> device=0x1901 subvendor=0x1458 subdevice=0x5000
> ppt0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x1c02 subvendor=0x19da subdevice=0x2438
> ppt1@pci0:1:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x10f1 subvendor=0x19da subdevice=0x2438
> bhyve session = vm0:20
> vnc session = vm
> VNC session not found,destroying ghost vms
>
> *** checkpoint 2
> *** checkpoint 2
> *** checkpoint 2
>
> ls: /dev/vmm: No such file or directory
> pcib1@pci0:0:1:0: class=0x060400 rev=0x0d hdr=0x01 vendor=0x8086
> device=0x1901 subvendor=0x1458 subdevice=0x5000
> ppt0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x1c02 subvendor=0x19da subdevice=0x2438
> ppt1@pci0:1:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x10f1 subvendor=0x19da subdevice=0x2438
>
> *** checkpoint 4
> *** checkpoint 4
> *** checkpoint 4
>
> ls: /dev/vmm: No such file or directory
> pcib1@pci0:0:1:0: class=0x060400 rev=0x0d hdr=0x01 vendor=0x8086
> device=0x1901 subvendor=0x1458 subdevice=0x5000
> ppt0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x1c02 subvendor=0x19da subdevice=0x2438
> ppt1@pci0:1:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x10f1 subvendor=0x19da subdevice=0x2438
>
> Seagate M3 Portable 1.8 TB ; da5
> TOSHIBA External USB 1.8 TB ; da4
> CT1000P1SSD8 ; nvd0
> TOSHIBA External USB 932GB ; echo da2
> G-DISK ;
> Elements ; da3
> WDC WD3200AAJS-00L7A0-298GB ; ada2
> SanDisk Cruzer-15GB ;
> Kingston DataTraveler 2.0 ;
> SAMSUNG HM320JI ;
> CT500MX500SSD4 ; ada0
> mount: /dev/da4p2: Device busy
>
> *** checkpoint 5
> *** checkpoint 5
> *** checkpoint 5
>
> ls: /dev/vmm: No such file or directory
> pcib1@pci0:0:1:0: class=0x060400 rev=0x0d hdr=0x01 vendor=0x8086
> device=0x1901 subvendor=0x1458 subdevice=0x5000
> ppt0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x1c02 subvendor=0x19da subdevice=0x2438
> ppt1@pci0:1:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x10f1 subvendor=0x19da subdevice=0x2438
>
> -----> devctl: Failed to detach pci0:1:0:0: Device not configured
> -----> devctl: Failed to detach pci0:1:0:1: Device not configured
> -----> bhyve: PCI device at 1/0/0 is not using the ppt(4) driver
>
> device emulation initialization error: No such file or directory
>
> TigerVNC Viewer 64-bit v1.12.0
> Built on: 2021-11-23 05:59
> Copyright (C) 1999-2021 TigerVNC Team and many others (see README.rst)
> See https://www.tigervnc.org for information on TigerVNC.
>
> Fri Jan 27 01:38:17 2023
> DecodeManager: Detected 16 CPU core(s)
> DecodeManager: Creating 4 decoder thread(s)
> CConn: unable to connect to socket: Connection refused (61)
>
> *** checkpoint 6
> *** checkpoint 6
> *** checkpoint 6
>
> vm0:20
> pcib1@pci0:0:1:0: class=0x060400 rev=0x0d hdr=0x01 vendor=0x8086
> device=0x1901 subvendor=0x1458 subdevice=0x5000
> ppt0@pci0:1:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x1c02 subvendor=0x19da subdevice=0x2438
> ppt1@pci0:1:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de
> device=0x10f1 subvendor=0x19da subdevice=0x2438
>
> ^C = sleep 999
>
> As you can see this error : "devctl: Failed to detach pci0:1:0:0:
> Device not configured" is preventing me from running the VM. I've also
> tried to don't detach pci0:1:0:0 and detach pci0:1:0:1,but in this
> case,the error is : "bhyve: PCI device at 1/0/0 is not using the
> ppt(4) driver". I'm sure that you will understand fast and that you
> can know how to replicate the experiment using the values according to
> your system.
>
> Thanks.
>
> --
> Mario.
Try to assign ppt only once:
if ! pciconf -l pci0:1:0:0 | grep -q "^ppt"; then
devctl detach pci0:1:0:0
devctl set driver pci0:1:0:0 ppt
fi
--
Best regards,
Corvin