Message ID | 20180516081910.10067-5-ynorov@caviumnetworks.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > diff --git a/arch/Kconfig b/arch/Kconfig > index 76c0b54443b1..ee079244dc3c 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR > config ARCH_WANTS_DYNAMIC_TASK_STRUCT > bool > > +config ARCH_32BIT_OFF_T > + bool > + depends on !64BIT > + help > + All new 32-bit architectures should have 64-bit off_t type on > + userspace side which corresponds to the loff_t kernel type. This > + is the requirement for modern ABIs. Some existing architectures > + already have 32-bit off_t. This option is enabled for all such > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > + unicore32, x86_32 and xtensa. This is the complete list. Any > + new 32-bit architecture should declare 64-bit off_t type on user > + side and so should not enable this option. Do you know if this is the case for riscv and nds32, merged in the meantime? If not, I suggest you drop this patch altogether and just define force_o_largefile() for arm64/ilp32 as we don't seem to stick to "all new 32-bit architectures should have 64-bit off_t".
On Fri, 08 Jun 2018 10:32:07 PDT (-0700), catalin.marinas@arm.com wrote: > On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: >> diff --git a/arch/Kconfig b/arch/Kconfig >> index 76c0b54443b1..ee079244dc3c 100644 >> --- a/arch/Kconfig >> +++ b/arch/Kconfig >> @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR >> config ARCH_WANTS_DYNAMIC_TASK_STRUCT >> bool >> >> +config ARCH_32BIT_OFF_T >> + bool >> + depends on !64BIT >> + help >> + All new 32-bit architectures should have 64-bit off_t type on >> + userspace side which corresponds to the loff_t kernel type. This >> + is the requirement for modern ABIs. Some existing architectures >> + already have 32-bit off_t. This option is enabled for all such >> + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, >> + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, >> + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, >> + unicore32, x86_32 and xtensa. This is the complete list. Any >> + new 32-bit architecture should declare 64-bit off_t type on user >> + side and so should not enable this option. > > Do you know if this is the case for riscv and nds32, merged in the > meantime? If not, I suggest you drop this patch altogether and just > define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > "all new 32-bit architectures should have 64-bit off_t". We (RISC-V) don't have support for rv32i in glibc yet, so there really isn't a fixed ABI there yet. From my understanding the rv32i port as it currently stands has a 32-bit off_t (via __kernel_off_t being defined as long), so this change would technically be a kernel ABI break. Since we don't have rv32i glibc yet I'm not fundamentally opposed to an ABI break. Is there a concrete advantage to this?
On Fri, Jun 08, 2018 at 06:32:07PM +0100, Catalin Marinas wrote: > On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > > diff --git a/arch/Kconfig b/arch/Kconfig > > index 76c0b54443b1..ee079244dc3c 100644 > > --- a/arch/Kconfig > > +++ b/arch/Kconfig > > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR > > config ARCH_WANTS_DYNAMIC_TASK_STRUCT > > bool > > > > +config ARCH_32BIT_OFF_T > > + bool > > + depends on !64BIT > > + help > > + All new 32-bit architectures should have 64-bit off_t type on > > + userspace side which corresponds to the loff_t kernel type. This > > + is the requirement for modern ABIs. Some existing architectures > > + already have 32-bit off_t. This option is enabled for all such > > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > > + unicore32, x86_32 and xtensa. This is the complete list. Any > > + new 32-bit architecture should declare 64-bit off_t type on user > > + side and so should not enable this option. > > Do you know if this is the case for riscv and nds32, merged in the > meantime? If not, I suggest you drop this patch altogether and just > define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > "all new 32-bit architectures should have 64-bit off_t". I wrote this patch at request of Arnd Bergmann. This is actually his words that all new 32-bit architectures should have 64-bit off_t. So I was surprized when riscv was merged with 32-bit off_t (and I didn't follow nds32). If this rule is still in force, we'd better add new exceptions to this patch. Otherwise, we can drop it. Arnd, could you please comment it? Yury
On Fri, Jun 08, 2018 at 03:33:51PM -0700, Palmer Dabbelt wrote: > On Fri, 08 Jun 2018 10:32:07 PDT (-0700), catalin.marinas@arm.com wrote: > > On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > > > diff --git a/arch/Kconfig b/arch/Kconfig > > > index 76c0b54443b1..ee079244dc3c 100644 > > > --- a/arch/Kconfig > > > +++ b/arch/Kconfig > > > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR > > > config ARCH_WANTS_DYNAMIC_TASK_STRUCT > > > bool > > > > > > +config ARCH_32BIT_OFF_T > > > + bool > > > + depends on !64BIT > > > + help > > > + All new 32-bit architectures should have 64-bit off_t type on > > > + userspace side which corresponds to the loff_t kernel type. This > > > + is the requirement for modern ABIs. Some existing architectures > > > + already have 32-bit off_t. This option is enabled for all such > > > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > > > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > > > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > > > + unicore32, x86_32 and xtensa. This is the complete list. Any > > > + new 32-bit architecture should declare 64-bit off_t type on user > > > + side and so should not enable this option. > > > > Do you know if this is the case for riscv and nds32, merged in the > > meantime? If not, I suggest you drop this patch altogether and just > > define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > > "all new 32-bit architectures should have 64-bit off_t". > > We (RISC-V) don't have support for rv32i in glibc yet, so there really isn't > a fixed ABI there yet. From my understanding the rv32i port as it currently > stands has a 32-bit off_t (via __kernel_off_t being defined as long), so > this change would technically be a kernel ABI break. > > Since we don't have rv32i glibc yet I'm not fundamentally opposed to an ABI > break. Is there a concrete advantage to this? One obvious advantage is manipulating large files - if file is greater than 2G, you cannot easily mmap(), lseek() etc with 32-bit offset. Another point is unification of layuots for structures like struct stat between 32- and 64-bit worlds. On glibc side it helps to unify 32-bit and 64-bit versions of syscalls. Refer, for example this commit: 3c7f1f59cd161 (Consolidate lseek/lseek64/llseek implementations). Yury
On Fri, Jun 08, 2018 at 03:33:51PM -0700, Palmer Dabbelt wrote: > On Fri, 08 Jun 2018 10:32:07 PDT (-0700), catalin.marinas@arm.com wrote: > > On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > > > +config ARCH_32BIT_OFF_T > > > + bool > > > + depends on !64BIT > > > + help > > > + All new 32-bit architectures should have 64-bit off_t type on > > > + userspace side which corresponds to the loff_t kernel type. This > > > + is the requirement for modern ABIs. Some existing architectures > > > + already have 32-bit off_t. This option is enabled for all such > > > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > > > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > > > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > > > + unicore32, x86_32 and xtensa. This is the complete list. Any > > > + new 32-bit architecture should declare 64-bit off_t type on user > > > + side and so should not enable this option. > > > > Do you know if this is the case for riscv and nds32, merged in the > > meantime? If not, I suggest you drop this patch altogether and just > > define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > > "all new 32-bit architectures should have 64-bit off_t". nds32 was obsolete even at the time of merging (it's just that Andes have a novel idea of actually supporting their old product lines!), thus it'll be a short lived port. It doesn't matter much if it carries legacy baggage -- especially that it has existing out-of-mainline users. Not so much for riscv32, which is designed and planned to be very long lived. And has no existing _Linux_ users. > We (RISC-V) don't have support for rv32i in glibc yet, so there really isn't > a fixed ABI there yet. From my understanding the rv32i port as it currently > stands has a 32-bit off_t (via __kernel_off_t being defined as long), so > this change would technically be a kernel ABI break. > > Since we don't have rv32i glibc yet I'm not fundamentally opposed to an ABI > break. Is there a concrete advantage to this? While modern userland tends to implement LFS support, it's still opt in for individual binaries at compile time. With my (userland) porter hat on, I can tell you that no matter how you preach about using sane build systems, a terrifying portion of packages manage to fail to pass such flags. Especially for lesser-known or new architectures -- you need to specifically add the flag for every new arch for every such piece of software. Its lack is also not so easy to spot in an automated way; an experimental and hacky attempt to detect them (IIRC by checking whether the program in question imports an open/lseek/etc symbol instead of open64) is here: https://lintian.debian.org/tags/binary-file-built-without-LFS-support.html 20511 ELFs in 5953 packages! If there's no 32-bit open() (ie, it's an alias to open64()), all these bugs are immediately fixed. Well, a program can still store file size in an int, but at least there's no interface problem. On the kernel side, you avoid the need to carry syscalls and structs for 32-bit variants. This gets you less complexity and a smaller kernel. Meow!
On Sat, Jun 9, 2018 at 9:42 AM, Yury Norov <ynorov@caviumnetworks.com> wrote: > On Fri, Jun 08, 2018 at 06:32:07PM +0100, Catalin Marinas wrote: >> On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: >> > diff --git a/arch/Kconfig b/arch/Kconfig >> > index 76c0b54443b1..ee079244dc3c 100644 >> > --- a/arch/Kconfig >> > +++ b/arch/Kconfig >> > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR >> > config ARCH_WANTS_DYNAMIC_TASK_STRUCT >> > bool >> > >> > +config ARCH_32BIT_OFF_T >> > + bool >> > + depends on !64BIT >> > + help >> > + All new 32-bit architectures should have 64-bit off_t type on >> > + userspace side which corresponds to the loff_t kernel type. This >> > + is the requirement for modern ABIs. Some existing architectures >> > + already have 32-bit off_t. This option is enabled for all such >> > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, >> > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, >> > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, >> > + unicore32, x86_32 and xtensa. This is the complete list. Any >> > + new 32-bit architecture should declare 64-bit off_t type on user >> > + side and so should not enable this option. >> >> Do you know if this is the case for riscv and nds32, merged in the >> meantime? If not, I suggest you drop this patch altogether and just >> define force_o_largefile() for arm64/ilp32 as we don't seem to stick to >> "all new 32-bit architectures should have 64-bit off_t". > > I wrote this patch at request of Arnd Bergmann. This is actually his > words that all new 32-bit architectures should have 64-bit off_t. So > I was surprized when riscv was merged with 32-bit off_t (and I didn't > follow nds32). > > If this rule is still in force, we'd better add new exceptions to this > patch. Otherwise, we can drop it. > > Arnd, could you please comment it? I completely forgot about it and had assumed that it was merged long ago, sorry about that. Arnd
On Mon, Jun 11, 2018 at 09:48:02AM +0200, Arnd Bergmann wrote: > On Sat, Jun 9, 2018 at 9:42 AM, Yury Norov <ynorov@caviumnetworks.com> wrote: > > On Fri, Jun 08, 2018 at 06:32:07PM +0100, Catalin Marinas wrote: > >> On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > >> > diff --git a/arch/Kconfig b/arch/Kconfig > >> > index 76c0b54443b1..ee079244dc3c 100644 > >> > --- a/arch/Kconfig > >> > +++ b/arch/Kconfig > >> > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR > >> > config ARCH_WANTS_DYNAMIC_TASK_STRUCT > >> > bool > >> > > >> > +config ARCH_32BIT_OFF_T > >> > + bool > >> > + depends on !64BIT > >> > + help > >> > + All new 32-bit architectures should have 64-bit off_t type on > >> > + userspace side which corresponds to the loff_t kernel type. This > >> > + is the requirement for modern ABIs. Some existing architectures > >> > + already have 32-bit off_t. This option is enabled for all such > >> > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > >> > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > >> > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > >> > + unicore32, x86_32 and xtensa. This is the complete list. Any > >> > + new 32-bit architecture should declare 64-bit off_t type on user > >> > + side and so should not enable this option. > >> > >> Do you know if this is the case for riscv and nds32, merged in the > >> meantime? If not, I suggest you drop this patch altogether and just > >> define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > >> "all new 32-bit architectures should have 64-bit off_t". > > > > I wrote this patch at request of Arnd Bergmann. This is actually his > > words that all new 32-bit architectures should have 64-bit off_t. So > > I was surprized when riscv was merged with 32-bit off_t (and I didn't > > follow nds32). > > > > If this rule is still in force, we'd better add new exceptions to this > > patch. Otherwise, we can drop it. > > > > Arnd, could you please comment it? > > I completely forgot about it and had assumed that it was merged long > ago, sorry about that. Hi Arnd, There are 3 patches like this in ILP32 series that change ABI for new targets. I've submitted them in separated series: https://lkml.org/lkml/2017/9/25/574 They all seems to be acked by you. If you ready to upstream the series, I can rebase it and add riscv32 and nds32 exceptions. If Palmer and riscv people will decide to follow new rules, we can easily drop the exception. Yury
On Mon, Jun 11, 2018 at 02:27:36PM +0300, Yury Norov wrote: > On Mon, Jun 11, 2018 at 09:48:02AM +0200, Arnd Bergmann wrote: > > On Sat, Jun 9, 2018 at 9:42 AM, Yury Norov <ynorov@caviumnetworks.com> wrote: > > > On Fri, Jun 08, 2018 at 06:32:07PM +0100, Catalin Marinas wrote: > > >> On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: > > >> > diff --git a/arch/Kconfig b/arch/Kconfig > > >> > index 76c0b54443b1..ee079244dc3c 100644 > > >> > --- a/arch/Kconfig > > >> > +++ b/arch/Kconfig > > >> > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR > > >> > config ARCH_WANTS_DYNAMIC_TASK_STRUCT > > >> > bool > > >> > > > >> > +config ARCH_32BIT_OFF_T > > >> > + bool > > >> > + depends on !64BIT > > >> > + help > > >> > + All new 32-bit architectures should have 64-bit off_t type on > > >> > + userspace side which corresponds to the loff_t kernel type. This > > >> > + is the requirement for modern ABIs. Some existing architectures > > >> > + already have 32-bit off_t. This option is enabled for all such > > >> > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, > > >> > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, > > >> > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, > > >> > + unicore32, x86_32 and xtensa. This is the complete list. Any > > >> > + new 32-bit architecture should declare 64-bit off_t type on user > > >> > + side and so should not enable this option. > > >> > > >> Do you know if this is the case for riscv and nds32, merged in the > > >> meantime? If not, I suggest you drop this patch altogether and just > > >> define force_o_largefile() for arm64/ilp32 as we don't seem to stick to > > >> "all new 32-bit architectures should have 64-bit off_t". > > > > > > I wrote this patch at request of Arnd Bergmann. This is actually his > > > words that all new 32-bit architectures should have 64-bit off_t. So > > > I was surprized when riscv was merged with 32-bit off_t (and I didn't > > > follow nds32). > > > > > > If this rule is still in force, we'd better add new exceptions to this > > > patch. Otherwise, we can drop it. > > > > > > Arnd, could you please comment it? > > > > I completely forgot about it and had assumed that it was merged long > > ago, sorry about that. > > Hi Arnd, > > There are 3 patches like this in ILP32 series that change ABI for new > targets. I've submitted them in separated series: > https://lkml.org/lkml/2017/9/25/574 > > They all seems to be acked by you. If you ready to upstream the > series, I can rebase it and add riscv32 and nds32 exceptions. > > If Palmer and riscv people will decide to follow new rules, we can > easily drop the exception. Ping?
On Sun, 24 Jun 2018 23:19:50 PDT (-0700), ynorov@caviumnetworks.com wrote: > On Mon, Jun 11, 2018 at 02:27:36PM +0300, Yury Norov wrote: >> On Mon, Jun 11, 2018 at 09:48:02AM +0200, Arnd Bergmann wrote: >> > On Sat, Jun 9, 2018 at 9:42 AM, Yury Norov <ynorov@caviumnetworks.com> wrote: >> > > On Fri, Jun 08, 2018 at 06:32:07PM +0100, Catalin Marinas wrote: >> > >> On Wed, May 16, 2018 at 11:18:49AM +0300, Yury Norov wrote: >> > >> > diff --git a/arch/Kconfig b/arch/Kconfig >> > >> > index 76c0b54443b1..ee079244dc3c 100644 >> > >> > --- a/arch/Kconfig >> > >> > +++ b/arch/Kconfig >> > >> > @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR >> > >> > config ARCH_WANTS_DYNAMIC_TASK_STRUCT >> > >> > bool >> > >> > >> > >> > +config ARCH_32BIT_OFF_T >> > >> > + bool >> > >> > + depends on !64BIT >> > >> > + help >> > >> > + All new 32-bit architectures should have 64-bit off_t type on >> > >> > + userspace side which corresponds to the loff_t kernel type. This >> > >> > + is the requirement for modern ABIs. Some existing architectures >> > >> > + already have 32-bit off_t. This option is enabled for all such >> > >> > + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, >> > >> > + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, >> > >> > + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, >> > >> > + unicore32, x86_32 and xtensa. This is the complete list. Any >> > >> > + new 32-bit architecture should declare 64-bit off_t type on user >> > >> > + side and so should not enable this option. >> > >> >> > >> Do you know if this is the case for riscv and nds32, merged in the >> > >> meantime? If not, I suggest you drop this patch altogether and just >> > >> define force_o_largefile() for arm64/ilp32 as we don't seem to stick to >> > >> "all new 32-bit architectures should have 64-bit off_t". >> > > >> > > I wrote this patch at request of Arnd Bergmann. This is actually his >> > > words that all new 32-bit architectures should have 64-bit off_t. So >> > > I was surprized when riscv was merged with 32-bit off_t (and I didn't >> > > follow nds32). >> > > >> > > If this rule is still in force, we'd better add new exceptions to this >> > > patch. Otherwise, we can drop it. >> > > >> > > Arnd, could you please comment it? >> > >> > I completely forgot about it and had assumed that it was merged long >> > ago, sorry about that. >> >> Hi Arnd, >> >> There are 3 patches like this in ILP32 series that change ABI for new >> targets. I've submitted them in separated series: >> https://lkml.org/lkml/2017/9/25/574 >> >> They all seems to be acked by you. If you ready to upstream the >> series, I can rebase it and add riscv32 and nds32 exceptions. >> >> If Palmer and riscv people will decide to follow new rules, we can >> easily drop the exception. > > Ping? Sorry to be a bit slow, but we just decided to skip this current glibc release for rv32i and instead focus on getting the 32-bit ABI nice and clean for the next release. Thus we in RISC-V land are OK with taking these changes to the 32-bit kernel ABI.
diff --git a/arch/Kconfig b/arch/Kconfig index 76c0b54443b1..ee079244dc3c 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -264,6 +264,21 @@ config ARCH_THREAD_STACK_ALLOCATOR config ARCH_WANTS_DYNAMIC_TASK_STRUCT bool +config ARCH_32BIT_OFF_T + bool + depends on !64BIT + help + All new 32-bit architectures should have 64-bit off_t type on + userspace side which corresponds to the loff_t kernel type. This + is the requirement for modern ABIs. Some existing architectures + already have 32-bit off_t. This option is enabled for all such + architectures explicitly. Namely: arc, arm, blackfin, cris, frv, + h8300, hexagon, m32r, m68k, metag, microblaze, mips32, mn10300, + nios2, openrisc, parisc32, powerpc32, score, sh, sparc, tile32, + unicore32, x86_32 and xtensa. This is the complete list. Any + new 32-bit architecture should declare 64-bit off_t type on user + side and so should not enable this option. + config HAVE_REGS_AND_STACK_ACCESS_API bool help diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index d76bf4a83740..9b48c82a12f6 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -11,6 +11,7 @@ config ARC select ARC_TIMERS select ARCH_HAS_SG_CHAIN select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC + select ARCH_32BIT_OFF_T select BUILDTIME_EXTABLE_SORT select CLONE_BACKWARDS select COMMON_CLK diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 7e3d53575486..825a611a9d86 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -2,6 +2,7 @@ config ARM bool default y + select ARCH_32BIT_OFF_T select ARCH_CLOCKSOURCE_DATA select ARCH_DISCARD_MEMBLOCK if !HAVE_ARCH_PFN_VALID && !KEXEC select ARCH_HAS_DEBUG_VIRTUAL if MMU diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index d9c2866ba618..5a99c1ccad67 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -13,6 +13,7 @@ config RWSEM_XCHGADD_ALGORITHM config BLACKFIN def_bool y + select ARCH_32BIT_OFF_T select HAVE_ARCH_KGDB select HAVE_ARCH_TRACEHOOK select HAVE_DYNAMIC_FTRACE diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index cd5a0865c97f..db7ea0a9e805 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -54,6 +54,7 @@ config LOCKDEP_SUPPORT config CRIS bool default y + select ARCH_32BIT_OFF_T select HAVE_IDE select GENERIC_ATOMIC64 select HAVE_UID16 diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index af369b05fed5..9dc671f8f4a6 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig @@ -2,6 +2,7 @@ config FRV bool default y + select ARCH_32BIT_OFF_T select HAVE_IDE select HAVE_ARCH_TRACEHOOK select HAVE_PERF_EVENTS diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index 091d6d04b5e5..6fc8a034ddb6 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config H8300 def_bool y + select ARCH_32BIT_OFF_T select GENERIC_ATOMIC64 select HAVE_UID16 select VIRT_TO_BUS diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 76d2f20d525e..f6e748178292 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -4,6 +4,7 @@ comment "Linux Kernel Configuration for Hexagon" config HEXAGON def_bool y + select ARCH_32BIT_OFF_T select HAVE_OPROFILE # Other pending projects/to-do items. # select HAVE_REGS_AND_STACK_ACCESS_API diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index dd84ee194579..8d9c2244b144 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig @@ -2,6 +2,7 @@ config M32R bool default y + select ARCH_32BIT_OFF_T select HAVE_IDE select HAVE_OPROFILE select INIT_ALL_POSSIBLE diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 785612b576f7..8aafd39b5142 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -2,6 +2,7 @@ config M68K bool default y + select ARCH_32BIT_OFF_T select ARCH_MIGHT_HAVE_PC_PARPORT if ISA select ARCH_NO_COHERENT_DMA_MMAP if !MMU select HAVE_IDE diff --git a/arch/metag/Kconfig b/arch/metag/Kconfig index c7b62a339539..8bc07fa5982d 100644 --- a/arch/metag/Kconfig +++ b/arch/metag/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config METAG def_bool y + select ARCH_32BIT_OFF_T select EMBEDDED select GENERIC_ATOMIC64 select GENERIC_CLOCKEVENTS diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 3817a3e2146c..48270951c3aa 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -1,5 +1,6 @@ config MICROBLAZE def_bool y + select ARCH_32BIT_OFF_T select ARCH_HAS_GCOV_PROFILE_ALL select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_NO_COHERENT_DMA_MMAP if !MMU diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 8128c3b68d6b..3eb048042004 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2,6 +2,7 @@ config MIPS bool default y + select ARCH_32BIT_OFF_T if !64BIT select ARCH_BINFMT_ELF_STATE select ARCH_CLOCKSOURCE_DATA select ARCH_DISCARD_MEMBLOCK diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index e9d8d60bd28b..7840859b3f9f 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config MN10300 def_bool y + select ARCH_32BIT_OFF_T select HAVE_EXIT_THREAD select HAVE_OPROFILE select HAVE_UID16 diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig index 3d4ec88f1db1..9b4a9cf4af3b 100644 --- a/arch/nios2/Kconfig +++ b/arch/nios2/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config NIOS2 def_bool y + select ARCH_32BIT_OFF_T select TIMER_OF select GENERIC_ATOMIC64 select GENERIC_CLOCKEVENTS diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index 339df7324e9c..24c7c25064e5 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig @@ -6,6 +6,7 @@ config OPENRISC def_bool y + select ARCH_32BIT_OFF_T select OF select OF_EARLY_FLATTREE select IRQ_DOMAIN diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 9792d8cf4f56..93f8cecbb741 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config PARISC def_bool y + select ARCH_32BIT_OFF_T if !64BIT select ARCH_MIGHT_HAVE_PC_PARPORT select HAVE_IDE select HAVE_OPROFILE diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 73ce5dd07642..4f38ce304b78 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -134,6 +134,7 @@ config PPC # # Please keep this list sorted alphabetically. # + select ARCH_32BIT_OFF_T if PPC32 select ARCH_HAS_DEVMEM_IS_ALLOWED select ARCH_HAS_DMA_SET_COHERENT_MASK select ARCH_HAS_ELF_RANDOMIZE diff --git a/arch/score/Kconfig b/arch/score/Kconfig index d881f99c9ddd..7371e5fb18b9 100644 --- a/arch/score/Kconfig +++ b/arch/score/Kconfig @@ -3,6 +3,7 @@ menu "Machine selection" config SCORE def_bool y + select ARCH_32BIT_OFF_T select GENERIC_IRQ_SHOW select GENERIC_IOMAP select GENERIC_ATOMIC64 diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 97fe29316476..bbd75a7cbbc4 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -58,6 +58,7 @@ config SUPERH config SUPERH32 def_bool ARCH = "sh" + select ARCH_32BIT_OFF_T select HAVE_KPROBES select HAVE_KRETPROBES select HAVE_IOREMAP_PROT if MMU && !X2TLB diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 8767e45f1b2b..3cc26d90ab82 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -47,6 +47,7 @@ config SPARC config SPARC32 def_bool !64BIT + select ARCH_32BIT_OFF_T select GENERIC_ATOMIC64 select CLZ_TAB select HAVE_UID16 diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index ef9d403cbbe4..542bf49cdfcc 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig @@ -4,6 +4,7 @@ config TILE def_bool y + select ARCH_32BIT_OFF_T if !64BIT select ARCH_HAS_DEVMEM_IS_ALLOWED select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_WANT_FRAME_POINTERS diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig index 462e59a7ae78..34694eb7c790 100644 --- a/arch/unicore32/Kconfig +++ b/arch/unicore32/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 config UNICORE32 def_bool y + select ARCH_32BIT_OFF_T select ARCH_HAS_DEVMEM_IS_ALLOWED select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0fa71a78ec99..47c2f1eaa7ad 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -44,6 +44,7 @@ config X86 select ACPI_LEGACY_TABLES_LOOKUP if ACPI select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI select ANON_INODES + select ARCH_32BIT_OFF_T if X86_32 select ARCH_CLOCKSOURCE_DATA select ARCH_DISCARD_MEMBLOCK select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig index 13ed827c7c66..d1de823a8fe7 100644 --- a/arch/x86/um/Kconfig +++ b/arch/x86/um/Kconfig @@ -22,6 +22,7 @@ config 64BIT config X86_32 def_bool !64BIT select HAVE_AOUT + select ARCH_32BIT_OFF_T select ARCH_WANT_IPC_PARSE_VERSION select MODULES_USE_ELF_REL select CLONE_BACKWARDS diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index c921e8bccdc8..20ebab4fbaf6 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -4,6 +4,7 @@ config ZONE_DMA config XTENSA def_bool y + select ARCH_32BIT_OFF_T select ARCH_NO_COHERENT_DMA_MMAP if !MMU select ARCH_WANT_FRAME_POINTERS select ARCH_WANT_IPC_PARSE_VERSION diff --git a/include/linux/fcntl.h b/include/linux/fcntl.h index 27dc7a60693e..d019df946cb2 100644 --- a/include/linux/fcntl.h +++ b/include/linux/fcntl.h @@ -12,7 +12,7 @@ O_NOATIME | O_CLOEXEC | O_PATH | __O_TMPFILE) #ifndef force_o_largefile -#define force_o_largefile() (BITS_PER_LONG != 32) +#define force_o_largefile() (!IS_ENABLED(CONFIG_ARCH_32BIT_OFF_T)) #endif #if BITS_PER_LONG == 32