Re: [PATCH 4/5] mm, highmem: makes flush_all_zero_pkmaps() return index of last flushed entry
From: JoonSoo Kim <hidden>
Date: 2012-10-29 13:12:05
Also in:
lkml
2012/10/29 Minchan Kim [off-list ref]:
On Mon, Oct 29, 2012 at 04:12:55AM +0900, Joonsoo Kim wrote:quoted
In current code, after flush_all_zero_pkmaps() is invoked, then re-iterate all pkmaps. It can be optimized if flush_all_zero_pkmaps() return index of flushed entry. With this index, we can immediately map highmem page to virtual address represented by index. So change return type of flush_all_zero_pkmaps() and return index of last flushed entry. Signed-off-by: Joonsoo Kim <redacted>diff --git a/include/linux/highmem.h b/include/linux/highmem.h index ef788b5..0683869 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h@@ -32,6 +32,7 @@ static inline void invalidate_kernel_vmap_range(void *vaddr, int size) #ifdef CONFIG_HIGHMEM #include <asm/highmem.h> +#define PKMAP_INDEX_INVAL (-1)How about this? #define PKMAP_INVALID_INDEX (-1)
Okay.
quoted
/* declarations for linux/mm/highmem.c */ unsigned int nr_free_highpages(void);diff --git a/mm/highmem.c b/mm/highmem.c index 731cf9a..65beb9a 100644 --- a/mm/highmem.c +++ b/mm/highmem.c@@ -106,10 +106,10 @@ struct page *kmap_to_page(void *vaddr) return virt_to_page(addr); } -static void flush_all_zero_pkmaps(void) +static int flush_all_zero_pkmaps(void) { int i; - int need_flush = 0; + int index = PKMAP_INDEX_INVAL; flush_cache_kmaps();@@ -141,10 +141,12 @@ static void flush_all_zero_pkmaps(void) &pkmap_page_table[i]); set_page_address(page, NULL); - need_flush = 1; + index = i;How about returning first free index instead of last one? and update last_pkmap_nr to it.
Okay. It will be more good. Thanks. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>