public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Alistair Popple <alistair@popple.id.au>
Cc: linuxppc-dev@lists.ozlabs.org,
	Alexey Kardashevskiy <aik@ozlabs.ru>,
	Gavin Shan <gwshan@linux.vnet.ibm.com>,
	devicetree@vger.kernel.org, linux-pci@vger.kernel.org,
	grant.likely@linaro.org, robherring2@gmail.com,
	bhelgaas@google.com, dja@axtens.net
Subject: Re: [PATCH v8 45/45] PCI/hotplug: PowerPC PowerNV PCI hotplug driver
Date: Tue, 3 May 2016 09:41:23 +1000	[thread overview]
Message-ID: <20160502234123.GB5908@gwshan> (raw)
In-Reply-To: <5044520.n8NHsZUD6Y@new-mexico>

On Wed, Apr 20, 2016 at 11:55:56AM +1000, Alistair Popple wrote:
>On Tue, 19 Apr 2016 20:36:48 Alexey Kardashevskiy wrote:
>> On 02/17/2016 02:44 PM, Gavin Shan wrote:
>> > This adds standalone driver to support PCI hotplug for PowerPC PowerNV
>> > platform that runs on top of skiboot firmware. The firmware identifies
>> > hotpluggable slots and marked their device tree node with proper
>> > "ibm,slot-pluggable" and "ibm,reset-by-firmware". The driver scans
>> > device tree nodes to create/register PCI hotplug slot accordingly.
>> >
>> > The PCI slots are organized in fashion of tree, which means one
>> > PCI slot might have parent PCI slot and parent PCI slot possibly
>> > contains multiple child PCI slots. At the plugging time, the parent
>> > PCI slot is populated before its children. The child PCI slots are
>> > removed before their parent PCI slot can be removed from the system.
>> >
>> > If the skiboot firmware doesn't support slot status retrieval, the PCI
>> > slot device node shouldn't have property "ibm,reset-by-firmware". In
>> > that case, none of valid PCI slots will be detected from device tree.
>> > The skiboot firmware doesn't export the capability to access attention
>> > LEDs yet and it's something for TBD.
>> >
>> > Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>> > Acked-by: Bjorn Helgaas <bhelgaas@google.com>
>> > ---
>> >   drivers/pci/hotplug/Kconfig   |  12 +
>> >   drivers/pci/hotplug/Makefile  |   3 +
>> >   drivers/pci/hotplug/pnv_php.c | 870 ++++++++++++++++++++++++++++++++++++++++++
>> >   3 files changed, 885 insertions(+)
>> >   create mode 100644 drivers/pci/hotplug/pnv_php.c
>> >
>> > diff --git a/drivers/pci/hotplug/Kconfig b/drivers/pci/hotplug/Kconfig
>> > index df8caec..167c8ce 100644
>> > --- a/drivers/pci/hotplug/Kconfig
>> > +++ b/drivers/pci/hotplug/Kconfig
>> > @@ -113,6 +113,18 @@ config HOTPLUG_PCI_SHPC
>> >
>> >   	  When in doubt, say N.
>> >
>> > +config HOTPLUG_PCI_POWERNV
>> > +	tristate "PowerPC PowerNV PCI Hotplug driver"
>> > +	depends on PPC_POWERNV && EEH
>> > +	help
>> > +	  Say Y here if you run PowerPC PowerNV platform that supports
>> > +	  PCI Hotplug
>> > +
>> > +	  To compile this driver as a module, choose M here: the
>> > +	  module will be called pnv-php.
>> > +
>> > +	  When in doubt, say N.
>> > +
>> >   config HOTPLUG_PCI_RPA
>> >   	tristate "RPA PCI Hotplug driver"
>> >   	depends on PPC_PSERIES && EEH
>> > diff --git a/drivers/pci/hotplug/Makefile b/drivers/pci/hotplug/Makefile
>> > index b616e75..e33cdda 100644
>> > --- a/drivers/pci/hotplug/Makefile
>> > +++ b/drivers/pci/hotplug/Makefile
>> > @@ -14,6 +14,7 @@ obj-$(CONFIG_HOTPLUG_PCI_PCIE)		+= pciehp.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550)	+= cpcihp_zt5550.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC)	+= cpcihp_generic.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_SHPC)		+= shpchp.o
>> > +obj-$(CONFIG_HOTPLUG_PCI_POWERNV)	+= pnv-php.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_RPA)		+= rpaphp.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR)	+= rpadlpar_io.o
>> >   obj-$(CONFIG_HOTPLUG_PCI_SGI)		+= sgi_hotplug.o
>> > @@ -50,6 +51,8 @@ ibmphp-objs		:=	ibmphp_core.o	\
>> >   acpiphp-objs		:=	acpiphp_core.o	\
>> >   				acpiphp_glue.o
>> >
>> > +pnv-php-objs		:=	pnv_php.o
>> > +
>> >   rpaphp-objs		:=	rpaphp_core.o	\
>> >   				rpaphp_pci.o	\
>> >   				rpaphp_slot.o
>> > diff --git a/drivers/pci/hotplug/pnv_php.c b/drivers/pci/hotplug/pnv_php.c
>> > new file mode 100644
>> > index 0000000..364ec36
>> > --- /dev/null
>> > +++ b/drivers/pci/hotplug/pnv_php.c
>> > @@ -0,0 +1,870 @@
>> > +/*
>> > + * PCI Hotplug Driver for PowerPC PowerNV platform.
>> > + *
>> > + * Copyright Gavin Shan, IBM Corporation 2015.
>> > + *
>> > + * This program is free software; you can redistribute it and/or modify
>> > + * it under the terms of the GNU General Public License as published by
>> > + * the Free Software Foundation; either version 2 of the License, or
>> > + * (at your option) any later version.
>> > + */
>> > +
>> > +#include <linux/libfdt.h>
>> > +#include <linux/module.h>
>> > +#include <linux/pci.h>
>> > +#include <linux/pci_hotplug.h>
>> > +
>> > +#include <asm/opal.h>
>> > +#include <asm/pnv-pci.h>
>> > +#include <asm/ppc-pci.h>
>> > +
>> > +#define DRIVER_VERSION	"0.1"
>> > +#define DRIVER_AUTHOR	"Gavin Shan, IBM Corporation"
>> > +#define DRIVER_DESC	"PowerPC PowerNV PCI Hotplug Driver"
>> > +
>> > +struct pnv_php_slot {
>> > +	struct hotplug_slot		slot;
>> > +	struct hotplug_slot_info	slot_info;
>> > +	uint64_t			id;
>> > +	char				*name;
>> > +	int				slot_no;
>> > +	struct kref			kref;
>> > +#define PNV_PHP_STATE_INITIALIZED	0
>> > +#define PNV_PHP_STATE_REGISTERED	1
>> > +#define PNV_PHP_STATE_POPULATED		2
>> > +	int				state;
>> > +	struct device_node		*dn;
>> > +	struct pci_dev			*pdev;
>> > +	struct pci_bus			*bus;
>> > +	bool				power_state_check;
>> > +	int				power_state_confirmed;
>> > +#define PNV_PHP_POWER_CONFIRMED_INVALID	0
>> > +#define PNV_PHP_POWER_CONFIRMED_SUCCESS	1
>> > +#define PNV_PHP_POWER_CONFIRMED_FAIL	2
>> > +	struct opal_msg			*msg;
>> > +	void				*fdt;
>> > +	void				*dt;
>> > +	struct of_changeset		ocs;
>> > +	struct work_struct		work;
>> > +	wait_queue_head_t		queue;
>> > +	struct pnv_php_slot		*parent;
>> > +	struct list_head		children;
>> > +	struct list_head		link;
>> > +};
>> > +
>> > +static LIST_HEAD(pnv_php_slot_list);
>> > +static DEFINE_SPINLOCK(pnv_php_lock);
>> > +
>> > +static void pnv_php_register(struct device_node *dn);
>> > +static void pnv_php_unregister_one(struct device_node *dn);
>> > +static void pnv_php_unregister(struct device_node *dn);
>> 
>> 
>> The names confused me. I'd suggest pnv_php_scan(), pnv_php_unregister(), 
>> pnv_php_unregister_children() instead.
>> 
>> 
>> Alistair, what do you reckon?
>
>To be honest I'm not sure the new names are necessarily any less confusing. I
>will admit to having to read that code twice though so perhaps a short comment
>describing what each of those functions does would be the best method for
>reducing confusion.

Alexey, Please confirm if I need rename those functions though I
don't understand the confusion caused the function names.

[unrelated content removed]

  reply	other threads:[~2016-05-02 23:41 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-17  3:43 [PATCH v8 00/45] powerpc/powernv: PCI hotplug support Gavin Shan
2016-02-17  3:43 ` [PATCH v8 01/45] PCI: Add pcibios_setup_bridge() Gavin Shan
2016-02-17  3:43 ` [PATCH v8 02/45] powerpc/pci: Override pcibios_setup_bridge() Gavin Shan
     [not found]   ` <1455680668-23298-3-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-13  5:52     ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 03/45] powerpc/pci: Cleanup on struct pci_controller_ops Gavin Shan
2016-02-17  4:18   ` Andrew Donnellan
     [not found]   ` <1455680668-23298-4-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-13  5:52     ` Alexey Kardashevskiy
2016-04-19 23:59       ` Gavin Shan
2016-02-17  3:43 ` [PATCH v8 04/45] powerpc/powernv: Cleanup on pci_controller_ops instances Gavin Shan
2016-02-17  4:38   ` Andrew Donnellan
2016-02-17  3:43 ` [PATCH v8 06/45] powerpc/powernv: Reorder fields in struct pnv_phb Gavin Shan
2016-04-13  5:56   ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 07/45] powerpc/powernv: Rename PE# " Gavin Shan
2016-04-13  5:57   ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 08/45] powerpc/powernv: Fix initial IO and M32 segmap Gavin Shan
2016-04-13  6:21   ` Alexey Kardashevskiy
2016-04-13  7:53     ` Gavin Shan
2016-04-13  9:53       ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 09/45] powerpc/powernv: Simplify pnv_ioda_setup_pe_seg() Gavin Shan
2016-04-13  6:45   ` Alexey Kardashevskiy
2016-04-20  0:04     ` Gavin Shan
2016-02-17  3:43 ` [PATCH v8 10/45] powerpc/powernv: IO and M32 mapping based on PCI device resources Gavin Shan
2016-02-17  3:43 ` [PATCH v8 11/45] powerpc/powernv: Track M64 segment consumption Gavin Shan
2016-04-13  7:09   ` Alexey Kardashevskiy
2016-04-20  0:05     ` Gavin Shan
2016-02-17  3:43 ` [PATCH v8 12/45] powerpc/powernv: Rename M64 related functions Gavin Shan
     [not found]   ` <1455680668-23298-13-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-13  7:20     ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 14/45] powerpc/powernv/ioda1: Rename pnv_pci_ioda_setup_dma_pe() Gavin Shan
2016-04-13  7:36   ` Alexey Kardashevskiy
2016-02-17  3:43 ` [PATCH v8 16/45] powerpc/powernv: Remove DMA32 PE list Gavin Shan
2016-04-13  8:59   ` Alexey Kardashevskiy
2016-04-20  0:34     ` Gavin Shan
     [not found] ` <1455680668-23298-1-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-17  3:43   ` [PATCH v8 05/45] powerpc/powernv: Drop phb->bdfn_to_pe() Gavin Shan
2016-04-13  5:53     ` Alexey Kardashevskiy
2016-02-17  3:43   ` [PATCH v8 13/45] powerpc/powernv/ioda1: M64 support on P7IOC Gavin Shan
2016-04-13  7:47     ` Alexey Kardashevskiy
2016-04-20  0:22       ` Gavin Shan
2016-04-20  2:55         ` Alexey Kardashevskiy
2016-02-17  3:43   ` [PATCH v8 15/45] powerpc/powernv/ioda1: Introduce PNV_IODA1_DMA32_SEGSIZE Gavin Shan
2016-04-13  8:29     ` Alexey Kardashevskiy
2016-04-13 23:54       ` Gavin Shan
2016-04-14  3:36         ` Alexey Kardashevskiy
2016-04-20  0:25           ` Gavin Shan
2016-02-17  3:44   ` [PATCH v8 17/45] powerpc/powernv/ioda1: Improve DMA32 segment track Gavin Shan
2016-04-19  1:50     ` Alexey Kardashevskiy
2016-04-20  0:49       ` Gavin Shan
2016-04-20  5:10         ` Alexey Kardashevskiy
2016-02-17  3:44   ` [PATCH v8 38/45] powerpc/powernv: Functions to get/set PCI slot status Gavin Shan
2016-04-19  9:39     ` Alexey Kardashevskiy
2016-04-20  2:36       ` Gavin Shan
2016-04-20  4:25         ` Alexey Kardashevskiy
2016-02-17  3:44   ` [PATCH v8 42/45] drivers/of: Rename unflatten_dt_node() Gavin Shan
     [not found]     ` <1455680668-23298-43-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-02-17 14:59       ` Rob Herring
2016-02-19  3:16         ` Gavin Shan
2016-03-02  2:40           ` Rob Herring
2016-03-08  0:56             ` Gavin Shan
2016-03-17 13:31               ` Rob Herring
2016-03-17 22:44                 ` Gavin Shan
2016-02-17  3:44   ` [PATCH v8 45/45] PCI/hotplug: PowerPC PowerNV PCI hotplug driver Gavin Shan
2016-04-15  0:47     ` Alistair Popple
2016-04-15  1:39       ` Gavin Shan
     [not found]     ` <1455680668-23298-46-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-19 10:36       ` Alexey Kardashevskiy
2016-04-20  1:55         ` Alistair Popple
2016-05-02 23:41           ` Gavin Shan [this message]
2016-05-03  0:44             ` Alexey Kardashevskiy
2016-05-02  3:44         ` Gavin Shan
2016-05-02  6:11           ` Alexey Kardashevskiy
2016-05-02 23:38             ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 18/45] powerpc/powernv: Increase PE# capacity Gavin Shan
2016-04-19  2:02   ` Alexey Kardashevskiy
2016-04-20  0:52     ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 19/45] powerpc/powernv: Use PE instead of number during setup and release Gavin Shan
2016-04-19  2:50   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 20/45] powerpc/powernv: Allocate PE# in reverse order Gavin Shan
2016-04-19  3:07   ` Alexey Kardashevskiy
2016-04-20  1:04     ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 21/45] powerpc/powernv: Create PEs at PCI hot plugging time Gavin Shan
2016-04-19  4:16   ` Alexey Kardashevskiy
2016-04-20  1:12     ` Gavin Shan
2016-04-20  3:00       ` Alexey Kardashevskiy
2016-04-20  3:35         ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 22/45] powerpc/powernv/ioda1: Support releasing IODA1 TCE table Gavin Shan
2016-04-19  4:28   ` Alexey Kardashevskiy
2016-04-20  1:15     ` Gavin Shan
2016-04-20  3:17       ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 23/45] powerpc/powernv: Dynamically release PEs Gavin Shan
2016-04-19  5:19   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 24/45] powerpc/pci: Rename pcibios_{add,remove}_pci_devices() Gavin Shan
2016-04-19  5:28   ` Alexey Kardashevskiy
2016-04-20  1:23     ` Gavin Shan
2016-04-20  3:21       ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 25/45] powerpc/pci: Rename pcibios_find_pci_bus() Gavin Shan
2016-04-19  5:31   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 26/45] powerpc/pci: Move pci_find_bus_by_node() around Gavin Shan
2016-02-17  3:44 ` [PATCH v8 27/45] powerpc/pci: Export pci_add_device_node_info() Gavin Shan
2016-04-19  5:35   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 28/45] powerpc/pci: Introduce pci_remove_device_node_info() Gavin Shan
2016-04-19  5:48   ` Alexey Kardashevskiy
2016-04-20  1:25     ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 29/45] powerpc/pci: Export pci_traverse_device_nodes() Gavin Shan
     [not found]   ` <1455680668-23298-30-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-19  5:51     ` Alexey Kardashevskiy
2016-04-20  1:27       ` Gavin Shan
2016-04-20  3:39         ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 30/45] powerpc/pci: Delay populating pdn Gavin Shan
2016-04-19  8:19   ` Alexey Kardashevskiy
2016-04-20  2:13     ` Gavin Shan
2016-04-20  3:54       ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 31/45] powerpc/pci: Don't scan empty slot Gavin Shan
2016-04-19  8:19   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 32/45] powerpc/pci: Update bridge windows on PCI plug Gavin Shan
2016-04-19  8:47   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 33/45] powerpc/powernv: Simplify pnv_eeh_reset() Gavin Shan
2016-02-17  4:35   ` Andrew Donnellan
2016-04-19  8:49   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 34/45] powerpc/powernv: Exclude root bus in pnv_pci_reset_secondary_bus() Gavin Shan
2016-04-19  8:57   ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 35/45] powerpc/powernv: Fundamental reset " Gavin Shan
     [not found]   ` <1455680668-23298-36-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-19  9:04     ` Alexey Kardashevskiy
2016-04-20  1:36       ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 36/45] powerpc/powernv: Support PCI slot ID Gavin Shan
     [not found]   ` <1455680668-23298-37-git-send-email-gwshan-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2016-04-19  9:28     ` Alexey Kardashevskiy
2016-04-20  2:28       ` Gavin Shan
2016-04-20  4:14         ` Alexey Kardashevskiy
2016-04-22  4:23           ` Alistair Popple
2016-02-17  3:44 ` [PATCH v8 37/45] powerpc/powernv: Use firmware PCI slot reset infrastructure Gavin Shan
2016-04-19  9:34   ` Alexey Kardashevskiy
2016-04-20  2:33     ` Gavin Shan
2016-04-20  4:17       ` Alexey Kardashevskiy
2016-02-17  3:44 ` [PATCH v8 39/45] powerpc/powernv: Select OF_DYNAMIC Gavin Shan
2016-04-19  9:42   ` Alexey Kardashevskiy
2016-04-20  2:38     ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 40/45] drivers/of: Split unflatten_dt_node() Gavin Shan
2016-02-17 14:30   ` Rob Herring
2016-04-20  2:38     ` Gavin Shan
2016-05-02  2:02     ` Gavin Shan
2016-02-17  3:44 ` [PATCH v8 41/45] drivers/of: Avoid recursively calling unflatten_dt_node() Gavin Shan
2016-02-17 14:53   ` Rob Herring
2016-02-17  3:44 ` [PATCH v8 43/45] drivers/of: Specify parent node in of_fdt_unflatten_tree() Gavin Shan
2016-02-17 15:00   ` Rob Herring
2016-02-17 15:58   ` Jyri Sarha
2016-02-17  3:44 ` [PATCH v8 44/45] drivers/of: Return allocated memory from of_fdt_unflatten_tree() Gavin Shan
2016-04-13  7:28 ` [PATCH v8 00/45] powerpc/powernv: PCI hotplug support Alexey Kardashevskiy
2016-04-13  7:42   ` Gavin Shan
2016-04-13  9:14     ` Alexey Kardashevskiy
2016-04-13 23:42       ` Gavin Shan
2016-04-13 23:57         ` Alistair Popple
2016-04-14  1:30           ` Gavin Shan
2016-04-14  3:38             ` Alexey Kardashevskiy
2016-04-15 16:10             ` Rob Herring
2016-04-20  2:40               ` Gavin Shan
2016-04-14  3:26         ` Alexey Kardashevskiy
2016-04-14  5:25           ` Gavin Shan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160502234123.GB5908@gwshan \
    --to=gwshan@linux.vnet.ibm.com \
    --cc=aik@ozlabs.ru \
    --cc=alistair@popple.id.au \
    --cc=bhelgaas@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dja@axtens.net \
    --cc=grant.likely@linaro.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=robherring2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox