From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> To: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Arnd Bergmann <arnd@arndb.de> Cc: Wenrui Li <wenrui.li@rock-chips.com>, Gabriele Paoloni <gabriele.paoloni@huawei.com>, Catalin Marinas <catalin.marinas@arm.com>, Shawn Lin <shawn.lin@rock-chips.com>, Will Deacon <will.deacon@arm.com>, Michal Simek <michal.simek@xilinx.com>, Thierry Reding <thierry.reding@gmail.com>, Tanmay Inamdar <tinamdar@apm.com>, linux-arch@vger.kernel.org, Joao Pinto <Joao.Pinto@synopsys.com>, Jonathan Corbet <corbet@lwn.net>, Pratyush Anand <pratyush.anand@gmail.com>, Russell King <linux@armlinux.org.uk>, Jon Mason <jonmason@broadcom.com>, Murali Karicheri <m-karicheri2@ti.com>, Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>, Ray Jui <rjui@broadcom.com>, John Garry <john.garry@huawei.com>, Bjorn Helgaas <bhelgaas@google.com>, Mingkai Hu <mingkai.hu@freescale.com>, Thomas Petazzoni <thomas.petazzoni@free-electrons.com>, Jingoo Han <jingoohan1@gmail.com>, linux-kernel@vger.ke Subject: Re: [PATCH 07/20] PCI: implement Devres interface to map PCI config space Date: Tue, 28 Feb 2017 10:43:51 +0000 [thread overview] Message-ID: <20170228104351.GC7439@red-moon> (raw) In-Reply-To: <20170227151436.18698-8-lorenzo.pieralisi@arm.com> Arnd, all, On Mon, Feb 27, 2017 at 03:14:18PM +0000, Lorenzo Pieralisi wrote: > The introduction of the pci_remap_cfgspace() interface allows > PCI host controller drivers to map PCI config space through a > dedicated kernel interface. Current PCI host controller drivers > use the devm_ioremap_* Devres interfaces to map PCI configuration > space regions so in order to update them to the new > pci_remap_cfgspace() mapping interface a new set of Devres interfaces > should be implemented so that PCI host controller drivers can make > use of them. > > Introduce two new functions in the PCI kernel layer and Devres > documentation: > > - devm_pci_remap_cfgspace() > - devm_pci_remap_cfg_resource() > > so that PCI host controller drivers can make use of them to map > PCI configuration space regions. > > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Bjorn Helgaas <bhelgaas@google.com> > --- > Documentation/driver-model/devres.txt | 6 ++- > drivers/pci/pci.c | 82 +++++++++++++++++++++++++++++++++++ > include/linux/pci.h | 5 +++ > 3 files changed, 91 insertions(+), 2 deletions(-) > > diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt > index bf34d5b..e72587f 100644 > --- a/Documentation/driver-model/devres.txt > +++ b/Documentation/driver-model/devres.txt > @@ -342,8 +342,10 @@ PER-CPU MEM > devm_free_percpu() > > PCI > - pcim_enable_device() : after success, all PCI ops become managed > - pcim_pin_device() : keep PCI device enabled after release > + devm_pci_remap_cfgspace() : ioremap PCI configuration space > + devm_pci_remap_cfg_resource() : ioremap PCI configuration space resource > + pcim_enable_device() : after success, all PCI ops become managed > + pcim_pin_device() : keep PCI device enabled after release > > PHY > devm_usb_get_phy() > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index bfb3c6e..1e435c2 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -3401,6 +3401,88 @@ void pci_unmap_iospace(struct resource *res) > #endif > } > > +/** > + * devm_pci_remap_cfgspace - Managed pci_remap_cfgspace() > + * @dev: Generic device to remap IO address for > + * @offset: BUS offset to map > + * @size: Size of map > + * > + * Managed pci_remap_cfgspace(). Map is automatically unmapped on driver > + * detach. > + */ > +void __iomem *devm_pci_remap_cfgspace(struct device *dev, > + resource_size_t offset, > + resource_size_t size) > +{ > + void __iomem **ptr, *addr; > + > + ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); > + if (!ptr) > + return NULL; > + > + addr = pci_remap_cfgspace(offset, size); Provided this series is acceptable as-is, I noticed that I have to add a #define for pci_remap_cfgspace() on all arches that do not include asm-generic/io.h in their asm/io.h, I missed that, please shout if you see an easier way to implement a pci_remap_cfgspace() fall-back to ioremap_nocache() on all arches that do not override it. Thanks ! Lorenzo > + if (addr) { > + *ptr = addr; > + devres_add(dev, ptr); > + } else > + devres_free(ptr); > + > + return addr; > +} > +EXPORT_SYMBOL(devm_pci_remap_cfgspace); > + > +/** > + * devm_pci_remap_cfg_resource - check, request region and ioremap cfg resource > + * @dev: generic device to handle the resource for > + * @res: configuration space resource to be handled > + * > + * Checks that a resource is a valid memory region, requests the memory > + * region and ioremaps with pci_remap_cfgspace() API that ensures the > + * proper PCI configuration space memory attributes are guaranteed. > + * > + * All operations are managed and will be undone on driver detach. > + * > + * Returns a pointer to the remapped memory or an ERR_PTR() encoded error code > + * on failure. Usage example: > + * > + * res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + * base = devm_pci_remap_cfg_resource(&pdev->dev, res); > + * if (IS_ERR(base)) > + * return PTR_ERR(base); > + */ > +void __iomem *devm_pci_remap_cfg_resource(struct device *dev, > + struct resource *res) > +{ > + resource_size_t size; > + const char *name; > + void __iomem *dest_ptr; > + > + BUG_ON(!dev); > + > + if (!res || resource_type(res) != IORESOURCE_MEM) { > + dev_err(dev, "invalid resource\n"); > + return IOMEM_ERR_PTR(-EINVAL); > + } > + > + size = resource_size(res); > + name = res->name ?: dev_name(dev); > + > + if (!devm_request_mem_region(dev, res->start, size, name)) { > + dev_err(dev, "can't request region for resource %pR\n", res); > + return IOMEM_ERR_PTR(-EBUSY); > + } > + > + dest_ptr = devm_pci_remap_cfgspace(dev, res->start, size); > + if (!dest_ptr) { > + dev_err(dev, "ioremap failed for resource %pR\n", res); > + devm_release_mem_region(dev, res->start, size); > + dest_ptr = IOMEM_ERR_PTR(-ENOMEM); > + } > + > + return dest_ptr; > +} > +EXPORT_SYMBOL(devm_pci_remap_cfg_resource); > + > static void __pci_set_master(struct pci_dev *dev, bool enable) > { > u16 old_cmd, cmd; > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 282ed32..5a3588b 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -1199,6 +1199,11 @@ unsigned long pci_address_to_pio(phys_addr_t addr); > phys_addr_t pci_pio_to_address(unsigned long pio); > int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); > void pci_unmap_iospace(struct resource *res); > +void __iomem *devm_pci_remap_cfgspace(struct device *dev, > + resource_size_t offset, > + resource_size_t size); > +void __iomem *devm_pci_remap_cfg_resource(struct device *dev, > + struct resource *res); > > static inline pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar) > { > -- > 2.10.0 >
WARNING: multiple messages have this Message-ID (diff)
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> To: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Arnd Bergmann <arnd@arndb.de> Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>, Bjorn Helgaas <bhelgaas@google.com>, Will Deacon <will.deacon@arm.com>, Catalin Marinas <catalin.marinas@arm.com>, Russell King <linux@armlinux.org.uk>, Pratyush Anand <pratyush.anand@gmail.com>, Jingoo Han <jingoohan1@gmail.com>, Mingkai Hu <mingkai.hu@freescale.com>, John Garry <john.garry@huawei.com>, Tanmay Inamdar <tinamdar@apm.com>, Murali Karicheri <m-karicheri2@ti.com>, Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>, Ray Jui <rjui@broadcom.com>, Wenrui Li <wenrui.li@rock-chips.com>, Shawn Lin <shawn.lin@rock-chips.com>, Minghuan Lian <minghuan.Lian@freescale.com>, Jon Mason <jonmason@broadcom.com>, Gabriele Paoloni <gabriele.paoloni@huawei.com>, Thomas Petazzoni <thomas.petazzoni@free-electrons.com>, Joao Pinto <Joao.Pinto@synopsys.com>, Thierry Reding <thierry.reding@gmail.com>, Michal Simek <michal.simek@xilinx.com>, Stanimir Varbanov <svarbanov@mm-sol.com>, Zhou Wang <wangzhou1@hisilicon.com>, Roy Zang <tie-fei.zang@freescale.com> Subject: Re: [PATCH 07/20] PCI: implement Devres interface to map PCI config space Date: Tue, 28 Feb 2017 10:43:51 +0000 [thread overview] Message-ID: <20170228104351.GC7439@red-moon> (raw) Message-ID: <20170228104351.q1TFEfr81uyPjTI5p3HgHT0CxBkq4YkLEF1SFFx51qY@z> (raw) In-Reply-To: <20170227151436.18698-8-lorenzo.pieralisi@arm.com> Arnd, all, On Mon, Feb 27, 2017 at 03:14:18PM +0000, Lorenzo Pieralisi wrote: > The introduction of the pci_remap_cfgspace() interface allows > PCI host controller drivers to map PCI config space through a > dedicated kernel interface. Current PCI host controller drivers > use the devm_ioremap_* Devres interfaces to map PCI configuration > space regions so in order to update them to the new > pci_remap_cfgspace() mapping interface a new set of Devres interfaces > should be implemented so that PCI host controller drivers can make > use of them. > > Introduce two new functions in the PCI kernel layer and Devres > documentation: > > - devm_pci_remap_cfgspace() > - devm_pci_remap_cfg_resource() > > so that PCI host controller drivers can make use of them to map > PCI configuration space regions. > > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> > Cc: Jonathan Corbet <corbet@lwn.net> > Cc: Bjorn Helgaas <bhelgaas@google.com> > --- > Documentation/driver-model/devres.txt | 6 ++- > drivers/pci/pci.c | 82 +++++++++++++++++++++++++++++++++++ > include/linux/pci.h | 5 +++ > 3 files changed, 91 insertions(+), 2 deletions(-) > > diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt > index bf34d5b..e72587f 100644 > --- a/Documentation/driver-model/devres.txt > +++ b/Documentation/driver-model/devres.txt > @@ -342,8 +342,10 @@ PER-CPU MEM > devm_free_percpu() > > PCI > - pcim_enable_device() : after success, all PCI ops become managed > - pcim_pin_device() : keep PCI device enabled after release > + devm_pci_remap_cfgspace() : ioremap PCI configuration space > + devm_pci_remap_cfg_resource() : ioremap PCI configuration space resource > + pcim_enable_device() : after success, all PCI ops become managed > + pcim_pin_device() : keep PCI device enabled after release > > PHY > devm_usb_get_phy() > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index bfb3c6e..1e435c2 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -3401,6 +3401,88 @@ void pci_unmap_iospace(struct resource *res) > #endif > } > > +/** > + * devm_pci_remap_cfgspace - Managed pci_remap_cfgspace() > + * @dev: Generic device to remap IO address for > + * @offset: BUS offset to map > + * @size: Size of map > + * > + * Managed pci_remap_cfgspace(). Map is automatically unmapped on driver > + * detach. > + */ > +void __iomem *devm_pci_remap_cfgspace(struct device *dev, > + resource_size_t offset, > + resource_size_t size) > +{ > + void __iomem **ptr, *addr; > + > + ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); > + if (!ptr) > + return NULL; > + > + addr = pci_remap_cfgspace(offset, size); Provided this series is acceptable as-is, I noticed that I have to add a #define for pci_remap_cfgspace() on all arches that do not include asm-generic/io.h in their asm/io.h, I missed that, please shout if you see an easier way to implement a pci_remap_cfgspace() fall-back to ioremap_nocache() on all arches that do not override it. Thanks ! Lorenzo > + if (addr) { > + *ptr = addr; > + devres_add(dev, ptr); > + } else > + devres_free(ptr); > + > + return addr; > +} > +EXPORT_SYMBOL(devm_pci_remap_cfgspace); > + > +/** > + * devm_pci_remap_cfg_resource - check, request region and ioremap cfg resource > + * @dev: generic device to handle the resource for > + * @res: configuration space resource to be handled > + * > + * Checks that a resource is a valid memory region, requests the memory > + * region and ioremaps with pci_remap_cfgspace() API that ensures the > + * proper PCI configuration space memory attributes are guaranteed. > + * > + * All operations are managed and will be undone on driver detach. > + * > + * Returns a pointer to the remapped memory or an ERR_PTR() encoded error code > + * on failure. Usage example: > + * > + * res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + * base = devm_pci_remap_cfg_resource(&pdev->dev, res); > + * if (IS_ERR(base)) > + * return PTR_ERR(base); > + */ > +void __iomem *devm_pci_remap_cfg_resource(struct device *dev, > + struct resource *res) > +{ > + resource_size_t size; > + const char *name; > + void __iomem *dest_ptr; > + > + BUG_ON(!dev); > + > + if (!res || resource_type(res) != IORESOURCE_MEM) { > + dev_err(dev, "invalid resource\n"); > + return IOMEM_ERR_PTR(-EINVAL); > + } > + > + size = resource_size(res); > + name = res->name ?: dev_name(dev); > + > + if (!devm_request_mem_region(dev, res->start, size, name)) { > + dev_err(dev, "can't request region for resource %pR\n", res); > + return IOMEM_ERR_PTR(-EBUSY); > + } > + > + dest_ptr = devm_pci_remap_cfgspace(dev, res->start, size); > + if (!dest_ptr) { > + dev_err(dev, "ioremap failed for resource %pR\n", res); > + devm_release_mem_region(dev, res->start, size); > + dest_ptr = IOMEM_ERR_PTR(-ENOMEM); > + } > + > + return dest_ptr; > +} > +EXPORT_SYMBOL(devm_pci_remap_cfg_resource); > + > static void __pci_set_master(struct pci_dev *dev, bool enable) > { > u16 old_cmd, cmd; > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 282ed32..5a3588b 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -1199,6 +1199,11 @@ unsigned long pci_address_to_pio(phys_addr_t addr); > phys_addr_t pci_pio_to_address(unsigned long pio); > int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); > void pci_unmap_iospace(struct resource *res); > +void __iomem *devm_pci_remap_cfgspace(struct device *dev, > + resource_size_t offset, > + resource_size_t size); > +void __iomem *devm_pci_remap_cfg_resource(struct device *dev, > + struct resource *res); > > static inline pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar) > { > -- > 2.10.0 >
next prev parent reply other threads:[~2017-02-28 10:43 UTC|newest] Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-27 15:14 [PATCH 00/20] PCI: fix config and I/O Address space memory mappings Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 01/20] PCI: remove __weak tag from pci_remap_iospace() Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-01 16:15 ` Arnd Bergmann 2017-03-01 16:15 ` Arnd Bergmann 2017-02-27 15:14 ` [PATCH 02/20] PCI: fix pci_remap_iospace() remap attribute Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-16 21:48 ` Bjorn Helgaas 2017-03-16 21:48 ` Bjorn Helgaas 2017-03-17 0:33 ` Luis R. Rodriguez 2017-03-17 0:33 ` Luis R. Rodriguez 2017-03-17 10:43 ` Liviu Dudau 2017-03-17 10:43 ` Liviu Dudau 2017-03-17 16:26 ` Luis R. Rodriguez 2017-03-17 16:26 ` Luis R. Rodriguez 2017-03-20 16:19 ` Lorenzo Pieralisi 2017-03-20 16:19 ` Lorenzo Pieralisi 2017-03-20 16:06 ` Bjorn Helgaas 2017-03-20 16:06 ` Bjorn Helgaas 2017-03-20 16:26 ` Lorenzo Pieralisi 2017-03-20 16:26 ` Lorenzo Pieralisi 2017-03-20 16:38 ` Bjorn Helgaas 2017-03-20 16:38 ` Bjorn Helgaas 2017-02-27 15:14 ` [PATCH 03/20] asm-generic/io.h: add PCI config space remap interface Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-16 21:12 ` Bjorn Helgaas 2017-03-16 21:12 ` Bjorn Helgaas 2017-03-17 0:08 ` Luis R. Rodriguez 2017-03-17 0:08 ` Luis R. Rodriguez 2017-03-20 10:22 ` John Garry 2017-03-20 10:22 ` John Garry 2017-03-20 16:27 ` Bjorn Helgaas 2017-03-20 16:27 ` Bjorn Helgaas 2017-03-20 18:45 ` Lorenzo Pieralisi 2017-03-20 18:45 ` Lorenzo Pieralisi 2017-03-22 15:04 ` Lorenzo Pieralisi 2017-03-22 15:04 ` Lorenzo Pieralisi 2017-03-22 15:15 ` Arnd Bergmann 2017-03-22 15:15 ` Arnd Bergmann 2017-03-22 16:29 ` Bjorn Helgaas 2017-03-22 16:29 ` Bjorn Helgaas 2017-02-27 15:14 ` [PATCH 04/20] ARM64: implement pci_remap_cfgspace() interface Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 05/20] ARM: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-20 16:43 ` Russell King - ARM Linux 2017-03-20 16:43 ` Russell King - ARM Linux 2017-03-21 15:26 ` Lorenzo Pieralisi 2017-03-21 15:26 ` Lorenzo Pieralisi 2017-03-21 16:53 ` Russell King - ARM Linux 2017-03-21 16:53 ` Russell King - ARM Linux 2017-02-27 15:14 ` [PATCH 06/20] PCI: ECAM: use pci_remap_cfgspace() to map config region Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 07/20] PCI: implement Devres interface to map PCI config space Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-28 10:43 ` Lorenzo Pieralisi [this message] 2017-02-28 10:43 ` Lorenzo Pieralisi 2017-03-01 23:54 ` Andy Shevchenko 2017-03-01 23:54 ` Andy Shevchenko 2017-03-02 12:05 ` Lorenzo Pieralisi 2017-03-02 12:05 ` Lorenzo Pieralisi 2017-03-02 12:50 ` Andy Shevchenko 2017-03-02 12:50 ` Andy Shevchenko 2017-03-02 19:24 ` Tejun Heo 2017-03-02 19:24 ` Tejun Heo 2017-03-02 20:08 ` Thierry Reding 2017-03-02 20:08 ` Thierry Reding 2017-02-27 15:14 ` [PATCH 08/20] PCI: xilinx: update PCI config space remap function Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 09/20] PCI: xilinx-nwl: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 10/20] PCI: spear13xx: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 11/20] PCI: rockchip: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 12/20] PCI: qcom: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 13/20] PCI: iproc-platform: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 21:21 ` Ray Jui 2017-02-27 21:21 ` Ray Jui 2017-02-28 10:54 ` Lorenzo Pieralisi 2017-02-28 10:54 ` Lorenzo Pieralisi 2017-02-28 17:42 ` Ray Jui 2017-02-28 17:42 ` Ray Jui 2017-02-27 15:14 ` [PATCH 14/20] PCI: hisi: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-02 10:56 ` Gabriele Paoloni 2017-03-02 10:56 ` Gabriele Paoloni 2017-03-02 11:49 ` Lorenzo Pieralisi 2017-03-02 11:49 ` Lorenzo Pieralisi 2017-03-02 11:53 ` Gabriele Paoloni 2017-03-02 11:53 ` Gabriele Paoloni 2017-02-27 15:14 ` [PATCH 15/20] PCI: designware: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 16/20] PCI: armada8k: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 17/20] PCI: xgene: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 18/20] PCI: tegra: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 19/20] PCI: layerscape: " Lorenzo Pieralisi 2017-02-27 15:14 ` [PATCH 20/20] PCI: keystone-dw: " Lorenzo Pieralisi 2017-02-27 15:14 ` Lorenzo Pieralisi 2017-03-01 16:18 ` [PATCH 00/20] PCI: fix config and I/O Address space memory mappings Arnd Bergmann 2017-03-01 16:18 ` Arnd Bergmann 2017-03-02 18:00 ` Lorenzo Pieralisi 2017-03-02 18:00 ` Lorenzo Pieralisi
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=20170228104351.GC7439@red-moon \ --to=lorenzo.pieralisi@arm.com \ --cc=Joao.Pinto@synopsys.com \ --cc=arnd@arndb.de \ --cc=bharat.kumar.gogada@xilinx.com \ --cc=bhelgaas@google.com \ --cc=catalin.marinas@arm.com \ --cc=corbet@lwn.net \ --cc=gabriele.paoloni@huawei.com \ --cc=jingoohan1@gmail.com \ --cc=john.garry@huawei.com \ --cc=jonmason@broadcom.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.ke \ --cc=linux-pci@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=m-karicheri2@ti.com \ --cc=michal.simek@xilinx.com \ --cc=mingkai.hu@freescale.com \ --cc=pratyush.anand@gmail.com \ --cc=rjui@broadcom.com \ --cc=shawn.lin@rock-chips.com \ --cc=thierry.reding@gmail.com \ --cc=thomas.petazzoni@free-electrons.com \ --cc=tinamdar@apm.com \ --cc=wenrui.li@rock-chips.com \ --cc=will.deacon@arm.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: linkBe 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).