2010-06-03 13:30:58

by Michal Marek

[permalink] [raw]
Subject: Re: config automatically switches from 32-bit to 64-bit for x86

On Thu, May 27, 2010 at 08:46:53PM +0200, Sam Ravnborg wrote:
> On Thu, May 27, 2010 at 11:49:16AM -0400, Christoph Hellwig wrote:
> > On Thu, May 27, 2010 at 05:37:36AM +0530, Jaswinder Singh Rajput wrote:
> > > Hello,
> > >
> > > I am trying to build 32 bit kernel image on 64-bit machine but after
> > > 'make menuconfig' it automatically switches 32-bit to 64-bit.
> > >
> > > Is this a BUG or did intentionally.
> >
> > I think it's intentional, but I'm really annoyed by this behaviour.
>
> The request when we did the merge of 32 and 64 bit was that we
> should continue to build 64bit kernels on 64 bit machines.
> And likewise for 32bit.
> Because this was what the users where used to.
>
> We could simplify metters by defining new rules.
> As you suggest that uname on an intel box always resulted in ARCH=x86.
> But then people would complain why a 32 bit kernel is default when
> the box is 64 bit.

Which is not acceptable, IMO. An x86_64 distro typically has a complete
64bit userspace including /sbin/init, so the default kernel has to be
64bit.

What about always making the prompt visible, so that the previously set
value gets reused? The downside is that 'make ARCH=i386 menuconfig' in a
clean tree on x86_64 will default to 64bit, because it will find the
setting in the config of the running 64bit kernel :(. But after manually
turning CONFIG_64BIT off, the setting will be preserved.

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index dcb0593..05ec418 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -3,7 +3,7 @@ mainmenu "Linux Kernel Configuration for x86"

# Select 32 or 64 bit
config 64BIT
- bool "64-bit kernel" if ARCH = "x86"
+ bool "64-bit kernel"
default ARCH = "x86_64"
---help---
Say yes to build a 64-bit kernel - formerly known as x86_64


2010-06-04 06:23:21

by Jaswinder Singh

[permalink] [raw]
Subject: Re: config automatically switches from 32-bit to 64-bit for x86

Hello Michal and Sam,

On Thu, Jun 3, 2010 at 7:00 PM, Michal Marek <[email protected]> wrote:
> On Thu, May 27, 2010 at 08:46:53PM +0200, Sam Ravnborg wrote:
>> On Thu, May 27, 2010 at 11:49:16AM -0400, Christoph Hellwig wrote:
>> > On Thu, May 27, 2010 at 05:37:36AM +0530, Jaswinder Singh Rajput wrote:
>> > > Hello,
>> > >
>> > > I am trying to build 32 bit kernel image on 64-bit machine but after
>> > > 'make menuconfig' it automatically switches 32-bit to 64-bit.
>> > >
>> > > Is this a BUG or did intentionally.
>> >
>> > I think it's intentional, but I'm really annoyed by this behaviour.
>>
>> The request when we did the merge of 32 and 64 bit was that we
>> should continue to build 64bit kernels on 64 bit machines.
>> And likewise for 32bit.
>> Because this was what the users where used to.
>>
>> We could simplify metters by defining new rules.
>> As you suggest that uname on an intel box always resulted in ARCH=x86.
>> But then people would complain why a 32 bit kernel is default when
>> the box is 64 bit.
>
> Which is not acceptable, IMO. An x86_64 distro typically has a complete
> 64bit userspace including /sbin/init, so the default kernel has to be
> 64bit.
>
> What about always making the prompt visible, so that the previously set
> value gets reused? The downside is that 'make ARCH=i386 menuconfig' in a
> clean tree on x86_64 will default to 64bit, because it will find the
> setting in the config of the running 64bit kernel :(. But after manually
> turning CONFIG_64BIT off, the setting will be preserved.
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index dcb0593..05ec418 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -3,7 +3,7 @@ mainmenu "Linux Kernel Configuration for x86"
>
> ?# Select 32 or 64 bit
> ?config 64BIT
> - ? ? ? bool "64-bit kernel" if ARCH = "x86"
> + ? ? ? bool "64-bit kernel"
> ? ? ? ?default ARCH = "x86_64"
> ? ? ? ?---help---
> ? ? ? ? ?Say yes to build a 64-bit kernel - formerly known as x86_64
>

This patch works !!

Thanks,
--
Jaswinder Singh.

2010-06-04 07:53:45

by Michal Marek

[permalink] [raw]
Subject: Re: config automatically switches from 32-bit to 64-bit for x86

On 4.6.2010 08:23, Jaswinder Singh Rajput wrote:
> Hello Michal and Sam,
>
> On Thu, Jun 3, 2010 at 7:00 PM, Michal Marek <[email protected]> wrote:
>> What about always making the prompt visible, so that the previously set
>> value gets reused? The downside is that 'make ARCH=i386 menuconfig' in a
>> clean tree on x86_64 will default to 64bit, because it will find the
>> setting in the config of the running 64bit kernel :(. But after manually
>> turning CONFIG_64BIT off, the setting will be preserved.
>>
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index dcb0593..05ec418 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -3,7 +3,7 @@ mainmenu "Linux Kernel Configuration for x86"
>>
>> # Select 32 or 64 bit
>> config 64BIT
>> - bool "64-bit kernel" if ARCH = "x86"
>> + bool "64-bit kernel"
>> default ARCH = "x86_64"
>> ---help---
>> Say yes to build a 64-bit kernel - formerly known as x86_64
>>
>
> This patch works !!

Does
$ make mrproper
$ make ARCH=i386 menuconfig
on x86_64 also work for you? Here, it takes CONFIG_64BIT=y from
/boot/config-`uname -r`. I see no easy way to solve this atm.

Michal

2010-06-06 04:14:40

by Jaswinder Singh

[permalink] [raw]
Subject: Re: config automatically switches from 32-bit to 64-bit for x86

Hello Michal,

On Fri, Jun 4, 2010 at 1:23 PM, Michal Marek <[email protected]> wrote:
> On 4.6.2010 08:23, Jaswinder Singh Rajput wrote:
>> Hello Michal and Sam,
>>
>> On Thu, Jun 3, 2010 at 7:00 PM, Michal Marek <[email protected]> wrote:
>>> What about always making the prompt visible, so that the previously set
>>> value gets reused? The downside is that 'make ARCH=i386 menuconfig' in a
>>> clean tree on x86_64 will default to 64bit, because it will find the
>>> setting in the config of the running 64bit kernel :(. But after manually
>>> turning CONFIG_64BIT off, the setting will be preserved.
>>>
>>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>>> index dcb0593..05ec418 100644
>>> --- a/arch/x86/Kconfig
>>> +++ b/arch/x86/Kconfig
>>> @@ -3,7 +3,7 @@ mainmenu "Linux Kernel Configuration for x86"
>>>
>>> ?# Select 32 or 64 bit
>>> ?config 64BIT
>>> - ? ? ? bool "64-bit kernel" if ARCH = "x86"
>>> + ? ? ? bool "64-bit kernel"
>>> ? ? ? ?default ARCH = "x86_64"
>>> ? ? ? ?---help---
>>> ? ? ? ? ?Say yes to build a 64-bit kernel - formerly known as x86_64
>>>
>>
>> This patch works !!
>
> Does
> $ make mrproper
> $ make ARCH=i386 menuconfig
> on x86_64 also work for you? Here, it takes CONFIG_64BIT=y from
> /boot/config-`uname -r`. I see no easy way to solve this atm.
>

Yes, this also works.

Thanks,
--
Jaswinder Singh.