Kmap_atomic vs Kmap

From: Phillip Lougher
Date: Fri Mar 18 2005 - 22:26:53 EST


Andrew Morton wrote in relation to my initial SquashFS patch:
Phillip Lougher <phillip@xxxxxxxxxxxxxxxxxxx> wrote:

+skip_read:
+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
+ kunmap(page);
+ flush_dcache_page(page);
+ SetPageUptodate(page);
+ unlock_page(page);
+
+ return 0;
+}

See if you can use kmap_atomic() here - kmap() is slow, theoretically
deadlocky and is deprecated.


From some browsing of the kernel source and a useful article on lwn.net I think I can replace all the readpage_xxx (symlink, readpage & readpage4k) kmap/kunmaps with kmap_atomic(page, KM_USER0)/kunmap(kaddr, KM_USER0)...

The lwn.net article mentions that k[un]map_atomic is the new alternative to kmap (as Andrew Morton mentioned).

I've noticed in asm-ppc/highmem.h the following comment

/*
* The use of kmap_atomic/kunmap_atomic is discouraged - kmap/kunmap
* gives a more generic (and caching) interface. But kmap_atomic can
* be used in IRQ contexts, so in some (very limited) cases we need
* it.
*/

Given what Andrew and the lwn.net article says, this comment is rather confusing. Is it wrong?

Regards

Phillip Lougher
-
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/