From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Rik van Riel <riel@conectiva.com.br>,
Roger Larsson <roger.larsson@norran.net>,
MM mailing list <linux-mm@kvack.org>,
linux-kernel@vger.kernel.org
Subject: [patch] vmfixes-2.4.0-test9-B2
Date: Sun, 24 Sep 2000 21:34:43 +0200 (CEST) [thread overview]
Message-ID: <Pine.LNX.4.21.0009242103390.7843-200000@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.10.10009241141410.789-100000@penguin.transmeta.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1616 bytes --]
the attached vmfixes-B2 patch adds the following fixes/cleanups:
vmscan.c:
- check for __GFP_WAIT not __GFP_IO when yielding the CPU. This fixes
GFP_BUFFER deadlocks. In fact since no caller to do_try_to_free_pages()
can expect that function to not block, we dont test for __GFP_WAIT
either. [GFP_KSWAPD is the only caller without __GFP_WAIT set.]
- do shrink_[d|i]cache_memory() even if !__GFP_IO. This improves balance.
- push the __GFP_IO test into shm_swap().
- after shm_swap() do not test for !count but for <= 0, because count
could be negative if in the future the shrink_ functions return bigger
than 1, and we could then get into an infinite loop. Same after
swap_out() and refill_inactive_scan(). No performance penalty, test
for zero is exchanged with test for sign.
- kmem_cache_reap() is done within refill_inactive(), so it's
unnecessery to call it at the beginning of do_try_to_free_pages().
Moved to the else branch. (i saw kmem_cache_reap() show up in profiles)
- (small codestyle cleanup.)
page_alloc.c:
- in __alloc_pages(), the infinite allocation loop yields the CPU if
necessery. This prevents a potential lockup on UP, and even on SMP it
can prevent livelocks. (i saw this happen.)
mm.h:
- made the GFP_ flag definitions easier to parse for humans :-)
- remove shrink_mmap() prototype, it doesnt exist anymore.
shm.c:
- the trivial test for __GFP_IO.
swap_state.c, filemap.c:
- (shrink_mmap doesnt exist anymore, it's refill_inactive.)
(The patch applies and compiles cleanly, and is tested under various VM
loads i use.)
Ingo
[-- Attachment #2: Type: TEXT/PLAIN, Size: 7375 bytes --]
--- linux/mm/vmscan.c.orig Sun Sep 24 11:41:38 2000
+++ linux/mm/vmscan.c Sun Sep 24 12:20:27 2000
@@ -119,7 +119,7 @@
* our scan.
*
* Basically, this just makes it possible for us to do
- * some real work in the future in "shrink_mmap()".
+ * some real work in the future in "refill_inactive()".
*/
if (!pte_dirty(pte)) {
flush_cache_page(vma, address);
@@ -159,7 +159,7 @@
* NOTE NOTE NOTE! This should just set a
* dirty bit in 'page', and just drop the
* pte. All the hard work would be done by
- * shrink_mmap().
+ * refill_inactive().
*
* That would get rid of a lot of problems.
*/
@@ -891,7 +891,7 @@
do {
made_progress = 0;
- if (current->need_resched && (gfp_mask & __GFP_IO)) {
+ if (current->need_resched) {
__set_current_state(TASK_RUNNING);
schedule();
}
@@ -899,34 +899,32 @@
while (refill_inactive_scan(priority, 1) ||
swap_out(priority, gfp_mask, idle_time)) {
made_progress = 1;
- if (!--count)
+ if (--count <= 0)
goto done;
}
- /* Try to get rid of some shared memory pages.. */
- if (gfp_mask & __GFP_IO) {
- /*
- * don't be too light against the d/i cache since
- * shrink_mmap() almost never fail when there's
- * really plenty of memory free.
- */
- count -= shrink_dcache_memory(priority, gfp_mask);
- count -= shrink_icache_memory(priority, gfp_mask);
- /*
- * Not currently working, see fixme in shrink_?cache_memory
- * In the inner funtions there is a comment:
- * "To help debugging, a zero exit status indicates
- * all slabs were released." (-arca?)
- * lets handle it in a primitive but working way...
- * if (count <= 0)
- * goto done;
- */
+ /*
+ * don't be too light against the d/i cache since
+ * refill_inactive() almost never fail when there's
+ * really plenty of memory free.
+ */
+ count -= shrink_dcache_memory(priority, gfp_mask);
+ count -= shrink_icache_memory(priority, gfp_mask);
+ /*
+ * Not currently working, see fixme in shrink_?cache_memory
+ * In the inner funtions there is a comment:
+ * "To help debugging, a zero exit status indicates
+ * all slabs were released." (-arca?)
+ * lets handle it in a primitive but working way...
+ * if (count <= 0)
+ * goto done;
+ */
- while (shm_swap(priority, gfp_mask)) {
- made_progress = 1;
- if (!--count)
- goto done;
- }
+ /* Try to get rid of some shared memory pages.. */
+ while (shm_swap(priority, gfp_mask)) {
+ made_progress = 1;
+ if (--count <= 0)
+ goto done;
}
/*
@@ -934,7 +932,7 @@
*/
while (swap_out(priority, gfp_mask, 0)) {
made_progress = 1;
- if (!--count)
+ if (--count <= 0)
goto done;
}
@@ -955,9 +953,9 @@
priority--;
} while (priority >= 0);
- /* Always end on a shrink_mmap.., may sleep... */
+ /* Always end on a refill_inactive.., may sleep... */
while (refill_inactive_scan(0, 1)) {
- if (!--count)
+ if (--count <= 0)
goto done;
}
@@ -970,11 +968,6 @@
int ret = 0;
/*
- * First, reclaim unused slab cache memory.
- */
- kmem_cache_reap(gfp_mask);
-
- /*
* If we're low on free pages, move pages from the
* inactive_dirty list to the inactive_clean list.
*
@@ -992,13 +985,14 @@
* the inode and dentry cache whenever we do this.
*/
if (free_shortage() || inactive_shortage()) {
- if (gfp_mask & __GFP_IO) {
- ret += shrink_dcache_memory(6, gfp_mask);
- ret += shrink_icache_memory(6, gfp_mask);
- }
-
+ ret += shrink_dcache_memory(6, gfp_mask);
+ ret += shrink_icache_memory(6, gfp_mask);
ret += refill_inactive(gfp_mask, user);
} else {
+ /*
+ * Reclaim unused slab cache memory.
+ */
+ kmem_cache_reap(gfp_mask);
ret = 1;
}
@@ -1153,9 +1147,8 @@
{
int ret = 1;
- if (gfp_mask & __GFP_WAIT) {
+ if (gfp_mask & __GFP_WAIT)
ret = do_try_to_free_pages(gfp_mask, 1);
- }
return ret;
}
--- linux/mm/page_alloc.c.orig Sun Sep 24 11:44:59 2000
+++ linux/mm/page_alloc.c Sun Sep 24 11:52:00 2000
@@ -444,6 +444,13 @@
* processes, etc).
*/
if (gfp_mask & __GFP_WAIT) {
+ /*
+ * Give other processes a chance to run:
+ */
+ if (current->need_resched) {
+ __set_current_state(TASK_RUNNING);
+ schedule();
+ }
try_to_free_pages(gfp_mask);
memory_pressure++;
goto try_again;
--- linux/mm/filemap.c.orig Sun Sep 24 12:20:35 2000
+++ linux/mm/filemap.c Sun Sep 24 12:20:48 2000
@@ -1925,10 +1925,10 @@
* Application no longer needs these pages. If the pages are dirty,
* it's OK to just throw them away. The app will be more careful about
* data it wants to keep. Be sure to free swap resources too. The
- * zap_page_range call sets things up for shrink_mmap to actually free
+ * zap_page_range call sets things up for refill_inactive to actually free
* these pages later if no one else has touched them in the meantime,
* although we could add these pages to a global reuse list for
- * shrink_mmap to pick up before reclaiming other pages.
+ * refill_inactive to pick up before reclaiming other pages.
*
* NB: This interface discards data rather than pushes it out to swap,
* as some implementations do. This has performance implications for
--- linux/mm/swap_state.c.orig Sun Sep 24 12:21:02 2000
+++ linux/mm/swap_state.c Sun Sep 24 12:21:13 2000
@@ -166,7 +166,7 @@
return 0;
/*
* Though the "found" page was in the swap cache an instant
- * earlier, it might have been removed by shrink_mmap etc.
+ * earlier, it might have been removed by refill_inactive etc.
* Re search ... Since find_lock_page grabs a reference on
* the page, it can not be reused for anything else, namely
* it can not be associated with another swaphandle, so it
--- linux/include/linux/mm.h.orig Sun Sep 24 11:46:37 2000
+++ linux/include/linux/mm.h Sun Sep 24 12:21:54 2000
@@ -441,7 +441,6 @@
/* filemap.c */
extern void remove_inode_page(struct page *);
extern unsigned long page_unuse(struct page *);
-extern int shrink_mmap(int, int);
extern void truncate_inode_pages(struct address_space *, loff_t);
/* generic vm_area_ops exported for stackable file systems */
@@ -469,11 +468,11 @@
#define GFP_BUFFER (__GFP_HIGH | __GFP_WAIT)
#define GFP_ATOMIC (__GFP_HIGH)
-#define GFP_USER (__GFP_WAIT | __GFP_IO)
-#define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM)
+#define GFP_USER ( __GFP_WAIT | __GFP_IO)
+#define GFP_HIGHUSER ( __GFP_WAIT | __GFP_IO | __GFP_HIGHMEM)
#define GFP_KERNEL (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
#define GFP_NFS (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
-#define GFP_KSWAPD (__GFP_IO)
+#define GFP_KSWAPD ( __GFP_IO)
/* Flag - indicates that the buffer will be suitable for DMA. Ignored on some
platforms, used as appropriate on others */
--- linux/ipc/shm.c.orig Sun Sep 24 11:45:16 2000
+++ linux/ipc/shm.c Sun Sep 24 11:53:59 2000
@@ -1536,6 +1536,12 @@
int counter;
struct page * page_map;
+ /*
+ * Push this inside:
+ */
+ if (!(gfp_mask & __GFP_IO))
+ return 0;
+
zshm_swap(prio, gfp_mask);
counter = shm_rss >> prio;
if (!counter)
next prev parent reply other threads:[~2000-09-24 19:34 UTC|newest]
Thread overview: 243+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-09-24 10:11 __GFP_IO && shrink_[d|i]cache_memory()? Ingo Molnar
2000-09-24 18:11 ` Linus Torvalds
2000-09-24 18:40 ` Ingo Molnar
2000-09-24 18:39 ` Linus Torvalds
2000-09-24 18:46 ` Linus Torvalds
2000-09-24 18:59 ` Ingo Molnar
2000-09-24 19:34 ` Ingo Molnar [this message]
2000-09-24 20:20 ` [patch] vmfixes-2.4.0-test9-B2 Rui Sousa
2000-09-24 20:24 ` Andrea Arcangeli
2000-09-24 20:26 ` Ingo Molnar
2000-09-24 21:12 ` Andrea Arcangeli
2000-09-24 21:12 ` Ingo Molnar
2000-09-24 21:43 ` Stephen C. Tweedie
2000-09-24 22:13 ` Andrea Arcangeli
2000-09-24 22:36 ` [patch] vmfixes-2.4.0-test9-B2 - fixing deadlocks bert hubert
2000-09-24 23:41 ` Andrea Arcangeli
2000-09-25 16:24 ` Stephen C. Tweedie
2000-09-25 17:03 ` Andrea Arcangeli
2000-09-25 18:06 ` Stephen C. Tweedie
2000-09-25 19:32 ` Andrea Arcangeli
2000-09-25 19:26 ` Rik van Riel
2000-09-25 22:28 ` Andrea Arcangeli
2000-09-25 22:26 ` Rik van Riel
2000-09-25 22:51 ` Andrea Arcangeli
2000-09-25 22:30 ` Linus Torvalds
2000-09-25 23:03 ` Andrea Arcangeli
2000-09-25 23:18 ` Linus Torvalds
2000-09-26 0:32 ` Andrea Arcangeli
2000-09-25 22:30 ` Juan J. Quintela
2000-09-25 23:00 ` Andrea Arcangeli
2000-09-25 19:54 ` Stephen C. Tweedie
2000-09-25 22:44 ` Andrea Arcangeli
2000-09-25 22:42 ` Rik van Riel
2000-09-26 6:54 ` Christoph Rohland
2000-09-26 14:05 ` Andrea Arcangeli
2000-09-26 16:20 ` Christoph Rohland
2000-09-26 17:10 ` Andrea Arcangeli
2000-09-27 8:11 ` Christoph Rohland
2000-09-27 8:28 ` Ingo Molnar
2000-09-27 9:24 ` Christoph Rohland
2000-09-27 13:56 ` Andrea Arcangeli
2000-09-27 16:56 ` Christoph Rohland
2000-09-27 17:42 ` Andrea Arcangeli
2000-09-27 18:25 ` Erik Andersen
2000-09-27 18:55 ` Andrea Arcangeli
2000-09-28 10:08 ` Rik van Riel
2000-09-28 11:16 ` Rik van Riel
2000-09-28 14:52 ` Andrea Arcangeli
2000-09-29 14:39 ` Rik van Riel
2000-09-29 14:55 ` Andrea Arcangeli
2000-09-29 15:40 ` Rik van Riel
2000-09-28 11:31 ` Ingo Molnar
2000-09-28 14:54 ` Andrea Arcangeli
2000-09-28 15:13 ` Ingo Molnar
2000-09-28 15:23 ` Andrea Arcangeli
2000-09-28 16:16 ` Juan J. Quintela
2000-09-28 14:31 ` Andrea Arcangeli
2000-09-25 17:21 ` bert hubert
2000-09-25 17:49 ` Andrea Arcangeli
2000-09-25 15:09 ` Miles Lane
2000-09-25 15:51 ` Stephen C. Tweedie
2000-09-25 16:05 ` Ingo Molnar
2000-09-25 16:06 ` Alexander Viro
2000-09-25 16:20 ` Ingo Molnar
2000-09-25 16:29 ` Andrea Arcangeli
2000-09-25 4:56 ` [patch] vmfixes-2.4.0-test9-B2 Linus Torvalds
2000-09-25 5:19 ` Alexander Viro
2000-09-25 6:06 ` Linus Torvalds
2000-09-25 6:17 ` Alexander Viro
2000-09-25 21:21 ` Alexander Viro
2000-09-26 13:42 ` [CFT][PATCH] ext2 directories in pagecache Alexander Viro
2000-09-26 21:29 ` Alexander Viro
2000-09-26 22:16 ` Marko Kreen
2000-09-26 22:31 ` Alexander Viro
2000-09-26 22:47 ` Marko Kreen
2000-09-27 7:32 ` Ingo Molnar
2000-09-27 9:22 ` Alexander Viro
2000-09-26 23:19 ` Andreas Dilger
2000-09-26 23:33 ` Alexander Viro
2000-09-26 23:44 ` Alexander Viro
2000-09-25 0:09 ` [patch] vmfixes-2.4.0-test9-B2 Linus Torvalds
2000-09-25 0:49 ` Alexander Viro
2000-09-25 0:53 ` Marcelo Tosatti
2000-09-25 1:45 ` Andrea Arcangeli
2000-09-25 2:39 ` Marcelo Tosatti
2000-09-25 15:36 ` Andrea Arcangeli
2000-09-25 10:42 ` the new VM Ingo Molnar
2000-09-25 13:02 ` Andrea Arcangeli
2000-09-25 13:02 ` Ingo Molnar
2000-09-25 13:08 ` Andrea Arcangeli
2000-09-25 13:12 ` Ingo Molnar
2000-09-25 13:30 ` Andrea Arcangeli
2000-09-25 13:39 ` Ingo Molnar
2000-09-25 14:04 ` Andrea Arcangeli
2000-09-25 14:04 ` Ingo Molnar
2000-09-25 14:23 ` Andrea Arcangeli
2000-09-25 14:27 ` Ingo Molnar
2000-09-25 14:39 ` Andrea Arcangeli
2000-09-25 14:43 ` Ingo Molnar
2000-09-25 15:01 ` Andrea Arcangeli
2000-09-25 15:10 ` Ingo Molnar
2000-09-25 15:24 ` Andrea Arcangeli
2000-09-25 15:26 ` Ingo Molnar
2000-09-25 15:22 ` yodaiken
2000-09-26 19:10 ` Pavel Machek
2000-09-26 20:16 ` Andrea Arcangeli
2000-09-27 7:42 ` Ingo Molnar
2000-09-27 12:11 ` yodaiken
2000-09-27 14:08 ` Andrea Arcangeli
2000-09-25 16:09 ` Rik van Riel
2000-09-25 14:26 ` Marcelo Tosatti
2000-09-25 14:50 ` Andrea Arcangeli
2000-09-25 14:47 ` Alan Cox
2000-09-25 15:16 ` Ingo Molnar
2000-09-25 15:16 ` the new VMt Alan Cox
2000-09-25 15:33 ` the new VM Ingo Molnar
2000-09-25 15:41 ` the new VMt Andrea Arcangeli
2000-09-25 16:02 ` Ingo Molnar
2000-09-25 16:04 ` Andi Kleen
2000-09-25 16:19 ` Ingo Molnar
2000-09-25 16:18 ` Andi Kleen
2000-09-25 16:41 ` Andrea Arcangeli
2000-09-25 16:35 ` Linus Torvalds
2000-09-25 16:41 ` Rik van Riel
2000-09-25 16:49 ` Linus Torvalds
2000-09-25 17:03 ` Ingo Molnar
2000-09-25 17:17 ` Andrea Arcangeli
2000-09-25 17:10 ` Rik van Riel
2000-09-25 17:27 ` Andrea Arcangeli
2000-09-25 17:15 ` Andrea Arcangeli
2000-09-27 7:14 ` Rusty Russell
2000-09-25 20:23 ` Russell King
2000-09-25 16:28 ` Rik van Riel
2000-09-25 16:11 ` Andrea Arcangeli
2000-09-25 16:22 ` Ingo Molnar
2000-09-25 16:17 ` Alexander Viro
2000-09-25 16:36 ` Jeff Garzik
2000-09-25 16:57 ` Alan Cox
2000-09-25 17:01 ` Alexander Viro
2000-09-25 17:06 ` Alan Cox
2000-09-25 17:31 ` Oliver Xymoron
2000-09-25 17:51 ` Jeff Garzik
2000-09-25 19:03 ` the new VMt [4MB+ blocks] Matti Aarnio
2000-09-25 20:02 ` Stephen Williams
2000-09-25 16:33 ` the new VMt Andrea Arcangeli
2000-09-26 8:38 ` Jes Sorensen
2000-09-26 8:52 ` Ingo Molnar
2000-09-26 9:02 ` Jes Sorensen
2000-09-25 16:53 ` Alan Cox
2000-09-25 15:42 ` Stephen C. Tweedie
2000-09-25 16:05 ` Andrea Arcangeli
2000-09-25 16:22 ` Rik van Riel
2000-09-25 16:42 ` Andrea Arcangeli
2000-09-25 17:39 ` Stephen C. Tweedie
2000-09-25 16:51 ` Alan Cox
2000-09-25 17:43 ` Stephen C. Tweedie
2000-09-25 18:13 ` Alan Cox
2000-09-25 18:21 ` Stephen C. Tweedie
2000-09-25 19:09 ` Alan Cox
2000-09-25 19:21 ` Stephen C. Tweedie
2000-09-25 16:52 ` yodaiken
2000-09-25 17:18 ` Jamie Lokier
2000-09-25 17:51 ` yodaiken
2000-09-25 18:04 ` Jamie Lokier
2000-09-25 18:13 ` yodaiken
2000-09-25 18:24 ` Stephen C. Tweedie
2000-09-25 18:34 ` yodaiken
2000-09-25 18:48 ` Jamie Lokier
2000-09-25 19:25 ` Stephen C. Tweedie
2000-09-25 20:04 ` yodaiken
2000-09-25 20:23 ` Alan Cox
2000-09-25 20:35 ` yodaiken
2000-09-25 20:46 ` Alan Cox
2000-09-25 21:07 ` yodaiken
2000-09-26 9:54 ` Stephen C. Tweedie
2000-09-26 13:17 ` yodaiken
2000-09-25 20:47 ` Benjamin C.R. LaHaise
2000-09-25 21:12 ` yodaiken
2000-09-26 10:07 ` Stephen C. Tweedie
2000-09-26 13:30 ` yodaiken
2000-09-25 20:32 ` Stephen C. Tweedie
2000-09-26 12:10 ` Mark Hemment
2000-09-27 10:13 ` Andrey Savochkin
2000-09-27 12:55 ` Hugh Dickins
2000-09-28 3:25 ` Andrey Savochkin
2000-09-25 23:14 ` Erik Andersen
2000-09-26 15:17 ` yodaiken
2000-09-26 16:04 ` Stephen C. Tweedie
2000-09-26 17:02 ` Erik Andersen
2000-09-26 17:08 ` Stephen C. Tweedie
2000-09-26 17:45 ` Erik Andersen
2000-09-27 10:20 ` Andrey Savochkin
2000-09-26 21:13 ` Eric Lowe
2000-09-25 18:20 ` Andrea Arcangeli
2000-09-25 16:16 ` Rik van Riel
2000-09-25 16:55 ` Alan Cox
2000-09-25 15:48 ` the new VM Andrea Arcangeli
2000-09-25 15:40 ` Stephen C. Tweedie
2000-09-25 16:01 ` Andrea Arcangeli
2000-09-25 14:37 ` Rik van Riel
2000-09-25 20:34 ` Christoph Rohland
2000-10-06 16:14 ` Rik van Riel
2000-10-09 7:37 ` Christoph Rohland
2000-09-25 13:04 ` Ingo Molnar
2000-09-25 13:19 ` Andrea Arcangeli
2000-09-25 13:18 ` Ingo Molnar
2000-09-25 13:21 ` Ingo Molnar
2000-09-25 13:31 ` Andrea Arcangeli
2000-09-25 13:47 ` Ingo Molnar
2000-09-25 14:04 ` Andrea Arcangeli
2000-09-25 1:31 ` [patch] vmfixes-2.4.0-test9-B2 Andrea Arcangeli
2000-09-25 1:27 ` Alexander Viro
2000-09-25 2:02 ` Andrea Arcangeli
2000-09-25 2:01 ` Alexander Viro
2000-09-25 13:47 ` Stephen C. Tweedie
2000-09-25 10:13 ` Ingo Molnar
2000-09-25 12:58 ` Andrea Arcangeli
2000-09-25 13:10 ` Ingo Molnar
2000-09-25 13:49 ` Jens Axboe
2000-09-25 14:11 ` Ingo Molnar
2000-09-25 14:05 ` Jens Axboe
2000-09-25 16:46 ` Linus Torvalds
2000-09-25 17:05 ` Ingo Molnar
2000-09-25 17:23 ` Andrea Arcangeli
2000-09-25 14:20 ` Andrea Arcangeli
2000-09-25 14:11 ` Jens Axboe
2000-09-25 14:33 ` Andrea Arcangeli
2000-09-25 13:56 ` Andrea Arcangeli
2000-09-25 13:57 ` Ingo Molnar
2000-09-25 14:13 ` Andrea Arcangeli
2000-09-25 14:08 ` Jens Axboe
2000-09-25 14:29 ` Andrea Arcangeli
2000-09-25 14:18 ` Jens Axboe
2000-09-25 14:47 ` Andrea Arcangeli
2000-09-25 21:28 ` Jens Axboe
2000-09-25 22:14 ` Andrea Arcangeli
2000-09-25 14:13 ` Ingo Molnar
2000-09-25 14:29 ` Ingo Molnar
2000-09-25 14:46 ` Andrea Arcangeli
2000-09-25 14:53 ` Ingo Molnar
2000-09-25 15:02 ` Andrea Arcangeli
2000-09-24 21:38 ` __GFP_IO && shrink_[d|i]cache_memory()? Stephen C. Tweedie
2000-09-24 23:20 ` Alan Cox
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=Pine.LNX.4.21.0009242103390.7843-200000@elte.hu \
--to=mingo@elte.hu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@conectiva.com.br \
--cc=roger.larsson@norran.net \
--cc=torvalds@transmeta.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