All of lore.kernel.org
 help / color / mirror / Atom feed
From: Panu Matilainen <pmatilai@redhat.com>
To: Bruce Richardson <bruce.richardson@intel.com>,
	"Montorsi, Francesco" <fmontorsi@empirix.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: Permanently binding NIC ports with DPDK drivers
Date: Thu, 12 Nov 2015 14:57:25 +0200	[thread overview]
Message-ID: <56448CB5.8070102@redhat.com> (raw)
In-Reply-To: <20151111162853.GA38496@bricha3-MOBL3>

On 11/11/2015 06:28 PM, Bruce Richardson wrote:
> On Wed, Nov 11, 2015 at 04:13:01PM +0000, Montorsi, Francesco wrote:
>> Hi,
>> Is there a way to permanently (i.e., have the configuration automatically applied after reboot) bind a NIC port to DPDK?
>>
>> In case there's none, I'm thinking to save in my software a list of the NIC ports chosen by the user for use with DPDK and then, upon software startup to just do
>>      for (int i=0; i < ...; i++)
>>       system("dpdk_nic_bind.py --bind=igb_uio " + PCI_device_chosen[i]);
>> Do you see any problem with that?
>>
>> Thanks!
>> Francesco Montorsi
>>
>
> Hi Francesco,
>
> I'm not aware of any way to make the bindings permanent across reboots. What you
> have suggested will work, but there are probably better ways to do the same thing.
> For example, a couple of lines in an rc.local script can reapply the bindings at
> boot for you. I'm sure others can suggest other ways of having the same effect,
> for example, there may be a way to automatically do this using udev or systemd
> or some such package.

I've been looking into this recently, here's what I have so far:
http://laiskiainen.org/git/?p=driverctl.git

For the impatient, "make rpm" should produce something usable for recent 
Fedora/RHEL systems, usage looks somewhat like this:

Find devices currently driven by ixgbe driver:
# driverctl -v list-devices | grep ixgbe
0000:01:00.0 ixgbe (Ethernet 10G 4P X520/I350 rNDC)
0000:01:00.1 ixgbe (Ethernet 10G 4P X520/I350 rNDC)

Change them to use the vfio-pci driver permanently:
# driverctl set-override 0000:01:00.0 vfio-pci
# driverctl set-override 0000:01:00.1 vfio-pci

Find devices with driver overrides:
[root@wsfd-netdev32 ~]# driverctl -v list-devices|grep \*
0000:01:00.0 vfio-pci [*] (Ethernet 10G 4P X520/I350 rNDC)
0000:01:00.1 vfio-pci [*] (Ethernet 10G 4P X520/I350 rNDC)

Remove the permanent driver override for device 0000:01:00.1:
# driverctl unset-override 0000:01:00.1

In addition it has udev rules to export vfio and uio devices on systemd 
level, eg the above looks like this with normal drivers:

# systemctl |grep 0000:01:00
sys-devices-pci0000:00-0000:00:03.0-0000:01:00.0-net-em1.device 
                  loaded active plugged   Ethernet 10G 4P X520/I350 rNDC
sys-devices-pci0000:00-0000:00:03.0-0000:01:00.1-net-em2.device 
                  loaded active plugged   Ethernet 10G 4P X520/I350 rNDC

When changed to vfio, with upstream systemd/udev rules they would just 
disappear entirely, but with the driverctl rules they become:

# systemctl |grep 0000:01:00
sys-devices-pci0000:00-0000:00:03.0-0000:01:00.0-vfio.device 
                  loaded active plugged 
/sys/devices/pci0000:00/0000:00:03.0/0000:01:00.0/vfio
sys-devices-pci0000:00-0000:00:03.0-0000:01:00.1-vfio.device 
                  loaded active plugged 
/sys/devices/pci0000:00/0000:00:03.0/0000:01:00.1/vfio

	- Panu -

  parent reply	other threads:[~2015-11-12 12:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-11 16:13 Permanently binding NIC ports with DPDK drivers Montorsi, Francesco
2015-11-11 16:28 ` Bruce Richardson
2015-11-11 16:59   ` Montorsi, Francesco
2015-11-11 17:29     ` Stephen Hemminger
2015-11-12 12:57   ` Panu Matilainen [this message]
2015-11-13 11:44     ` Montorsi, Francesco
2015-11-13 12:17       ` Panu Matilainen
2015-11-13 14:42     ` Aaron Conole
2015-11-11 19:01 ` Matthew Hall
2015-11-12  0:14 ` Mcnamara, John
2015-11-13 11:48   ` Montorsi, Francesco
2015-11-13 12:24     ` Panu Matilainen
  -- strict thread matches above, loose matches on Subject: below --
2016-08-25  4:57 Keren Hochman
2016-08-25 11:01 ` Ferruh Yigit
2016-08-25 11:53   ` Panu Matilainen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56448CB5.8070102@redhat.com \
    --to=pmatilai@redhat.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=fmontorsi@empirix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.