Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Operating Systems Linux

Linux Kernel Developers Discuss Dropping x32 Support (phoronix.com) 202

An anonymous reader shared a report: It was just several years ago that the open-source ecosystem began supporting the x32 ABI, but already kernel developers are talking of potentially deprecating the support and for it to be ultimately removed..

[...] While the x32 support was plumbed through the Linux landscape, it really hasn't been used much. Kernel developers are now discussing the future of the x32 ABI due to the maintenance cost involved in still supporting this code but with minimal users. Linus Torvalds is in favor of sunsetting x32 and many other upstream contributors in favor of seeing it deprecated and removed.

This discussion has been archived. No new comments can be posted.

Linux Kernel Developers Discuss Dropping x32 Support

Comments Filter:
  • What is x32? (Score:5, Informative)

    by Megane ( 129182 ) on Wednesday December 12, 2018 @10:10AM (#57791936)

    Would it have hurt to include this?

    The Linux x32 ABI as a reminder requires x86_64 processors and is engineered to support the modern x86_64 features but with using 32-bit pointers rather than 64-bit pointers. The x32 ABI allows for making use of the additional registers and other features of x86_64 but with just 32-bit pointers in order to provide faster performance when 64-bit pointers are unnecessary.

    ...except for the fact that this explanation is 25% of the four-paragraph article, and another 25% of it was already in TFS. Oops.

    • Generally it would not hurt, but this is, after all, Slashdot so contributors assume a certain amount of "general knowledge".

      • by Anonymous Coward


        Generally it would not hurt, but this is, after all, Slashdot so contributors assume a certain amount of "general knowledge".

        The article is about how this technology is obscure, and barely used. By definition that means that even among tech people it's not particularly well known. I actually _did_ happen to know about it, but that's only because years ago I did a little research into the 2038 problem, which on Linux is connected to running a 32 bit OS. the x32 ABI came up in passing.

        That was several year

      • Generally it would not hurt, but this is, after all, Slashdot so contributors assume a certain amount of "general knowledge".

        An esoteric ABI so barely used that dropping its support is being considered by Linux most definitely does not qualify as general knowledge. Hell being general knowledge alone would likely be grounds for it to remain supported.

    • Comment removed based on user account deletion
    • Why so verbose? Less is usually more:

      >...began supporting the x32 ABI(which allows 64-bit code to use 32-bit pointers to reduce overhead), but already kernel developers...

    • by shoor ( 33382 )

      If I'd been writing the summary, I wouldn't have necessarily included the full techno description of what x32 ABI is, which might just be techo-babble for a lot of people, but I would have added "this has nothing to do with the old 32 bit architecture intel CPUs." somewhere early on.

    • Would it have hurt to include this?

      The Linux x32 ABI as a reminder requires x86_64 processors and is engineered to support the modern x86_64 features but with using 32-bit pointers rather than
      64-bit pointers.

      It would have required decent editors.

    • Given how many people are confused as to what x32 is, that 25% explanation in the summary clearly isn't enough.

      But, hey, never pass up an opportunity to claim, "User error, as usual!", especially when talking about obscure technologies few people even know about.

  • Does anyone have comments on how many apps made use of this? I know that's kind of nebulous, and a nebulous answer is fine.

    • Two.
    • by Junta ( 36770 )

      The intent was to provide for a memory-efficient architecture that availed itself of the richer register space of x86_64. In practice, that's not a widespread interest (limiting to 4GB of ram support on architectures that can fundamentally support a lot more). General distributions wouldn't bother touching it (a lot of work to maintain a distro for users that have *almost* as good experience with an i686 distro), embedded applications may be more interested, but even they are outgrowing 4GB and honestly d

      • Isn't it technically less than 4GB of RAM because you still need address space for PCI devices?

        • x32 was only ever a userspace ABI; the kernel is still using x86_64 and has access to the full 64-bit address space. Only applications are limited to 4GB of virtual memory per process, just like ordinary 32-bit x86 apps under a 64-bit kernel.

    • I would think it would be fairly limited. The benefit would really only be felt by programs where a large percentage of the total used memory was pointers... so perhaps large graph-analysis applications? Perhaps neural networks, where it could reduce the size of an individual "synapse" from 96 bits (64 bit pointer + 32 bit weight) to 64 bits (32bit pointer+32 bit weight), saving roughly 1/3rd of the total program memory without resorting to index-based access and the associated overhead of pointer additio

      • by _merlin ( 160982 )

        Hmm, though the other factor is cache page size - you can fit twice as many 32 bit pointers in the same cache page - so for traversing large data trees you could potentially get a significant performance boost by using smaller pointers. Provided of course that you never wanted to deal with more than 4GB of total data.

        Bingo! Cache miss latency is horrible on modern CPUs. x32 reduces your data size down a bit, particularly for things like STL structures that have pointers and sizes all over the place. It's

        • Ouch - I hadn't thought of the userland and library incompatibilities.

          That probably restricts its practical use to mostly embedded and research-related software with minimal/custom UIs, and OSS, which can recompile its 3rd-party libraries. Intersect that set with the software that works with less than 4GB of data, AND uses enough pointer-heavy data structures to justify the added difficulty...

          Yeah, even if it were well-known, I'm just not seeing a potential user base large enough to justify the maintenance

          • Another issue is that if you know for certain that you have a 32-bit program that will always be a 32-bit program, then why wouldn't you make it a 32-bit program compatible with almost every 32-bit version of Linux out there?

            When it launched, the people with 64-bit processors were purchasing them because they could reliably access more than 2 GB of RAM in user-space. Most of the operating systems and hardware architectures had configurations where the top 2 GB of RAM was reserved for operating system use.

            • by _merlin ( 160982 )

              Your argument is somewhat true for the majority of RISC processors, although you may be able to use full 64-bit registers if you know you're running on a 64-bit RISC CPU in 32-bit mode (it depends on whether the OS will save the full 64-bit register contents for a 32-bit process on context switch). This is useful if you're doing stuff like fixed-point maths where being able to work on twice as many bits at once is a big win, especially for multiplication and division. But for the most part, 64-bit version

            • An x32 program is NOT a 32 bit program though. It's a 64bit program using a 32-bit address space.

              I think _merlin covered the high points of the distinction. Basically it seems x32 combines the performance advantages of both x86 and x64, for a specific subclass of programs that don't need more than 4GB of memory or access to proprietary 3rd party libraries.

              And yes, you could possibly use 32 bit indexing instead of pointers in some situations, but that means you can't use polymorphism, have to write your ow

  • by GreyWanderingRogue ( 598058 ) on Wednesday December 12, 2018 @10:46AM (#57792146)

    Linus Torvalds is in favor of sunsetting x32 and many other upstream contributors in favor of seeing it deprecated and removed

    It looks like you missed a verb there. Either that, or Slashdot has finally come across something everyone on Slashdot can agree is "News for Nerds." One nerd attempting to assassinate a group of nerds certainly meets every possible meaning of "News for Nerds."

    • by Zocalo ( 252965 )
      On the plus side, "sunsetting" is clearly a lot of progress compared to some of Linus' previous LKML putdowns so clearly that timeout has had the intended effect in getting "some assistance on how to understand people's emotions and respond appropriately." "Sunsetting" almost sounds like it would be pleasant experience, maybe with cocktails or something...
    • Worked for Reiser. Ish.

  • How many people use it? 50? 500? I see no reason for it to exist. It's not like Open Source has too much manpower to afford supporting a queer architecture barely used by anyone.
    • Yeah I'm not sure of what the justification was to create it. The only scenario I can see is that for a short while some systems like ARM had to use it while transitioning to full 64-bit and needed a stopgap where the hardware could handle 64-bit but not all the systems were ready for it.
  • How else will I run Linux on my SEGA Genesis?

    Oh wait, x32, not 32X.

    Carry on.

  • Is surely to provide a better abstraction layer.

    I should not have to care if x32, DEC or the Prime Radiant are supported by the kernel admins. Patches should largely just work with minimal hacking.

    In turn, it should not be such hard work to maintain code. Different systems have different ways to achieve the same thing with different optimizations possible.

    All of that can be stuck in helper code, well almost all, which means there is far less maintenance.

    This is not esoteric wisdom, its the basis behind all

  • Here's the LKML post that kicked it off, if you don't want to click through: https://lkml.org/lkml/2018/12/10/1145 [lkml.org]

    I think his point #2 is probably the most "nutty", but that really does seem like an implementation detail:

    2. The way that system calls work is very strange. Most syscalls on
    x32 enter through their *native* (i.e. not COMPAT_SYSCALL_DEFINE)
    entry point, and this is intentional. For example, adjtimex() uses
    the native entry, not the compat entry, because x32's struct timex
    matches the x86_64 layou

  • by ledow ( 319597 )

    I tend to find that oddball intermediate layers like this die off rather quickly. In terms of "when I'd heard of it" to "when its death is proposed", this one is really quite quick.

    I'm surprised that x86 is still supported, let alone an oddball "64-bit processor with 32-bit pointers" hybrid setup. Surely even x86 is only more for legacy and embedded chipsets, nowadays, where I can't imagine that x32 would help at all.

    Either your chip is 64-bit capable, or not. If it is, even if there are minor advantages

  • by ReneR ( 1057034 ) on Wednesday December 12, 2018 @01:31PM (#57793086)
    Don't take the 10% advance away from me! :-/ https://t2sde.org/ [t2sde.org]
  • by Anonymous Coward

    I'm an embedded dev, and this is totally useful on any platform with 4G of memory, which is a lot of them. It is, in fact, probably the most optimal way to run an x86_64 processors on a platform that actually does not need more than 32 bits of address space. This is a non-trivial number of applications. Like, lots. There are computers beyond servers and engineering workstations ya know. Lots more. You just conveniently pretend embedded and/or purpose-built systems are designed and programmed by magic

  • I am still hoping for 8-bit support one day for the M6809 processor... Dang.

    Honestly -- I don't know why there ever was so much movement toward x64 -- everything takes more memory..

A morsel of genuine history is a thing so rare as to be always valuable. -- Thomas Jefferson

Working...