Re: [PATCH] export the function kmap_flush_unused.

From: Chintan Pandya
Date: Fri Aug 08 2014 - 09:39:43 EST


On 08/08/2014 02:46 PM, Sha, Ruibin wrote:
export the function kmap_flush_unused.

Scenario: When graphic driver need high memory spece, we use alloc_pages()
to allocate. But if the allocated page has just been
mapped in the KMAP space(like first kmap then kunmap) and
no flush page happened on PKMAP, the page virtual address is
not NULL.Then when we get that page and set page attribute like
set_memory_uc and set_memory_wc, we hit error.

Could you explain your scenario with more details ? set_memory_* should be applied on mapped address. And in attempt to map your page (which was just kmap and kunmap'ed), it will overwrite the previous mappings.

Moreover, in my view, kmap_flush_unused is just helping us in keeping the cache clean for kmap virtual addresses if they are unmapped. Is it serving any more purpose here ?


fix: For that scenario,when we get the allocated page and its virtual
address is not NULL, we would like first flush that page.
So need export that function kmap_flush_unused.

Signed-off-by: sha, ruibin <ruibin.sha@xxxxxxxxx>

---
mm/highmem.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/mm/highmem.c b/mm/highmem.c
index b32b70c..511299b 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -156,6 +156,7 @@ void kmap_flush_unused(void)
flush_all_zero_pkmaps();
unlock_kmap();
}
+EXPORT_SYMBOL(kmap_flush_unused);
This symbol is already extern'ed. Is it not sufficient for your case ?

static inline unsigned long map_new_virtual(struct page *page)
{
--
1.7.9.5

Best Regards

---------------------------------------------------------------

Sha, Rui bin ( Robin )

+86 13817890945

Android System Integration Shanghai



--
Chintan Pandya

QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/