From: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date: Thu, 28 Feb 2013 10:08:54 +0000 (+0100)
Subject: s390/mm: zero page cache synonyms for zEC12
X-Git-Tag: firefly_0821_release~3680^2~683^2~56
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7919e91b34316ee30b14334389e005eb2e9b8e39;p=firefly-linux-kernel-4.4.55.git

s390/mm: zero page cache synonyms for zEC12

To avoid cache synonyms on System zEC12 32 independent zero pages are
required, one for each combination for bits 2**12 to 2**16 of the virtual
address. To avoid wasting too much memory on small virtual systems the
number of zero pages is limited to 4 if the memory size is less or equal
to 64MB.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---

diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 49ce6bb2c641..9f9c315b4c07 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -63,10 +63,18 @@ static unsigned long __init setup_zero_pages(void)
 		break;
 	case 0x2097:	/* z10 */
 	case 0x2098:	/* z10 */
-	default:
+	case 0x2817:	/* z196 */
+	case 0x2818:	/* z196 */
 		order = 2;
 		break;
+	case 0x2827:	/* zEC12 */
+	default:
+		order = 5;
+		break;
 	}
+	/* Limit number of empty zero pages for small memory sizes */
+	if (order > 2 && totalram_pages <= 16384)
+		order = 2;
 
 	empty_zero_page = __get_free_pages(GFP_KERNEL | __GFP_ZERO, order);
 	if (!empty_zero_page)