linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Gavin Shan <gwshan@linux.vnet.ibm.com>, linuxppc-dev@lists.ozlabs.org
Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
	benh@kernel.crashing.org, mpe@ellerman.id.au, dja@axtens.net,
	bhelgaas@google.com, robherring2@gmail.com,
	grant.likely@linaro.org
Subject: Re: [PATCH v8 24/45] powerpc/pci: Rename pcibios_{add,remove}_pci_devices()
Date: Tue, 19 Apr 2016 15:28:36 +1000	[thread overview]
Message-ID: <5715C204.20004@ozlabs.ru> (raw)
In-Reply-To: <1455680668-23298-25-git-send-email-gwshan@linux.vnet.ibm.com>

On 02/17/2016 02:44 PM, Gavin Shan wrote:
> This renames pcibios_{add,remove}_pci_devices() to avoid conflicts
> with names of the weak functions in PCI subsystem, which have the
> prefix "pcibios". No logical changes introduced.
>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
>   arch/powerpc/include/asm/pci-bridge.h |  4 ++--
>   arch/powerpc/kernel/eeh_driver.c      | 12 ++++++------
>   arch/powerpc/kernel/pci-hotplug.c     | 15 +++++++--------
>   drivers/pci/hotplug/rpadlpar_core.c   |  2 +-
>   drivers/pci/hotplug/rpaphp_core.c     |  4 ++--
>   drivers/pci/hotplug/rpaphp_pci.c      |  2 +-
>   6 files changed, 19 insertions(+), 20 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
> index 4dd6ef4..c817f38 100644
> --- a/arch/powerpc/include/asm/pci-bridge.h
> +++ b/arch/powerpc/include/asm/pci-bridge.h
> @@ -263,10 +263,10 @@ static inline struct eeh_dev *pdn_to_eeh_dev(struct pci_dn *pdn)
>   extern struct pci_bus *pcibios_find_pci_bus(struct device_node *dn);
>
>   /** Remove all of the PCI devices under this bus */
> -extern void pcibios_remove_pci_devices(struct pci_bus *bus);
> +extern void pci_remove_pci_devices(struct pci_bus *bus);


pci_lala_pci_lala() ("pci" is used twice) looks weird, if the prefix is 
"pci", what other device types can they handle?...

May be pcihp_add_devices(), pcihp_remove_devices() as these as defined in 
pci-hotplug.c?


>
>   /** Discover new pci devices under this bus, and add them */
> -extern void pcibios_add_pci_devices(struct pci_bus *bus);
> +extern void pci_add_pci_devices(struct pci_bus *bus);
>
>
>   extern void isa_bridge_find_early(struct pci_controller *hose);
> diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
> index fb6207d..59e53fe 100644
> --- a/arch/powerpc/kernel/eeh_driver.c
> +++ b/arch/powerpc/kernel/eeh_driver.c
> @@ -621,7 +621,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
>   	 * We don't remove the corresponding PE instances because
>   	 * we need the information afterwords. The attached EEH
>   	 * devices are expected to be attached soon when calling
> -	 * into pcibios_add_pci_devices().
> +	 * into pci_add_pci_devices().
>   	 */
>   	eeh_pe_state_mark(pe, EEH_PE_KEEP);
>   	if (bus) {
> @@ -630,7 +630,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
>   		} else {
>   			eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
>   			pci_lock_rescan_remove();
> -			pcibios_remove_pci_devices(bus);
> +			pci_remove_pci_devices(bus);
>   			pci_unlock_rescan_remove();
>   		}
>   	} else if (frozen_bus) {
> @@ -681,7 +681,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
>   		if (pe->type & EEH_PE_VF)
>   			eeh_add_virt_device(edev, NULL);
>   		else
> -			pcibios_add_pci_devices(bus);
> +			pci_add_pci_devices(bus);
>   	} else if (frozen_bus && rmv_data->removed) {
>   		pr_info("EEH: Sleep 5s ahead of partial hotplug\n");
>   		ssleep(5);
> @@ -691,7 +691,7 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
>   		if (pe->type & EEH_PE_VF)
>   			eeh_add_virt_device(edev, NULL);
>   		else
> -			pcibios_add_pci_devices(frozen_bus);
> +			pci_add_pci_devices(frozen_bus);
>   	}
>   	eeh_pe_state_clear(pe, EEH_PE_KEEP);
>
> @@ -896,7 +896,7 @@ perm_error:
>   			eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
>
>   			pci_lock_rescan_remove();
> -			pcibios_remove_pci_devices(frozen_bus);
> +			pci_remove_pci_devices(frozen_bus);
>   			pci_unlock_rescan_remove();
>   		}
>   	}
> @@ -981,7 +981,7 @@ static void eeh_handle_special_event(void)
>   				bus = eeh_pe_bus_get(phb_pe);
>   				eeh_pe_dev_traverse(pe,
>   					eeh_report_failure, NULL);
> -				pcibios_remove_pci_devices(bus);
> +				pci_remove_pci_devices(bus);
>   			}
>   			pci_unlock_rescan_remove();
>   		}
> diff --git a/arch/powerpc/kernel/pci-hotplug.c b/arch/powerpc/kernel/pci-hotplug.c
> index 59c4361..78bf2a1 100644
> --- a/arch/powerpc/kernel/pci-hotplug.c
> +++ b/arch/powerpc/kernel/pci-hotplug.c
> @@ -38,20 +38,20 @@ void pcibios_release_device(struct pci_dev *dev)
>   }
>
>   /**
> - * pcibios_remove_pci_devices - remove all devices under this bus
> + * pci_remove_pci_devices - remove all devices under this bus
>    * @bus: the indicated PCI bus
>    *
>    * Remove all of the PCI devices under this bus both from the
>    * linux pci device tree, and from the powerpc EEH address cache.
>    */
> -void pcibios_remove_pci_devices(struct pci_bus *bus)
> +void pci_remove_pci_devices(struct pci_bus *bus)
>   {
>   	struct pci_dev *dev, *tmp;
>   	struct pci_bus *child_bus;
>
>   	/* First go down child busses */
>   	list_for_each_entry(child_bus, &bus->children, node)
> -		pcibios_remove_pci_devices(child_bus);
> +		pci_remove_pci_devices(child_bus);
>
>   	pr_debug("PCI: Removing devices on bus %04x:%02x\n",
>   		 pci_domain_nr(bus),  bus->number);
> @@ -60,11 +60,10 @@ void pcibios_remove_pci_devices(struct pci_bus *bus)
>   		pci_stop_and_remove_bus_device(dev);
>   	}
>   }
> -
> -EXPORT_SYMBOL_GPL(pcibios_remove_pci_devices);
> +EXPORT_SYMBOL_GPL(pci_remove_pci_devices);
>
>   /**
> - * pcibios_add_pci_devices - adds new pci devices to bus
> + * pci_add_pci_devices - adds new pci devices to bus
>    * @bus: the indicated PCI bus
>    *
>    * This routine will find and fixup new pci devices under
> @@ -74,7 +73,7 @@ EXPORT_SYMBOL_GPL(pcibios_remove_pci_devices);
>    * is how this routine differs from other, similar pcibios
>    * routines.)
>    */
> -void pcibios_add_pci_devices(struct pci_bus * bus)
> +void pci_add_pci_devices(struct pci_bus *bus)
>   {
>   	int slotno, mode, pass, max;
>   	struct pci_dev *dev;
> @@ -114,4 +113,4 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
>   	}
>   	pcibios_finish_adding_to_bus(bus);
>   }
> -EXPORT_SYMBOL_GPL(pcibios_add_pci_devices);
> +EXPORT_SYMBOL_GPL(pci_add_pci_devices);
> diff --git a/drivers/pci/hotplug/rpadlpar_core.c b/drivers/pci/hotplug/rpadlpar_core.c
> index b46b57d..730982b 100644
> --- a/drivers/pci/hotplug/rpadlpar_core.c
> +++ b/drivers/pci/hotplug/rpadlpar_core.c
> @@ -380,7 +380,7 @@ int dlpar_remove_pci_slot(char *drc_name, struct device_node *dn)
>   	}
>
>   	/* Remove all devices below slot */
> -	pcibios_remove_pci_devices(bus);
> +	pci_remove_pci_devices(bus);
>
>   	/* Unmap PCI IO space */
>   	if (pcibios_unmap_io_space(bus)) {
> diff --git a/drivers/pci/hotplug/rpaphp_core.c b/drivers/pci/hotplug/rpaphp_core.c
> index 611f605..bba07b3 100644
> --- a/drivers/pci/hotplug/rpaphp_core.c
> +++ b/drivers/pci/hotplug/rpaphp_core.c
> @@ -404,7 +404,7 @@ static int enable_slot(struct hotplug_slot *hotplug_slot)
>
>   	if (state == PRESENT) {
>   		pci_lock_rescan_remove();
> -		pcibios_add_pci_devices(slot->bus);
> +		pci_add_pci_devices(slot->bus);
>   		pci_unlock_rescan_remove();
>   		slot->state = CONFIGURED;
>   	} else if (state == EMPTY) {
> @@ -426,7 +426,7 @@ static int disable_slot(struct hotplug_slot *hotplug_slot)
>   		return -EINVAL;
>
>   	pci_lock_rescan_remove();
> -	pcibios_remove_pci_devices(slot->bus);
> +	pci_remove_pci_devices(slot->bus);
>   	pci_unlock_rescan_remove();
>   	vm_unmap_aliases();
>
> diff --git a/drivers/pci/hotplug/rpaphp_pci.c b/drivers/pci/hotplug/rpaphp_pci.c
> index 7836d69..1099b38 100644
> --- a/drivers/pci/hotplug/rpaphp_pci.c
> +++ b/drivers/pci/hotplug/rpaphp_pci.c
> @@ -116,7 +116,7 @@ int rpaphp_enable_slot(struct slot *slot)
>   		}
>
>   		if (list_empty(&bus->devices))
> -			pcibios_add_pci_devices(bus);
> +			pci_add_pci_devices(bus);
>
>   		if (!list_empty(&bus->devices)) {
>   			info->adapter_status = CONFIGURED;
>


-- 
Alexey

  reply	other threads:[~2016-04-19  5:28 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
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
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 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 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
2016-04-13  7:20   ` 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 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 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: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
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 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 [this message]
2016-04-20  1:23     ` [PATCH v8 24/45] powerpc/pci: Rename pcibios_{add,remove}_pci_devices() 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
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
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
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 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 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 42/45] drivers/of: Rename unflatten_dt_node() Gavin Shan
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 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-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
2016-04-19 10:36   ` Alexey Kardashevskiy
2016-04-20  1:55     ` Alistair Popple
2016-05-02 23:41       ` Gavin Shan
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-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=5715C204.20004@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dja@axtens.net \
    --cc=grant.likely@linaro.org \
    --cc=gwshan@linux.vnet.ibm.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --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;
as well as URLs for NNTP newsgroup(s).