--- /dev/null
+From linux@roeck-us.net Fri Aug 16 05:40:22 2013
+From: Ralf Baechle <ralf@linux-mips.org>
+Date: Thu, 15 Aug 2013 22:35:53 -0700
+Subject: MIPS: Rewrite pfn_valid to work in modules, too.
+To: linux-stable@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Ralf Baechle <ralf@linux-mips.org>, Guenter Roeck <linux@roeck-us.net>
+Message-ID: <1376631353-26726-1-git-send-email-linux@roeck-us.net>
+
+From: Ralf Baechle <ralf@linux-mips.org>
+
+Upstream commit 8b9232141bf40788cce31f893c13f344ec31ee66.
+
+This fixes:
+
+ MODPOST 393 modules
+ERROR: "min_low_pfn" [arch/mips/kvm/kvm.ko] undefined!
+make[3]: *** [__modpost] Error 1
+
+It would have been possible to just export min_low_pfn but in the end
+pfn_valid should return 1 for any pfn argument for which a struct page
+exists so using min_low_pfn was wrong anyway.
+
+[Backport to 3.4 kernel. Applies cleanly on top of current 3.4 patch queue,
+and fixes "make ARCH=mips allmodconfig; make ARCH=mips" build problem. - Guenter]
+
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+
+ arch/mips/include/asm/page.h | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+--- a/arch/mips/include/asm/page.h
++++ b/arch/mips/include/asm/page.h
+@@ -175,14 +175,15 @@ typedef struct { unsigned long pgprot; }
+
+ #ifdef CONFIG_FLATMEM
+
+-#define pfn_valid(pfn) \
+-({ \
+- unsigned long __pfn = (pfn); \
+- /* avoid <linux/bootmem.h> include hell */ \
+- extern unsigned long min_low_pfn; \
+- \
+- __pfn >= min_low_pfn && __pfn < max_mapnr; \
+-})
++#ifndef __ASSEMBLY__
++static inline int pfn_valid(unsigned long pfn)
++{
++ /* avoid <linux/mm.h> include hell */
++ extern unsigned long max_mapnr;
++
++ return pfn >= ARCH_PFN_OFFSET && pfn < max_mapnr;
++}
++#endif
+
+ #elif defined(CONFIG_SPARSEMEM)
+
powerpc-numa-avoid-stupid-uninitialized-warning-from-gcc.patch
alpha-makefile-don-t-enforce-small-data-model-for-kernel-builds.patch
md-raid1-raid10-use-freeze_array-in-place-of-raise_barrier.patch
+sparc32-add-ucmpdi2.patch
+sparc32-add-ucmpdi2.o-to-obj-y-instead-of-lib-y.patch
+mips-rewrite-pfn_valid-to-work-in-modules-too.patch
--- /dev/null
+From 74c7b28953d4eaa6a479c187aeafcfc0280da5e8 Mon Sep 17 00:00:00 2001
+From: "David S. Miller" <davem@davemloft.net>
+Date: Sat, 19 May 2012 15:27:01 -0700
+Subject: sparc32: Add ucmpdi2.o to obj-y instead of lib-y.
+
+From: "David S. Miller" <davem@davemloft.net>
+
+commit 74c7b28953d4eaa6a479c187aeafcfc0280da5e8 upstream.
+
+Otherwise if no references exist in the static kernel image,
+we won't export the symbol properly to modules.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/sparc/lib/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/sparc/lib/Makefile
++++ b/arch/sparc/lib/Makefile
+@@ -15,7 +15,7 @@ lib-$(CONFIG_SPARC32) += divdi3.o udivdi
+ lib-$(CONFIG_SPARC32) += copy_user.o locks.o
+ lib-y += atomic_$(BITS).o
+ lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o
+-lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o ucmpdi2.o
++lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
+
+ lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
+ lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o
+@@ -40,7 +40,7 @@ lib-$(CONFIG_SPARC64) += copy_in_user.o
+ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o hweight.o ffs.o
+
+ obj-y += iomap.o
+-obj-$(CONFIG_SPARC32) += atomic32.o
++obj-$(CONFIG_SPARC32) += atomic32.o ucmpdi2.o
+ obj-y += ksyms.o
+ obj-$(CONFIG_SPARC64) += PeeCeeI.o
+ obj-y += usercopy.o
--- /dev/null
+From de36e66d5fa52bc6e2dacd95c701a1762b5308a7 Mon Sep 17 00:00:00 2001
+From: Sam Ravnborg <sam@ravnborg.org>
+Date: Sat, 19 May 2012 11:54:11 +0200
+Subject: sparc32: add ucmpdi2
+
+From: Sam Ravnborg <sam@ravnborg.org>
+
+commit de36e66d5fa52bc6e2dacd95c701a1762b5308a7 upstream.
+
+Based on copy from microblaze add ucmpdi2 implementation.
+This fixes build of niu driver which failed with:
+
+drivers/built-in.o: In function `niu_get_nfc':
+niu.c:(.text+0x91494): undefined reference to `__ucmpdi2'
+
+This driver will never be used on a sparc32 system,
+but patch added to fix build breakage with all*config builds.
+
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/sparc/lib/Makefile | 2 +-
+ arch/sparc/lib/ucmpdi2.c | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+--- a/arch/sparc/lib/Makefile
++++ b/arch/sparc/lib/Makefile
+@@ -15,7 +15,7 @@ lib-$(CONFIG_SPARC32) += divdi3.o udivdi
+ lib-$(CONFIG_SPARC32) += copy_user.o locks.o
+ lib-y += atomic_$(BITS).o
+ lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o
+-lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
++lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o ucmpdi2.o
+
+ lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
+ lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o
+--- /dev/null
++++ b/arch/sparc/lib/ucmpdi2.c
+@@ -0,0 +1,19 @@
++#include <linux/module.h>
++#include "libgcc.h"
++
++word_type __ucmpdi2(unsigned long long a, unsigned long long b)
++{
++ const DWunion au = {.ll = a};
++ const DWunion bu = {.ll = b};
++
++ if ((unsigned int) au.s.high < (unsigned int) bu.s.high)
++ return 0;
++ else if ((unsigned int) au.s.high > (unsigned int) bu.s.high)
++ return 2;
++ if ((unsigned int) au.s.low < (unsigned int) bu.s.low)
++ return 0;
++ else if ((unsigned int) au.s.low > (unsigned int) bu.s.low)
++ return 2;
++ return 1;
++}
++EXPORT_SYMBOL(__ucmpdi2);