Re: vfio-pci rejects binding to devices having same pcie vendor id and device id

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Alex ,
That works for me

~$ sudo driverctl --nosave set-override 0000:00:05.0 vfio-pci
~$ sudo driverctl --nosave set-override 0000:00:06.0 vfio-pci
~$ sudo driverctl --nosave set-override 0000:00:07.0 vfio-pci
admin@node-1:~$ sudo nvme list
Node                  SN                   Model
             Namespace Usage                      Format           FW
Rev
--------------------- --------------------
---------------------------------------- ---------
-------------------------- ---------------- --------
/dev/nvme10n1         akqvf2-0_10          QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme11n1         akqvf2-0_11          QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme5n1          akqvf2-0_5           QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme6n1          akqvf2-0_6           QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme7n1          akqvf2-0_7           QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme8n1          akqvf2-0_8           QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0
/dev/nvme9n1          akqvf2-0_9           QEMU NVMe Ctrl
             1         274.88  GB / 274.88  GB    512   B +  0 B   1.0

I came across you blogspot after I fired the mail
http://vfio.blogspot.com/2015/05/vfio-gpu-how-to-series-part-3-host.html
Some should update https://docs.kernel.org/driver-api/vfio.html in
public interest , If I knew how to do that I would do it,
Thanks again.

On Thu, Dec 8, 2022 at 10:55 PM Alex Williamson
<alex.williamson@xxxxxxxxxx> wrote:
>
> On Thu, 8 Dec 2022 10:50:08 -0600
> Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote:
>
> > [+cc VFIO folks and Zhenzhong (author of the commit you mention)]
> >
> > On Thu, Dec 08, 2022 at 09:24:31PM +0530, Major Saheb wrote:
> > > I have a linux system running in kvm, with 6 qemu emulated NVMe
> > > drives, as expected all of them have the same PCIe Vendor ID and
> > > Device ID(VID: 0x1b36 DID: 0x0010).
> > >
> > > When I try to unbind them from the kernel NVMe driver and bind it to
> > > vfio-pci one by one, I am getting "write error: File exists" when I
> > > try to bind the 2nd(and other) drive to vfio-pci.
> > >
> > > Kernel version
> > >
> > > 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64
> > > x86_64 x86_64 GNU/Linux
> > >
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme0n1 -> ../devices/pci0000:00/0000:00:03.0/nvme/nvme0/nvme0n1
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme1n1 -> ../devices/pci0000:00/0000:00:04.0/nvme/nvme1/nvme1n1
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme2n1 -> ../devices/pci0000:00/0000:00:05.0/nvme/nvme2/nvme2n1
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme3n1 -> ../devices/pci0000:00/0000:00:06.0/nvme/nvme3/nvme3n1
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme4n1 -> ../devices/pci0000:00/0000:00:07.0/nvme/nvme4/nvme4n1
> > > lrwxrwxrwx 1 root root 0 Dec  8 11:32 /sys/block/nvme5n1 -> ../devices/pci0000:00/0000:00:08.0/nvme/nvme5/nvme5n1
> > >
> > > Steps for repro
> > > ubind nvme2 from kernel NVMe driver and bind it to vfio
> > > $ ls -l /sys/bus/pci/drivers/vfio-pci/
> > > lrwxrwxrwx 1 root root    0 Dec  8 13:04 0000:00:05.0 -> ../../../../devices/pci0000:00/0000:00:05.0
> > > --w------- 1 root root 4096 Dec  8 13:07 bind
> > > lrwxrwxrwx 1 root root    0 Dec  8 13:07 module -> ../../../../module/vfio_pci
> > > --w------- 1 root root 4096 Dec  8 13:04 new_id
> > > --w------- 1 root root 4096 Dec  8 13:07 remove_id
> > > --w------- 1 root root 4096 Dec  8 11:32 uevent
> > > --w------- 1 root root 4096 Dec  8 13:07 unbind
> > >
> > > Unbind nvme3 from  kernel NVMe driver
> > > Try binding to vfio-pci
> > > # echo "0x1b36  0x0010" >  /sys/bus/pci/drivers/vfio-pci/new_id
> > > -bash: echo: write error: File exists
>
> Presumably you already wrote this same ID to the dynamic ID table from
> the first device, so yes, it's going to rightfully complain that this
> ID already exists.  The new_id interface has numerous problems, which
> is why we added the driver_override interface, which is used by tools
> like libvirt and driverctl in place of this old interface.
>
> I'd recommend something like:
>
> # driverctl --nosave set-override 0000:00:03.0 vfio-pci
> # driverctl --nosave set-override 0000:00:04.0 vfio-pci
> # driverctl --nosave set-override 0000:00:05.0 vfio-pci
> ...
>
> Or if vfio-pci is generally the preferred driver for these devices, you
> could remove the --nosave option to have them automatically bound at
> boot.  You could also make use of pre-filling the vfio device table
> using vfio-pci.ids=1b36:0010 on the kernel command line and making sure
> the vfio-pci driver is loaded before the nvme driver.  In general, for
> dynamic binding of devices, driver_override is the recommended solution.
> Thanks,
>
> Alex
>



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux