svn commit: r293096 - in user/ngie/stable-10-libnv: share/man/man9 sys/conf sys/dev/ixl sys/dev/pci sys/modules/ixl

Garrett Cooper ngie at FreeBSD.org
Sun Jan 3 09:38:09 UTC 2016


Author: ngie
Date: Sun Jan  3 09:38:05 2016
New Revision: 293096
URL: https://svnweb.freebsd.org/changeset/base/293096

Log:
  MFC r279445,r279464,r283670:
  
  r279445 (by rstone):
  
  Document pci_iov_attach/detach in pci.9
  
  r279464 (by rstone):
  
  Document the interface for defining a configuration schema
  
  r283670 (by jhb):
  
  Create a separate kobj interface for leaf-driver PCI IOV methods.
  
  Leaf drivers should not import the PCI bus interface to add IOV handling.
  Instead, move the IOV client methods to a separate kobj interface.

Added:
  user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_ADD_VF.9
     - copied unchanged from r283670, head/share/man/man9/PCI_IOV_ADD_VF.9
  user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_INIT.9
     - copied unchanged from r283670, head/share/man/man9/PCI_IOV_INIT.9
  user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_UNINIT.9
     - copied unchanged from r283670, head/share/man/man9/PCI_IOV_UNINIT.9
  user/ngie/stable-10-libnv/share/man/man9/pci_iov_schema.9
     - copied, changed from r279464, head/share/man/man9/pci_iov_schema.9
  user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.h
     - copied unchanged from r283670, head/sys/dev/pci/pci_iov.h
  user/ngie/stable-10-libnv/sys/dev/pci/pci_iov_if.m
     - copied unchanged from r283670, head/sys/dev/pci/pci_iov_if.m
Deleted:
  user/ngie/stable-10-libnv/share/man/man9/PCI_ADD_VF.9
  user/ngie/stable-10-libnv/share/man/man9/PCI_INIT_IOV.9
  user/ngie/stable-10-libnv/share/man/man9/PCI_UNINIT_IOV.9
Modified:
  user/ngie/stable-10-libnv/share/man/man9/Makefile
  user/ngie/stable-10-libnv/share/man/man9/pci.9
  user/ngie/stable-10-libnv/sys/conf/files
  user/ngie/stable-10-libnv/sys/conf/kmod.mk
  user/ngie/stable-10-libnv/sys/dev/ixl/if_ixl.c
  user/ngie/stable-10-libnv/sys/dev/ixl/ixl.h
  user/ngie/stable-10-libnv/sys/dev/pci/pci_if.m
  user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.c
  user/ngie/stable-10-libnv/sys/dev/pci/pcivar.h
  user/ngie/stable-10-libnv/sys/modules/ixl/Makefile   (contents, props changed)
Directory Properties:
  user/ngie/stable-10-libnv/   (props changed)

Modified: user/ngie/stable-10-libnv/share/man/man9/Makefile
==============================================================================
--- user/ngie/stable-10-libnv/share/man/man9/Makefile	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/share/man/man9/Makefile	Sun Jan  3 09:38:05 2016	(r293096)
@@ -195,9 +195,10 @@ MAN=	accept_filter.9 \
 	p_candebug.9 \
 	p_cansee.9 \
 	pci.9 \
-	PCI_ADD_VF.9 \
-	PCI_INIT_IOV.9 \
-	PCI_UNINIT_IOV.9 \
+	PCI_IOV_ADD_VF.9 \
+	PCI_IOV_INIT.9 \
+	pci_iov_schema.9 \
+	PCI_IOV_UNINIT.9 \
 	pfil.9 \
 	pfind.9 \
 	pget.9 \
@@ -1086,6 +1087,8 @@ MLINKS+=pci.9 pci_alloc_msi.9 \
 	pci.9 pci_get_powerstate.9 \
 	pci.9 pci_get_vpd_ident.9 \
 	pci.9 pci_get_vpd_readonly.9 \
+	pci.9 pci_iov_attach.9 \
+	pci.9 pci_iov_detach.9 \
 	pci.9 pci_msi_count.9 \
 	pci.9 pci_msix_count.9 \
 	pci.9 pci_pending_msix.9 \
@@ -1100,6 +1103,14 @@ MLINKS+=pci.9 pci_alloc_msi.9 \
 	pci.9 pcie_adjust_config.9 \
 	pci.9 pcie_read_config.9 \
 	pci.9 pcie_write_config.9
+MLINKS+=pci_iov_schema.9 pci_iov_schema_alloc_node.9 \
+	pci_iov_schema.9 pci_iov_schema_add_bool.9 \
+	pci_iov_schema.9 pci_iov_schema_add_string.9 \
+	pci_iov_schema.9 pci_iov_schema_add_uint8.9 \
+	pci_iov_schema.9 pci_iov_schema_add_uint16.9 \
+	pci_iov_schema.9 pci_iov_schema_add_uint32.9 \
+	pci_iov_schema.9 pci_iov_schema_add_uint64.9 \
+	pci_iov_schema.9 pci_iov_schema_add_unicast_mac.9
 MLINKS+=pfil.9 pfil_add_hook.9 \
 	pfil.9 pfil_hook_get.9 \
 	pfil.9 pfil_remove_hook.9

Copied: user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_ADD_VF.9 (from r283670, head/share/man/man9/PCI_IOV_ADD_VF.9)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_ADD_VF.9	Sun Jan  3 09:38:05 2016	(r293096, copy of r283670, head/share/man/man9/PCI_IOV_ADD_VF.9)
@@ -0,0 +1,112 @@
+.\"
+.\" Copyright (c) 2014 Sandvine Inc.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 28, 2015
+.Dt PCI_IOV_ADD_VF 9
+.Os
+.Sh NAME
+.Nm PCI_IOV_ADD_VF
+.Nd inform a PF driver that a VF is being created
+.Sh SYNOPSIS
+.In sys/bus.h
+.In machine/stdarg.h
+.In sys/nv.h
+.In dev/pci/pci_iov.h
+.Ft int
+.Fn PCI_IOV_ADD_VF "device_t dev" "uint16_t vfnum" "const nvlist_t *vf_config"
+.Sh DESCRIPTION
+The
+.Fn PCI_IOV_ADD_VF
+method is called by the PCI Single-Root I/O Virtualization
+.Pq SR-IOV
+infrastructure when it is initializating a new Virtual Function (VF) as a child
+of the given Physical Function (PF) device.
+This method will not be called until a successful call to
+.Xr PCI_IOV_INIT 9
+has been made.
+It is not guaranteed that this method will be called following a successful call
+to
+.Xr PCI_IOV_INIT 9 .
+If the infrastructure encounters a failure to allocate resources following the
+call to
+.Xr PCI_IOV_INIT 9 ,
+the VF creation will be aborted and
+.Xr PCI_IOV_UNINIT 9
+will be called immediately without any preceding calls to
+.Nm .
+.Pp
+The index of the VF being initialized is passed in the
+.Fa vfnum
+argument.
+VFs are always numbered sequentially starting at 0.
+.Pp
+If the driver requested device-specific configuration parameters via a VF schema
+in its call to
+.Xr pci_iov_attach 9 ,
+those parameters will be contained in the
+.Pa vf_config
+argument.
+All configuration parameters that were either set as required parameters or that
+had a default value set in the VF schema are guaranteed to be present in
+.Fa vf_config .
+Configuration parameters that were neither set as required nor were given a
+default value are optional and may or may not be present in
+.Fa vf_config .
+.Fa vf_config
+will not contain any configuration parameters that were not specified in the VF
+schema.
+All configuration parameters will have the correct type and will be in the range
+of valid values specified in the schema.
+.Pp
+Note that it is possible for the user to set different configuration values on
+different VF devices that are children of the same PF.
+The PF driver must not cache configuration parameters passed in previous calls
+to
+.Fn PCI_IOV_ADD_VF
+for other VFs and apply those parameters to the current VF.
+.Pp
+This function will not be called twice for the same
+.Fa vf_num
+on the same PF device without
+.Xr PCI_IOV_UNINIT 9
+and
+.Xr PCI_IOV_INIT 9
+first being called, in that order.
+.Sh RETURN VALUES
+This method returns 0 on success, otherwise an appropriate error is returned.
+If this method returns an error then the current VF device will be destroyed
+but the rest of the VF devices will be created and SR-IOV will be enabled on
+the PF.
+.Sh SEE ALSO
+.Xr nv 9 ,
+.Xr pci 9 ,
+.Xr pci_iov_schema 9 ,
+.Xr PCI_IOV_INIT 9 ,
+.Xr PCI_IOV_UNINIT 9
+.Sh AUTHORS
+This manual page was written by
+.An Ryan Stone Aq Mt rstone at FreeBSD.org .

Copied: user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_INIT.9 (from r283670, head/share/man/man9/PCI_IOV_INIT.9)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_INIT.9	Sun Jan  3 09:38:05 2016	(r293096, copy of r283670, head/share/man/man9/PCI_IOV_INIT.9)
@@ -0,0 +1,85 @@
+.\"
+.\" Copyright (c) 2014 Sandvine Inc.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 28, 2015
+.Dt PCI_IOV_INIT 9
+.Os
+.Sh NAME
+.Nm PCI_IOV_INIT
+.Nd enable SR-IOV on a PF device
+.Sh SYNOPSIS
+.In sys/bus.h
+.In machine/stdarg.h
+.In sys/nv.h
+.In dev/pci/pci_iov.h
+.Ft int
+.Fn PCI_IOV_INIT "device_t dev" "uint16_t num_vfs" "const nvlist_t *pf_config"
+.Sh DESCRIPTION
+The
+.Fn PCI_IOV_INIT
+method is called by the PCI Single-Root I/O Virtualization (SR-IOV)
+infrastucture when the user requests that SR-IOV be enabled on a Physical
+Function (PF).
+The number of Virtual Functions (VFs) that will be created is passed to this
+method in the
+.Fa num_vfs
+argument.
+.Pp
+If the driver requested device-specific PF configuration parameters via a PF
+schema in its call to
+.Xr pci_iov_attach 9 ,
+those parameters will be available in the
+.Fa pf_config
+argument.
+All configuration parameters that were either set as required parameters or that
+had a default value set in the PF schema are guaranteed to be present in
+.Fa pf_config .
+Configuration parameters that were neither set as required nor were given a
+default value are optional and may or may not be present in
+.Fa pf_config .
+.Fa pf_config
+will not contain any configuration parameters that were not specified in the PF
+schema.
+All configuration parameters will have the correct type and are in the range of
+valid values specified in the schema.
+.Pp
+If this method returns successfully, then this method will not be called again
+on the same device until after a call to
+.Xr PCI_IOV_UNINIT .
+.Sh RETURN VALUES
+Returns 0 on success, otherwise an appropriate error is returned.
+If this method returns an error then the SR-IOV configuration will be aborted
+and no VFs will be created.
+.Sh SEE ALSO
+.Xr nv 9 ,
+.Xr pci 9 ,
+.Xr pci_iov_schema 9 ,
+.Xr PCI_IOV_ADD_VF 9 ,
+.Xr PCI_IOV_UNINIT 9
+.Sh AUTHORS
+This manual page was written by
+.An Ryan Stone Aq Mt rstone at FreeBSD.org .

Copied: user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_UNINIT.9 (from r283670, head/share/man/man9/PCI_IOV_UNINIT.9)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/stable-10-libnv/share/man/man9/PCI_IOV_UNINIT.9	Sun Jan  3 09:38:05 2016	(r293096, copy of r283670, head/share/man/man9/PCI_IOV_UNINIT.9)
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 2014 Sandvine Inc.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 28, 2015
+.Dt PCI_IOV_UNINIT 9
+.Os
+.Sh NAME
+.Nm PCI_IOV_UNINIT
+.Nd disable SR-IOV on a PF device
+.Sh SYNOPSIS
+.In sys/bus.h
+.In dev/pci/pci_iov.h
+.Ft void
+.Fn PCI_IOV_UNINIT "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn PCI_IOV_UNINIT
+method is called by the PCI Single-Root I/O Virtualization (SR-IOV)
+infrastructure when the user requests that SR-IOV be disabled on a Physical
+Function (PF).
+When this method is called, the PF driver must release any SR-IOV-related
+resources that it has allocated and disable any device-specific SR-IOV
+configuration in the device.
+.Pp
+This method will only be called following a successful call to
+.Xr PCI_IOV_INIT .
+It is not guaranteed that
+.Xr PCI_IOV_ADD_VF
+will have been called for any Virtual Function (VF) after the call to
+.Xr PCI_IOV_INIT
+and before the call to
+.Nm .
+.Sh SEE ALSO
+.Xr pci 9 ,
+.Xr PCI_IOV_ADD_VF 9 ,
+.Xr PCI_IOV_INIT 9
+.Sh AUTHORS
+This manual page was written by
+.An Ryan Stone Aq Mt rstone at FreeBSD.org .

Modified: user/ngie/stable-10-libnv/share/man/man9/pci.9
==============================================================================
--- user/ngie/stable-10-libnv/share/man/man9/pci.9	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/share/man/man9/pci.9	Sun Jan  3 09:38:05 2016	(r293096)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 5, 2015
+.Dd January 3, 2015
 .Dt PCI 9
 .Os
 .Sh NAME
@@ -47,6 +47,8 @@
 .Nm pci_get_powerstate ,
 .Nm pci_get_vpd_ident ,
 .Nm pci_get_vpd_readonly ,
+.Nm pci_iov_attach ,
+.Nm pci_iov_detach ,
 .Nm pci_msi_count ,
 .Nm pci_msix_count ,
 .Nm pci_pending_msix ,
@@ -134,6 +136,11 @@
 .Fn pcie_read_config "device_t dev" "int reg" "int width"
 .Ft void
 .Fn pcie_write_config "device_t dev" "int reg" "uint32_t val" "int width"
+.In dev/pci/pci_iov.h
+.Ft int
+.Fn pci_iov_attach "device_t dev" "nvlist_t *pf_schema" "nvlist_t *vf_schema"
+.Ft int
+.Fn pci_iov_detach "device_t dev"
 .Sh DESCRIPTION
 The
 .Nm
@@ -504,6 +511,75 @@ then the function will fail with
 .Er EOPNOTSUPP .
 .Pp
 The
+.Fn pci_iov_attach
+function is used to advertise that the given device
+.Pq and associated device driver
+supports PCI Single-Root I/O Virtualization
+.Po SR-IOV Pc .
+A driver that supports SR-IOV must implement the
+.Xr PCI_IOV_INIT 9 ,
+.Xr PCI_IOV_ADD_VF 9
+and
+.Xr PCI_IOV_UNINIT 9
+methods.
+This function should be called during the
+.Xr DEVICE_ATTACH 9
+method.
+If this function returns an error, it is recommended that the device driver
+still successfully attaches, but runs with SR-IOV disabled.
+The
+.Fa pf_schema
+and
+.Fa vf_schema
+parameters are used to define what device-specific configuration parameters the
+device driver accepts when SR-IOV is enabled for the Physical Function
+.Pq PF
+and for individual Virtual Functions
+.Pq VFs
+respectively.
+See
+.Xr pci_iov_schema 9
+for details on how to construct the schema.
+If either the
+.Pa pf_schema
+or
+.Pa vf_schema
+is invalid or specifies parameter names that conflict with parameter names that
+are already in use,
+.Fn pci_iov_attach
+will return an error and SR-IOV will not be available on the PF device.
+If a driver does not accept configuration parameters for either the PF device
+or the VF devices, the driver must pass an empty schema for that device.
+The SR-IOV infrastructure takes ownership of the
+.Fa pf_schema
+and
+.Fa vf_schema
+and is responsible for freeing them.
+The driver must never free the schemas itself.
+.Pp
+The
+.Fn pci_iov_detach
+function is used to advise the SR-IOV infrastructure that the driver for the
+given device is attempting to detach and that all SR-IOV resources for the
+device must be released.
+This function must be called during the
+.Xr DEVICE_DETACH 9
+method if
+.Fn pci_iov_attach
+was successfully called on the device and
+.Fn pci_iov_detach
+has not subsequently been called on the device and returned no error.
+If this function returns an error, the
+.Xr DEVICE_DETACH 9
+method must fail and return an error, as detaching the PF driver while VF
+devices are active would cause system instability.
+This function is safe to call and will always succeed if
+.Fn pci_iov_attach
+previously failed with an error on the given device, or if
+.Fn pci_iov_attach
+was never called on the device.
+.Pp
+The
 .Fn pci_save_state
 and
 .Fn pci_restore_state

Copied and modified: user/ngie/stable-10-libnv/share/man/man9/pci_iov_schema.9 (from r279464, head/share/man/man9/pci_iov_schema.9)
==============================================================================
--- head/share/man/man9/pci_iov_schema.9	Sun Mar  1 00:59:21 2015	(r279464, copy source)
+++ user/ngie/stable-10-libnv/share/man/man9/pci_iov_schema.9	Sun Jan  3 09:38:05 2016	(r293096)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 25, 2014
+.Dd May 28, 2015
 .Dt pci_iov_schema 9
 .Os
 .Sh NAME
@@ -258,8 +258,8 @@ The
 function returns a pointer to the allocated schema, or NULL if a failure occurs.
 .Sh SEE ALSO
 .Xr pci 9 ,
-.Xr PCI_ADD_VF 9 ,
-.Xr PCI_INIT_IOV 9
+.Xr PCI_IOV_ADD_VF 9 ,
+.Xr PCI_IOV_INIT 9
 .Sh AUTHORS
 This manual page was written by
 .An Ryan Stone Aq rstone at FreeBSD.org .

Modified: user/ngie/stable-10-libnv/sys/conf/files
==============================================================================
--- user/ngie/stable-10-libnv/sys/conf/files	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/conf/files	Sun Jan  3 09:38:05 2016	(r293096)
@@ -2007,6 +2007,7 @@ dev/pci/isa_pci.c		optional pci isa
 dev/pci/pci.c			optional pci
 dev/pci/pci_if.m		standard
 dev/pci/pci_iov.c		optional pci pci_iov
+dev/pci/pci_iov_if.m		standard
 dev/pci/pci_iov_schema.c	optional pci pci_iov
 dev/pci/pci_pci.c		optional pci
 dev/pci/pci_subr.c		optional pci

Modified: user/ngie/stable-10-libnv/sys/conf/kmod.mk
==============================================================================
--- user/ngie/stable-10-libnv/sys/conf/kmod.mk	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/conf/kmod.mk	Sun Jan  3 09:38:05 2016	(r293096)
@@ -357,7 +357,7 @@ MFILES?= dev/acpica/acpi_if.m dev/acpi_s
 	dev/mmc/mmcbr_if.m dev/mmc/mmcbus_if.m \
 	dev/mii/miibus_if.m dev/mvs/mvs_if.m dev/ofw/ofw_bus_if.m \
 	dev/pccard/card_if.m dev/pccard/power_if.m dev/pci/pci_if.m \
-	dev/pci/pcib_if.m dev/ppbus/ppbus_if.m \
+	dev/pci/pci_iov_if.m dev/pci/pcib_if.m dev/ppbus/ppbus_if.m \
 	dev/sdhci/sdhci_if.m dev/smbus/smbus_if.m dev/spibus/spibus_if.m \
 	dev/sound/pci/hda/hdac_if.m \
 	dev/sound/pcm/ac97_if.m dev/sound/pcm/channel_if.m \

Modified: user/ngie/stable-10-libnv/sys/dev/ixl/if_ixl.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/ixl/if_ixl.c	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/dev/ixl/if_ixl.c	Sun Jan  3 09:38:05 2016	(r293096)
@@ -207,8 +207,8 @@ static int	ixl_sysctl_switch_config(SYSC
 #ifdef PCI_IOV
 static int	ixl_adminq_err_to_errno(enum i40e_admin_queue_err err);
 
-static int	ixl_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t*);
-static void	ixl_uninit_iov(device_t dev);
+static int	ixl_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t*);
+static void	ixl_iov_uninit(device_t dev);
 static int	ixl_add_vf(device_t dev, uint16_t vfnum, const nvlist_t*);
 
 static void	ixl_handle_vf_msg(struct ixl_pf *,
@@ -230,9 +230,9 @@ static device_method_t ixl_methods[] = {
 	DEVMETHOD(device_detach, ixl_detach),
 	DEVMETHOD(device_shutdown, ixl_shutdown),
 #ifdef PCI_IOV
-	DEVMETHOD(pci_init_iov, ixl_init_iov),
-	DEVMETHOD(pci_uninit_iov, ixl_uninit_iov),
-	DEVMETHOD(pci_add_vf, ixl_add_vf),
+	DEVMETHOD(pci_iov_init, ixl_iov_init),
+	DEVMETHOD(pci_iov_uninit, ixl_iov_uninit),
+	DEVMETHOD(pci_iov_add_vf, ixl_add_vf),
 #endif
 	{0, 0}
 };
@@ -6546,7 +6546,7 @@ ixl_adminq_err_to_errno(enum i40e_admin_
 }
 
 static int
-ixl_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t *params)
+ixl_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t *params)
 {
 	struct ixl_pf *pf;
 	struct i40e_hw *hw;
@@ -6594,7 +6594,7 @@ fail:
 }
 
 static void
-ixl_uninit_iov(device_t dev)
+ixl_iov_uninit(device_t dev)
 {
 	struct ixl_pf *pf;
 	struct i40e_hw *hw;

Modified: user/ngie/stable-10-libnv/sys/dev/ixl/ixl.h
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/ixl/ixl.h	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/dev/ixl/ixl.h	Sun Jan  3 09:38:05 2016	(r293096)
@@ -93,6 +93,7 @@
 #ifdef PCI_IOV
 #include <sys/nv.h>
 #include <sys/iov_schema.h>
+#include <dev/pci/pci_iov.h>
 #endif
 
 #include "i40e_type.h"

Modified: user/ngie/stable-10-libnv/sys/dev/pci/pci_if.m
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/pci/pci_if.m	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/dev/pci/pci_if.m	Sun Jan  3 09:38:05 2016	(r293096)
@@ -214,22 +214,6 @@ METHOD int iov_detach {
 	device_t	child;
 };
 
-METHOD int init_iov {
-	device_t		dev;
-	uint16_t		num_vfs;
-	const struct nvlist	*config;
-};
-
-METHOD void uninit_iov {
-	device_t		dev;
-};
-
-METHOD int add_vf {
-	device_t		dev;
-	uint16_t		vfnum;
-	const struct nvlist	*config;
-};
-
 METHOD device_t create_iov_child {
 	device_t bus;
 	device_t pf;
@@ -237,4 +221,3 @@ METHOD device_t create_iov_child {
 	uint16_t vid;
 	uint16_t did;
 } DEFAULT null_create_iov_child;
-

Modified: user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.c	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.c	Sun Jan  3 09:38:05 2016	(r293096)
@@ -53,11 +53,11 @@ __FBSDID("$FreeBSD$");
 
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
+#include <dev/pci/pci_iov.h>
 #include <dev/pci/pci_private.h>
 #include <dev/pci/pci_iov_private.h>
 #include <dev/pci/schema_private.h>
 
-#include "pci_if.h"
 #include "pcib_if.h"
 
 static MALLOC_DEFINE(M_SRIOV, "sr_iov", "PCI SR-IOV allocations");
@@ -479,13 +479,13 @@ pci_iov_config_page_size(struct pci_devi
 }
 
 static int
-pci_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t *config)
+pci_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t *config)
 {
 	const nvlist_t *device, *driver_config;
 
 	device = nvlist_get_nvlist(config, PF_CONFIG_NAME);
 	driver_config = nvlist_get_nvlist(device, DRIVER_CONFIG_NAME);
-	return (PCI_INIT_IOV(dev, num_vfs, driver_config));
+	return (PCI_IOV_INIT(dev, num_vfs, driver_config));
 }
 
 static int
@@ -591,7 +591,7 @@ pci_iov_enumerate_vfs(struct pci_devinfo
 
 		pci_iov_add_bars(iov, vfinfo);
 
-		error = PCI_ADD_VF(dev, i, driver_config);
+		error = PCI_IOV_ADD_VF(dev, i, driver_config);
 		if (error != 0) {
 			device_printf(dev, "Failed to add VF %d\n", i);
 			pci_delete_child(bus, vf);
@@ -648,7 +648,7 @@ pci_iov_config(struct cdev *cdev, struct
 	if (error != 0)
 		goto out;
 
-	error = pci_init_iov(dev, num_vfs, config);
+	error = pci_iov_init(dev, num_vfs, config);
 	if (error != 0)
 		goto out;
 	iov_inited = 1;
@@ -696,7 +696,7 @@ pci_iov_config(struct cdev *cdev, struct
 	return (0);
 out:
 	if (iov_inited)
-		PCI_UNINIT_IOV(dev);
+		PCI_IOV_UNINIT(dev);
 
 	for (i = 0; i <= PCIR_MAX_BAR_0; i++) {
 		if (iov->iov_bar[i].res != NULL) {
@@ -789,7 +789,7 @@ pci_iov_delete(struct cdev *cdev)
 		if (pci_iov_is_child_vf(iov, vf))
 			pci_delete_child(bus, vf);
 	}
-	PCI_UNINIT_IOV(dev);
+	PCI_IOV_UNINIT(dev);
 
 	iov_ctl = IOV_READ(dinfo, PCIR_SRIOV_CTL, 2);
 	iov_ctl &= ~(PCIM_SRIOV_VF_EN | PCIM_SRIOV_VF_MSE);

Copied: user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.h (from r283670, head/sys/dev/pci/pci_iov.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/stable-10-libnv/sys/dev/pci/pci_iov.h	Sun Jan  3 09:38:05 2016	(r293096, copy of r283670, head/sys/dev/pci/pci_iov.h)
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2013-2015 Sandvine Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _PCI_IOV_H_
+#define	_PCI_IOV_H_
+
+#include "pci_iov_if.h"
+
+struct nvlist;
+
+static __inline int
+pci_iov_attach(device_t dev, struct nvlist *pf_schema, struct nvlist *vf_schema)
+{
+	return (PCI_IOV_ATTACH(device_get_parent(dev), dev, pf_schema,
+	    vf_schema));
+}
+
+static __inline int
+pci_iov_detach(device_t dev)
+{
+	return (PCI_IOV_DETACH(device_get_parent(dev), dev));
+}
+
+#endif /* !_PCI_IOV_H_ */

Copied: user/ngie/stable-10-libnv/sys/dev/pci/pci_iov_if.m (from r283670, head/sys/dev/pci/pci_iov_if.m)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ngie/stable-10-libnv/sys/dev/pci/pci_iov_if.m	Sun Jan  3 09:38:05 2016	(r293096, copy of r283670, head/sys/dev/pci/pci_iov_if.m)
@@ -0,0 +1,52 @@
+#-
+# Copyright (c) 2013-2015 Sandvine Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+#include <sys/bus.h>
+
+INTERFACE pci_iov;
+
+HEADER {
+	struct nvlist;
+}
+
+
+METHOD int init {
+	device_t		dev;
+	uint16_t		num_vfs;
+	const struct nvlist	*config;
+};
+
+METHOD void uninit {
+	device_t		dev;
+};
+
+METHOD int add_vf {
+	device_t		dev;
+	uint16_t		vfnum;
+	const struct nvlist	*config;
+};

Modified: user/ngie/stable-10-libnv/sys/dev/pci/pcivar.h
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/pci/pcivar.h	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/dev/pci/pcivar.h	Sun Jan  3 09:38:05 2016	(r293096)
@@ -39,8 +39,6 @@
 
 typedef uint64_t pci_addr_t;
 
-struct nvlist;
-
 /* Interesting values for PCI power management */
 struct pcicfg_pp {
     uint16_t	pp_cap;		/* PCI power management capabilities */
@@ -526,19 +524,6 @@ pci_child_added(device_t dev)
     return (PCI_CHILD_ADDED(device_get_parent(dev), dev));
 }
 
-static __inline int
-pci_iov_attach(device_t dev, struct nvlist *pf_schema, struct nvlist *vf_schema)
-{
-	return (PCI_IOV_ATTACH(device_get_parent(dev), dev, pf_schema,
-	    vf_schema));
-}
-
-static __inline int
-pci_iov_detach(device_t dev)
-{
-	return (PCI_IOV_DETACH(device_get_parent(dev), dev));
-}
-
 device_t pci_find_bsf(uint8_t, uint8_t, uint8_t);
 device_t pci_find_dbsf(uint32_t, uint8_t, uint8_t, uint8_t);
 device_t pci_find_device(uint16_t, uint16_t);

Modified: user/ngie/stable-10-libnv/sys/modules/ixl/Makefile
==============================================================================
--- user/ngie/stable-10-libnv/sys/modules/ixl/Makefile	Sun Jan  3 09:19:54 2016	(r293095)
+++ user/ngie/stable-10-libnv/sys/modules/ixl/Makefile	Sun Jan  3 09:38:05 2016	(r293096)
@@ -5,7 +5,7 @@
 .PATH:  ${.CURDIR}/../../dev/ixl
 
 KMOD    = if_ixl
-SRCS    = device_if.h bus_if.h pci_if.h opt_bdg.h
+SRCS    = device_if.h bus_if.h pci_if.h pci_iov_if.h opt_bdg.h
 SRCS    += opt_inet.h opt_inet6.h
 SRCS    += if_ixl.c ixl_txrx.c i40e_osdep.c
 


More information about the svn-src-user mailing list