On Fri, May 17, 2013 at 02:42:48PM -0700, David Daney wrote:
> On 05/17/2013 02:06 PM, Sanjay Lal wrote:
> >The KVM module uses the standard MIPS cache management routines, which use
> >This creates and indirect dependency, requiring min_low_pfn to be exported.
> >Signed-off-by: Sanjay Lal <email@example.com>
> > arch/mips/kernel/mips_ksyms.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >diff --git a/arch/mips/kernel/mips_ksyms.c b/arch/mips/kernel/mips_ksyms.c
> >index 6e58e97..0299472 100644
> >--- a/arch/mips/kernel/mips_ksyms.c
> >+++ b/arch/mips/kernel/mips_ksyms.c
> >@@ -14,6 +14,7 @@
> > #include <linux/mm.h>
> > #include <asm/uaccess.h>
> > #include <asm/ftrace.h>
> >+#include <linux/bootmem.h>
> > extern void *__bzero(void *__s, size_t __count);
> > extern long __strncpy_from_user_nocheck_asm(char *__to,
> >@@ -60,3 +61,8 @@ EXPORT_SYMBOL(invalid_pte_table);
> > /* _mcount is defined in arch/mips/kernel/mcount.S */
> > EXPORT_SYMBOL(_mcount);
> > #endif
> >+/* The KVM module uses the standard MIPS cache functions which use
> >+ * min_low_pfn, requiring it to be exported.
> >+ */
> I think I asked this before, but I don't remember the answer:
> Why not put EXPORT_SYMBOL(min_low_pfn) in mm/bootmem.c adjacent to
> where the symbol is defined?
He did answered here:
I suggested mips_ksyms.c solution as an option.
> Cluttering up the kernel with multiple architectures all doing
> architecture specific exports of the same symbol is not a clean way
> of doing things.
> The second time something needs to be done, it should be factored
> out into common code.
Exports are different. You define interface between the kernel and modules
here, exporting the symbol may not be desirable for some arch. And
min_low_pfn is not the only example. Anything in arch _ksyms files is like that:
exported by some archs but not the others.