Subject: Re: [RFC] UBUNTU: [Config] y2038: Disable COMPAT and COMPAT_32BIT_TIME on ppc64le

From: Michael Ellerman <[email-masked]>
Date: Fri, 24 Nov 2023 15:59:04 +1100

Dimitri John Ledkov <[email-masked]> writes:
> BugLink: https://bugs.launchpad.net/bugs/2038587
>
> ppc64le is exclusively little endian and 64-bit, thus there is no need
> for COMPAT_32BIT_TIME, nor COMPAT.

To be pedantic, the ppc64le kernel does support running 32-bit little
endian userspace in compat mode (CONFIG_COMPAT=y). It's a distro choice
as to whether you support COMPAT. Notably there are two other major
distros that don't support COMPAT for ppc64le, and the set of 32-bit LE
software is effectively empty.

> diffconfig result of these changes is:
>
>  -ARCH_MMAP_RND_COMPAT_BITS 13
>  -ARCH_WANT_COMPAT_IPC_PARSE_VERSION y
>  -ARCH_WANT_OLD_COMPAT_IPC y
>  -COMPAT_BINFMT_ELF y
>  -COMPAT_NETLINK_MESSAGES y
>  -COMPAT_OLD_SIGACTION y
>  -HAVE_ARCH_MMAP_RND_COMPAT_BITS y
>  -KVM_COMPAT y
>  -NETFILTER_XTABLES_COMPAT y
>  -SYSVIPC_COMPAT y
>  -VDSO32 y
>   COMPAT y -> n
>   COMPAT_32BIT_TIME y -> n
>  +ARCH_HAS_SYSCALL_WRAPPER y
>  +INTERRUPT_SANITIZE_REGISTERS y
>
> What confused me, if the above combination is even valid or just pure
> dead code.
 
I don't entirely understand what that diff is saying, but I'll try and
answer anyway.

> Is it really possible to run 32bit big-endian KVM on a 64bit
> little-endian POWER?

Are you referring to KVM_COMPAT being disabled?

That's nothing to do with big-endian. It's just controlling whether the
KVM ioctls (which qemu calls) support compat handling, ie. whether you
can run a 32-bit qemu under a 64-bit kernel.

It's entirely expected that when COMPAT is turned off KVM_COMPAT also
gets turned off.

> Or is Kconfig slightly buggy and should be fixed up to prevent
> offering COMPAT options when little-endian 64bit POWER kernel is being
> configured?

No. Like I said at the top, the kernel does support 32-bit LE compat,
eventhough it's not very widely used.

cheers