linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] SRIOV device enable and disable via sysfs
@ 2012-10-25 18:38 Donald Dutile
  2012-10-25 18:38 ` [PATCH 1/8] Yinghai's patch 1 of 2 Donald Dutile
                   ` (7 more replies)
  0 siblings, 8 replies; 19+ messages in thread
From: Donald Dutile @ 2012-10-25 18:38 UTC (permalink / raw)
  To: linux-pci
  Cc: bhelgaas, yuvalmin, bhutchings, gregory.v.rose, yinghai, davem,
	ddutile

Currently, VF enablement by SRIOV-capable PCIe devices is done
in driver-specific module parameters.  If not setup in modprobe files,
it requires admin to unload & reload PF drivers with number of desired
VFs to enable.  Additionally, the enablement is system wide: all
devices controlled by the same driver have the same number of VFs
enabled.  Although the latter is probably desired, there are PCI
configurations setup by system BIOS that may not enable that to occur.

Two files are created if a PCIe device has SRIOV support:
sriov_totalvfs -- cat-ing this file returns the maximum number
                  of VFs a PCIe device supports.
sriov_numvfs -- echo'ing a positive number to this file enables 
                & configures this number of VFs for this given PCIe
                device.
	     -- echo'ing 0 to this file disables and deconfigures
                all VFs for this given PCIe device.
             -- cat-ing this file will return the number of VFs
                currently enabled on this PCIe device.

VF enable and disablement is invoked much like other PCIe
configuration functions -- via a registered callback in the driver,
i.e., probe, release, etc.  In this case, sriov_configure

Patches 1 & 2 are copies of Yinghai's patches to change
the PCI device attribute 'vga' to a visible attribute,
and showed me how to do it for SRIOV attributes.

Patches 3 & 4 are the heart of this patch.

Patches 5 through 7 are refactoring of the ixgbe modules
to use the sysfs-based sriov enable/disable feature, provided
by Greg Rose; I modified the last patch when going from v2->v3.

Patch 8 is using a new method that allows a driver to change
the sriov sysfs core code to use a differnt max-supported-numvfs
than what totalvfs reports in the SRIOV capability structure.
ixgbe is one of these devices; igb is as well.  This patch could
be excluded and rely on the drivers to do the numvfs filtering, but
this patch set tries to remove this dependency on the drivers,
and does so in the core code. 

Two other proposals for this core logic have been made:
(1) Move the pci_sriov_[enable,disable]() calls out of the drivers 
    and into this framework. Looking at the ixgbe driver,
    the calls would be made prior to invoking the driver's 
    sriov_configure() interface.  If one reviews the ixgbe driver,
    to implement this proposal, the second proposal would have to
    be adopted....
(2) Add a check to prevent a VF from being unconfigured
    if it is assigned to a virtual machine (VM).  This is currently
    tracked by the PCI_DEV_FLAGS_ASSIGNED bit in the pdev's dev_flags
    field. KVM & Xen currently set this flag when a PCI device
    (PF or VF) is assigned to a VM.

v2->v3:
-- change the file names to reflect the names used in the SRIOV spec
-- change to a single file for enable & disable; 
   change driver interface to a single interface.
-- add more informative messages on failures
-- add a core method that a driver can invoke to modify
   the totalvfs reported & supported by a driver.
-- a set of patches for ixgbe provided by Greg Rose to use the
   new interfaces; the last patch modified from the original
   two file, enable/disable interface to the current single file
   enable/disable. Greg will eventually post the final version
   of these patches via Intel's usual process for driver patches.
   Provided here as an example, and enable other SRIOV drivers
   to see how adoption of the interface can be added.

v1->v2:
This patch is based on previous 2 patches by Yinghai Lu
that cleaned up the vga attributes for PCI devices under sysfs,
and uses visibility-checking group attributes as recommended by
Greg K-H.

Signed-off-by: Donald Dutile <ddutile@redhat.com>

>From Donald Dutile <ddutile@redhat.com> # This line is ignored.
From: Donald Dutile <ddutile@redhat.com>
Subject: [RFC] SRIOV device enable and disable via sysfs
In-Reply-To: 


^ permalink raw reply	[flat|nested] 19+ messages in thread
* [RFC] SRIOV device enable and disable via sysfs
@ 2012-10-31 21:19 Donald Dutile
  2012-10-31 21:19 ` [PATCH 8/8] ixgbe: change totalvfs to match support in driver Donald Dutile
  0 siblings, 1 reply; 19+ messages in thread
From: Donald Dutile @ 2012-10-31 21:19 UTC (permalink / raw)
  To: linux-pci
  Cc: bhelgaas, yuvalmin, bhutchings, gregory.v.rose, yinghai, davem,
	ddutile

Provide files under sysfs to determine the max number of vfs
an SRIOV-capable PCIe device supports, and methods to enable and
disable the vfs on a per device basis.

Currently, VF enablement by SRIOV-capable PCIe devices is done
in driver-specific module parameters.  If not setup in modprobe files,
it requires admin to unload & reload PF drivers with number of desired
VFs to enable.  Additionally, the enablement is system wide: all
devices controlled by the same driver have the same number of VFs
enabled.  Although the latter is probably desired, there are PCI
configurations setup by system BIOS that may not enable that to occur.

Two files are created if a PCIe device has SRIOV support:
sriov_totalvfs -- cat-ing this file returns the maximum number
                  of VFs a PCIe device supports.
sriov_numvfs -- echo'ing a positive number to this file enables 
                & configures this number of VFs for this given PCIe
                device.
	     -- echo'ing 0 to this file disables and deconfigures
                all VFs for this given PCIe device.
             -- cat-ing this file will return the number of VFs
                currently enabled on this PCIe device.

VF enable and disablement is invoked much like other PCIe
configuration functions -- via a registered callback in the driver,
i.e., probe, release, etc.  In this case, sriov_configure

RFC V3->PATCH:
-- incorporate feedback from Ben Hutchings.
-- clean up poor RFC patches & sanitize through checkpatch.pl

RFC v2->v3:
-- change the file names to reflect the names used in the SRIOV spec
-- change to a single file for enable & disable; 
   change driver interface to a single interface.
-- add more informative messages on failures
-- add a core method that a driver can invoke to modify
   the totalvfs reported & supported by a driver.
-- a set of patches for ixgbe provided by Greg Rose to use the
   new interfaces; the last patch modified from the original
   two file, enable/disable interface to the current single file
   enable/disable. Greg will eventually post the final version
   of these patches via Intel's usual process for driver patches.
   Provided here as an example, and enable other SRIOV drivers
   to see how adoption of the interface can be added.

RFC v1->v2:
This patch is based on previous 2 patches by Yinghai Lu
that cleaned up the vga attributes for PCI devices under sysfs,
and uses visibility-checking group attributes as recommended by
Greg K-H.

Signed-off-by: Donald Dutile <ddutile@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread
* [PATCH v2] PCI SRIOV device enable and disable via sysfs
@ 2012-11-05 20:20 Donald Dutile
  2012-11-05 20:20 ` [PATCH 8/8] ixgbe: change totalvfs to match support in driver Donald Dutile
  0 siblings, 1 reply; 19+ messages in thread
From: Donald Dutile @ 2012-11-05 20:20 UTC (permalink / raw)
  To: linux-pci
  Cc: bhelgaas, yuvalmin, bhutchings, gregory.v.rose, yinghai, davem,
	ddutile

Currently, VF enablement by SRIOV-capable PCIe devices is done
in driver-specific module parameters.  If not setup in modprobe files,
it requires admin to unload & reload PF drivers with number of desired
VFs to enable.  Additionally, the enablement is system wide: all
devices controlled by the same driver have the same number of VFs
enabled.  Although the latter is probably desired, there are PCI
configurations setup by system BIOS that may not enable that to occur.

Two files are created if a PCIe device has SRIOV support:
sriov_totalvfs -- cat-ing this file returns the maximum number
                  of VFs a PCIe device supports.
sriov_numvfs -- echo'ing a positive number to this file enables 
                & configures this number of VFs for this given PCIe
                device.
	     -- echo'ing 0 to this file disables and deconfigures
                all VFs for this given PCIe device.
             -- cat-ing this file will return the number of VFs
                currently enabled on this PCIe device.

VF enable and disablement is invoked much like other PCIe
configuration functions -- via a registered callback in the driver,
i.e., probe, release, etc.  In this case, sriov_configure

PATCH v1->v2:
-- incorporate more feedback from Ben Hutchings.
-- (hopefully) correct From & Signed-by for Yinghai Lu's patches (1/8 & 2/8)

RFC V3->PATCH:
-- incorporate feedback from Ben Hutchings.
-- clean up poor RFC patches & sanitize through checkpatch.pl

RFC v2->v3:
-- change the file names to reflect the names used in the SRIOV spec
-- change to a single file for enable & disable; 
   change driver interface to a single interface.
-- add more informative messages on failures
-- add a core method that a driver can invoke to modify
   the totalvfs reported & supported by a driver.
-- a set of patches for ixgbe provided by Greg Rose to use the
   new interfaces; the last patch modified from the original
   two file, enable/disable interface to the current single file
   enable/disable. Greg will eventually post the final version
   of these patches via Intel's usual process for driver patches.
   Provided here as an example, and enable other SRIOV drivers
   to see how adoption of the interface can be added.

RFC v1->v2:
This patch is based on previous 2 patches by Yinghai Lu
that cleaned up the vga attributes for PCI devices under sysfs,
and uses visibility-checking group attributes as recommended by
Greg K-H.

Signed-off-by: Donald Dutile <ddutile@redhat.com>
---
 drivers/pci/iov.c       |  48 ++++++++++++++++
 drivers/pci/pci-sysfs.c | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 drivers/pci/pci.h       |   2 +
 drivers/pci/probe.c     |   1 +
 include/linux/pci.h     |  11 ++++
 5 files changed, 230 insertions(+), 11 deletions(-)



^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2012-11-05 20:20 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-25 18:38 [RFC] SRIOV device enable and disable via sysfs Donald Dutile
2012-10-25 18:38 ` [PATCH 1/8] Yinghai's patch 1 of 2 Donald Dutile
2012-10-25 18:38 ` [PATCH 2/8] Yinghai's second patch for vga attr Donald Dutile
2012-10-25 18:38 ` [PATCH 3/8] PCI: sysfs per device SRIOV control and status Donald Dutile
2012-10-25 20:17   ` Ben Hutchings
2012-10-26 15:07     ` Don Dutile
2012-10-31 17:01       ` Rose, Gregory V
2012-10-31 17:36         ` Ben Hutchings
2012-10-31 18:18           ` Don Dutile
2012-10-31 18:25             ` Rose, Gregory V
2012-10-25 18:38 ` [PATCH 4/8] sriov: provide method to reduce the number of total VFs supported Donald Dutile
2012-10-25 20:24   ` Ben Hutchings
2012-10-26 15:11     ` Don Dutile
2012-10-25 18:38 ` [PATCH 5/8] ixgbe: refactor mailbox ops init Donald Dutile
2012-10-25 18:38 ` [PATCH 6/8] ixgbe: refactor SRIOV enable and disable for sysfs interface Donald Dutile
2012-10-25 18:38 ` [PATCH 7/8] ixgbe: sysfs sriov configuration callback support Donald Dutile
2012-10-25 18:38 ` [PATCH 8/8] ixgbe: change totalvfs to match support in driver Donald Dutile
  -- strict thread matches above, loose matches on Subject: below --
2012-10-31 21:19 [RFC] SRIOV device enable and disable via sysfs Donald Dutile
2012-10-31 21:19 ` [PATCH 8/8] ixgbe: change totalvfs to match support in driver Donald Dutile
2012-11-05 20:20 [PATCH v2] PCI SRIOV device enable and disable via sysfs Donald Dutile
2012-11-05 20:20 ` [PATCH 8/8] ixgbe: change totalvfs to match support in driver Donald Dutile

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).