All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@fr.ibm.com>
To: Michael Ellerman <mpe@ellerman.id.au>, Boqun Feng <boqun.feng@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>, Geoff Levand <geoff@infradead.org>,
	Olof Johansson <olof@lixom.net>,
	Paul Mackerras <paulus@samba.org>,
	Alistair Popple <alistair@popple.id.au>,
	Scott Wood <scottwood@freescale.com>,
	Anatolij Gustschin <agust@denx.de>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [Question] Is little endian supported on all the platforms?
Date: Mon, 31 Aug 2015 14:12:54 +0200	[thread overview]
Message-ID: <55E444C6.9070706@fr.ibm.com> (raw)
In-Reply-To: <1441019966.31779.1.camel@ellerman.id.au>

On 08/31/2015 01:19 PM, Michael Ellerman wrote:
> On Mon, 2015-08-31 at 15:53 +0800, Boqun Feng wrote:
>> On Mon, Aug 31, 2015 at 04:52:38PM +1000, Benjamin Herrenschmidt wrote:
>>> On Mon, 2015-08-31 at 14:44 +0800, Boqun Feng wrote:
>>>> Hi all,
>>>>
>>>> I hit a strange build error on v4.2, when I try to build a LE kernel
>>>> with a slightly modification of the ppc64_defconfig. What I did is just
>>>> make ppc64_defconfig and make menuconfig to set CPU_LITTLE_ENDIAN=y, and
>>>> then build the kernel.
>>>>
>>>> I did a little research myself, and found out the error is because of
>>>> trying to build a LE kernel with CONFIG_PPC_PS3=y. So a simple way to
>>>> reproduce is:
>>>
>>> First, LE isn't supported on PS/3 :-) It's only supported on POWER8
>>> machines (and *some* P7 machines and only when running as KVM guest).
>>
>> Got it, thank you ;-)
>>
>> So should we modify Kconfigs of all the platform to reflect this?
> 
> Yes. Maybe something like this?
> 
> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
> index c140e94..c359f72 100644
> --- a/arch/powerpc/platforms/Kconfig.cputype
> +++ b/arch/powerpc/platforms/Kconfig.cputype
> @@ -415,9 +415,13 @@ config VDSO32
>           big endian. That is because the only little endian configuration we
>           support is ppc64le which is 64-bit only.
>  
> +config CHOOSE_ENDIAN
> +       bool
> +
>  choice
>         prompt "Endianness selection"
>         default CPU_BIG_ENDIAN
> +       depends on CHOOSE_ENDIAN
>         help
>           This option selects whether a big endian or little endian kernel will
>           be built.
> diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
> index 604190c..32d5661 100644
> --- a/arch/powerpc/platforms/powernv/Kconfig
> +++ b/arch/powerpc/platforms/powernv/Kconfig
> @@ -18,6 +18,7 @@ config PPC_POWERNV
>         select CPU_FREQ_GOV_ONDEMAND
>         select CPU_FREQ_GOV_CONSERVATIVE
>         select PPC_DOORBELL
> +       select CHOOSE_ENDIAN
>         default y
>  
>  config OPAL_PRD
> diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
> index 54c87d5..182f485 100644
> --- a/arch/powerpc/platforms/pseries/Kconfig
> +++ b/arch/powerpc/platforms/pseries/Kconfig
> @@ -21,6 +21,7 @@ config PPC_PSERIES
>         select HOTPLUG_CPU if SMP
>         select ARCH_RANDOM
>         select PPC_DOORBELL
> +       select CHOOSE_ENDIAN
>         default y
>  
>  config PPC_SPLPAR


or like this, to be consistent with the other *_CPU configs in Kconfig.cputype :

--- 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_LITTLE_ENDIAN
        select PPC_CELL
        select USB_OHCI_LITTLE_ENDIAN
        select USB_OHCI_BIG_ENDIAN_MMIO

> 
> 
>>> But the specific problem you are having looks like a differnet issue
>>> with the PS3 boot wrapper.
>>>
>>
>> But could the reason of this be that the building process of the PS3
>> boot wrapper assumes the kernel is BE?
> 
> It looks more like we're getting confused between 32-bit and 64-bit, from your
> log:
> 
>     ld: powerpc:common64 architecture of input file `arch/powerpc/boot/ps3-head.o' is incompatible with powerpc:common output
> 
> Which says it has a .o which is 64-bit but it's trying to produce 32-bit output.
> 
> That's probably related to the PPC64_BOOT_WRAPPER stuff.

yes. This is because CPU_LITTLE_ENDIAN selects PPC64_BOOT_WRAPPER.

Cheers,

C.



> 
> cheers
> 
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
> 

  parent reply	other threads:[~2015-08-31 12:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-31  6:44 [Question] Is little endian supported on all the platforms? Boqun Feng
2015-08-31  6:52 ` Benjamin Herrenschmidt
2015-08-31  7:53   ` Boqun Feng
2015-08-31  8:31     ` Benjamin Herrenschmidt
2015-08-31 11:19     ` Michael Ellerman
2015-08-31 11:56       ` Boqun Feng
2015-09-01  1:39         ` Michael Ellerman
2015-08-31 12:12       ` Cédric Le Goater [this message]
2015-09-01  7:39         ` Boqun Feng
2015-08-31 20:40       ` Benjamin Herrenschmidt
2015-09-01  1:31         ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55E444C6.9070706@fr.ibm.com \
    --to=clg@fr.ibm.com \
    --cc=agust@denx.de \
    --cc=alistair@popple.id.au \
    --cc=arnd@arndb.de \
    --cc=boqun.feng@gmail.com \
    --cc=geoff@infradead.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=olof@lixom.net \
    --cc=paulus@samba.org \
    --cc=scottwood@freescale.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.