From: Boris Brezillon <boris.brezillon@bootlin.com> To: Janusz Krzysztofik <jmkrzyszt@gmail.com> Cc: "Linus Walleij" <linus.walleij@linaro.org>, "Jonathan Corbet" <corbet@lwn.net>, "Miquèl Raynal" <miquel.raynal@bootlin.com>, "Richard Weinberger" <richard@nod.at>, "David Woodhouse" <dwmw2@infradead.org>, "Brian Norris" <computersforpeace@gmail.com>, "Mark Vasut" <marek.vasut@gmail.com>, "ext Tony Lindgren" <tony@atomide.com>, "Aaro Koskinen" <aaro.koskinen@iki.fi>, "Linux ARM" <linux-arm-kernel@lists.infradead.org>, Linux-OMAP <linux-omap@vger.kernel.org>, linux-mtd@lists.infradead.org, linux-doc@vger.kernel.org, "open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [RFC PATCH v2 12/12] gpiolib: Add fast processing path to bitmap API functions Date: Tue, 7 Aug 2018 19:47:22 +0200 Message-ID: <20180807194722.5aabb6da@bbrezillon> (raw) In-Reply-To: <11711552.OvaP4pOjBH@z50> Hi Janusz, On Tue, 07 Aug 2018 19:29:53 +0200 Janusz Krzysztofik <jmkrzyszt@gmail.com> wrote: > On Tuesday, August 7, 2018 1:43:56 AM CEST Linus Walleij wrote: > > On Tue, Aug 7, 2018 at 12:29 AM Janusz Krzysztofik <jmkrzyszt@gmail.com> > wrote: > > > > Hi Janusz! > > > > > Certain GPIO descriptor arrays returned by gpio_get_array() may contain > > > information on a single GPIO chip driving array member pins in hardware > > > order. In such cases, bitmaps of values can be passed directly to the > > > chip callback functions without wasting time on iterations. > > > > > > Add respective code to gpiod_get/set_array_bitmap_complex() functions. > > > > > > Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> > > > > I think it would be disappointing to leave all the users of the old > > array API without the performance improvement. I think we need to > > deal with this in a way such that everyone can benefit from it. I agree with Linus on that one. When I initially proposed the gpio bitbanging API I had something more advanced in mind where the GPIO framework would be responsible for toggling the GPIOs on its own when it's given an array of bytes to transmit (this way you avoid going back and forth between the GPIO user and the GPIO framework). But this approach would clearly be more invasive than what you propose here (turning the int array into a bitmap and optimizing). So, if we go for the "int array -> bitmap" approach I think all users should be converted so that we end up with a single API. > > There are a few issues to be resolved: > > 1) array size limited by bitmap size: > - are we ready to limit array size to a single bitmap for all users? > - if not, how can we pass a bitmap of an arbitrary size? > - if as an array of bitmaps, is that still clear enough and easy to use? > - other ideas? What we call a bitmap is an array of unsigned longs each entry containing NBITS_PER_LONG bits, so yes, it's an arbitrary size (see the bitmap API here [1]). > > 2) arbitrary array support: > - are we ready to drop that? > - if not, do we agree to require all users to pack their arbitrary arrays > inside the gpio_descs structure? I could only find one user, and it's the core itself (for the ioctl), so that shouldn't be too hard to convert all users. Did you find more. > > Maybe more. > > > Also it is kludgy if users (consumers) would need to handle the case > > where all lines are on the same chip separately, through the bitmap > > API. > > Not true as long as array size fits (arbitrary arrays can be packed by users), > but I see your point. I think the API should be the same and the framework should decide to take the fast path if all gpios belong to the same chip (which AFAICT is already the case, except it's putting the result in an int array instead of a bitmap) > > > What we need is an API that: > > > > - All drivers handling arrays can use (including current users). > > > > - Enables speed-up if the lines are all on the same chip/register. > > > > - Doesn't require consumers to know if they are all on the same > > chip or not. > > > > This means a deep API with a small surface. > > > > How do we achieve this the best way? > > I think widely accepted solutions to those two issues I've mentioned above can > give the answer. I'd still like to see how far we are from the initial perfs (the one poking the GPIO regs directly) with this approach, and what's the improvement compared to the int array solution we already have in place. Regards, Boris [1]https://elixir.bootlin.com/linux/v4.18-rc8/source/include/linux/bitmap.h
next prev parent reply index Thread overview: 206+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-18 23:57 [RFC PATCH 0/8] mtd: rawnand: ams-delta: Use gpio-omap accessors for data I/O Janusz Krzysztofik 2018-07-18 23:57 ` [RFC PATCH 1/8] mtd: rawnand: ams-delta: Use private structure Janusz Krzysztofik 2018-07-19 6:17 ` Boris Brezillon 2018-07-20 17:57 ` Janusz Krzysztofik 2018-07-18 23:57 ` [RFC PATCH 2/8] mtd: rawnand: ams-delta: Write protect device during probe Janusz Krzysztofik 2018-07-19 6:22 ` Boris Brezillon 2018-07-20 18:02 ` Janusz Krzysztofik 2018-07-18 23:57 ` [RFC PATCH 3/8] mtd: rawnand: ams-delta: Set port direction once per transfer Janusz Krzysztofik 2018-07-19 6:23 ` Boris Brezillon 2018-07-20 18:12 ` Janusz Krzysztofik 2018-07-20 19:29 ` Boris Brezillon 2018-07-18 23:57 ` [RFC PATCH 4/8] mtd: rawnand: ams-delta: Optimize pointer resolution on read/write Janusz Krzysztofik 2018-07-19 6:25 ` Boris Brezillon 2018-07-20 18:14 ` Janusz Krzysztofik 2018-07-20 19:29 ` Boris Brezillon 2018-07-18 23:57 ` [RFC PATCH 5/8] mtd: rawnand: ams-delta: Request data port GPIO resource Janusz Krzysztofik 2018-07-19 6:28 ` Boris Brezillon 2018-07-18 23:57 ` [RFC PATCH 6/8] gpio: omap: Add get/set_multiple() callbacks Janusz Krzysztofik 2018-07-29 20:29 ` Linus Walleij 2018-08-03 1:52 ` Grygorii Strashko 2018-08-03 16:47 ` Linus Walleij 2018-07-18 23:57 ` [RFC PATCH 7/8] mtd: rawnand: ams-delta: Check sanity of data GPIO resource Janusz Krzysztofik 2018-07-19 6:44 ` Boris Brezillon 2018-07-29 20:36 ` Linus Walleij 2018-07-29 21:16 ` Boris Brezillon 2018-07-29 20:33 ` Linus Walleij 2018-07-18 23:57 ` [RFC PATCH 8/8] mtd: rawnand: ams-delta: Use GPIO callbacks for data I/O Janusz Krzysztofik 2018-07-19 6:47 ` Boris Brezillon 2018-07-20 18:38 ` Janusz Krzysztofik 2018-07-20 19:48 ` Boris Brezillon 2018-07-19 6:15 ` [RFC PATCH 0/8] mtd: rawnand: ams-delta: Use gpio-omap accessors " Boris Brezillon 2018-07-20 17:55 ` Janusz Krzysztofik 2018-07-20 19:25 ` Boris Brezillon 2018-10-03 12:00 ` [RFC PATCH] mtd: rawnand: ams-delta: use ->exec_op() Janusz Krzysztofik 2018-10-03 12:30 ` Boris Brezillon 2018-10-03 13:55 ` Janusz Krzysztofik 2018-10-03 14:06 ` Boris Brezillon 2018-10-04 13:52 ` Janusz Krzysztofik 2018-10-04 13:59 ` Boris Brezillon 2018-10-04 14:11 ` Janusz Krzysztofik 2018-10-04 14:22 ` Boris Brezillon 2018-10-12 20:41 ` [PATCH v2 1/2] mtd: rawnand: Provide helper for polling GPIO R/B pin Janusz Krzysztofik 2018-10-12 20:41 ` [PATCH v2 2/2] mtd: rawnand: ams-delta: Use ->exec_op() Janusz Krzysztofik 2018-10-13 6:05 ` Boris Brezillon 2018-10-13 5:55 ` [PATCH v2 1/2] mtd: rawnand: Provide helper for polling GPIO R/B pin Boris Brezillon 2018-10-15 19:41 ` [PATCH v3 1/3] " Janusz Krzysztofik 2018-10-15 19:41 ` [PATCH v3 2/3] mtd: rawnand: ams-delta: Stop using legacy .IOADDR_R/W Janusz Krzysztofik 2018-10-15 19:41 ` [PATCH v3 3/3] mtd: rawnand: ams-delta: Convert the driver to ->exec_op() Janusz Krzysztofik 2018-11-11 20:53 ` [PATCH v3 1/3] mtd: rawnand: Provide helper for polling GPIO R/B pin Miquel Raynal 2018-08-06 22:29 ` [RFC PATCH v2] mtd: rawnand: ams-delta: Use GPIO API for data I/O Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 01/12] mtd: rawnand: ams-delta: Assign mtd->dev.parent, not mtd->owner Janusz Krzysztofik 2018-08-06 23:54 ` Marek Vasut 2018-08-07 21:55 ` Janusz Krzysztofik 2018-08-07 16:57 ` Boris Brezillon 2018-08-06 22:29 ` [RFC PATCH v2 02/12] mtd: rawnand: ams-delta: Use private structure Janusz Krzysztofik 2018-08-07 16:59 ` Boris Brezillon 2018-08-06 22:29 ` [RFC PATCH v2 03/12] ARM: OMAP1: ams-delta: Provide GPIO lookup table for NAND data port Janusz Krzysztofik 2018-08-07 16:59 ` Boris Brezillon 2018-08-10 10:10 ` Linus Walleij 2018-08-06 22:29 ` [RFC PATCH v2 04/12] mtd: rawnand: ams-delta: request data port GPIO resource Janusz Krzysztofik 2018-08-07 17:00 ` Boris Brezillon 2018-08-10 10:11 ` Linus Walleij 2018-08-06 22:29 ` [RFC PATCH v2 05/12] mtd: rawnand: ams-delta: use GPIO API for data read/write Janusz Krzysztofik 2018-08-06 23:57 ` Marek Vasut 2018-08-07 17:06 ` Boris Brezillon 2018-08-07 17:11 ` Janusz Krzysztofik 2018-08-10 10:25 ` Linus Walleij 2018-08-06 22:29 ` [RFC PATCH v2 06/12] ARM: OMAP1: ams-delta: drop obsolete NAND resources Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 07/12] mtd: rawnand: ams-delta: Set port direction once per transfer Janusz Krzysztofik 2018-08-07 18:57 ` Boris Brezillon 2018-08-08 16:55 ` Janusz Krzysztofik 2018-08-08 17:42 ` Miquel Raynal 2018-08-06 22:29 ` [RFC PATCH v2 08/12] mtd: rawnand: ams-delta: Simplify pointer resolution on read/write Janusz Krzysztofik 2018-08-07 17:02 ` Boris Brezillon 2018-08-07 17:15 ` Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 09/12] gpiolib: Identify GPIO descriptor arrays with direct mapping Janusz Krzysztofik 2018-08-06 23:29 ` Linus Walleij 2018-08-07 16:50 ` Janusz Krzysztofik 2018-08-07 17:10 ` Boris Brezillon 2018-08-07 17:14 ` Boris Brezillon 2018-08-07 17:19 ` Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 10/12] gpiolib: Introduce bitmap get/set array API extension Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 11/12] mtd: rawnand: ams-delta: Use GPIO API bitmap extension Janusz Krzysztofik 2018-08-06 22:29 ` [RFC PATCH v2 12/12] gpiolib: Add fast processing path to bitmap API functions Janusz Krzysztofik 2018-08-06 23:43 ` Linus Walleij 2018-08-07 17:29 ` Janusz Krzysztofik 2018-08-07 17:47 ` Boris Brezillon [this message] 2018-08-10 10:55 ` Linus Walleij 2018-08-13 22:34 ` [PATCH v3 0/7] mtd: rawnand: ams-delta: Use GPIO API for data I/O Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 1/7] mtd: rawnand: ams-delta: show parent device in sysfs Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 2/7] mtd: rawnand: ams-delta: Use private structure Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 3/7] ARM: OMAP1: ams-delta: Provide GPIO lookup table for NAND data port Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 4/7] mtd: rawnand: ams-delta: request data port GPIO resource Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 5/7] mtd: rawnand: ams-delta: Set port direction when needed Janusz Krzysztofik 2018-08-16 7:30 ` Boris Brezillon 2018-08-13 22:34 ` [PATCH v3 6/7] mtd: rawnand: ams-delta: Simplify pointer resolution on read/write Janusz Krzysztofik 2018-08-13 22:34 ` [PATCH v3 7/7] mtd: rawnand: ams-delta: use GPIO API for data I/O Janusz Krzysztofik 2018-08-16 7:39 ` Boris Brezillon 2018-08-20 21:39 ` [PATCH v4 0/3] mtd: rawnand: ams-delta: Cleanups and optimizations Janusz Krzysztofik 2018-08-20 21:39 ` [PATCH v4 1/3] mtd: rawnand: ams-delta: show parent device in sysfs Janusz Krzysztofik 2018-08-20 21:39 ` [PATCH v4 2/3] mtd: rawnand: ams-delta: Use private structure Janusz Krzysztofik 2018-08-20 21:39 ` [PATCH v4 3/3] mtd: rawnand: ams-delta: Set port direction when needed Janusz Krzysztofik 2018-08-24 12:57 ` Boris Brezillon 2018-09-05 6:47 ` [PATCH v4 0/3] mtd: rawnand: ams-delta: Cleanups and optimizations Miquel Raynal 2018-09-05 20:53 ` Janusz Krzysztofik 2018-09-07 16:45 ` Tony Lindgren 2018-09-19 8:46 ` Miquel Raynal 2018-09-19 22:52 ` [PATCH v5 " Janusz Krzysztofik 2018-09-19 22:52 ` [PATCH v5 1/3] mtd: rawnand: ams-delta: show parent device in sysfs Janusz Krzysztofik 2018-09-19 22:52 ` [PATCH v5 2/3] mtd: rawnand: ams-delta: Use private structure Janusz Krzysztofik 2018-09-19 22:52 ` [PATCH v5 3/3] mtd: rawnand: ams-delta: Set port direction when needed Janusz Krzysztofik 2018-09-23 11:35 ` [PATCH v5 0/3] mtd: rawnand: ams-delta: Cleanups and optimizations Miquel Raynal 2018-08-20 23:43 ` [RFC RFT PATCH 0/4] gpiolib: speed up GPIO array processing Janusz Krzysztofik 2018-08-20 23:43 ` [RFC RFT PATCH v4 1/4] gpiolib: Pass bitmaps, not integer arrays, to get/set array Janusz Krzysztofik 2018-08-21 6:49 ` Peter Rosin 2018-08-21 6:52 ` Peter Rosin 2018-08-29 12:03 ` Miguel Ojeda 2018-08-29 18:01 ` Janusz Krzysztofik 2018-08-20 23:43 ` [RFC RFT PATCH v4 2/4] gpiolib: Identify arrays matching GPIO hardware Janusz Krzysztofik 2018-08-20 23:43 ` [RFC RFT PATCH v4 3/4] gpiolib: Pass array info to get/set array functions Janusz Krzysztofik 2018-08-20 23:43 ` [RFC RFT PATCH v4 4/4] gpiolib: Implement fast processing path in get/set array Janusz Krzysztofik 2018-08-29 9:06 ` [RFC RFT PATCH 0/4] gpiolib: speed up GPIO array processing Linus Walleij 2018-08-29 18:16 ` Janusz Krzysztofik 2018-08-29 10:19 ` Ulf Hansson 2018-08-29 20:48 ` [PATH v5 " Janusz Krzysztofik 2018-08-29 20:48 ` [PATCH v5 1/4] gpiolib: Pass bitmaps, not integer arrays, to get/set array Janusz Krzysztofik 2018-08-30 4:30 ` Peter Rosin 2018-08-30 7:40 ` Geert Uytterhoeven 2018-08-30 11:10 ` Miguel Ojeda 2018-08-30 15:35 ` David Laight 2018-09-02 10:19 ` Janusz Krzysztofik 2018-08-31 9:14 ` Linus Walleij 2018-08-29 20:48 ` [PATCH v5 2/4] gpiolib: Identify arrays matching GPIO hardware Janusz Krzysztofik 2018-08-29 20:48 ` [PATCH v5 3/4] gpiolib: Pass array info to get/set array functions Janusz Krzysztofik 2018-08-29 20:49 ` [PATCH v5 4/4] gpiolib: Implement fast processing path in get/set array Janusz Krzysztofik 2018-08-31 22:56 ` [PATH v6 0/4] gpiolib: speed up GPIO array processing Janusz Krzysztofik 2018-08-31 22:56 ` [PATCH v6 1/4] gpiolib: Pass bitmaps, not integer arrays, to get/set array Janusz Krzysztofik 2018-09-01 0:23 ` Peter Rosin 2018-09-04 15:28 ` kbuild test robot 2018-09-04 15:28 ` kbuild test robot 2018-08-31 22:56 ` [PATCH v6 2/4] gpiolib: Identify arrays matching GPIO hardware Janusz Krzysztofik 2018-08-31 22:56 ` [PATCH v6 3/4] gpiolib: Pass array info to get/set array functions Janusz Krzysztofik 2018-09-04 15:27 ` kbuild test robot 2018-08-31 22:56 ` [PATCH v6 4/4] gpiolib: Implement fast processing path in get/set array Janusz Krzysztofik 2018-09-02 12:01 ` [PATCH v7 0/4] gpiolib: speed up GPIO array processing Janusz Krzysztofik 2018-09-02 12:01 ` [PATCH v7 1/4] gpiolib: Pass bitmaps, not integer arrays, to get/set array Janusz Krzysztofik 2018-09-02 13:21 ` Lukas Wunner 2018-09-03 4:31 ` Matthew Wilcox 2018-09-03 14:24 ` Geert Uytterhoeven 2018-09-03 15:07 ` Geert Uytterhoeven 2018-09-04 15:29 ` kbuild test robot 2018-09-05 6:46 ` kbuild test robot 2018-09-02 12:01 ` [PATCH v7 2/4] gpiolib: Identify arrays matching GPIO hardware Janusz Krzysztofik 2018-09-02 12:01 ` [PATCH v7 3/4] gpiolib: Pass array info to get/set array functions Janusz Krzysztofik 2018-09-03 14:21 ` Geert Uytterhoeven 2018-09-04 15:23 ` kbuild test robot 2018-09-05 7:11 ` kbuild test robot 2018-09-02 12:01 ` [PATCH v7 4/4] gpiolib: Implement fast processing path in get/set array Janusz Krzysztofik [not found] ` <CGME20180920101151eucas1p221f5a1715b8556bb9d99bf08fe09ce6f@eucas1p2.samsung.com> 2018-09-20 10:11 ` Marek Szyprowski 2018-09-20 15:48 ` Janusz Krzysztofik 2018-09-20 16:21 ` Janusz Krzysztofik 2018-09-21 8:18 ` Marek Szyprowski 2018-09-21 10:51 ` Janusz Krzysztofik 2018-09-21 11:26 ` Janusz Krzysztofik 2018-09-21 14:14 ` Marek Szyprowski 2018-09-23 10:43 ` Janusz Krzysztofik 2018-09-23 23:53 ` [PATCH 0/2] gpiolib: Fix issues introduced by fast bitmap processing path Janusz Krzysztofik 2018-09-23 23:53 ` [PATCH 1/2] gpiolib: Fix missing updates of bitmap index Janusz Krzysztofik 2018-09-24 8:11 ` Linus Walleij 2018-09-29 12:20 ` [PATCH] gpiolib: Fix incorrect use of find_next_zero_bit() Janusz Krzysztofik 2018-10-01 6:46 ` Marek Szyprowski 2018-10-01 9:37 ` Linus Walleij 2018-09-23 23:53 ` [PATCH 2/2] gpiolib: Fix array members of same chip processed separately Janusz Krzysztofik 2018-09-24 8:13 ` Linus Walleij 2018-09-24 9:43 ` [PATCH 0/2] gpiolib: Fix issues introduced by fast bitmap processing path Marek Szyprowski 2018-09-24 11:08 ` Janusz Krzysztofik 2018-09-24 11:38 ` Marek Szyprowski 2018-09-24 14:18 ` Janusz Krzysztofik 2018-09-25 19:24 ` [PATCH] mmc: pwrseq_simple: Fix incorrect handling of GPIO bitmap Janusz Krzysztofik 2018-09-26 7:50 ` Linus Walleij 2018-09-26 8:14 ` Marek Szyprowski [not found] ` <7a4906d9-ffb1-f2af-07e7-d5815dcd0d8c@samsung.com> 2018-09-26 8:27 ` Marek Szyprowski 2018-10-12 19:09 ` [RFT PATCH] " Janusz Krzysztofik 2018-10-15 8:32 ` Marek Szyprowski 2018-10-15 10:29 ` Ulf Hansson 2018-10-15 14:27 ` Linus Walleij 2018-09-20 18:05 ` [PATCH v7 4/4] gpiolib: Implement fast processing path in get/set array Dan Carpenter 2018-09-20 15:49 ` Linus Walleij 2018-09-05 21:50 ` [PATCH v8 0/4] gpiolib: speed up GPIO array processing Janusz Krzysztofik 2018-09-05 21:50 ` [PATCH v8 1/4] gpiolib: Pass bitmaps, not integer arrays, to get/set array Janusz Krzysztofik 2018-09-05 21:50 ` [PATCH v8 2/4] gpiolib: Identify arrays matching GPIO hardware Janusz Krzysztofik 2018-09-05 21:50 ` [PATCH v8 3/4] gpiolib: Pass array info to get/set array functions Janusz Krzysztofik 2018-09-05 21:50 ` [PATCH v8 4/4] gpiolib: Implement fast processing path in get/set array Janusz Krzysztofik 2018-09-13 9:22 ` [PATCH v8 0/4] gpiolib: speed up GPIO array processing Linus Walleij 2018-09-19 18:08 ` Linus Walleij 2018-11-21 11:08 ` Subject: [PATCH v4 0/4] mtd: rawnand: ams-delta: Use GPIO API for data I/O Janusz Krzysztofik 2018-11-21 11:08 ` [PATCH v4 1/4] ARM: OMAP1: ams-delta: Provide GPIO lookup table for NAND data port Janusz Krzysztofik 2018-11-23 17:02 ` Tony Lindgren 2018-11-21 11:08 ` [PATCH v4 2/4] mtd: rawnand: ams-delta: Request data port GPIO resource Janusz Krzysztofik 2018-11-21 11:08 ` [PATCH v4 3/4] mtd: rawnand: ams-delta: Use GPIO API for data I/O Janusz Krzysztofik 2018-11-21 14:53 ` Boris Brezillon 2018-11-21 11:08 ` [PATCH v4 4/4] ARM: OMAP1: ams-delta: Drop obsolete NAND resources Janusz Krzysztofik 2018-11-21 14:56 ` Subject: [PATCH v4 0/4] mtd: rawnand: ams-delta: Use GPIO API for data I/O Boris Brezillon 2018-11-23 17:03 ` Tony Lindgren 2018-12-07 8:04 ` Miquel Raynal 2018-12-07 16:10 ` Tony Lindgren
Reply instructions: You may reply publically 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=20180807194722.5aabb6da@bbrezillon \ --to=boris.brezillon@bootlin.com \ --cc=aaro.koskinen@iki.fi \ --cc=computersforpeace@gmail.com \ --cc=corbet@lwn.net \ --cc=dwmw2@infradead.org \ --cc=jmkrzyszt@gmail.com \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=marek.vasut@gmail.com \ --cc=miquel.raynal@bootlin.com \ --cc=richard@nod.at \ --cc=tony@atomide.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
LKML Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \ linux-kernel@vger.kernel.org public-inbox-index lkml Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git