[{"id":1771578,"web_url":"http://patchwork.ozlabs.org/comment/1771578/","msgid":"<201709201310.dKM5ZVgY%fengguang.wu@intel.com>","date":"2017-09-20T05:31:41","subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","submitter":{"id":67315,"url":"http://patchwork.ozlabs.org/api/people/67315/","name":"kernel test robot","email":"lkp@intel.com"},"content":"Hi Bryant,\n\n[auto build test WARNING on powerpc/next]\n[also build test WARNING on v4.14-rc1 next-20170919]\n[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]\n\nurl:    https://github.com/0day-ci/linux/commits/Bryant-G-Ly/Prepartion-for-SR-IOV-PowerVM-Enablement/20170920-114754\nbase:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next\nreproduce: make htmldocs\n\nAll warnings (new ones prefixed by >>):\n\n   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)\n   include/linux/init.h:1: warning: no structured comments found\n   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_major' description in 'fsl_mc_device_id'\n   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_minor' description in 'fsl_mc_device_id'\n   kernel/sched/core.c:2080: warning: No description found for parameter 'rf'\n   kernel/sched/core.c:2080: warning: Excess function parameter 'cookie' description in 'try_to_wake_up_local'\n   include/linux/wait.h:555: warning: No description found for parameter 'wq'\n   include/linux/wait.h:555: warning: Excess function parameter 'wq_head' description in 'wait_event_interruptible_hrtimeout'\n   include/linux/wait.h:759: warning: No description found for parameter 'wq_head'\n   include/linux/wait.h:759: warning: Excess function parameter 'wq' description in 'wait_event_killable'\n   include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create'\n   kernel/sys.c:1: warning: no structured comments found\n   include/linux/device.h:968: warning: No description found for parameter 'dma_ops'\n   drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found\n   include/linux/iio/iio.h:603: warning: No description found for parameter 'trig_readonly'\n   include/linux/iio/trigger.h:151: warning: No description found for parameter 'indio_dev'\n   include/linux/iio/trigger.h:151: warning: No description found for parameter 'trig'\n   include/linux/device.h:969: warning: No description found for parameter 'dma_ops'\n   drivers/ata/libata-eh.c:1449: warning: No description found for parameter 'link'\n   drivers/ata/libata-eh.c:1449: warning: Excess function parameter 'ap' description in 'ata_eh_done'\n   drivers/ata/libata-eh.c:1590: warning: No description found for parameter 'qc'\n   drivers/ata/libata-eh.c:1590: warning: Excess function parameter 'dev' description in 'ata_eh_request_sense'\n   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'\n   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'\n>> drivers/pci/bus.c:351: warning: No description found for parameter 'pdev'\n>> drivers/pci/bus.c:351: warning: Excess function parameter 'dev' description in 'pci_bus_add_virtfn_device'\n   arch/s390/include/asm/cmb.h:1: warning: no structured comments found\n   drivers/scsi/scsi_lib.c:1116: warning: No description found for parameter 'rq'\n   drivers/scsi/constants.c:1: warning: no structured comments found\n   include/linux/usb/gadget.h:230: warning: No description found for parameter 'claimed'\n   include/linux/usb/gadget.h:230: warning: No description found for parameter 'enabled'\n   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_altset_not_supp'\n   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_stall_not_supp'\n   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_zlp_not_supp'\n   fs/inode.c:1666: warning: No description found for parameter 'rcu'\n   include/linux/jbd2.h:443: warning: No description found for parameter 'i_transaction'\n   include/linux/jbd2.h:443: warning: No description found for parameter 'i_next_transaction'\n   include/linux/jbd2.h:443: warning: No description found for parameter 'i_list'\n   include/linux/jbd2.h:443: warning: No description found for parameter 'i_vfs_inode'\n   include/linux/jbd2.h:443: warning: No description found for parameter 'i_flags'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_rsv_handle'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_reserved'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_type'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_line_no'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_start_jiffies'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'h_requested_credits'\n   include/linux/jbd2.h:497: warning: No description found for parameter 'saved_alloc_context'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chkpt_bhs'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_devname'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_average_commit_time'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_min_batch_time'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_max_batch_time'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_commit_callback'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_failed_commit'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chksum_driver'\n   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_csum_seed'\n   fs/jbd2/transaction.c:511: warning: No description found for parameter 'type'\n   fs/jbd2/transaction.c:511: warning: No description found for parameter 'line_no'\n   fs/jbd2/transaction.c:641: warning: No description found for parameter 'gfp_mask'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'set_busid'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'debugfs_init'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_open_object'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_close_object'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_handle_to_fd'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_fd_to_handle'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_export'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_pin'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_unpin'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_res_obj'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_get_sg_table'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import_sg_table'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vmap'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vunmap'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_mmap'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_vm_ops'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'major'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'minor'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'patchlevel'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'name'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'desc'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'date'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'driver_features'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'ioctls'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'num_ioctls'\n   include/drm/drm_drv.h:537: warning: No description found for parameter 'fops'\n   include/drm/drm_color_mgmt.h:1: warning: no structured comments found\n   drivers/gpu/drm/drm_syncobj.c:341: warning: Excess function parameter 'dev' description in 'drm_syncobj_open'\n   drivers/gpu/drm/drm_syncobj.c:366: warning: Excess function parameter 'dev' description in 'drm_syncobj_release'\n   include/drm/drm_syncobj.h:1: warning: no structured comments found\n   drivers/gpu/drm/drm_syncobj.c:342: warning: Excess function parameter 'dev' description in 'drm_syncobj_open'\n   drivers/gpu/drm/drm_syncobj.c:367: warning: Excess function parameter 'dev' description in 'drm_syncobj_release'\n   drivers/gpu/host1x/bus.c:50: warning: Excess function parameter 'driver' description in 'host1x_subdev_add'\n   Documentation/doc-guide/sphinx.rst:121: ERROR: Unknown target name: \"sphinx c domain\".\n   kernel/sched/fair.c:7584: WARNING: Inline emphasis start-string without end-string.\n   kernel/time/timer.c:1200: ERROR: Unexpected indentation.\n   kernel/time/timer.c:1202: ERROR: Unexpected indentation.\n   kernel/time/timer.c:1203: WARNING: Block quote ends without a blank line; unexpected unindent.\n   include/linux/wait.h:108: WARNING: Block quote ends without a blank line; unexpected unindent.\n   include/linux/wait.h:111: ERROR: Unexpected indentation.\n   include/linux/wait.h:113: WARNING: Block quote ends without a blank line; unexpected unindent.\n   kernel/time/hrtimer.c:991: WARNING: Block quote ends without a blank line; unexpected unindent.\n   kernel/signal.c:323: WARNING: Inline literal start-string without end-string.\n   kernel/rcu/tree.c:3187: ERROR: Unexpected indentation.\n   kernel/rcu/tree.c:3214: ERROR: Unexpected indentation.\n   kernel/rcu/tree.c:3215: WARNING: Bullet list ends without a blank line; unexpected unindent.\n   include/linux/iio/iio.h:219: ERROR: Unexpected indentation.\n   include/linux/iio/iio.h:220: WARNING: Block quote ends without a blank line; unexpected unindent.\n   include/linux/iio/iio.h:226: WARNING: Definition list ends without a blank line; unexpected unindent.\n   drivers/iio/industrialio-core.c:633: ERROR: Unknown target name: \"iio_val\".\n   drivers/iio/industrialio-core.c:640: ERROR: Unknown target name: \"iio_val\".\n   drivers/ata/libata-core.c:5906: ERROR: Unknown target name: \"hw\".\n   drivers/message/fusion/mptbase.c:5051: WARNING: Definition list ends without a blank line; unexpected unindent.\n   drivers/tty/serial/serial_core.c:1897: WARNING: Definition list ends without a blank line; unexpected unindent.\n   drivers/pci/pci.c:3470: ERROR: Unexpected indentation.\n   include/linux/regulator/driver.h:271: ERROR: Unknown target name: \"regulator_regmap_x_voltage\".\n   include/linux/spi/spi.h:373: ERROR: Unexpected indentation.\n   drivers/w1/w1_io.c:196: WARNING: Definition list ends without a blank line; unexpected unindent.\n   block/bio.c:404: ERROR: Unknown target name: \"gfp\".\n   drivers/gpu/drm/drm_scdc_helper.c:203: ERROR: Unexpected indentation.\n   drivers/gpu/drm/drm_scdc_helper.c:204: WARNING: Block quote ends without a blank line; unexpected unindent.\n   drivers/gpu/drm/drm_ioctl.c:702: WARNING: Definition list ends without a blank line; unexpected unindent.\n   Documentation/gpu/todo.rst:111: ERROR: Unknown target name: \"drm_fb\".\n   sound/soc/soc-core.c:2703: ERROR: Unknown target name: \"snd_soc_daifmt\".\n   sound/core/jack.c:312: ERROR: Unknown target name: \"snd_jack_btn\".\n   Documentation/media/v4l-drivers/imx.rst:: WARNING: document isn't included in any toctree\n\nvim +/pdev +351 drivers/pci/bus.c\n\n   340\t\n   341\t/**\n   342\t * pci_bus_add_virtfn_device - start driver for a virtual function device\n   343\t * @dev: device to add\n   344\t *\n   345\t * This adds add sysfs entries and start device drivers for\n   346\t * virtual function devices\n   347\t *\n   348\t */\n   349\tvoid pci_bus_add_virtfn_device(struct pci_dev *pdev)\n   350\t{\n > 351\t\tpci_bus_add_sysfs_entries(pdev);\n   352\t\tpci_bus_match_virtfn_driver(pdev);\n   353\t}\n   354\tEXPORT_SYMBOL_GPL(pci_bus_add_virtfn_device);\n   355\t#endif\n   356\t\n\n---\n0-DAY kernel test infrastructure                Open Source Technology Center\nhttps://lists.01.org/pipermail/kbuild-all                   Intel Corporation","headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xxpMq0nZyz9s82\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 20 Sep 2017 15:34:31 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xxpMp6ZLZzDqjB\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 20 Sep 2017 15:34:30 +1000 (AEST)","from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xxpKQ44J7zDqYd\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tWed, 20 Sep 2017 15:32:25 +1000 (AEST)","from orsmga002.jf.intel.com ([10.7.209.21])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t19 Sep 2017 22:32:23 -0700","from bee.sh.intel.com (HELO bee) ([10.239.97.14])\n\tby orsmga002.jf.intel.com with ESMTP; 19 Sep 2017 22:32:21 -0700","from kbuild by bee with local (Exim 4.84_2)\n\t(envelope-from <fengguang.wu@intel.com>)\n\tid 1duXhH-000UK3-IR; Wed, 20 Sep 2017 13:37:19 +0800"],"Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=intel.com\n\t(client-ip=192.55.52.115; helo=mga14.intel.com;\n\tenvelope-from=fengguang.wu@intel.com; receiver=<UNKNOWN>)","X-ExtLoop1":"1","X-IronPort-AV":"E=Sophos;i=\"5.42,420,1500966000\"; \n\td=\"gz'50?scan'50,208,50\";a=\"137368447\"","Date":"Wed, 20 Sep 2017 13:31:41 +0800","From":"kbuild test robot <lkp@intel.com>","To":"\"Bryant G. Ly\" <bryantly@linux.vnet.ibm.com>","Subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","Message-ID":"<201709201310.dKM5ZVgY%fengguang.wu@intel.com>","MIME-Version":"1.0","Content-Type":"multipart/mixed; boundary=\"qDbXVdCdHGoSgWSk\"","Content-Disposition":"inline","In-Reply-To":"<20170918192651.78404-2-bryantly@linux.vnet.ibm.com>","User-Agent":"Mutt/1.5.23 (2014-03-12)","X-SA-Exim-Connect-IP":"<locally generated>","X-SA-Exim-Mail-From":"fengguang.wu@intel.com","X-SA-Exim-Scanned":"No (on bee); SAEximRunCond expanded to false","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.24","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Cc":"paulus@samba.org, kbuild-all@01.org,\n\t\"Bryant G. Ly\" <bryantly@linux.vnet.ibm.com>, linux-pci@vger.kernel.org, \n\tbhelgaas@google.com, linuxppc-dev@lists.ozlabs.org,\n\t\"Juan J . Alvarez\" <jjalvare@us.ibm.com>","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"}},{"id":1773096,"web_url":"http://patchwork.ozlabs.org/comment/1773096/","msgid":"<20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com>","date":"2017-09-21T20:43:26","subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","submitter":{"id":67298,"url":"http://patchwork.ozlabs.org/api/people/67298/","name":"Bjorn Helgaas","email":"helgaas@kernel.org"},"content":"On Mon, Sep 18, 2017 at 02:26:49PM -0500, Bryant G. Ly wrote:\n> When enabling SR-IOV one might want to have their\n> own version of starting device drivers for the VFs.\n> This patch allows for SR-IOV callers to use\n> pci_bus_add_virtfn_device instead of generic\n> pci_bus_add_device.\n> \n> When enabling SR-IOV in PSeries architecture the\n> dynamic VFs created within the sriov_configure sysfs call\n> will not load the device driver as firmware will load\n> the device node when the VF device is assigned to the\n> logical partition. So we needed a way to overwrite the\n> way device driver matching is done for virtual functions\n> on powervm.\n> \n> Signed-off-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>\n> Signed-off-by: Juan J. Alvarez <jjalvare@us.ibm.com>\n> ---\n>  drivers/pci/bus.c   | 51 ++++++++++++++++++++++++++++++++++++++++++---------\n>  drivers/pci/iov.c   |  2 +-\n>  include/linux/pci.h |  3 +++\n>  3 files changed, 46 insertions(+), 10 deletions(-)\n> \n> diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c\n> index bc56cf19afd3..86daf62c4048 100644\n> --- a/drivers/pci/bus.c\n> +++ b/drivers/pci/bus.c\n> @@ -302,16 +302,9 @@ void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { }\n>  \n>  void __weak pcibios_bus_add_device(struct pci_dev *pdev) { }\n>  \n> -/**\n> - * pci_bus_add_device - start driver for a single device\n> - * @dev: device to add\n> - *\n> - * This adds add sysfs entries and start device drivers\n> - */\n> -void pci_bus_add_device(struct pci_dev *dev)\n> -{\n> -\tint retval;\n>  \n> +void pci_bus_add_sysfs_entries(struct pci_dev *dev)\n> +{\n>  \t/*\n>  \t * Can not put in pci_device_add yet because resources\n>  \t * are not assigned yet for some devices.\n> @@ -321,6 +314,11 @@ void pci_bus_add_device(struct pci_dev *dev)\n>  \tpci_create_sysfs_dev_files(dev);\n>  \tpci_proc_attach_device(dev);\n>  \tpci_bridge_d3_update(dev);\n> +}\n> +\n> +void pci_bus_match_device_driver(struct pci_dev *dev)\n> +{\n> +\tint retval;\n>  \n>  \tdev->match_driver = true;\n>  \tretval = device_attach(&dev->dev);\n> @@ -333,6 +331,41 @@ void pci_bus_add_device(struct pci_dev *dev)\n>  \n>  \tdev->is_added = 1;\n>  }\n> +\n> +#ifdef CONFIG_PCI_IOV\n> +void __weak pci_bus_match_virtfn_driver(struct pci_dev *dev)\n> +{\n> +\tpci_bus_match_device_driver(dev);\n> +}\n> +\n> +/**\n> + * pci_bus_add_virtfn_device - start driver for a virtual function device\n> + * @dev: device to add\n> + *\n> + * This adds add sysfs entries and start device drivers for\n> + * virtual function devices\n> + *\n> + */\n> +void pci_bus_add_virtfn_device(struct pci_dev *pdev)\n> +{\n> +\tpci_bus_add_sysfs_entries(pdev);\n> +\tpci_bus_match_virtfn_driver(pdev);\n> +}\n> +EXPORT_SYMBOL_GPL(pci_bus_add_virtfn_device);\n\nIs there any way we can avoid adding this new interface?  I don't\nreally want a new global exported symbol just to support this highly\nplatform-specific functionality.\n\nIf we could figure out a way to set dev->match_driver to false instead\nof true in pci_bus_add_device(), it *looks* like that would be enough\nto accomplish what you need.  Maybe that could be done via a pcibios\nhook or a new function pointer in struct pci_host_bridge, similar to\nthe swizzle_irq pointer?\n\n> +#endif\n> +\n> +/**\n> + * pci_bus_add_device - start driver for a single device\n> + * @dev: device to add\n> + *\n> + * This adds add sysfs entries and start device drivers\n> + */\n> +void pci_bus_add_device(struct pci_dev *dev)\n> +{\n> +\tpci_bus_add_sysfs_entries(dev);\n> +\tpci_bus_match_device_driver(dev);\n> +}\n> +\n>  EXPORT_SYMBOL_GPL(pci_bus_add_device);\n>  \n>  /**\n> diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c\n> index ac41c8be9200..16cc72545847 100644\n> --- a/drivers/pci/iov.c\n> +++ b/drivers/pci/iov.c\n> @@ -162,7 +162,7 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)\n>  \n>  \tpci_device_add(virtfn, virtfn->bus);\n>  \n> -\tpci_bus_add_device(virtfn);\n> +\tpci_bus_add_virtfn_device(virtfn);\n>  \tsprintf(buf, \"virtfn%u\", id);\n>  \trc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);\n>  \tif (rc)\n> diff --git a/include/linux/pci.h b/include/linux/pci.h\n> index f68c58a93dd0..39f5c0b4bf23 100644\n> --- a/include/linux/pci.h\n> +++ b/include/linux/pci.h\n> @@ -911,6 +911,9 @@ struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);\n>  void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);\n>  unsigned int pci_scan_child_bus(struct pci_bus *bus);\n>  void pci_bus_add_device(struct pci_dev *dev);\n> +#ifdef CONFIG_PCI_IOV\n> +void pci_bus_add_virtfn_device(struct pci_dev *dev);\n> +#endif\n>  void pci_read_bridge_bases(struct pci_bus *child);\n>  struct resource *pci_find_parent_resource(const struct pci_dev *dev,\n>  \t\t\t\t\t  struct resource *res);\n> -- \n> 2.11.0 (Apple Git-81)\n>","headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xypYt2kBgz9s03\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri, 22 Sep 2017 06:46:42 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xypYt1P3nzDsM4\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri, 22 Sep 2017 06:46:42 +1000 (AEST)","from mail.kernel.org (mail.kernel.org [198.145.29.99])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xypVB3SpQzDqjC\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tFri, 22 Sep 2017 06:43:30 +1000 (AEST)","from localhost (unknown [64.22.249.253])\n\t(using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits))\n\t(No client certificate requested)\n\tby mail.kernel.org (Postfix) with ESMTPSA id 1FF3721A28;\n\tThu, 21 Sep 2017 20:43:28 +0000 (UTC)"],"Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=kernel.org\n\t(client-ip=198.145.29.99; helo=mail.kernel.org;\n\tenvelope-from=helgaas@kernel.org; receiver=<UNKNOWN>)","mail.kernel.org;\n\tdmarc=none (p=none dis=none) header.from=kernel.org","mail.kernel.org;\n\tspf=none smtp.mailfrom=helgaas@kernel.org"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mail.kernel.org 1FF3721A28","Date":"Thu, 21 Sep 2017 15:43:26 -0500","From":"Bjorn Helgaas <helgaas@kernel.org>","To":"\"Bryant G. Ly\" <bryantly@linux.vnet.ibm.com>","Subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","Message-ID":"<20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com>","References":"<20170918192651.78404-1-bryantly@linux.vnet.ibm.com>\n\t<20170918192651.78404-2-bryantly@linux.vnet.ibm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20170918192651.78404-2-bryantly@linux.vnet.ibm.com>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.24","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Cc":"paulus@samba.org, linux-pci@vger.kernel.org, bhelgaas@google.com,\n\tlinuxppc-dev@lists.ozlabs.org, \"Juan J . Alvarez\" <jjalvare@us.ibm.com>","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"}},{"id":1773907,"web_url":"http://patchwork.ozlabs.org/comment/1773907/","msgid":"<1a13b02a-4e32-adff-1083-8bf538cbdf9b@linux.vnet.ibm.com>","date":"2017-09-22T13:46:26","subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","submitter":{"id":72247,"url":"http://patchwork.ozlabs.org/api/people/72247/","name":"Bryant G. Ly","email":"bryantly@linux.vnet.ibm.com"},"content":"On 9/21/17 3:43 PM, Bjorn Helgaas wrote:\n> On Mon, Sep 18, 2017 at 02:26:49PM -0500, Bryant G. Ly wrote:\n>> When enabling SR-IOV one might want to have their\n>> own version of starting device drivers for the VFs.\n>> This patch allows for SR-IOV callers to use\n>> pci_bus_add_virtfn_device instead of generic\n>> pci_bus_add_device.\n>>\n>> When enabling SR-IOV in PSeries architecture the\n>> dynamic VFs created within the sriov_configure sysfs call\n>> will not load the device driver as firmware will load\n>> the device node when the VF device is assigned to the\n>> logical partition. So we needed a way to overwrite the\n>> way device driver matching is done for virtual functions\n>> on powervm.\n>>\n>> Signed-off-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>\n>> Signed-off-by: Juan J. Alvarez <jjalvare@us.ibm.com>\n>> ---\n>>   drivers/pci/bus.c   | 51 ++++++++++++++++++++++++++++++++++++++++++---------\n>>   drivers/pci/iov.c   |  2 +-\n>>   include/linux/pci.h |  3 +++\n>>   3 files changed, 46 insertions(+), 10 deletions(-)\n>>\n>> diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c\n>> index bc56cf19afd3..86daf62c4048 100644\n>> --- a/drivers/pci/bus.c\n>> +++ b/drivers/pci/bus.c\n>> @@ -302,16 +302,9 @@ void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { }\n>>   \n>>   void __weak pcibios_bus_add_device(struct pci_dev *pdev) { }\n>>   \n>> -/**\n>> - * pci_bus_add_device - start driver for a single device\n>> - * @dev: device to add\n>> - *\n>> - * This adds add sysfs entries and start device drivers\n>> - */\n>> -void pci_bus_add_device(struct pci_dev *dev)\n>> -{\n>> -\tint retval;\n>>   \n>> +void pci_bus_add_sysfs_entries(struct pci_dev *dev)\n>> +{\n>>   \t/*\n>>   \t * Can not put in pci_device_add yet because resources\n>>   \t * are not assigned yet for some devices.\n>> @@ -321,6 +314,11 @@ void pci_bus_add_device(struct pci_dev *dev)\n>>   \tpci_create_sysfs_dev_files(dev);\n>>   \tpci_proc_attach_device(dev);\n>>   \tpci_bridge_d3_update(dev);\n>> +}\n>> +\n>> +void pci_bus_match_device_driver(struct pci_dev *dev)\n>> +{\n>> +\tint retval;\n>>   \n>>   \tdev->match_driver = true;\n>>   \tretval = device_attach(&dev->dev);\n>> @@ -333,6 +331,41 @@ void pci_bus_add_device(struct pci_dev *dev)\n>>   \n>>   \tdev->is_added = 1;\n>>   }\n>> +\n>> +#ifdef CONFIG_PCI_IOV\n>> +void __weak pci_bus_match_virtfn_driver(struct pci_dev *dev)\n>> +{\n>> +\tpci_bus_match_device_driver(dev);\n>> +}\n>> +\n>> +/**\n>> + * pci_bus_add_virtfn_device - start driver for a virtual function device\n>> + * @dev: device to add\n>> + *\n>> + * This adds add sysfs entries and start device drivers for\n>> + * virtual function devices\n>> + *\n>> + */\n>> +void pci_bus_add_virtfn_device(struct pci_dev *pdev)\n>> +{\n>> +\tpci_bus_add_sysfs_entries(pdev);\n>> +\tpci_bus_match_virtfn_driver(pdev);\n>> +}\n>> +EXPORT_SYMBOL_GPL(pci_bus_add_virtfn_device);\n> Is there any way we can avoid adding this new interface?  I don't\n> really want a new global exported symbol just to support this highly\n> platform-specific functionality.\n>\n> If we could figure out a way to set dev->match_driver to false instead\n> of true in pci_bus_add_device(), it *looks* like that would be enough\n> to accomplish what you need.  Maybe that could be done via a pcibios\n> hook or a new function pointer in struct pci_host_bridge, similar to\n> the swizzle_irq pointer?\n\nYes! I will remove the first two patches in the series and only utilize the third\npatch but addingpdev->match_driver = -1; under pseries_pcibios_bus_add_device, which is \na new function I added for machine dependent bus add of a device. The \npatch will then require https://patchwork.kernel.org/patch/9882915/ \nwhich basically allows for match_driver state to not get changed later \nunder the pci_bus_match due to allowing for the match_driver to be a int \nvs a bool. I will push up another patch removing the first two patches \nand adding that extra line. -Bryant\n\n>> +#endif\n>> +\n>> +/**\n>> + * pci_bus_add_device - start driver for a single device\n>> + * @dev: device to add\n>> + *\n>> + * This adds add sysfs entries and start device drivers\n>> + */\n>> +void pci_bus_add_device(struct pci_dev *dev)\n>> +{\n>> +\tpci_bus_add_sysfs_entries(dev);\n>> +\tpci_bus_match_device_driver(dev);\n>> +}\n>> +\n>>   EXPORT_SYMBOL_GPL(pci_bus_add_device);\n>>   \n>>   /**\n>> diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c\n>> index ac41c8be9200..16cc72545847 100644\n>> --- a/drivers/pci/iov.c\n>> +++ b/drivers/pci/iov.c\n>> @@ -162,7 +162,7 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)\n>>   \n>>   \tpci_device_add(virtfn, virtfn->bus);\n>>   \n>> -\tpci_bus_add_device(virtfn);\n>> +\tpci_bus_add_virtfn_device(virtfn);\n>>   \tsprintf(buf, \"virtfn%u\", id);\n>>   \trc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf);\n>>   \tif (rc)\n>> diff --git a/include/linux/pci.h b/include/linux/pci.h\n>> index f68c58a93dd0..39f5c0b4bf23 100644\n>> --- a/include/linux/pci.h\n>> +++ b/include/linux/pci.h\n>> @@ -911,6 +911,9 @@ struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);\n>>   void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);\n>>   unsigned int pci_scan_child_bus(struct pci_bus *bus);\n>>   void pci_bus_add_device(struct pci_dev *dev);\n>> +#ifdef CONFIG_PCI_IOV\n>> +void pci_bus_add_virtfn_device(struct pci_dev *dev);\n>> +#endif\n>>   void pci_read_bridge_bases(struct pci_bus *child);\n>>   struct resource *pci_find_parent_resource(const struct pci_dev *dev,\n>>   \t\t\t\t\t  struct resource *res);\n>> -- \n>> 2.11.0 (Apple Git-81)\n>>\n<html>\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n  </head>\n  <body text=\"#000000\" bgcolor=\"#FFFFFF\">\n    <p><br>\n    </p>\n    <br>\n    <div class=\"moz-cite-prefix\">On 9/21/17 3:43 PM, Bjorn Helgaas\n      wrote:<br>\n    </div>\n    <blockquote type=\"cite\"\n      cite=\"mid:20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com\">\n      <pre wrap=\"\">On Mon, Sep 18, 2017 at 02:26:49PM -0500, Bryant G. Ly wrote:\n</pre>\n      <blockquote type=\"cite\">\n        <pre wrap=\"\">When enabling SR-IOV one might want to have their\nown version of starting device drivers for the VFs.\nThis patch allows for SR-IOV callers to use\npci_bus_add_virtfn_device instead of generic\npci_bus_add_device.\n\nWhen enabling SR-IOV in PSeries architecture the\ndynamic VFs created within the sriov_configure sysfs call\nwill not load the device driver as firmware will load\nthe device node when the VF device is assigned to the\nlogical partition. So we needed a way to overwrite the\nway device driver matching is done for virtual functions\non powervm.\n\nSigned-off-by: Bryant G. Ly <a class=\"moz-txt-link-rfc2396E\" href=\"mailto:bryantly@linux.vnet.ibm.com\">&lt;bryantly@linux.vnet.ibm.com&gt;</a>\nSigned-off-by: Juan J. Alvarez <a class=\"moz-txt-link-rfc2396E\" href=\"mailto:jjalvare@us.ibm.com\">&lt;jjalvare@us.ibm.com&gt;</a>\n---\n drivers/pci/bus.c   | 51 ++++++++++++++++++++++++++++++++++++++++++---------\n drivers/pci/iov.c   |  2 +-\n include/linux/pci.h |  3 +++\n 3 files changed, 46 insertions(+), 10 deletions(-)\n\ndiff --git a/drivers/pci/bus.c b/drivers/pci/bus.c\nindex bc56cf19afd3..86daf62c4048 100644\n--- a/drivers/pci/bus.c\n+++ b/drivers/pci/bus.c\n@@ -302,16 +302,9 @@ void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { }\n \n void __weak pcibios_bus_add_device(struct pci_dev *pdev) { }\n \n-/**\n- * pci_bus_add_device - start driver for a single device\n- * @dev: device to add\n- *\n- * This adds add sysfs entries and start device drivers\n- */\n-void pci_bus_add_device(struct pci_dev *dev)\n-{\n-\tint retval;\n \n+void pci_bus_add_sysfs_entries(struct pci_dev *dev)\n+{\n \t/*\n \t * Can not put in pci_device_add yet because resources\n \t * are not assigned yet for some devices.\n@@ -321,6 +314,11 @@ void pci_bus_add_device(struct pci_dev *dev)\n \tpci_create_sysfs_dev_files(dev);\n \tpci_proc_attach_device(dev);\n \tpci_bridge_d3_update(dev);\n+}\n+\n+void pci_bus_match_device_driver(struct pci_dev *dev)\n+{\n+\tint retval;\n \n \tdev-&gt;match_driver = true;\n \tretval = device_attach(&amp;dev-&gt;dev);\n@@ -333,6 +331,41 @@ void pci_bus_add_device(struct pci_dev *dev)\n \n \tdev-&gt;is_added = 1;\n }\n+\n+#ifdef CONFIG_PCI_IOV\n+void __weak pci_bus_match_virtfn_driver(struct pci_dev *dev)\n+{\n+\tpci_bus_match_device_driver(dev);\n+}\n+\n+/**\n+ * pci_bus_add_virtfn_device - start driver for a virtual function device\n+ * @dev: device to add\n+ *\n+ * This adds add sysfs entries and start device drivers for\n+ * virtual function devices\n+ *\n+ */\n+void pci_bus_add_virtfn_device(struct pci_dev *pdev)\n+{\n+\tpci_bus_add_sysfs_entries(pdev);\n+\tpci_bus_match_virtfn_driver(pdev);\n+}\n+EXPORT_SYMBOL_GPL(pci_bus_add_virtfn_device);\n</pre>\n      </blockquote>\n      <pre wrap=\"\">\nIs there any way we can avoid adding this new interface?  I don't\nreally want a new global exported symbol just to support this highly\nplatform-specific functionality.\n\nIf we could figure out a way to set dev-&gt;match_driver to false instead\nof true in pci_bus_add_device(), it *looks* like that would be enough\nto accomplish what you need.  Maybe that could be done via a pcibios\nhook or a new function pointer in struct pci_host_bridge, similar to\nthe swizzle_irq pointer?\n</pre>\n    </blockquote>\n    <pre>Yes! I will remove the first two patches in the series and only utilize the third\npatch but adding <span class=\"blob-code-inner\" style=\"box-sizing: border-box; overflow: visible; font-family: SFMono-Regular,Consolas,&quot;Liberation Mono&quot;,Menlo,Courier,monospace; font-size: 12px; overflow-wrap: break-word; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;\">pdev-&gt;match_driver = -<span class=\"pl-c1\" style=\"box-sizing: border-box;\">1</span>; under <tt>pseries_pcibios_bus_add_device, which\nis a new function I added for machine dependent bus add of a device. \n\nThe patch will then require <a class=\"moz-txt-link-freetext\" href=\"https://patchwork.kernel.org/patch/9882915/\">https://patchwork.kernel.org/patch/9882915/</a>\nwhich basically allows for match_driver state to not get changed later under the\npci_bus_match due to allowing for the match_driver to be a int vs a bool. \n\nI will push up another patch removing the first two patches and adding that extra line.\n\n-Bryant</tt></span></pre>\n    <blockquote type=\"cite\"\n      cite=\"mid:20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com\">\n      <pre wrap=\"\">\n</pre>\n      <blockquote type=\"cite\">\n        <pre wrap=\"\">+#endif\n+\n+/**\n+ * pci_bus_add_device - start driver for a single device\n+ * @dev: device to add\n+ *\n+ * This adds add sysfs entries and start device drivers\n+ */\n+void pci_bus_add_device(struct pci_dev *dev)\n+{\n+\tpci_bus_add_sysfs_entries(dev);\n+\tpci_bus_match_device_driver(dev);\n+}\n+\n EXPORT_SYMBOL_GPL(pci_bus_add_device);\n \n /**\ndiff --git a/drivers/pci/iov.c b/drivers/pci/iov.c\nindex ac41c8be9200..16cc72545847 100644\n--- a/drivers/pci/iov.c\n+++ b/drivers/pci/iov.c\n@@ -162,7 +162,7 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id, int reset)\n \n \tpci_device_add(virtfn, virtfn-&gt;bus);\n \n-\tpci_bus_add_device(virtfn);\n+\tpci_bus_add_virtfn_device(virtfn);\n \tsprintf(buf, \"virtfn%u\", id);\n \trc = sysfs_create_link(&amp;dev-&gt;dev.kobj, &amp;virtfn-&gt;dev.kobj, buf);\n \tif (rc)\ndiff --git a/include/linux/pci.h b/include/linux/pci.h\nindex f68c58a93dd0..39f5c0b4bf23 100644\n--- a/include/linux/pci.h\n+++ b/include/linux/pci.h\n@@ -911,6 +911,9 @@ struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);\n void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);\n unsigned int pci_scan_child_bus(struct pci_bus *bus);\n void pci_bus_add_device(struct pci_dev *dev);\n+#ifdef CONFIG_PCI_IOV\n+void pci_bus_add_virtfn_device(struct pci_dev *dev);\n+#endif\n void pci_read_bridge_bases(struct pci_bus *child);\n struct resource *pci_find_parent_resource(const struct pci_dev *dev,\n \t\t\t\t\t  struct resource *res);","headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xzS2Z2zStz9t16\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 23 Sep 2017 07:55:18 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xzS2Z1j52zDsPp\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 23 Sep 2017 07:55:18 +1000 (AEST)","from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n\t[148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xzFBd5BPSzDqjC\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tFri, 22 Sep 2017 23:46:32 +1000 (AEST)","from pps.filterd (m0098421.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv8MDhZGO124986\n\tfor <linuxppc-dev@lists.ozlabs.org>; Fri, 22 Sep 2017 09:46:30 -0400","from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2d53mfgbgj-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <linuxppc-dev@lists.ozlabs.org>; Fri, 22 Sep 2017 09:46:29 -0400","from localhost\n\tby e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <linuxppc-dev@lists.ozlabs.org> from\n\t<bryantly@linux.vnet.ibm.com>; Fri, 22 Sep 2017 09:46:29 -0400","from b01cxnp22033.gho.pok.ibm.com (9.57.198.23)\n\tby e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tFri, 22 Sep 2017 09:46:26 -0400","from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com\n\t[9.57.199.106])\n\tby b01cxnp22033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP\n\tid v8MDkQdL40501474; Fri, 22 Sep 2017 13:46:26 GMT","from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id A39882804C;\n\tFri, 22 Sep 2017 09:46:19 -0400 (EDT)","from bryants-mbp-3.rchland.ibm.com (unknown [9.10.79.180])\n\tby b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP id 333432803A;\n\tFri, 22 Sep 2017 09:46:19 -0400 (EDT)"],"Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=linux.vnet.ibm.com\n\t(client-ip=148.163.158.5; helo=mx0a-001b2d01.pphosted.com;\n\tenvelope-from=bryantly@linux.vnet.ibm.com; receiver=<UNKNOWN>)","Subject":"Re: [PATCH v1 1/3] powerpc/kernel: Split up pci_bus_add_device","To":"Bjorn Helgaas <helgaas@kernel.org>","References":"<20170918192651.78404-1-bryantly@linux.vnet.ibm.com>\n\t<20170918192651.78404-2-bryantly@linux.vnet.ibm.com>\n\t<20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com>","From":"\"Bryant G. Ly\" <bryantly@linux.vnet.ibm.com>","Date":"Fri, 22 Sep 2017 08:46:26 -0500","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0)\n\tGecko/20100101 Thunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170921204326.GJ22312@bhelgaas-glaptop.roam.corp.google.com>","Content-Type":"multipart/alternative;\n\tboundary=\"------------0B9EC22EE5D642BE41404790\"","Content-Language":"en-US","X-TM-AS-GCONF":"00","x-cbid":"17092213-0024-0000-0000-000002D66314","X-IBM-SpamModules-Scores":"","X-IBM-SpamModules-Versions":"BY=3.00007777; HX=3.00000241; KW=3.00000007;\n\tPH=3.00000004; SC=3.00000231; SDB=6.00920730; UDB=6.00462678;\n\tIPR=6.00700951; \n\tBA=6.00005601; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009;\n\tZB=6.00000000; \n\tZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017248;\n\tXFM=3.00000015; UTC=2017-09-22 13:46:28","X-IBM-AV-DETECTION":"SAVI=unused REMOTE=unused XFE=unused","x-cbparentid":"17092213-0025-0000-0000-00004581E5C3","Message-Id":"<1a13b02a-4e32-adff-1083-8bf538cbdf9b@linux.vnet.ibm.com>","X-Proofpoint-Virus-Version":"vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-22_05:, , signatures=0","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709220193","X-Mailman-Approved-At":"Sat, 23 Sep 2017 07:54:16 +1000","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.24","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Cc":"paulus@samba.org, linux-pci@vger.kernel.org, bhelgaas@google.com,\n\tlinuxppc-dev@lists.ozlabs.org, \"Juan J . Alvarez\" <jjalvare@us.ibm.com>","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"}}]