linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* PCI/IB: add support for pci driver attribute groups
@ 2017-07-19 13:01 Greg KH
  2017-07-19 15:22 ` Latif, Faisal
  2017-08-01 21:40 ` Bjorn Helgaas
  0 siblings, 2 replies; 4+ messages in thread
From: Greg KH @ 2017-07-19 13:01 UTC (permalink / raw)
  To: Faisal Latif, Doug Ledford, Sean Hefty, Hal Rosenstock, Bjorn Helgaas
  Cc: linux-rdma, linux-pci, linux-kernel

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Some drivers (specifically the nes IB driver), want to create a lot of
sysfs driver attributes.  Instead of open-coding the creation and
removal of these files (and getting it wrong btw), it's a better idea to
let the driver core handle all of this logic for us.

So add a new field to the pci driver structure, **groups, that allows
pci drivers to specify an attribute group list it wishes to have created
when it is registered with the driver core.

Big bonus is now the driver doesn't race with userspace when the sysfs
files are created vs. when the kobject is announced, so any script/tool
that actually wanted to use these files will not have to poll waiting
for them to show up.

Cc: Faisal Latif <faisal.latif@intel.com>
Cc: Doug Ledford <dledford@redhat.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/infiniband/hw/nes/nes.c |   69 +++++++++++++---------------------------
 drivers/pci/pci-driver.c        |    1 
 include/linux/pci.h             |    1 
 3 files changed, 26 insertions(+), 45 deletions(-)

--- a/drivers/infiniband/hw/nes/nes.c
+++ b/drivers/infiniband/hw/nes/nes.c
@@ -808,13 +808,6 @@ static void nes_remove(struct pci_dev *p
 }
 
 
-static struct pci_driver nes_pci_driver = {
-	.name = DRV_NAME,
-	.id_table = nes_pci_table,
-	.probe = nes_probe,
-	.remove = nes_remove,
-};
-
 static ssize_t adapter_show(struct device_driver *ddp, char *buf)
 {
 	unsigned int  devfn = 0xffffffff;
@@ -1156,35 +1149,29 @@ static DRIVER_ATTR_RW(idx_addr);
 static DRIVER_ATTR_RW(idx_data);
 static DRIVER_ATTR_RW(wqm_quanta);
 
-static int nes_create_driver_sysfs(struct pci_driver *drv)
-{
-	int error;
-	error  = driver_create_file(&drv->driver, &driver_attr_adapter);
-	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_cmd);
-	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_data);
-	error |= driver_create_file(&drv->driver, &driver_attr_flash_cmd);
-	error |= driver_create_file(&drv->driver, &driver_attr_flash_data);
-	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_addr);
-	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_data);
-	error |= driver_create_file(&drv->driver, &driver_attr_idx_addr);
-	error |= driver_create_file(&drv->driver, &driver_attr_idx_data);
-	error |= driver_create_file(&drv->driver, &driver_attr_wqm_quanta);
-	return error;
-}
-
-static void nes_remove_driver_sysfs(struct pci_driver *drv)
-{
-	driver_remove_file(&drv->driver, &driver_attr_adapter);
-	driver_remove_file(&drv->driver, &driver_attr_eeprom_cmd);
-	driver_remove_file(&drv->driver, &driver_attr_eeprom_data);
-	driver_remove_file(&drv->driver, &driver_attr_flash_cmd);
-	driver_remove_file(&drv->driver, &driver_attr_flash_data);
-	driver_remove_file(&drv->driver, &driver_attr_nonidx_addr);
-	driver_remove_file(&drv->driver, &driver_attr_nonidx_data);
-	driver_remove_file(&drv->driver, &driver_attr_idx_addr);
-	driver_remove_file(&drv->driver, &driver_attr_idx_data);
-	driver_remove_file(&drv->driver, &driver_attr_wqm_quanta);
-}
+static struct attribute *nes_attrs[] = {
+	&driver_attr_adapter,
+	&driver_attr_eeprom_cmd,
+	&driver_attr_eeprom_data,
+	&driver_attr_flash_cmd,
+	&driver_attr_flash_data,
+	&driver_attr_nonidx_addr,
+	&driver_attr_nonidx_data,
+	&driver_attr_idx_addr,
+	&driver_attr_idx_data,
+	&driver_attr_wqm_quanta,
+	NULL,
+};
+ATTRIBUTE_GROUPS(nes);
+
+static struct pci_driver nes_pci_driver = {
+	.name = DRV_NAME,
+	.id_table = nes_pci_table,
+	.probe = nes_probe,
+	.remove = nes_remove,
+	.groups = nes_groups,
+};
+
 
 /**
  * nes_init_module - module initialization entry point
@@ -1192,20 +1179,13 @@ static void nes_remove_driver_sysfs(stru
 static int __init nes_init_module(void)
 {
 	int retval;
-	int retval1;
 
 	retval = nes_cm_start();
 	if (retval) {
 		printk(KERN_ERR PFX "Unable to start NetEffect iWARP CM.\n");
 		return retval;
 	}
-	retval = pci_register_driver(&nes_pci_driver);
-	if (retval >= 0) {
-		retval1 = nes_create_driver_sysfs(&nes_pci_driver);
-		if (retval1 < 0)
-			printk(KERN_ERR PFX "Unable to create NetEffect sys files.\n");
-	}
-	return retval;
+	return pci_register_driver(&nes_pci_driver);
 }
 
 
@@ -1215,7 +1195,6 @@ static int __init nes_init_module(void)
 static void __exit nes_exit_module(void)
 {
 	nes_cm_stop();
-	nes_remove_driver_sysfs(&nes_pci_driver);
 
 	pci_unregister_driver(&nes_pci_driver);
 }
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -1307,6 +1307,7 @@ int __pci_register_driver(struct pci_dri
 	drv->driver.bus = &pci_bus_type;
 	drv->driver.owner = owner;
 	drv->driver.mod_name = mod_name;
+	drv->driver.groups = drv->groups;
 
 	spin_lock_init(&drv->dynids.lock);
 	INIT_LIST_HEAD(&drv->dynids.list);
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -729,6 +729,7 @@ struct pci_driver {
 	void (*shutdown) (struct pci_dev *dev);
 	int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */
 	const struct pci_error_handlers *err_handler;
+	const struct attribute_group **groups;
 	struct device_driver	driver;
 	struct pci_dynids dynids;
 };

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

* RE: PCI/IB: add support for pci driver attribute groups
  2017-07-19 13:01 PCI/IB: add support for pci driver attribute groups Greg KH
@ 2017-07-19 15:22 ` Latif, Faisal
  2017-08-01 21:40 ` Bjorn Helgaas
  1 sibling, 0 replies; 4+ messages in thread
From: Latif, Faisal @ 2017-07-19 15:22 UTC (permalink / raw)
  To: Greg KH, Doug Ledford, Hefty, Sean, Hal Rosenstock, Bjorn Helgaas
  Cc: linux-rdma, linux-pci, linux-kernel

Thanks!
Faisal

>-----Original Message-----
>From: Greg KH [mailto:gregkh@linuxfoundation.org]
>Sent: Wednesday, July 19, 2017 8:01 AM
>To: Latif, Faisal <faisal.latif@intel.com>; Doug Ledford
><dledford@redhat.com>; Hefty, Sean <sean.hefty@intel.com>; Hal Rosenstock
><hal.rosenstock@gmail.com>; Bjorn Helgaas <bhelgaas@google.com>
>Cc: linux-rdma@vger.kernel.org; linux-pci@vger.kernel.org; linux-
>kernel@vger.kernel.org
>Subject: PCI/IB: add support for pci driver attribute groups
>
>From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
>Some drivers (specifically the nes IB driver), want to create a lot of sysfs driver
>attributes.  Instead of open-coding the creation and removal of these files (and
>getting it wrong btw), it's a better idea to let the driver core handle all of this
>logic for us.
>
>So add a new field to the pci driver structure, **groups, that allows pci drivers
>to specify an attribute group list it wishes to have created when it is registered
>with the driver core.
>
>Big bonus is now the driver doesn't race with userspace when the sysfs files are
>created vs. when the kobject is announced, so any script/tool that actually
>wanted to use these files will not have to poll waiting for them to show up.
>
>Cc: Faisal Latif <faisal.latif@intel.com>
>Cc: Doug Ledford <dledford@redhat.com>
>Cc: Sean Hefty <sean.hefty@intel.com>
>Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
>Cc: Bjorn Helgaas <bhelgaas@google.com>
>Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
>---
> drivers/infiniband/hw/nes/nes.c |   69 +++++++++++++---------------------------
> drivers/pci/pci-driver.c        |    1
> include/linux/pci.h             |    1
> 3 files changed, 26 insertions(+), 45 deletions(-)
>
>--- a/drivers/infiniband/hw/nes/nes.c
>+++ b/drivers/infiniband/hw/nes/nes.c
>@@ -808,13 +808,6 @@ static void nes_remove(struct pci_dev *p  }
>
>
>-static struct pci_driver nes_pci_driver = {
>-	.name = DRV_NAME,
>-	.id_table = nes_pci_table,
>-	.probe = nes_probe,
>-	.remove = nes_remove,
>-};
>-
> static ssize_t adapter_show(struct device_driver *ddp, char *buf)  {
> 	unsigned int  devfn = 0xffffffff;
>@@ -1156,35 +1149,29 @@ static DRIVER_ATTR_RW(idx_addr);  static
>DRIVER_ATTR_RW(idx_data);  static DRIVER_ATTR_RW(wqm_quanta);
>
>-static int nes_create_driver_sysfs(struct pci_driver *drv) -{
>-	int error;
>-	error  = driver_create_file(&drv->driver, &driver_attr_adapter);
>-	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_cmd);
>-	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_data);
>-	error |= driver_create_file(&drv->driver, &driver_attr_flash_cmd);
>-	error |= driver_create_file(&drv->driver, &driver_attr_flash_data);
>-	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_addr);
>-	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_data);
>-	error |= driver_create_file(&drv->driver, &driver_attr_idx_addr);
>-	error |= driver_create_file(&drv->driver, &driver_attr_idx_data);
>-	error |= driver_create_file(&drv->driver, &driver_attr_wqm_quanta);
>-	return error;
>-}
>-
>-static void nes_remove_driver_sysfs(struct pci_driver *drv) -{
>-	driver_remove_file(&drv->driver, &driver_attr_adapter);
>-	driver_remove_file(&drv->driver, &driver_attr_eeprom_cmd);
>-	driver_remove_file(&drv->driver, &driver_attr_eeprom_data);
>-	driver_remove_file(&drv->driver, &driver_attr_flash_cmd);
>-	driver_remove_file(&drv->driver, &driver_attr_flash_data);
>-	driver_remove_file(&drv->driver, &driver_attr_nonidx_addr);
>-	driver_remove_file(&drv->driver, &driver_attr_nonidx_data);
>-	driver_remove_file(&drv->driver, &driver_attr_idx_addr);
>-	driver_remove_file(&drv->driver, &driver_attr_idx_data);
>-	driver_remove_file(&drv->driver, &driver_attr_wqm_quanta);
>-}
>+static struct attribute *nes_attrs[] = {
>+	&driver_attr_adapter,
>+	&driver_attr_eeprom_cmd,
>+	&driver_attr_eeprom_data,
>+	&driver_attr_flash_cmd,
>+	&driver_attr_flash_data,
>+	&driver_attr_nonidx_addr,
>+	&driver_attr_nonidx_data,
>+	&driver_attr_idx_addr,
>+	&driver_attr_idx_data,
>+	&driver_attr_wqm_quanta,
>+	NULL,
>+};
>+ATTRIBUTE_GROUPS(nes);
>+
>+static struct pci_driver nes_pci_driver = {
>+	.name = DRV_NAME,
>+	.id_table = nes_pci_table,
>+	.probe = nes_probe,
>+	.remove = nes_remove,
>+	.groups = nes_groups,
>+};
>+
>
> /**
>  * nes_init_module - module initialization entry point @@ -1192,20 +1179,13
>@@ static void nes_remove_driver_sysfs(stru  static int __init
>nes_init_module(void)  {
> 	int retval;
>-	int retval1;
>
> 	retval = nes_cm_start();
> 	if (retval) {
> 		printk(KERN_ERR PFX "Unable to start NetEffect iWARP
>CM.\n");
> 		return retval;
> 	}
>-	retval = pci_register_driver(&nes_pci_driver);
>-	if (retval >= 0) {
>-		retval1 = nes_create_driver_sysfs(&nes_pci_driver);
>-		if (retval1 < 0)
>-			printk(KERN_ERR PFX "Unable to create NetEffect sys
>files.\n");
>-	}
>-	return retval;
>+	return pci_register_driver(&nes_pci_driver);
> }
>
>
>@@ -1215,7 +1195,6 @@ static int __init nes_init_module(void)  static void
>__exit nes_exit_module(void)  {
> 	nes_cm_stop();
>-	nes_remove_driver_sysfs(&nes_pci_driver);
>
> 	pci_unregister_driver(&nes_pci_driver);
> }
>--- a/drivers/pci/pci-driver.c
>+++ b/drivers/pci/pci-driver.c
>@@ -1307,6 +1307,7 @@ int __pci_register_driver(struct pci_dri
> 	drv->driver.bus = &pci_bus_type;
> 	drv->driver.owner = owner;
> 	drv->driver.mod_name = mod_name;
>+	drv->driver.groups = drv->groups;
>
> 	spin_lock_init(&drv->dynids.lock);
> 	INIT_LIST_HEAD(&drv->dynids.list);
>--- a/include/linux/pci.h
>+++ b/include/linux/pci.h
>@@ -729,6 +729,7 @@ struct pci_driver {
> 	void (*shutdown) (struct pci_dev *dev);
> 	int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */
> 	const struct pci_error_handlers *err_handler;
>+	const struct attribute_group **groups;
> 	struct device_driver	driver;
> 	struct pci_dynids dynids;
> };

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

* Re: PCI/IB: add support for pci driver attribute groups
  2017-07-19 13:01 PCI/IB: add support for pci driver attribute groups Greg KH
  2017-07-19 15:22 ` Latif, Faisal
@ 2017-08-01 21:40 ` Bjorn Helgaas
  2017-08-18 15:44   ` Doug Ledford
  1 sibling, 1 reply; 4+ messages in thread
From: Bjorn Helgaas @ 2017-08-01 21:40 UTC (permalink / raw)
  To: Greg KH
  Cc: Faisal Latif, Doug Ledford, Sean Hefty, Hal Rosenstock,
	Bjorn Helgaas, linux-rdma, linux-pci, linux-kernel

On Wed, Jul 19, 2017 at 03:01:06PM +0200, Greg KH wrote:
> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> Some drivers (specifically the nes IB driver), want to create a lot of
> sysfs driver attributes.  Instead of open-coding the creation and
> removal of these files (and getting it wrong btw), it's a better idea to
> let the driver core handle all of this logic for us.
> 
> So add a new field to the pci driver structure, **groups, that allows
> pci drivers to specify an attribute group list it wishes to have created
> when it is registered with the driver core.
> 
> Big bonus is now the driver doesn't race with userspace when the sysfs
> files are created vs. when the kobject is announced, so any script/tool
> that actually wanted to use these files will not have to poll waiting
> for them to show up.
> 
> Cc: Faisal Latif <faisal.latif@intel.com>
> Cc: Doug Ledford <dledford@redhat.com>
> Cc: Sean Hefty <sean.hefty@intel.com>
> Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

If you want me to take this let me know; otherwise I'll assume Doug will
merge it.

> ---
>  drivers/infiniband/hw/nes/nes.c |   69 +++++++++++++---------------------------
>  drivers/pci/pci-driver.c        |    1 
>  include/linux/pci.h             |    1 
>  3 files changed, 26 insertions(+), 45 deletions(-)
> 
> --- a/drivers/infiniband/hw/nes/nes.c
> +++ b/drivers/infiniband/hw/nes/nes.c
> @@ -808,13 +808,6 @@ static void nes_remove(struct pci_dev *p
>  }
>  
>  
> -static struct pci_driver nes_pci_driver = {
> -	.name = DRV_NAME,
> -	.id_table = nes_pci_table,
> -	.probe = nes_probe,
> -	.remove = nes_remove,
> -};
> -
>  static ssize_t adapter_show(struct device_driver *ddp, char *buf)
>  {
>  	unsigned int  devfn = 0xffffffff;
> @@ -1156,35 +1149,29 @@ static DRIVER_ATTR_RW(idx_addr);
>  static DRIVER_ATTR_RW(idx_data);
>  static DRIVER_ATTR_RW(wqm_quanta);
>  
> -static int nes_create_driver_sysfs(struct pci_driver *drv)
> -{
> -	int error;
> -	error  = driver_create_file(&drv->driver, &driver_attr_adapter);
> -	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_cmd);
> -	error |= driver_create_file(&drv->driver, &driver_attr_eeprom_data);
> -	error |= driver_create_file(&drv->driver, &driver_attr_flash_cmd);
> -	error |= driver_create_file(&drv->driver, &driver_attr_flash_data);
> -	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_addr);
> -	error |= driver_create_file(&drv->driver, &driver_attr_nonidx_data);
> -	error |= driver_create_file(&drv->driver, &driver_attr_idx_addr);
> -	error |= driver_create_file(&drv->driver, &driver_attr_idx_data);
> -	error |= driver_create_file(&drv->driver, &driver_attr_wqm_quanta);
> -	return error;
> -}
> -
> -static void nes_remove_driver_sysfs(struct pci_driver *drv)
> -{
> -	driver_remove_file(&drv->driver, &driver_attr_adapter);
> -	driver_remove_file(&drv->driver, &driver_attr_eeprom_cmd);
> -	driver_remove_file(&drv->driver, &driver_attr_eeprom_data);
> -	driver_remove_file(&drv->driver, &driver_attr_flash_cmd);
> -	driver_remove_file(&drv->driver, &driver_attr_flash_data);
> -	driver_remove_file(&drv->driver, &driver_attr_nonidx_addr);
> -	driver_remove_file(&drv->driver, &driver_attr_nonidx_data);
> -	driver_remove_file(&drv->driver, &driver_attr_idx_addr);
> -	driver_remove_file(&drv->driver, &driver_attr_idx_data);
> -	driver_remove_file(&drv->driver, &driver_attr_wqm_quanta);
> -}
> +static struct attribute *nes_attrs[] = {
> +	&driver_attr_adapter,
> +	&driver_attr_eeprom_cmd,
> +	&driver_attr_eeprom_data,
> +	&driver_attr_flash_cmd,
> +	&driver_attr_flash_data,
> +	&driver_attr_nonidx_addr,
> +	&driver_attr_nonidx_data,
> +	&driver_attr_idx_addr,
> +	&driver_attr_idx_data,
> +	&driver_attr_wqm_quanta,
> +	NULL,
> +};
> +ATTRIBUTE_GROUPS(nes);
> +
> +static struct pci_driver nes_pci_driver = {
> +	.name = DRV_NAME,
> +	.id_table = nes_pci_table,
> +	.probe = nes_probe,
> +	.remove = nes_remove,
> +	.groups = nes_groups,
> +};
> +
>  
>  /**
>   * nes_init_module - module initialization entry point
> @@ -1192,20 +1179,13 @@ static void nes_remove_driver_sysfs(stru
>  static int __init nes_init_module(void)
>  {
>  	int retval;
> -	int retval1;
>  
>  	retval = nes_cm_start();
>  	if (retval) {
>  		printk(KERN_ERR PFX "Unable to start NetEffect iWARP CM.\n");
>  		return retval;
>  	}
> -	retval = pci_register_driver(&nes_pci_driver);
> -	if (retval >= 0) {
> -		retval1 = nes_create_driver_sysfs(&nes_pci_driver);
> -		if (retval1 < 0)
> -			printk(KERN_ERR PFX "Unable to create NetEffect sys files.\n");
> -	}
> -	return retval;
> +	return pci_register_driver(&nes_pci_driver);
>  }
>  
>  
> @@ -1215,7 +1195,6 @@ static int __init nes_init_module(void)
>  static void __exit nes_exit_module(void)
>  {
>  	nes_cm_stop();
> -	nes_remove_driver_sysfs(&nes_pci_driver);
>  
>  	pci_unregister_driver(&nes_pci_driver);
>  }
> --- a/drivers/pci/pci-driver.c
> +++ b/drivers/pci/pci-driver.c
> @@ -1307,6 +1307,7 @@ int __pci_register_driver(struct pci_dri
>  	drv->driver.bus = &pci_bus_type;
>  	drv->driver.owner = owner;
>  	drv->driver.mod_name = mod_name;
> +	drv->driver.groups = drv->groups;
>  
>  	spin_lock_init(&drv->dynids.lock);
>  	INIT_LIST_HEAD(&drv->dynids.list);
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -729,6 +729,7 @@ struct pci_driver {
>  	void (*shutdown) (struct pci_dev *dev);
>  	int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */
>  	const struct pci_error_handlers *err_handler;
> +	const struct attribute_group **groups;
>  	struct device_driver	driver;
>  	struct pci_dynids dynids;
>  };

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

* Re: PCI/IB: add support for pci driver attribute groups
  2017-08-01 21:40 ` Bjorn Helgaas
@ 2017-08-18 15:44   ` Doug Ledford
  0 siblings, 0 replies; 4+ messages in thread
From: Doug Ledford @ 2017-08-18 15:44 UTC (permalink / raw)
  To: Bjorn Helgaas, Greg KH
  Cc: Faisal Latif, Sean Hefty, Hal Rosenstock, Bjorn Helgaas,
	linux-rdma, linux-pci, linux-kernel

On Tue, 2017-08-01 at 16:40 -0500, Bjorn Helgaas wrote:
> On Wed, Jul 19, 2017 at 03:01:06PM +0200, Greg KH wrote:
> > From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > 
> > Some drivers (specifically the nes IB driver), want to create a lot
> > of
> > sysfs driver attributes.  Instead of open-coding the creation and
> > removal of these files (and getting it wrong btw), it's a better
> > idea to
> > let the driver core handle all of this logic for us.
> > 
> > So add a new field to the pci driver structure, **groups, that
> > allows
> > pci drivers to specify an attribute group list it wishes to have
> > created
> > when it is registered with the driver core.
> > 
> > Big bonus is now the driver doesn't race with userspace when the
> > sysfs
> > files are created vs. when the kobject is announced, so any
> > script/tool
> > that actually wanted to use these files will not have to poll
> > waiting
> > for them to show up.
> > 
> > Cc: Faisal Latif <faisal.latif@intel.com>
> > Cc: Doug Ledford <dledford@redhat.com>
> > Cc: Sean Hefty <sean.hefty@intel.com>
> > Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> If you want me to take this let me know; otherwise I'll assume Doug
> will
> merge it.

I've picked it up for for-next.  Thanks.

-- 
Doug Ledford <dledford@redhat.com>
    GPG KeyID: B826A3330E572FDD
    Key fingerprint = AE6B 1BDA 122B 23B4 265B  1274 B826 A333 0E57 2FDD

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

end of thread, other threads:[~2017-08-18 15:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-19 13:01 PCI/IB: add support for pci driver attribute groups Greg KH
2017-07-19 15:22 ` Latif, Faisal
2017-08-01 21:40 ` Bjorn Helgaas
2017-08-18 15:44   ` Doug Ledford

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).