[PATCH] sandbox: Eliminate CONFIG_HOST_32/64BIT

Michal Suchánek msuchanek at suse.de
Fri Oct 14 13:42:07 CEST 2022


On Fri, Oct 14, 2022 at 01:33:33PM +0200, Heinrich Schuchardt wrote:
> On 10/14/22 10:33, Michal Suchánek wrote:
> > Hello,
> > 
> > On Fri, Oct 14, 2022 at 08:40:52AM +0200, Heinrich Schuchardt wrote:
> > > From: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > > 
> > > Building sandbox_defconfig on 32bit systems requires manual configuration.
> > > we should void this.
> > > 
> > > The compiler provides symbol __LP64__. This is enough to know if the host
> > > is a 64bit or a 32bit system.
> > > 
> > > Reported-by: Michal Suchanek <msuchanek at suse.de>
> > > Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > > ---
> > >   arch/sandbox/Kconfig                   | 24 ------------------------
> > >   arch/sandbox/include/asm/posix_types.h |  8 +++++++-
> > >   drivers/misc/swap_case.c               |  2 +-
> > >   include/linux/bitops.h                 |  2 +-
> > >   4 files changed, 9 insertions(+), 27 deletions(-)
> > > 
> > > diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
> > > index 852a7c8bf2..c7668233b9 100644
> > > --- a/arch/sandbox/Kconfig
> > > +++ b/arch/sandbox/Kconfig
> > > @@ -13,7 +13,6 @@ config SYS_CPU
> > >   config SANDBOX64
> > >   	bool "Use 64-bit addresses"
> > >   	select PHYS_64BIT
> > > -	select HOST_64BIT
> > 
> > eliminating the Kconfig option makes it no longer possible SANDBOX64
> > depend on building 64bit.
> 
> Looking at include/linux/bitops.h and drivers/misc/swap_case.c it was always
> wrong to use HOST_64BIT=y when building sandbox64_defconfig on an ILP32
> system.

And it will continue to be wrong when there is no config option that
SANDBOX64 can depend on so it cannot be enabled on 32bit.

Thanks

Michal

> 
> Best regards
> 
> Heinrich
> 
> > 
> > Thanks
> > 
> > Michal
> > >   config SANDBOX_RAM_SIZE_MB
> > >   	int "RAM size in MiB"
> > > @@ -41,24 +40,6 @@ config SYS_CONFIG_NAME
> > >   	default "sandbox_spl" if SANDBOX_SPL
> > >   	default "sandbox" if !SANDBOX_SPL
> > > -choice
> > > -	prompt "Run sandbox on 32/64-bit host"
> > > -	default HOST_64BIT
> > > -	help
> > > -	  Sandbox can be built on 32-bit and 64-bit hosts.
> > > -	  The default is to build on a 64-bit host and run
> > > -	  on a 64-bit host. If you want to run sandbox on
> > > -	  a 32-bit host, change it here.
> > > -
> > > -config HOST_32BIT
> > > -	bool "32-bit host"
> > > -	depends on !PHYS_64BIT
> > > -
> > > -config HOST_64BIT
> > > -	bool "64-bit host"
> > > -
> > > -endchoice
> > > -
> > >   config SANDBOX_CRASH_RESET
> > >   	bool "Reset on crash"
> > >   	help
> > > @@ -68,11 +49,6 @@ config SANDBOX_CRASH_RESET
> > >   	  test suites like the UEFI self certification test which continue
> > >   	  with the next test after a crash.
> > > -config SANDBOX_BITS_PER_LONG
> > > -	int
> > > -	default 32 if HOST_32BIT
> > > -	default 64 if HOST_64BIT
> > > -
> > >   config SYS_FDT_LOAD_ADDR
> > >   	hex "Address at which to load devicetree"
> > >   	default 0x100
> > > diff --git a/arch/sandbox/include/asm/posix_types.h b/arch/sandbox/include/asm/posix_types.h
> > > index ec18ed7e3c..0129e91122 100644
> > > --- a/arch/sandbox/include/asm/posix_types.h
> > > +++ b/arch/sandbox/include/asm/posix_types.h
> > > @@ -19,6 +19,12 @@
> > >    * assume GCC is being used.
> > >    */
> > > +#ifdef __LP64__
> > > +#define SANDBOX_BITS_PER_LONG 64
> > > +#else
> > > +#define SANDBOX_BITS_PER_LONG 32
> > > +#endif
> > > +
> > >   typedef unsigned short		__kernel_dev_t;
> > >   typedef unsigned long		__kernel_ino_t;
> > >   typedef unsigned short		__kernel_mode_t;
> > > @@ -28,7 +34,7 @@ typedef int			__kernel_pid_t;
> > >   typedef unsigned short		__kernel_ipc_pid_t;
> > >   typedef unsigned short		__kernel_uid_t;
> > >   typedef unsigned short		__kernel_gid_t;
> > > -#if CONFIG_SANDBOX_BITS_PER_LONG == 32
> > > +#if SANDBOX_BITS_PER_LONG == 32
> > >   typedef unsigned int		__kernel_size_t;
> > >   typedef int			__kernel_ssize_t;
> > >   typedef int			__kernel_ptrdiff_t;
> > > diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c
> > > index 7093ad1cd4..205ed81750 100644
> > > --- a/drivers/misc/swap_case.c
> > > +++ b/drivers/misc/swap_case.c
> > > @@ -331,7 +331,7 @@ static int sandbox_swap_case_map_physmem(struct udevice *dev,
> > >   			*ptrp = &pci_ea_bar2_magic;
> > >   			*lenp = PCI_CAP_EA_SIZE_LO;
> > >   			break;
> > > -#ifdef CONFIG_HOST_64BIT
> > > +#ifdef __LP64__
> > >   		/*
> > >   		 * This cannot be work on a 32-bit machine since *lenp is ulong
> > >   		 * which is 32-bits, but it needs to have a 64-bit value
> > > diff --git a/include/linux/bitops.h b/include/linux/bitops.h
> > > index d2e5ca026e..6456f5ad45 100644
> > > --- a/include/linux/bitops.h
> > > +++ b/include/linux/bitops.h
> > > @@ -28,7 +28,7 @@
> > >    */
> > >   #ifdef CONFIG_SANDBOX
> > >   #define GENMASK(h, l) \
> > > -	(((~0UL) << (l)) & (~0UL >> (CONFIG_SANDBOX_BITS_PER_LONG - 1 - (h))))
> > > +	(((~0UL) << (l)) & (~0UL >> (SANDBOX_BITS_PER_LONG - 1 - (h))))
> > >   #else
> > >   #define GENMASK(h, l) \
> > >   	(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
> > > -- 
> > > 2.37.2
> > > 
> 


More information about the U-Boot mailing list