Use non-temporal copy for Cross Memory Attach for performance.

Signed-off-by: Daniel J Blueman <daniel@numascale.com>

diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 75232ad..447bcd8 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -236,40 +236,10 @@ static size_t copy_page_from_iter_iovec(struct page *page, size_t offset, size_t
 	buf = iov->iov_base + skip;
 	copy = min(bytes, iov->iov_len - skip);
 
-	if (!fault_in_pages_readable(buf, copy)) {
-		kaddr = kmap_atomic(page);
-		to = kaddr + offset;
-
-		/* first chunk, usually the only one */
-		left = __copy_from_user_inatomic(to, buf, copy);
-		copy -= left;
-		skip += copy;
-		to += copy;
-		bytes -= copy;
-
-		while (unlikely(!left && bytes)) {
-			iov++;
-			buf = iov->iov_base;
-			copy = min(bytes, iov->iov_len);
-			left = __copy_from_user_inatomic(to, buf, copy);
-			copy -= left;
-			skip = copy;
-			to += copy;
-			bytes -= copy;
-		}
-		if (likely(!bytes)) {
-			kunmap_atomic(kaddr);
-			goto done;
-		}
-		offset = to - kaddr;
-		buf += copy;
-		kunmap_atomic(kaddr);
-		copy = min(bytes, iov->iov_len - skip);
-	}
 	/* Too bad - revert to non-atomic kmap */
 	kaddr = kmap(page);
 	to = kaddr + offset;
-	left = __copy_from_user(to, buf, copy);
+	left = __copy_from_user_nocache(to, buf, copy);
 	copy -= left;
 	skip += copy;
 	to += copy;
@@ -278,14 +248,14 @@ static size_t copy_page_from_iter_iovec(struct page *page, size_t offset, size_t
 		iov++;
 		buf = iov->iov_base;
 		copy = min(bytes, iov->iov_len);
-		left = __copy_from_user(to, buf, copy);
+		left = __copy_from_user_nocache(to, buf, copy);
 		copy -= left;
 		skip = copy;
 		to += copy;
 		bytes -= copy;
 	}
 	kunmap(page);
-done:
+
 	if (skip == iov->iov_len) {
 		iov++;
 		skip = 0;
