Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 May 2015 22:01:51 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283670 - in head: . share/man/man9 sys/conf sys/dev/ixl sys/dev/pci sys/modules/ixl
Message-ID:  <201505282201.t4SM1p6x087963@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Thu May 28 22:01:50 2015
New Revision: 283670
URL: https://svnweb.freebsd.org/changeset/base/283670

Log:
  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.
  
  Differential Revision:	https://reviews.freebsd.org/D2584
  Reviewed by:	rstone

Added:
  head/share/man/man9/PCI_IOV_ADD_VF.9
     - copied, changed from r283669, head/share/man/man9/PCI_ADD_VF.9
  head/share/man/man9/PCI_IOV_INIT.9
     - copied, changed from r283669, head/share/man/man9/PCI_INIT_IOV.9
  head/share/man/man9/PCI_IOV_UNINIT.9
     - copied, changed from r283669, head/share/man/man9/PCI_UNINIT_IOV.9
  head/sys/dev/pci/pci_iov.h   (contents, props changed)
  head/sys/dev/pci/pci_iov_if.m   (contents, props changed)
Deleted:
  head/share/man/man9/PCI_ADD_VF.9
  head/share/man/man9/PCI_INIT_IOV.9
  head/share/man/man9/PCI_UNINIT_IOV.9
Modified:
  head/ObsoleteFiles.inc
  head/share/man/man9/Makefile
  head/share/man/man9/pci.9
  head/share/man/man9/pci_iov_schema.9
  head/sys/conf/files
  head/sys/conf/kmod.mk
  head/sys/dev/ixl/if_ixl.c
  head/sys/dev/ixl/ixl.h
  head/sys/dev/pci/pci_if.m
  head/sys/dev/pci/pci_iov.c
  head/sys/dev/pci/pcivar.h
  head/sys/modules/ixl/Makefile   (contents, props changed)

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Thu May 28 21:06:59 2015	(r283669)
+++ head/ObsoleteFiles.inc	Thu May 28 22:01:50 2015	(r283670)
@@ -38,6 +38,10 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20150528: PCI IOV device driver methods moved to a separate kobj interface.
+OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9
+OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9
+OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9
 # 20150525: new clang import which bumps version from 3.6.0 to 3.6.1.
 OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h
 OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h

Modified: head/share/man/man9/Makefile
==============================================================================
--- head/share/man/man9/Makefile	Thu May 28 21:06:59 2015	(r283669)
+++ head/share/man/man9/Makefile	Thu May 28 22:01:50 2015	(r283670)
@@ -195,10 +195,10 @@ MAN=	accept_filter.9 \
 	p_candebug.9 \
 	p_cansee.9 \
 	pci.9 \
-	PCI_ADD_VF.9 \
-	PCI_INIT_IOV.9 \
+	PCI_IOV_ADD_VF.9 \
+	PCI_IOV_INIT.9 \
 	pci_iov_schema.9 \
-	PCI_UNINIT_IOV.9 \
+	PCI_IOV_UNINIT.9 \
 	pfil.9 \
 	pfind.9 \
 	pget.9 \

Copied and modified: head/share/man/man9/PCI_IOV_ADD_VF.9 (from r283669, head/share/man/man9/PCI_ADD_VF.9)
==============================================================================
--- head/share/man/man9/PCI_ADD_VF.9	Thu May 28 21:06:59 2015	(r283669, copy source)
+++ head/share/man/man9/PCI_IOV_ADD_VF.9	Thu May 28 22:01:50 2015	(r283670)
@@ -25,38 +25,37 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 24, 2014
-.Dt PCI_ADD_VF 9
+.Dd May 28, 2015
+.Dt PCI_IOV_ADD_VF 9
 .Os
 .Sh NAME
-.Nm PCI_ADD_VF
+.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/pcireg.h
-.In dev/pci/pcivar.h
+.In dev/pci/pci_iov.h
 .Ft int
-.Fn PCI_ADD_VF "device_t dev" "uint16_t vfnum" "const nvlist_t *vf_config"
+.Fn PCI_IOV_ADD_VF "device_t dev" "uint16_t vfnum" "const nvlist_t *vf_config"
 .Sh DESCRIPTION
 The
-.Fn PCI_ADD_VF
+.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_INIT_IOV 9
+.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_INIT_IOV 9 .
+.Xr PCI_IOV_INIT 9 .
 If the infrastructure encounters a failure to allocate resources following the
 call to
-.Xr PCI_INIT_IOV 9 ,
+.Xr PCI_IOV_INIT 9 ,
 the VF creation will be aborted and
-.Xr PCI_UNINIT_IOV 9
+.Xr PCI_IOV_UNINIT 9
 will be called immediately without any preceding calls to
 .Nm .
 .Pp
@@ -87,15 +86,15 @@ Note that it is possible for the user to
 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_ADD_VF
+.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_UNINIT_IOV 9
+.Xr PCI_IOV_UNINIT 9
 and
-.Xr PCI_INIT_IOV 9
+.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.
@@ -106,8 +105,8 @@ the PF.
 .Xr nv 9 ,
 .Xr pci 9 ,
 .Xr pci_iov_schema 9 ,
-.Xr PCI_INIT_IOV 9 ,
-.Xr PCI_UNINIT_IOV 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@FreeBSD.org .

Copied and modified: head/share/man/man9/PCI_IOV_INIT.9 (from r283669, head/share/man/man9/PCI_INIT_IOV.9)
==============================================================================
--- head/share/man/man9/PCI_INIT_IOV.9	Thu May 28 21:06:59 2015	(r283669, copy source)
+++ head/share/man/man9/PCI_IOV_INIT.9	Thu May 28 22:01:50 2015	(r283670)
@@ -25,23 +25,22 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 24, 2014
-.Dt PCI_INIT_IOV 9
+.Dd May 28, 2015
+.Dt PCI_IOV_INIT 9
 .Os
 .Sh NAME
-.Nm PCI_INIT_IOV
+.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/pcireg.h
-.In dev/pci/pcivar.h
+.In dev/pci/pci_iov.h
 .Ft int
-.Fn PCI_INIT_IOV "device_t dev" "uint16_t num_vfs" "const nvlist_t *pf_config"
+.Fn PCI_IOV_INIT "device_t dev" "uint16_t num_vfs" "const nvlist_t *pf_config"
 .Sh DESCRIPTION
 The
-.Fn PCI_INIT_IOV
+.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).
@@ -70,7 +69,7 @@ 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_UNINIT_IOV .
+.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
@@ -79,8 +78,8 @@ and no VFs will be created.
 .Xr nv 9 ,
 .Xr pci 9 ,
 .Xr pci_iov_schema 9 ,
-.Xr PCI_ADD_VF 9 ,
-.Xr PCI_UNINIT_IOV 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@FreeBSD.org .

Copied and modified: head/share/man/man9/PCI_IOV_UNINIT.9 (from r283669, head/share/man/man9/PCI_UNINIT_IOV.9)
==============================================================================
--- head/share/man/man9/PCI_UNINIT_IOV.9	Thu May 28 21:06:59 2015	(r283669, copy source)
+++ head/share/man/man9/PCI_IOV_UNINIT.9	Thu May 28 22:01:50 2015	(r283670)
@@ -25,21 +25,20 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 24, 2014
-.Dt PCI_UNINIT_IOV 9
+.Dd May 28, 2015
+.Dt PCI_IOV_UNINIT 9
 .Os
 .Sh NAME
-.Nm PCI_UNINIT_IOV
+.Nm PCI_IOV_UNINIT
 .Nd disable SR-IOV on a PF device
 .Sh SYNOPSIS
 .In sys/bus.h
-.In dev/pci/pcireg.h
-.In dev/pci/pcivar.h
+.In dev/pci/pci_iov.h
 .Ft void
-.Fn PCI_UNINIT_IOV "device_t dev"
+.Fn PCI_IOV_UNINIT "device_t dev"
 .Sh DESCRIPTION
 The
-.Fn PCI_UNINIT_IOV
+.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).
@@ -48,17 +47,17 @@ resources that it has allocated and disa
 configuration in the device.
 .Pp
 This method will only be called following a successful call to
-.Xr PCI_INIT_IOV .
+.Xr PCI_IOV_INIT .
 It is not guaranteed that
-.Xr PCI_ADD_VF
+.Xr PCI_IOV_ADD_VF
 will have been called for any Virtual Function (VF) after the call to
-.Xr PCI_INIT_IOV
+.Xr PCI_IOV_INIT
 and before the call to
 .Nm .
 .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 Mt rstone@FreeBSD.org .

Modified: head/share/man/man9/pci.9
==============================================================================
--- head/share/man/man9/pci.9	Thu May 28 21:06:59 2015	(r283669)
+++ head/share/man/man9/pci.9	Thu May 28 22:01:50 2015	(r283670)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 24, 2014
+.Dd May 28, 2015
 .Dt PCI 9
 .Os
 .Sh NAME
@@ -97,10 +97,6 @@
 .Ft int
 .Fn pci_get_vpd_readonly "device_t dev" "const char *kw" "const char **vptr"
 .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"
-.Ft int
 .Fn pci_msi_count "device_t dev"
 .Ft int
 .Fn pci_msix_count "device_t dev"
@@ -122,6 +118,11 @@
 .Fn pci_set_powerstate "device_t dev" "int state"
 .Ft void
 .Fn pci_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
@@ -446,10 +447,10 @@ function is used to advertise that the g
 supports PCI Single-Root I/O Virtualization
 .Po SR-IOV Pc .
 A driver that supports SR-IOV must implement the
-.Xr PCI_INIT_IOV 9 ,
-.Xr PCI_ADD_VF 9
+.Xr PCI_IOV_INIT 9 ,
+.Xr PCI_IOV_ADD_VF 9
 and
-.Xr PCI_UNIT_IOV 9
+.Xr PCI_IOV_UNINIT 9
 methods.
 This function should be called during the
 .Xr DEVICE_ATTACH 9

Modified: head/share/man/man9/pci_iov_schema.9
==============================================================================
--- head/share/man/man9/pci_iov_schema.9	Thu May 28 21:06:59 2015	(r283669)
+++ head/share/man/man9/pci_iov_schema.9	Thu May 28 22:01:50 2015	(r283670)
@@ -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@FreeBSD.org .

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/conf/files	Thu May 28 22:01:50 2015	(r283670)
@@ -2024,6 +2024,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: head/sys/conf/kmod.mk
==============================================================================
--- head/sys/conf/kmod.mk	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/conf/kmod.mk	Thu May 28 22:01:50 2015	(r283670)
@@ -349,7 +349,7 @@ MFILES?= dev/acpica/acpi_if.m dev/acpi_s
 	dev/mbox/mbox_if.m 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: head/sys/dev/ixl/if_ixl.c
==============================================================================
--- head/sys/dev/ixl/if_ixl.c	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/dev/ixl/if_ixl.c	Thu May 28 22:01:50 2015	(r283670)
@@ -199,8 +199,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 *,
@@ -222,9 +222,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}
 };
@@ -6456,7 +6456,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;
@@ -6504,7 +6504,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: head/sys/dev/ixl/ixl.h
==============================================================================
--- head/sys/dev/ixl/ixl.h	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/dev/ixl/ixl.h	Thu May 28 22:01:50 2015	(r283670)
@@ -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: head/sys/dev/pci/pci_if.m
==============================================================================
--- head/sys/dev/pci/pci_if.m	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/dev/pci/pci_if.m	Thu May 28 22:01:50 2015	(r283670)
@@ -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: head/sys/dev/pci/pci_iov.c
==============================================================================
--- head/sys/dev/pci/pci_iov.c	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/dev/pci/pci_iov.c	Thu May 28 22:01:50 2015	(r283670)
@@ -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");
@@ -483,13 +483,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
@@ -595,7 +595,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);
@@ -652,7 +652,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;
@@ -700,7 +700,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) {
@@ -793,7 +793,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);

Added: head/sys/dev/pci/pci_iov.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/dev/pci/pci_iov.h	Thu May 28 22:01:50 2015	(r283670)
@@ -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_ */

Added: head/sys/dev/pci/pci_iov_if.m
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/dev/pci/pci_iov_if.m	Thu May 28 22:01:50 2015	(r283670)
@@ -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: head/sys/dev/pci/pcivar.h
==============================================================================
--- head/sys/dev/pci/pcivar.h	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/dev/pci/pcivar.h	Thu May 28 22:01:50 2015	(r283670)
@@ -39,8 +39,6 @@
 
 typedef uint64_t pci_addr_t;
 
-struct nvlist;
-
 /* Config registers for PCI-PCI and PCI-Cardbus bridges. */
 struct pcicfg_bridge {
     uint8_t	br_seclat;
@@ -536,19 +534,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: head/sys/modules/ixl/Makefile
==============================================================================
--- head/sys/modules/ixl/Makefile	Thu May 28 21:06:59 2015	(r283669)
+++ head/sys/modules/ixl/Makefile	Thu May 28 22:01:50 2015	(r283670)
@@ -3,7 +3,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 opt_rss.h
 SRCS    += if_ixl.c ixl_txrx.c i40e_osdep.c
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505282201.t4SM1p6x087963>