All of lore.kernel.org
 help / color / mirror / Atom feed
From: Helge Deller <deller@gmx.de>
To: Masahiro Yamada <masahiroy@kernel.org>,
	Randy Dunlap <rdunlap@infradead.org>
Cc: Parisc List <linux-parisc@vger.kernel.org>,
	Meelis Roos <mroos@linux.ee>,
	Linux Kernel Development <linux-kernel@vger.kernel.org>
Subject: Re: linux-parisc compile failure in current git
Date: Fri, 19 Aug 2022 15:54:45 +0200	[thread overview]
Message-ID: <39ee0ca2-48a0-755b-605c-3ce1205b9715@gmx.de> (raw)
In-Reply-To: <CAK7LNAREcSW2Hn3Ty_zTVzTCLgYnFfo=ZcibE2zif1mBWp==4A@mail.gmail.com>

On 8/19/22 14:45, Masahiro Yamada wrote:
> On Thu, Aug 18, 2022 at 5:59 AM Randy Dunlap <rdunlap@infradead.org> wrote:
>>
>> Hi--
>>
>> On 6/23/21 13:33, Helge Deller wrote:
>>> * Masahiro Yamada <masahiroy@kernel.org>:
>>>> On Thu, Jun 10, 2021 at 4:04 PM Helge Deller <deller@gmx.de> wrote:
>>>>>
>>>>> Hi Masahiro,
>>>>>
>>>>> On 6/10/21 4:03 AM, Masahiro Yamada wrote:
>>>>>> On Thu, Jun 10, 2021 at 7:50 AM Helge Deller <deller@gmx.de> wrote:
>>
>> [snip]
>>
>>>>>> But, please keep in mind that there is an issue remaining.
>>>>>>
>>>>>> Please see this code:
>>>>>>
>>>>>> ifdef CONFIG_64BIT
>>>>>> UTS_MACHINE := parisc64
>>>>>> CHECKFLAGS += -D__LP64__=1
>>>>>> CC_ARCHES = hppa64
>>>>>> LD_BFD := elf64-hppa-linux
>>>>>> else # 32-bit
>>>>>> CC_ARCHES = hppa hppa2.0 hppa1.1
>>>>>> LD_BFD := elf32-hppa-linux
>>>>>> endif
>>>>>>
>>>>>>
>>>>>> UTS_MACHINE is determined by CONFIG_64BIT.
>>>>>>
>>>>>> CONFIG_64BIT is defined only after Kconfig is finished.
>>>>>> When you are trying to configure the .config,
>>>>>> CONFIG_64BIT is not defined yet.
>>>>>> So UTS_MACHINE is always 'parisc'.
>>>>>
>>>>> Yes.
>>>>> See above, but it worked when I had SUBARCH=x86 (when running my laptop).
>>>>>
>>>>>
>>>>>> As you know, Kconfig files now have a bunch of 'cc-option' syntax
>>>>>> to check the compiler capability in Kconfig time.
>>>>>> Hence, you need to provide a proper compiler in Kconfig time too.
>>>>>>
>>>>>> When you build a 64-bit parisc kernel on a 32-bit parisc machine,
>>>>>
>>>>> Please note, that we don't have a 64-bit parisc userspace yet (just kernel).
>>>>> This means, that all builds on parisc machines are 32bit and do a
>>>>> cross-compilation to a parisc64 kernel if requested in the .config.
>>>>>
>>>>>> Kconfig is passed with CC=gcc since SUBARCH==UTS_MACHINE==parisc.
>>>>>> After Kconfig, CROSS_COMPILE=hppa64-* is set,
>>>>>> and the kernel is built by CC=hppa64-*-gcc.
>>>>>
>>>>> Right. That is the old behaviour. Based on the CONFIG_64BIT option
>>>>> the hppa64 compiler is choosen for CROSS_COMPILE.
>>>>>
>>>>>> So, Kconfig evaluated a compiletely different compiler. This is pointless.
>>>>>
>>>>> Yes, probably.
>>>>>
>>>>>
>>>>>> There are some options
>>>>>>
>>>>>> [option 1]
>>>>>>    revert the parisc bit of 23243c1ace9fb4eae2f75e0fe0ece8e3219fb4f3
>>>>>>    This will restore the functionality you may want, but
>>>>>>    as I said above, Kconfig is doing pointless things.
>>>>>
>>>>> as mentioned above: Doesn't solve the issue.
>>>>>
>>>>>> [option 2]
>>>>>>     Stop using cc-cross-prefix, and pass CROSS_COMPILE explicitly.
>>>>>>     This is what many architectures including arm, arm64 do.
>>>>>>     You need to explicitly pass CROSS_COMPILE=aarch64-linux-gnu- etc.
>>>>>>     if you are cross-compiling arm64.
>>>>>
>>>>> Might be an option, but it's not as handy as simply choosing CONFIG_64BIT
>>>>> and then things are done automatically.
>>>>>
>>>>>> [option 3]
>>>>>>     Introduce ARCH=parisc64.
>>>>>>
>>>>>>     When you are building 64-bit kernel, you can pass ARCH=parisc64
>>>>>>      A patch attached.  (but not tested much)
>>>>>
>>>>> Tried it, but doesn't work.
>>>>> asm-offsets.c is still preprocessed with 32bit compiler (gcc, not hppa20-gcc).
>>>>>
>>>>> Thanks for your help so far!
>>>>> If you like I'm happy to give you an account on a hppa64 machine to reproduce yourself.
>>>>> I'll now try to bisect where it goes wrong. There must be something else before commit 23243c1ace9fb4eae2f75e0fe0ece8e3219fb4f3.
>>>>>
>>>>> Helge
>>>>
>>>>
>>>> Sorry for my late reply.
>>>
>>> Me too.... :-(
>>
>> Sorry to jump in even later, but:
>>
>> I see that
>> $ make ARCH=parisc64 defconfig
>> does set CONFIG_64BIT.
>
> Strange. It does for me.
> masahiro@grover:~/ref/linux-next$ make ARCH=parisc64 defconfig
> *** Default configuration is based on 'generic-64bit_defconfig'
> #
> # configuration written to .config
> #
> masahiro@grover:~/ref/linux-next$ grep CONFIG_64BIT .config
> CONFIG_64BIT=y

Yes, as Randy said, this works.

>> Is there a way to do
>> $ make ARCH=parisc64 allmodconfig
>> ?
>> That does not set CONFIG_64BIT in my testing.
>> (testing on linux-next-20220817)
>
> Right.
> allmodconfig does not set CONFIG_64BIT.
>
> I think it is the same as before.

Yep.

> Is this thread related?

What thread?

> The reason is 64BIT depends on PA8X00.
>
> allmodconfig chooses PA7000 instead of PA8X00
> in the "Processor type" choice since
> PA7000 is the default.
>
>
> If you apply this patch,
>
>
>
> diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
> index 7f059cd1196a..458b8e22e240 100644
> --- a/arch/parisc/Kconfig
> +++ b/arch/parisc/Kconfig
> @@ -146,7 +146,7 @@ menu "Processor type and features"
>
>  choice
>         prompt "Processor type"
> -       default PA7000
> +       default PA8X00
>
>  config PA7000
>         bool "PA7000/PA7100"
>
> allmodconfig will start enabling CONFIG_64BIT,
> but it is up to Helge.

That patch "partly" works, in the sense that with:
make ARCH=parisc64 randconfig

you randomly end up with a 32- or 64-bit kernel.
Since "ARCH=parisc64" was given, one probably would expect a 64-bit-enabled kernel randconfig,
and with "ARCH=parisc" a 32-bit randconfig.
But, I'm not sure if this intended or not and works that way on other arches as well.

As written in the other mail, I added this patch in for-next:
https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git/commit/?h=for-next&id=34793a5d09d9122f90acfa7e8f705436d5090d4d
The downside is, you need to give a special make target: parisc_randconfig / parisc64_randconfig

Helge

  reply	other threads:[~2022-08-19 13:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-01 10:21 linux-parisc compile failure in current git Meelis Roos
     [not found] ` <1ebff319-ad1d-0b83-d0b8-e3c88a8f3e48@gmx.de>
2021-06-09 15:31   ` Meelis Roos
2021-06-09 16:34     ` John David Anglin
2021-06-09 22:49 ` Helge Deller
2021-06-10  2:03   ` Masahiro Yamada
2021-06-10  7:03     ` Helge Deller
2021-06-17  1:47       ` Masahiro Yamada
2021-06-23 20:33         ` Helge Deller
2022-08-17 20:59           ` Randy Dunlap
2022-08-19 10:38             ` Helge Deller
2022-08-19 12:45             ` Masahiro Yamada
2022-08-19 13:54               ` Helge Deller [this message]
2022-08-19 16:41                 ` Masahiro Yamada
2022-08-19 17:58                   ` Helge Deller
2022-08-20  1:22                     ` Randy Dunlap
2022-08-20  1:17                   ` Randy Dunlap
2021-06-10 15:13     ` Meelis Roos

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=39ee0ca2-48a0-755b-605c-3ce1205b9715@gmx.de \
    --to=deller@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=mroos@linux.ee \
    --cc=rdunlap@infradead.org \
    /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.