Linus Torvalds has come out strong against proposed support for RISC-V big endian capabilities within the Linux kernel.

In response to a mailing list comment whether RISC-V big endian "BE" patches being worked on would be able to make it for this current Linux kernel cycle. Linus Torvalds initially wrote:

"Oh Christ. Is somebody seriously working on BE support in 2025?

WHY?

Seriously, that sounds like just stupid. Is there some actual real reason for this, or is it more of the "RISC-V is used in academic design classes and so people just want to do endianness for academic reasons"?

Because I'd be more than happy to just draw a line in the sand and say "New endianness problems are somebody ELSES problem", and tell people to stop being silly.

Let's not complicate things for no good reason. And there is NO reason to add new endianness.

RISC-V is enough of a mess with the millions of silly configuration issues already. Don't make it even worse.

Tell people to just talk to their therapists instead. That's much more productive."

all 6 comments

sorted by: hot top controversial new old
[–] 2 points 1 year ago

Um, stop holding back, Linus.

  • source
  • [–] -4 points 1 year ago (4 children)

    This attitude is exactly why I try to stay away from Linux. Bring on the downvotes, I don't care.

    I refuse to separate the art from the artist, which is what boycotting in general really is IMO.

    It's like being gifted a haunted house. Technically the house is structurally sound, the design of the house itself is not a problem... but even just being outside around the house makes me feel uneasy. I don't like what happens on the inside OR the outside, and I just prefer to stay away from it.

  • source
  • hideshow 4 child comments
  • [–] 3 points 1 year ago (3 children)

    To each his own.

    Personally, I would want to live in a house where someone loudly reacts to somebody suggesting to remove a load-bearing wall for cosmetic reasons. I do not want them to pretend that it is a reasonable suggestion. Speak plainly!

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 1 year ago* (2 children)

    I think it is very possible to speak plainly and even rather assertively without actually devolving into personal attacks and abusive tones, and I don't think it's too much to ask. I would even suggest that it would be better for everyone if we could all just be a little bit nicer.

    Example from Linus:

    This code is GARBAGE.

    A better way to get the same point across:

    This code does not make any sense to me.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 year ago (1 child)

    it would be better for everyone if we could all be a little bit nicer

    I agree with that

    personal attacks

    I agree, personal attacks are bad

    “this code does not make any sense to me”

    But here is the problem. Your two versions are not the same. The problem is not that Linus does not understand the code. The issue is that he does.

    I believe strongly that high performance culture requires that it be absolutely ok to talk about the quality of an idea or about the work and that this NOT be seen as attacking the person.

    “You are an idiot” is not ok. “This code is garbage” has to be (at least from the guy whose job it is to determine code quality). You can say “this code is very low quality” or “this code is totally unacceptable” if you like.

    Co-pilots will allow pilots crash planes out of respect. Engineers allow bad designs to crash planes too. Neither of these are preferable to speaking openly and plainly, at least not in my view.

    Lives absolutely depend on the Linux kernel. It is ridiculous to say they do not. What do we value more, comfort or safety?

    Please be nice. Please also say exactly what you mean. At work at least. Suffering fools gladly is a better strategy at play and at home.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 year ago*

    The problem is not that Linus does not understand the code

    I think it depends on the definition of "understand" in this context. In my example I used the words "does not make sense", but I did not quantify what that meant.

    It could be interpreted as making sense in the context of doing things in a way that's acceptable to him.

    If that doesn't "make sense" to you either, feel free to insert whatever other wording gets your point across, but I think you understand what I'm trying to say, which is that I think there is still room to be much nicer than Linus currently is, without losing the intended effect, but at the same time also not angering near as many people for (IMO) unnecessary reasons.

  • source
  • parent
  • 16 comments in c/linux@programming.dev view that post
    [–] 58 points 1 year ago* (2 children)

    He's right. I think it was really a mistake for RISC-V to support it at all, and any RISC-V CPU that implements it is badly designed.

    This is the kind of silly stuff that just makes RISC-V look bad.

    Couldn't agree more. RISC-V even allows configurable endianness (bi-endian). You can have Machine mode little endian, supervisor mode big endian, and user mode little endian, and you can change that at any time. Software can flip its endianness on the fly. And don't forget that instruction fetch ignores this and is always little endian.

    Btw the ISA manual did originally have a justification for having big endian but it seem to have been removed:

    We originally chose little-endian byte ordering for the RISC-V memory system because little-endian systems are currently dominant commercially (all x86 systems; iOS, Android, and Windows for ARM). A minor point is that we have also found little-endian memory systems to be more natural for hardware designers. However, certain application areas, such as IP networking, operate on big-endian data structures, and certain legacy code bases have been built assuming big-endian processors, so we have defined big-endian and bi-endian variants of RISC-V.

    This is a really bad justification. The cost of defining an optional big/bi-endian mode is not zero, even if nobody ever implements it (as far as I know they haven't). It's extra work in the specification (how does this interact with big endian?) in verification (does your model support big endian?) etc.

    Linux should absolutely not implement this.

  • source
  • hideshow 2 child comments
  • [–] 33 points 1 year ago (1 child)

    I agree with him tbh. There is no reason for endianness except we used to not agree on a single one. And as far as I'm aware, pretty much everything is LE at this point (when it comes to processor architecture)

  • source
  • hideshow 1 child comment
  • [–] 12 points 1 year ago (7 children)

    Mmmmm I don't understand any of that lol

    The mainline kernel is for mainline development. Not for random experiments that make the world a worse place.

    And yes, we're open source, and that very much means that anybody is more than welcome to try to prove me wrong.

    If it turns out that BE RISC-V becomes a real thing that is relevant and actually finds a place in the RISC-V ecosystem, then of_course we should support it at that point in the mainline kernel.

    But I really do think that it actually makes RISC-V only worse, and that we should not actively help the fragmentation."

    I was worried this meant he was voicing disapproval for RISC-V in general, but he's actually just taking about an implementation or maybe particular part instruction set or something?

    I'd be curious how other RISC-V knowledgeable folks feel, whether they agree or disagree

  • source
  • hideshow 7 child comments
  • [–] 27 points 1 year ago (4 children)

    Big endian is a byte order scheme. For registers and memory. If I'm not mistaken, pretty much all modern systems these days are little endian. The differences can largely be mitigated at the operating system level. But it definitely invites new chaos back into the equation. If programs don't get their bytes in the right order, it will be garbage in garbage out everywhere. Try playing an old PCM wave file from a 68k based Macintosh or Amiga on a PC.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 13 points 1 year ago* (1 child)

    Try playing an old PCM wave file from a 68k based Macintosh or Amiga on a PC.

    I really appreciate how specific this is. It sounds like it’s from experience.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 16 points 1 year ago* (last edited 1 year ago)

    It 100% is. I have distinct memories back in the 80s of getting a hold of files off of FidoNet, etc. and trying to play them only to find out they were big endian files. It sounded like a mildly uncomfortable shoggoth in a blender. It had nothing on the dulcet tones of dial up modems.

  • source
  • parent
  • [–] 4 points 1 year ago

    The differences can largely be mitigated at the operating system level.

    Exactly. And that also means that they have to be mitigated at the OS level and in this case, the kernel level.
    It would usually be fine if the system had nothing other than RAM and fixed storage, but anything else (as simple as keyboard drivers and stuff) and you will need to make the program accordingly. Maybe even SATA would require handling endianness.

    Honestly, I thought that they already handled endianness, due to how many different things Linux works on.
    But if it doesn't then I don't see there being much of a requirement.

    For networking devices and such, I'd rather favour more customised solutions either way.

  • source
  • parent
  • [–] 9 points 1 year ago (1 child)

    There aren't currently any RISC-V hardware implementations that support big endian (although I guess someone must have tried it on a simulator), so supporting it in the Linux kernel is about as useful as supporting any other hypothetical CPU that only exists on paper. The mainline kernel is meant for computers that exist in the real world, so supporting BE RISC-V should only happen after such CPUs have actually been made. As things stand, there's nothing to suggest that anyone will bother making them, so the Linux maintainers shouldn't bother supporting them.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 6 points 1 year ago

    Tell people to just talk to their therapists instead. That’s much more productive.

    I'm just going to say it: 50% of foss projects wouldn't exist if their devs could afford therapy

  • source
  • [–] 6 points 1 year ago (1 child)

    Why does this Linus Torvalds person care how I eat my eggs?

  • source
  • hideshow 1 child comment
  • [+] -8 points 1 year ago

    At least his own therapist has helped him express himself only a little unprofessionally.

  • source