LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* HugeTLB vs. SH3 cpu
@ 2008-04-01 22:58 Adrian Bunk
  2008-04-01 23:26 ` Nish Aravamudan
  0 siblings, 1 reply; 8+ messages in thread
From: Adrian Bunk @ 2008-04-01 22:58 UTC (permalink / raw)
  To: wli, lethal; +Cc: linux-sh, linux-kernel

fs/Kconfig says:

config HUGETLBFS
        bool "HugeTLB file system support"
        depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN


arch/sh/mm/Kconfig says:

choice
        prompt "HugeTLB page size"
        depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU


The compiler says with CONFIG_CPU_SH3:

<--  snip  -->

...
  CC      arch/sh/mm/hugetlbpage.o
In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/sh/mm/hugetlbpage.c:14:/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/hugetlb.h: In function 'prepare_hugepage_range':
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/hugetlb.h:73: error: 'HPAGE_SHIFT' undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/hugetlb.h:73: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/hugetlb.h:73: error: for each function it appears in.)
make[2]: *** [arch/sh/mm/hugetlbpage.o] Error 1

<--  snip  -->


cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-01 22:58 HugeTLB vs. SH3 cpu Adrian Bunk
@ 2008-04-01 23:26 ` Nish Aravamudan
  2008-04-02  8:04   ` Paul Mundt
  0 siblings, 1 reply; 8+ messages in thread
From: Nish Aravamudan @ 2008-04-01 23:26 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: wli, lethal, linux-sh, linux-kernel

On 4/1/08, Adrian Bunk <bunk@kernel.org> wrote:
> fs/Kconfig says:
>
>  config HUGETLBFS
>         bool "HugeTLB file system support"
>         depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
>
>
>  arch/sh/mm/Kconfig says:
>
>  choice
>         prompt "HugeTLB page size"
>         depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU

So the problem is that SH3 is allowed to enable
HUGETLB_PAGE/HUGETLBFS, but only SH4/5 define the HPAGE_SHIFT macro,
due to some #ifdeffery on the hugepage size. So either the choice
needs to be extended to include CPU_SH3 (which builds here, when
changed) or the HUGETLBFS conditional needs to depend more
specifically on SH4/5 and not just SUPERH. I think the arch maintainer
has to make that call, as I don't know the hardware to say if SH3
actually supports multiple hugepage sizes.

Thanks,
Nish

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-01 23:26 ` Nish Aravamudan
@ 2008-04-02  8:04   ` Paul Mundt
  2008-04-02 10:15     ` Mel Gorman
  2008-04-02 22:55     ` Nishanth Aravamudan
  0 siblings, 2 replies; 8+ messages in thread
From: Paul Mundt @ 2008-04-02  8:04 UTC (permalink / raw)
  To: Nish Aravamudan; +Cc: Adrian Bunk, wli, linux-sh, linux-kernel

On Tue, Apr 01, 2008 at 04:26:14PM -0700, Nish Aravamudan wrote:
> On 4/1/08, Adrian Bunk <bunk@kernel.org> wrote:
> > fs/Kconfig says:
> >
> >  config HUGETLBFS
> >         bool "HugeTLB file system support"
> >         depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> >
> >
> >  arch/sh/mm/Kconfig says:
> >
> >  choice
> >         prompt "HugeTLB page size"
> >         depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU
> 
> So the problem is that SH3 is allowed to enable
> HUGETLB_PAGE/HUGETLBFS, but only SH4/5 define the HPAGE_SHIFT macro,
> due to some #ifdeffery on the hugepage size. So either the choice
> needs to be extended to include CPU_SH3 (which builds here, when
> changed) or the HUGETLBFS conditional needs to depend more
> specifically on SH4/5 and not just SUPERH. I think the arch maintainer
> has to make that call, as I don't know the hardware to say if SH3
> actually supports multiple hugepage sizes.
> 
The problem is that the hugetlb Kconfig stuff is a complete mess. There's
a semi-decoupling between HUGETLBFS and HUGETLB_PAGE, though they both
depend on each other.

Sorting out the mess noted by Adrian is pretty trivial with a
HAVE_HUGETLB_PAGE. How about this?

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

---

 arch/ia64/Kconfig                      |    1 +
 arch/powerpc/platforms/Kconfig.cputype |    1 +
 arch/sh/Kconfig                        |    2 ++
 arch/sparc64/Kconfig                   |    1 +
 arch/x86/Kconfig                       |    1 +
 fs/Kconfig                             |    3 ++-
 mm/Kconfig                             |    3 +++
 7 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 8fa3faf..bb1e02b 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -19,6 +19,7 @@ config IA64
 	select HAVE_OPROFILE
 	select HAVE_KPROBES
 	select HAVE_KRETPROBES
+	select HAVE_HUGETLB_PAGE
 	default y
 	help
 	  The Itanium Processor Family is Intel's 64-bit successor to
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 0c3face..7c937ad 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -1,5 +1,6 @@
 config PPC64
 	bool "64-bit kernel"
+	select HAVE_HUGETLB_PAGE
 	default n
 	help
 	  This option selects whether a 32-bit or a 64-bit kernel
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index df2e2f9..c48f629 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -114,6 +114,7 @@ config CPU_SH3
 
 config CPU_SH4
 	bool
+	select HAVE_HUGETLB_PAGE
 	select CPU_HAS_INTEVT
 	select CPU_HAS_SR_RB
 	select CPU_HAS_PTEA if !CPU_SH4A || CPU_SHX2
@@ -130,6 +131,7 @@ config CPU_SH4AL_DSP
 
 config CPU_SH5
 	bool
+	select HAVE_HUGETLB_PAGE
 	select CPU_HAS_FPU
 
 config CPU_SHX2
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index 463d1be..3045673 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -16,6 +16,7 @@ config SPARC64
 	bool
 	default y
 	select HAVE_IDE
+	select HAVE_HUGETLB_PAGE
 	help
 	  SPARC is a family of RISC microprocessors designed and marketed by
 	  Sun Microsystems, incorporated.  This port covers the newer 64-bit
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 6c70fed..d91e7b7 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -22,6 +22,7 @@ config X86
 	select HAVE_OPROFILE
 	select HAVE_KPROBES
 	select HAVE_KRETPROBES
+	select HAVE_HUGETLB_PAGE
 	select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
 
 
diff --git a/fs/Kconfig b/fs/Kconfig
index d731282..f886ae2 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -978,7 +978,7 @@ config TMPFS_POSIX_ACL
 
 config HUGETLBFS
 	bool "HugeTLB file system support"
-	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
+	depends on HAVE_HUGETLB_PAGE || BROKEN
 	help
 	  hugetlbfs is a filesystem backing for HugeTLB pages, based on
 	  ramfs. For architectures that support it, say Y here and read
@@ -987,6 +987,7 @@ config HUGETLBFS
 	  If unsure, say N.
 
 config HUGETLB_PAGE
+	depends on MMU
 	def_bool HUGETLBFS
 
 config CONFIGFS_FS
diff --git a/mm/Kconfig b/mm/Kconfig
index 0016ebd..3113374 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -90,6 +90,9 @@ config HAVE_MEMORY_PRESENT
 	def_bool y
 	depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
 
+config HAVE_HUGETLB_PAGE
+	def_bool n
+
 #
 # SPARSEMEM_EXTREME (which is the default) does some bootmem
 # allocations when memory_present() is called.  If this cannot

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-02  8:04   ` Paul Mundt
@ 2008-04-02 10:15     ` Mel Gorman
  2008-04-03  5:52       ` Paul Mundt
  2008-04-02 22:55     ` Nishanth Aravamudan
  1 sibling, 1 reply; 8+ messages in thread
From: Mel Gorman @ 2008-04-02 10:15 UTC (permalink / raw)
  To: Paul Mundt, Nish Aravamudan, Adrian Bunk, wli, linux-sh, linux-kernel

On (02/04/08 17:04), Paul Mundt didst pronounce:
> On Tue, Apr 01, 2008 at 04:26:14PM -0700, Nish Aravamudan wrote:
> > On 4/1/08, Adrian Bunk <bunk@kernel.org> wrote:
> > > fs/Kconfig says:
> > >
> > >  config HUGETLBFS
> > >         bool "HugeTLB file system support"
> > >         depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> > >
> > >
> > >  arch/sh/mm/Kconfig says:
> > >
> > >  choice
> > >         prompt "HugeTLB page size"
> > >         depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU
> > 
> > So the problem is that SH3 is allowed to enable
> > HUGETLB_PAGE/HUGETLBFS, but only SH4/5 define the HPAGE_SHIFT macro,
> > due to some #ifdeffery on the hugepage size. So either the choice
> > needs to be extended to include CPU_SH3 (which builds here, when
> > changed) or the HUGETLBFS conditional needs to depend more
> > specifically on SH4/5 and not just SUPERH. I think the arch maintainer
> > has to make that call, as I don't know the hardware to say if SH3
> > actually supports multiple hugepage sizes.
> > 
> The problem is that the hugetlb Kconfig stuff is a complete mess. There's
> a semi-decoupling between HUGETLBFS and HUGETLB_PAGE, though they both
> depend on each other.
> 

I believe the original intention was that HUGETLB_PAGE would build the
hugepage pool and the arch-specific code and HUGETLBFS would be the userspace
interface but not necessarily the only one. Whatever the original intention,
it's no longer the case as they have become inter-dependant. Fixing it is
not straight-forward but I don't think we want to collapse HUGETLB_PAGE and
HUGETLBFS just yet either.

> Sorting out the mess noted by Adrian is pretty trivial with a
> HAVE_HUGETLB_PAGE. How about this?
> 

While I am loathe to add yet more hugetlb-related Kconfig options, this
does seem to be the common way of dealing with features that depend on the
architecture (e.g. HAVE_OPROFILE, HAVE_IDE, HAVE_KPROBES etc.).

> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
> 

It appears to be doing the right thing making defconfig across the different
architectures.

Acked-by: Mel Gorman <mel@csn.ul.ie>

> ---
> 
>  arch/ia64/Kconfig                      |    1 +
>  arch/powerpc/platforms/Kconfig.cputype |    1 +
>  arch/sh/Kconfig                        |    2 ++
>  arch/sparc64/Kconfig                   |    1 +
>  arch/x86/Kconfig                       |    1 +
>  fs/Kconfig                             |    3 ++-
>  mm/Kconfig                             |    3 +++
>  7 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 8fa3faf..bb1e02b 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -19,6 +19,7 @@ config IA64
>  	select HAVE_OPROFILE
>  	select HAVE_KPROBES
>  	select HAVE_KRETPROBES
> +	select HAVE_HUGETLB_PAGE
>  	default y
>  	help
>  	  The Itanium Processor Family is Intel's 64-bit successor to
> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> index 0c3face..7c937ad 100644
> --- a/arch/powerpc/platforms/Kconfig.cputype
> +++ b/arch/powerpc/platforms/Kconfig.cputype
> @@ -1,5 +1,6 @@
>  config PPC64
>  	bool "64-bit kernel"
> +	select HAVE_HUGETLB_PAGE
>  	default n
>  	help
>  	  This option selects whether a 32-bit or a 64-bit kernel

hmm... This is what Kconfig is currently doing but by rights, it should be
set on a per-processor basis. I guess it's outside the scope of this patch as
there isn't an obvious way to tell what processor versions support huge pages.

> diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
> index df2e2f9..c48f629 100644
> --- a/arch/sh/Kconfig
> +++ b/arch/sh/Kconfig
> @@ -114,6 +114,7 @@ config CPU_SH3
>  
>  config CPU_SH4
>  	bool
> +	select HAVE_HUGETLB_PAGE
>  	select CPU_HAS_INTEVT
>  	select CPU_HAS_SR_RB
>  	select CPU_HAS_PTEA if !CPU_SH4A || CPU_SHX2
> @@ -130,6 +131,7 @@ config CPU_SH4AL_DSP
>  
>  config CPU_SH5
>  	bool
> +	select HAVE_HUGETLB_PAGE
>  	select CPU_HAS_FPU
>  
>  config CPU_SHX2
> diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
> index 463d1be..3045673 100644
> --- a/arch/sparc64/Kconfig
> +++ b/arch/sparc64/Kconfig
> @@ -16,6 +16,7 @@ config SPARC64
>  	bool
>  	default y
>  	select HAVE_IDE
> +	select HAVE_HUGETLB_PAGE
>  	help
>  	  SPARC is a family of RISC microprocessors designed and marketed by
>  	  Sun Microsystems, incorporated.  This port covers the newer 64-bit
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 6c70fed..d91e7b7 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -22,6 +22,7 @@ config X86
>  	select HAVE_OPROFILE
>  	select HAVE_KPROBES
>  	select HAVE_KRETPROBES
> +	select HAVE_HUGETLB_PAGE
>  	select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
>  
>  
> diff --git a/fs/Kconfig b/fs/Kconfig
> index d731282..f886ae2 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -978,7 +978,7 @@ config TMPFS_POSIX_ACL
>  
>  config HUGETLBFS
>  	bool "HugeTLB file system support"
> -	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> +	depends on HAVE_HUGETLB_PAGE || BROKEN
>  	help
>  	  hugetlbfs is a filesystem backing for HugeTLB pages, based on
>  	  ramfs. For architectures that support it, say Y here and read
> @@ -987,6 +987,7 @@ config HUGETLBFS
>  	  If unsure, say N.
>  
>  config HUGETLB_PAGE
> +	depends on MMU
>  	def_bool HUGETLBFS
>  
>  config CONFIGFS_FS
> diff --git a/mm/Kconfig b/mm/Kconfig
> index 0016ebd..3113374 100644
> --- a/mm/Kconfig
> +++ b/mm/Kconfig
> @@ -90,6 +90,9 @@ config HAVE_MEMORY_PRESENT
>  	def_bool y
>  	depends on ARCH_HAVE_MEMORY_PRESENT || SPARSEMEM
>  
> +config HAVE_HUGETLB_PAGE
> +	def_bool n
> +
>  #
>  # SPARSEMEM_EXTREME (which is the default) does some bootmem
>  # allocations when memory_present() is called.  If this cannot

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-02  8:04   ` Paul Mundt
  2008-04-02 10:15     ` Mel Gorman
@ 2008-04-02 22:55     ` Nishanth Aravamudan
  2008-04-03  0:06       ` Dave Hansen
  1 sibling, 1 reply; 8+ messages in thread
From: Nishanth Aravamudan @ 2008-04-02 22:55 UTC (permalink / raw)
  To: Paul Mundt, Nish Aravamudan, Adrian Bunk, wli, linux-sh, linux-kernel

On 02.04.2008 [17:04:48 +0900], Paul Mundt wrote:
> On Tue, Apr 01, 2008 at 04:26:14PM -0700, Nish Aravamudan wrote:
> > On 4/1/08, Adrian Bunk <bunk@kernel.org> wrote:
> > > fs/Kconfig says:
> > >
> > >  config HUGETLBFS
> > >         bool "HugeTLB file system support"
> > >         depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> > >
> > >
> > >  arch/sh/mm/Kconfig says:
> > >
> > >  choice
> > >         prompt "HugeTLB page size"
> > >         depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU
> > 
> > So the problem is that SH3 is allowed to enable
> > HUGETLB_PAGE/HUGETLBFS, but only SH4/5 define the HPAGE_SHIFT macro,
> > due to some #ifdeffery on the hugepage size. So either the choice
> > needs to be extended to include CPU_SH3 (which builds here, when
> > changed) or the HUGETLBFS conditional needs to depend more
> > specifically on SH4/5 and not just SUPERH. I think the arch maintainer
> > has to make that call, as I don't know the hardware to say if SH3
> > actually supports multiple hugepage sizes.
> > 
> The problem is that the hugetlb Kconfig stuff is a complete mess. There's
> a semi-decoupling between HUGETLBFS and HUGETLB_PAGE, though they both
> depend on each other.
> 
> Sorting out the mess noted by Adrian is pretty trivial with a
> HAVE_HUGETLB_PAGE. How about this?

I'm confused, isn't the following simpler fix equivalent?

Fix sh3 build with HUGETLBFS=y. Only SH4 and SH5 actually support
HUGETLB_PAGE (which HUGETLBFS depends on).

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>

diff --git a/fs/Kconfig b/fs/Kconfig
index d731282..1981f8e 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -978,7 +978,7 @@ config TMPFS_POSIX_ACL
 
 config HUGETLBFS
 	bool "HugeTLB file system support"
-	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
+	depends on X86 || IA64 || PPC64 || SPARC64 || ((CPU_SH4 || CPU_SH5) && MMU) || BROKEN
 	help
 	  hugetlbfs is a filesystem backing for HugeTLB pages, based on
 	  ramfs. For architectures that support it, say Y here and read

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-02 22:55     ` Nishanth Aravamudan
@ 2008-04-03  0:06       ` Dave Hansen
  2008-04-03  5:48         ` Paul Mundt
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Hansen @ 2008-04-03  0:06 UTC (permalink / raw)
  To: Nishanth Aravamudan
  Cc: Paul Mundt, Nish Aravamudan, Adrian Bunk, wli, linux-sh, linux-kernel

On Wed, 2008-04-02 at 15:55 -0700, Nishanth Aravamudan wrote:
> On 02.04.2008 [17:04:48 +0900], Paul Mundt wrote:
> > On Tue, Apr 01, 2008 at 04:26:14PM -0700, Nish Aravamudan wrote:
> > Sorting out the mess noted by Adrian is pretty trivial with a
> > HAVE_HUGETLB_PAGE. How about this?
> 
> I'm confused, isn't the following simpler fix equivalent?
> 
> Fix sh3 build with HUGETLBFS=y. Only SH4 and SH5 actually support
> HUGETLB_PAGE (which HUGETLBFS depends on).
> 
> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> 
> diff --git a/fs/Kconfig b/fs/Kconfig
> index d731282..1981f8e 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -978,7 +978,7 @@ config TMPFS_POSIX_ACL
>  
>  config HUGETLBFS
>  	bool "HugeTLB file system support"
> -	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> +	depends on X86 || IA64 || PPC64 || SPARC64 || ((CPU_SH4 || CPU_SH5) && MMU) || BROKEN

Yeah, that's equivalent.  But, you have to draw the line at some point
on how complex that "depends on" is going to get.  I think you each have
unique pain tolerances. :)

Personally, I kinda prefer to break it out per-arch, because that SUPERH
logic is getting a bit screwy.

You could also do something like this:

>  config HUGETLBFS
>  	bool "HugeTLB file system support"
> -	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> +	depends on X86 || IA64 || PPC64 || SPARC64 || SUPERH_HUGETLBFS || BROKEN

And then:

config SUPERH_HUGETLBFS
	def_bool y
	depends on (CPU_SH4 || CPU_SH5) && MMU

on the arch-specific side.  

-- Dave


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-03  0:06       ` Dave Hansen
@ 2008-04-03  5:48         ` Paul Mundt
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Mundt @ 2008-04-03  5:48 UTC (permalink / raw)
  To: Dave Hansen
  Cc: Nishanth Aravamudan, Nish Aravamudan, Adrian Bunk, wli, linux-sh,
	linux-kernel

On Wed, Apr 02, 2008 at 05:06:09PM -0700, Dave Hansen wrote:
> On Wed, 2008-04-02 at 15:55 -0700, Nishanth Aravamudan wrote:
> > On 02.04.2008 [17:04:48 +0900], Paul Mundt wrote:
> > > On Tue, Apr 01, 2008 at 04:26:14PM -0700, Nish Aravamudan wrote:
> > > Sorting out the mess noted by Adrian is pretty trivial with a
> > > HAVE_HUGETLB_PAGE. How about this?
> > 
> > I'm confused, isn't the following simpler fix equivalent?
> > 
> > Fix sh3 build with HUGETLBFS=y. Only SH4 and SH5 actually support
> > HUGETLB_PAGE (which HUGETLBFS depends on).
> > 
> > Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
> > 
> > diff --git a/fs/Kconfig b/fs/Kconfig
> > index d731282..1981f8e 100644
> > --- a/fs/Kconfig
> > +++ b/fs/Kconfig
> > @@ -978,7 +978,7 @@ config TMPFS_POSIX_ACL
> >  
> >  config HUGETLBFS
> >  	bool "HugeTLB file system support"
> > -	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> > +	depends on X86 || IA64 || PPC64 || SPARC64 || ((CPU_SH4 || CPU_SH5) && MMU) || BROKEN
> 
> Yeah, that's equivalent.  But, you have to draw the line at some point
> on how complex that "depends on" is going to get.  I think you each have
> unique pain tolerances. :)
> 
> Personally, I kinda prefer to break it out per-arch, because that SUPERH
> logic is getting a bit screwy.
> 
> You could also do something like this:
> 
> >  config HUGETLBFS
> >  	bool "HugeTLB file system support"
> > -	depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
> > +	depends on X86 || IA64 || PPC64 || SPARC64 || SUPERH_HUGETLBFS || BROKEN
> 
> And then:
> 
> config SUPERH_HUGETLBFS
> 	def_bool y
> 	depends on (CPU_SH4 || CPU_SH5) && MMU
> 
> on the arch-specific side.  
> 
SUPERH has the MMU dependence because it's the only one out of that list
of architectures that supports both CONFIG_MMU=y and CONFIG_MMU=n
configurations. The dependence on CONFIG_MMU should be tied in to the
HUGETLBFS dependency directly, which is what my patch did.

The other issue is that the dependencies here are just totally backwards.
the file system has the architecture dependence which enables support for
the hugetlb page feature, while the architectures should simply select
whether they can support the hugetlb pages or not and have the file
system conditionalized on that. A bit more work is needed to have
HUGETLBFS and HUGETLB_PAGE toggling independently of each other without
breaking, but that's certainly the next logical step.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: HugeTLB vs. SH3 cpu
  2008-04-02 10:15     ` Mel Gorman
@ 2008-04-03  5:52       ` Paul Mundt
  0 siblings, 0 replies; 8+ messages in thread
From: Paul Mundt @ 2008-04-03  5:52 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Nish Aravamudan, Adrian Bunk, wli, linux-sh, linux-kernel,
	Paul Mackerras, Benjamin Herrenschmidt

On Wed, Apr 02, 2008 at 11:15:38AM +0100, Mel Gorman wrote:
> On (02/04/08 17:04), Paul Mundt didst pronounce:
> > The problem is that the hugetlb Kconfig stuff is a complete mess. There's
> > a semi-decoupling between HUGETLBFS and HUGETLB_PAGE, though they both
> > depend on each other.
> 
> I believe the original intention was that HUGETLB_PAGE would build the
> hugepage pool and the arch-specific code and HUGETLBFS would be the userspace
> interface but not necessarily the only one. Whatever the original intention,
> it's no longer the case as they have become inter-dependant. Fixing it is
> not straight-forward but I don't think we want to collapse HUGETLB_PAGE and
> HUGETLBFS just yet either.
> 
That makes more sense, perhaps it's worth beating in to shape so there
can also be non hugetlbfs users, this needs a bit of use-case thinking,
though.

> > diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> > index 0c3face..7c937ad 100644
> > --- a/arch/powerpc/platforms/Kconfig.cputype
> > +++ b/arch/powerpc/platforms/Kconfig.cputype
> > @@ -1,5 +1,6 @@
> >  config PPC64
> >  	bool "64-bit kernel"
> > +	select HAVE_HUGETLB_PAGE
> >  	default n
> >  	help
> >  	  This option selects whether a 32-bit or a 64-bit kernel
> 
> hmm... This is what Kconfig is currently doing but by rights, it should be
> set on a per-processor basis. I guess it's outside the scope of this patch as
> there isn't an obvious way to tell what processor versions support huge pages.
> 
Yes, I had the same thoughts, perhaps the PPC64 folks can shed some light
on this.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-04-03  5:53 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-01 22:58 HugeTLB vs. SH3 cpu Adrian Bunk
2008-04-01 23:26 ` Nish Aravamudan
2008-04-02  8:04   ` Paul Mundt
2008-04-02 10:15     ` Mel Gorman
2008-04-03  5:52       ` Paul Mundt
2008-04-02 22:55     ` Nishanth Aravamudan
2008-04-03  0:06       ` Dave Hansen
2008-04-03  5:48         ` Paul Mundt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).