diff mbox

powerpc: Kconfig: remove BE-only platforms from LE kernel build

Message ID 1441583880-17824-1-git-send-email-boqun.feng@gmail.com (mailing list archive)
State Accepted
Headers show

Commit Message

Boqun Feng Sept. 6, 2015, 11:58 p.m. UTC
Currently, little endian is only supported on powernv and pseries,
however, Kconfigs still allow us to include other platforms in a LE
kernel, this may result in space wasting or even build error if some
BE-only platforms always assume they are built for a BE kernel. So just
modify the Kconfigs of BE-only platforms to remove them from being built
for a LE kernel.

For 32bit only platforms, nothing needs to be done, because
CPU_LITTLE_ENDIAN depends on PPC64. For 64bit supported platforms, add
CPU_BIG_ENDIAN to dependencies explicitly, so that these platforms will
be disabled for LE [Suggested-by: Cédric Le Goater <clg@fr.ibm.com>].

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
---
 arch/powerpc/platforms/cell/Kconfig     | 4 ++--
 arch/powerpc/platforms/maple/Kconfig    | 2 +-
 arch/powerpc/platforms/pasemi/Kconfig   | 2 +-
 arch/powerpc/platforms/powermac/Kconfig | 2 +-
 arch/powerpc/platforms/ps3/Kconfig      | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

Comments

Geoff Levand Sept. 8, 2015, 5:04 p.m. UTC | #1
On Mon, 2015-09-07 at 07:58 +0800, Boqun Feng wrote:

>  arch/powerpc/platforms/ps3/Kconfig      | 2 +-

Looks OK for PS3.

Acked-by: Geoff Levand <geoff@infradead.org>
Michael Ellerman Sept. 9, 2015, 2:26 a.m. UTC | #2
On Mon, 2015-09-07 at 07:58 +0800, Boqun Feng wrote:
> diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
> index 2f23133..808a904 100644
> --- a/arch/powerpc/platforms/cell/Kconfig
> +++ b/arch/powerpc/platforms/cell/Kconfig
> @@ -25,7 +25,7 @@ config PPC_CELL_NATIVE
>  
>  config PPC_IBM_CELL_BLADE
>  	bool "IBM Cell Blade"
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN

We end up saying this five times.

We already have PPC_BOOK3S_64 which captures the first two conditions, should
we add a PPC_BOOK3S_64_BE which expresses it all?

cheers
Boqun Feng Sept. 9, 2015, 3:25 a.m. UTC | #3
Hi Michael,

On Wed, Sep 09, 2015 at 12:26:44PM +1000, Michael Ellerman wrote:
> On Mon, 2015-09-07 at 07:58 +0800, Boqun Feng wrote:
> > diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
> > index 2f23133..808a904 100644
> > --- a/arch/powerpc/platforms/cell/Kconfig
> > +++ b/arch/powerpc/platforms/cell/Kconfig
> > @@ -25,7 +25,7 @@ config PPC_CELL_NATIVE
> >  
> >  config PPC_IBM_CELL_BLADE
> >  	bool "IBM Cell Blade"
> > -	depends on PPC64 && PPC_BOOK3S
> > +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
> 
> We end up saying this five times.
> 
> We already have PPC_BOOK3S_64 which captures the first two conditions, should
> we add a PPC_BOOK3S_64_BE which expresses it all?
> 

I'm not sure whether this is worth.. IMO, we add a config option only if

1.	we can use this config somewhere in the code, for example,
	"#ifdef CONFIG_XXX"
or

2.	we want to offer a option for users to choose.

PPC_BOOK3S_64_BE satisfies neither condition. Further more,
CONFIG_PPC64, CONFIG_PPC_BOOK3S and CONFIG_CPU_BIG_ENDIAN all are used
in some #ifdefs in current code. As a newbie of kernel, I'm happy to get
some knowledge like: "If I'm hacking PS3, then #ifndef CONFIG_PPC64 is
guaranteed to be false, so I can just ignore the code guarded by them".
But if we add a PPC_BOOK3S_64_BE, it will take a little more effort to
see this.

Regards,
Boqun
Michael Ellerman Sept. 9, 2015, 5:48 a.m. UTC | #4
On Wed, 2015-09-09 at 11:25 +0800, Boqun Feng wrote:
> Hi Michael,
> 
> On Wed, Sep 09, 2015 at 12:26:44PM +1000, Michael Ellerman wrote:
> > On Mon, 2015-09-07 at 07:58 +0800, Boqun Feng wrote:
> > > diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
> > > index 2f23133..808a904 100644
> > > --- a/arch/powerpc/platforms/cell/Kconfig
> > > +++ b/arch/powerpc/platforms/cell/Kconfig
> > > @@ -25,7 +25,7 @@ config PPC_CELL_NATIVE
> > >  
> > >  config PPC_IBM_CELL_BLADE
> > >  	bool "IBM Cell Blade"
> > > -	depends on PPC64 && PPC_BOOK3S
> > > +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
> > 
> > We end up saying this five times.
> > 
> > We already have PPC_BOOK3S_64 which captures the first two conditions, should
> > we add a PPC_BOOK3S_64_BE which expresses it all?
> 
> I'm not sure whether this is worth.. IMO, we add a config option only if
> 
> 1.	we can use this config somewhere in the code, for example,
> 	"#ifdef CONFIG_XXX"
> or
> 
> 2.	we want to offer a option for users to choose.
>
> PPC_BOOK3S_64_BE satisfies neither condition. Further more,
> CONFIG_PPC64, CONFIG_PPC_BOOK3S and CONFIG_CPU_BIG_ENDIAN all are used
> in some #ifdefs in current code. As a newbie of kernel, I'm happy to get
> some knowledge like: "If I'm hacking PS3, then #ifndef CONFIG_PPC64 is
> guaranteed to be false, so I can just ignore the code guarded by them".
> But if we add a PPC_BOOK3S_64_BE, it will take a little more effort to
> see this.

Yeah those are good points, so I'll take it as is. Thanks for thinking about it :)

cheers
Boqun Feng Sept. 18, 2015, 12:22 a.m. UTC | #5
Ping ;-)

Regards,
Boqun

On Mon, Sep 07, 2015 at 07:58:00AM +0800, Boqun Feng wrote:
> Currently, little endian is only supported on powernv and pseries,
> however, Kconfigs still allow us to include other platforms in a LE
> kernel, this may result in space wasting or even build error if some
> BE-only platforms always assume they are built for a BE kernel. So just
> modify the Kconfigs of BE-only platforms to remove them from being built
> for a LE kernel.
> 
> For 32bit only platforms, nothing needs to be done, because
> CPU_LITTLE_ENDIAN depends on PPC64. For 64bit supported platforms, add
> CPU_BIG_ENDIAN to dependencies explicitly, so that these platforms will
> be disabled for LE [Suggested-by: Cédric Le Goater <clg@fr.ibm.com>].
> 
> Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
> ---
>  arch/powerpc/platforms/cell/Kconfig     | 4 ++--
>  arch/powerpc/platforms/maple/Kconfig    | 2 +-
>  arch/powerpc/platforms/pasemi/Kconfig   | 2 +-
>  arch/powerpc/platforms/powermac/Kconfig | 2 +-
>  arch/powerpc/platforms/ps3/Kconfig      | 2 +-
>  5 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
> index 2f23133..808a904 100644
> --- a/arch/powerpc/platforms/cell/Kconfig
> +++ b/arch/powerpc/platforms/cell/Kconfig
> @@ -25,7 +25,7 @@ config PPC_CELL_NATIVE
>  
>  config PPC_IBM_CELL_BLADE
>  	bool "IBM Cell Blade"
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
>  	select PPC_CELL_NATIVE
>  	select PPC_OF_PLATFORM_PCI
>  	select PCI
> @@ -35,7 +35,7 @@ config PPC_IBM_CELL_BLADE
>  
>  config PPC_CELL_QPACE
>  	bool "IBM Cell - QPACE"
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
>  	select PPC_CELL_COMMON
>  
>  config AXON_MSI
> diff --git a/arch/powerpc/platforms/maple/Kconfig b/arch/powerpc/platforms/maple/Kconfig
> index 1ea621a..e359d0d 100644
> --- a/arch/powerpc/platforms/maple/Kconfig
> +++ b/arch/powerpc/platforms/maple/Kconfig
> @@ -1,5 +1,5 @@
>  config PPC_MAPLE
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
>  	bool "Maple 970FX Evaluation Board"
>  	select PCI
>  	select MPIC
> diff --git a/arch/powerpc/platforms/pasemi/Kconfig b/arch/powerpc/platforms/pasemi/Kconfig
> index a2aeb32..00d4b28 100644
> --- a/arch/powerpc/platforms/pasemi/Kconfig
> +++ b/arch/powerpc/platforms/pasemi/Kconfig
> @@ -1,5 +1,5 @@
>  config PPC_PASEMI
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
>  	bool "PA Semi SoC-based platforms"
>  	default n
>  	select MPIC
> diff --git a/arch/powerpc/platforms/powermac/Kconfig b/arch/powerpc/platforms/powermac/Kconfig
> index 607124b..43c6062 100644
> --- a/arch/powerpc/platforms/powermac/Kconfig
> +++ b/arch/powerpc/platforms/powermac/Kconfig
> @@ -1,6 +1,6 @@
>  config PPC_PMAC
>  	bool "Apple PowerMac based machines"
> -	depends on PPC_BOOK3S
> +	depends on PPC_BOOK3S && CPU_BIG_ENDIAN
>  	select MPIC
>  	select PCI
>  	select PPC_INDIRECT_PCI if PPC32
> diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
> index 56f2740..b27f40f 100644
> --- a/arch/powerpc/platforms/ps3/Kconfig
> +++ b/arch/powerpc/platforms/ps3/Kconfig
> @@ -1,6 +1,6 @@
>  config PPC_PS3
>  	bool "Sony PS3"
> -	depends on PPC64 && PPC_BOOK3S
> +	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
>  	select PPC_CELL
>  	select USB_OHCI_LITTLE_ENDIAN
>  	select USB_OHCI_BIG_ENDIAN_MMIO
> -- 
> 2.5.1
>
Michael Ellerman Sept. 18, 2015, 9:49 a.m. UTC | #6
On Fri, 2015-09-18 at 08:22 +0800, Boqun Feng wrote:
> Ping ;-)

Hi Boqun,

We keep track of patches in patchwork:

  http://patchwork.ozlabs.org/project/linuxppc-dev/list/?submitter=67102

So your patch won't be forgotten.

I tend to start taking patches for next after rc2, which should come out on
Sunday. So I'll probably merge this patch next week, when I do you'll get an
email.

cheers
Boqun Feng Sept. 18, 2015, 9:59 a.m. UTC | #7
On Fri, Sep 18, 2015 at 07:49:56PM +1000, Michael Ellerman wrote:
> On Fri, 2015-09-18 at 08:22 +0800, Boqun Feng wrote:
> > Ping ;-)
> 
> Hi Boqun,
> 

Hello,

> We keep track of patches in patchwork:
> 
>   http://patchwork.ozlabs.org/project/linuxppc-dev/list/?submitter=67102
> 

Good to know ;-)

> So your patch won't be forgotten.
> 
> I tend to start taking patches for next after rc2, which should come out on
> Sunday. So I'll probably merge this patch next week, when I do you'll get an
> email.
> 

Understood. Thank you!

Regards,
Boqun
Michael Ellerman Oct. 2, 2015, 7:47 a.m. UTC | #8
On Sun, 2015-06-09 at 23:58:00 UTC, Boqun Feng wrote:
> Currently, little endian is only supported on powernv and pseries,
> however, Kconfigs still allow us to include other platforms in a LE
> kernel, this may result in space wasting or even build error if some
> BE-only platforms always assume they are built for a BE kernel. So just
> modify the Kconfigs of BE-only platforms to remove them from being built
> for a LE kernel.
> 
> For 32bit only platforms, nothing needs to be done, because
> CPU_LITTLE_ENDIAN depends on PPC64. For 64bit supported platforms, add
> CPU_BIG_ENDIAN to dependencies explicitly, so that these platforms will
> be disabled for LE [Suggested-by: Cédric Le Goater <clg@fr.ibm.com>].
> 
> Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
> Acked-by: Geoff Levand <geoff@infradead.org>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/e5e16d8f3ec6973af2068897

cheers
diff mbox

Patch

diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index 2f23133..808a904 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -25,7 +25,7 @@  config PPC_CELL_NATIVE
 
 config PPC_IBM_CELL_BLADE
 	bool "IBM Cell Blade"
-	depends on PPC64 && PPC_BOOK3S
+	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
 	select PPC_CELL_NATIVE
 	select PPC_OF_PLATFORM_PCI
 	select PCI
@@ -35,7 +35,7 @@  config PPC_IBM_CELL_BLADE
 
 config PPC_CELL_QPACE
 	bool "IBM Cell - QPACE"
-	depends on PPC64 && PPC_BOOK3S
+	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
 	select PPC_CELL_COMMON
 
 config AXON_MSI
diff --git a/arch/powerpc/platforms/maple/Kconfig b/arch/powerpc/platforms/maple/Kconfig
index 1ea621a..e359d0d 100644
--- a/arch/powerpc/platforms/maple/Kconfig
+++ b/arch/powerpc/platforms/maple/Kconfig
@@ -1,5 +1,5 @@ 
 config PPC_MAPLE
-	depends on PPC64 && PPC_BOOK3S
+	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
 	bool "Maple 970FX Evaluation Board"
 	select PCI
 	select MPIC
diff --git a/arch/powerpc/platforms/pasemi/Kconfig b/arch/powerpc/platforms/pasemi/Kconfig
index a2aeb32..00d4b28 100644
--- a/arch/powerpc/platforms/pasemi/Kconfig
+++ b/arch/powerpc/platforms/pasemi/Kconfig
@@ -1,5 +1,5 @@ 
 config PPC_PASEMI
-	depends on PPC64 && PPC_BOOK3S
+	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
 	bool "PA Semi SoC-based platforms"
 	default n
 	select MPIC
diff --git a/arch/powerpc/platforms/powermac/Kconfig b/arch/powerpc/platforms/powermac/Kconfig
index 607124b..43c6062 100644
--- a/arch/powerpc/platforms/powermac/Kconfig
+++ b/arch/powerpc/platforms/powermac/Kconfig
@@ -1,6 +1,6 @@ 
 config PPC_PMAC
 	bool "Apple PowerMac based machines"
-	depends on PPC_BOOK3S
+	depends on PPC_BOOK3S && CPU_BIG_ENDIAN
 	select MPIC
 	select PCI
 	select PPC_INDIRECT_PCI if PPC32
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
index 56f2740..b27f40f 100644
--- a/arch/powerpc/platforms/ps3/Kconfig
+++ b/arch/powerpc/platforms/ps3/Kconfig
@@ -1,6 +1,6 @@ 
 config PPC_PS3
 	bool "Sony PS3"
-	depends on PPC64 && PPC_BOOK3S
+	depends on PPC64 && PPC_BOOK3S && CPU_BIG_ENDIAN
 	select PPC_CELL
 	select USB_OHCI_LITTLE_ENDIAN
 	select USB_OHCI_BIG_ENDIAN_MMIO