[Posted February 25, 2025 by corbet]
The conversation around the merging of a set of Rust abstractions for the kernel's DMA-mapping layer has mostly settled after Linus Torvalds made it clear that the code would be accepted. One other consequence of this decision, though, is that Christoph Hellwig has quietly stepped down from the maintenance of the DMA-mapping code. Marek Szyprowski will be the maintainer of that layer going forward. Hellwig has maintained that code for many years; his contributions will be missed.
rust?
Posted Feb 25, 2025 21:32 UTC (Tue)
by amarao (guest, #87073)
[Link] (29 responses)
So, he decided to step away, but not to tolerate existence of the Rust code (in a different subtree)?
rust?
Posted Feb 26, 2025 14:44 UTC (Wed)
by wkudla (guest, #116550)
[Link] (27 responses)
I am equally baffled by this because it's just petty bordering on childish. Rust in no way impacted his work or required him to do anything. He just didn't like it so quit in a tantrum.
rust?
Posted Feb 26, 2025 15:55 UTC (Wed)
by pizza (subscriber, #46)
[Link] (26 responses)
rust?
Posted Feb 26, 2025 16:28 UTC (Wed)
by garyvdm (subscriber, #82325)
[Link] (9 responses)
rust?
Posted Feb 26, 2025 20:39 UTC (Wed)
by smurf (subscriber, #17840)
[Link] (8 responses)
rust?
Posted Feb 26, 2025 22:03 UTC (Wed)
by jmalcolm (subscriber, #8876)
[Link] (7 responses)
rust?
Posted Feb 26, 2025 22:10 UTC (Wed)
by pizza (subscriber, #46)
[Link] (3 responses)
rust?
Posted Feb 27, 2025 0:14 UTC (Thu)
by Wol (subscriber, #4433)
[Link] (2 responses)
rust?
Posted Feb 27, 2025 7:42 UTC (Thu)
by Mook (subscriber, #71173)
[Link] (1 responses)
rust?
Posted Feb 27, 2025 9:17 UTC (Thu)
by pbonzini (subscriber, #60935)
[Link]
Theoretically yes according to the policy. In practice that's extremely unlikely to happen as it would be detected in linux-next.
rust?
Posted Feb 26, 2025 16:30 UTC (Wed)
by wkudla (guest, #116550)
[Link] (15 responses)
rust?
Posted Feb 26, 2025 16:57 UTC (Wed)
by judas_iscariote (guest, #47386)
[Link]
rust?
Posted Feb 26, 2025 17:28 UTC (Wed)
by pizza (subscriber, #46)
[Link] (13 responses)
rust?
Posted Feb 26, 2025 17:33 UTC (Wed)
by pbonzini (subscriber, #60935)
[Link]
rust?
Posted Feb 26, 2025 18:42 UTC (Wed)
by koverstreet (✭ supporter ✭, #4296)
[Link]
rust?
Posted Feb 27, 2025 9:49 UTC (Thu)
by amarao (guest, #87073)
[Link] (10 responses)
rust?
Posted Feb 27, 2025 11:00 UTC (Thu)
by Wol (subscriber, #4433)
[Link] (9 responses)
rust?
Posted Feb 27, 2025 11:21 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (8 responses)
rust?
Posted Feb 27, 2025 11:54 UTC (Thu)
by amarao (guest, #87073)
[Link] (7 responses)
rust?
Posted Feb 27, 2025 13:34 UTC (Thu)
by daroc (editor, #160859)
[Link] (6 responses)
rust?
Posted Feb 27, 2025 14:04 UTC (Thu)
by amarao (guest, #87073)
[Link] (5 responses)
rust?
Posted Feb 27, 2025 14:53 UTC (Thu)
by Wol (subscriber, #4433)
[Link] (4 responses)
rust?
Posted Feb 28, 2025 8:48 UTC (Fri)
by taladar (subscriber, #68407)
[Link] (3 responses)
rust?
Posted Feb 28, 2025 14:06 UTC (Fri)
by mathstuf (subscriber, #69389)
[Link]
Agreed. One strategy I use is to at least get my brain dump down somewhere as a seed. Then try to prod others to go through the steps of the process via the docs and to involve me in review of the results. Any missed steps (because they're "implicit" to me) get written down for posterity.
Or maybe ...
Posted Feb 27, 2025 11:27 UTC (Thu)
by CChittleborough (subscriber, #60775)
[Link]
Maintainer != Contributor
Posted Feb 25, 2025 21:39 UTC (Tue)
by PeeWee (subscriber, #175777)
[Link] (1 responses)
Christoph Hellwig only stepped down as a maintainer, which does not necessarily mean he will cease all contribution activity. In this particular case it might but that remains to be seen, so already predicting that his contributions will be missed, may be premature.
Maintainer != Contributor
Posted Feb 26, 2025 13:26 UTC (Wed)
by daroc (editor, #160859)
[Link]
I believe that Jon meant that his contributions to the maintenance of DMA would be missed; even if he continues contributing, he certainly won't be doing more of the work of a maintainer if he's not a maintainer any more.
Not only DMA-mapping, but configfs too
Posted Feb 25, 2025 23:12 UTC (Tue)
by alphyr (subscriber, #173368)
[Link]
He has also stepped down from maintaining configfs, for which there are also Rust bindings being made.
Welcome Marek
Posted Feb 26, 2025 0:24 UTC (Wed)
by jmalcolm (subscriber, #8876)
[Link]
All hail our Korean / Polish overlords
Well
Posted Feb 26, 2025 1:07 UTC (Wed)
by Phantom_Hoover (subscriber, #167627)
[Link] (11 responses)
Well, I did think that if Hellwig’s position on Rust in the kernel was as harshly opposed to Linus backed-consensus as he made out, it amounted to him losing confidence in the project and resigning would be the proper choice. But it’s a real shame it’s come to that given how willing everyone was to accommodate his practical concerns.
Well
Posted Feb 28, 2025 11:58 UTC (Fri)
by LtWorf (subscriber, #124958)
[Link] (10 responses)
I suspect he didn't believe the reassurances were real, just a way to placate things and postpone the issues down the line.
Well
Posted Feb 28, 2025 13:30 UTC (Fri)
by pizza (subscriber, #46)
[Link] (6 responses)
Well
Posted Feb 28, 2025 17:41 UTC (Fri)
by Wol (subscriber, #4433)
[Link] (5 responses)
Well
Posted Feb 28, 2025 19:23 UTC (Fri)
by pizza (subscriber, #46)
[Link] (4 responses)
Well
Posted Mar 1, 2025 22:37 UTC (Sat)
by raven667 (subscriber, #5198)
[Link]
Well
Posted Mar 1, 2025 22:57 UTC (Sat)
by khim (subscriber, #9252)
[Link]
> Meanwhile, Rust, in of itself, does not force anything of the sort
It kinda-sorta does. Lifetime markup may be perceived as part of the code, but in reality it's the documentation.
Proof: mrustc ignores it yet generates valid code.
What I find really strange is such an active resistance to it. Linux was doing that same thing for years with sparse.
Rust just turns that same thing (that was part of Linux development process for more than 20 years!) “up to eleven”.
Well
Posted Mar 2, 2025 0:41 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (1 responses)
Assume good faith, please
Posted Mar 2, 2025 0:51 UTC (Sun)
by corbet (editor, #1)
[Link]
Wol, I have asked you this before. Please assume good faith on the part of the developers involved in these discussions. Please do not attribute such base and cowardly motives to people who have worked for years to build the kernel you use and who are concerned about its ongoing maintenance. The people who are worried about Rust may well turn out to be wrong (I suspect they will), but they are not driven by fear of developers who can write a driver faster than they can. Seriously. That kind of stuff just makes the conversation harder for no good purpose.
Not all delay is bad
Posted Feb 28, 2025 19:27 UTC (Fri)
by draco (subscriber, #1792)
[Link] (2 responses)
Not all delay is bad
Posted Feb 28, 2025 19:43 UTC (Fri)
by Wol (subscriber, #4433)
[Link] (1 responses)
Not all delay is bad
Posted Feb 28, 2025 19:59 UTC (Fri)
by corbet (editor, #1)
[Link]
The "Rust video drivers" are not part of any kernel release at this point, how would you expect them to accumulate CVEs? Please, arguing for the sake of argument doesn't help anybody.
A prediction with no data to support it
Posted Feb 26, 2025 2:01 UTC (Wed)
by dowdle (subscriber, #659)
[Link] (44 responses)
A prediction with no data to support it
Posted Feb 26, 2025 3:07 UTC (Wed)
by dralley (subscriber, #143766)
[Link] (1 responses)
A prediction with no data to support it
Posted Feb 26, 2025 9:11 UTC (Wed)
by taladar (subscriber, #68407)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 6:58 UTC (Wed)
by Alterego (guest, #55989)
[Link] (7 responses)
A prediction with no data to support it
Posted Feb 26, 2025 8:46 UTC (Wed)
by jengelh (subscriber, #33263)
[Link] (6 responses)
you forgot:
- causing a stir
A prediction with no data to support it
Posted Feb 26, 2025 10:13 UTC (Wed)
by danieldk (guest, #27876)
[Link] (5 responses)
This would most likely be true for any language that is not C. In this particular stir, Hellwig even called out that he believes that the kernel will become unmaintainable if it is a cross-language codebase and that it is not about Rust specifically: https://lwn.net/ml/all/20250128092334.GA28548@lst.de/
A prediction with no data to support it
Posted Feb 26, 2025 10:56 UTC (Wed)
by jengelh (subscriber, #33263)
[Link] (4 responses)
A prediction with no data to support it
Posted Feb 26, 2025 12:12 UTC (Wed)
by Wol (subscriber, #4433)
[Link] (1 responses)
A prediction with no data to support it
Posted Feb 26, 2025 20:56 UTC (Wed)
by edomaur (subscriber, #14520)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 12:19 UTC (Wed)
by danieldk (guest, #27876)
[Link]
I'm fully in favor of multi-language projects and often work on such projects for work. I just wanted to point out that the stir caused by Hellwig was not about Rust, but about multi-language projects.
A prediction with no data to support it
Posted Feb 28, 2025 0:37 UTC (Fri)
by rgmoore (✭ supporter ✭, #75)
[Link]
In fact, the Linux kernel is one of the projects written in C and assembly. It doesn't run into the multi-language problem because the assembly is restricted to places where C is impractical, and nobody is threatening to rip out functioning C code to replace it with assembly.
A prediction with no data to support it
Posted Feb 26, 2025 10:12 UTC (Wed)
by butlerm (subscriber, #13312)
[Link] (19 responses)
It is also possible if not likely that the gradual conversion of everything to Rust will lead to a fork that retains C or even C++ as its primary language at some point. C and assembly language mostly, maybe C++ for new drivers. The main problem with those two languages right now is that the standards committees have adopted so many undefined behaviors that you have to be an expert to keep the compiler from producing output that will format your hard drive without so much as a warning in many cases. The other problems are probably resolvable, or at least well enough to be worth maintaining a kernel written in C or one of its close cousins, and possibly with decent performance too.
A prediction with no data to support it
Posted Feb 26, 2025 11:13 UTC (Wed)
by farnz (subscriber, #17727)
[Link]
The limiting factor on forks is always going to be volunteer power. If there's enough people to maintain a "no Rust" (or "no C", or "no C++", or "no Zig", or "only FSF-approved licensing") fork of the kernel, it'll happen; further, the kernel's development methodology (going right back to the Alan Cox forks of the kernel) has always demonstrated a talent for merging in bits from forks wherever there's an advantage to doing so.
As a result, the fork is either going to be neutral (no gain for the mainline, no loss either, since the people working on it wouldn't work on mainline if they had to deal with mainline's choice of languages), or beneficial (since mainline can take the improvements from them).
A prediction with no data to support it
Posted Feb 26, 2025 12:18 UTC (Wed)
by tialaramex (subscriber, #21167)
[Link] (17 responses)
A prediction with no data to support it
Posted Feb 26, 2025 12:50 UTC (Wed)
by excors (subscriber, #95769)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 14:10 UTC (Wed)
by butlerm (subscriber, #13312)
[Link] (10 responses)
A prediction with no data to support it
Posted Feb 26, 2025 17:02 UTC (Wed)
by matthias (subscriber, #94967)
[Link] (9 responses)
A prediction with no data to support it
Posted Feb 27, 2025 0:50 UTC (Thu)
by neggles (subscriber, #153254)
[Link]
A prediction with no data to support it
Posted Feb 27, 2025 1:56 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link] (6 responses)
A prediction with no data to support it
Posted Feb 27, 2025 7:31 UTC (Thu)
by matthias (subscriber, #94967)
[Link] (2 responses)
Architecture, microarchitecture, and undefined behaviour
Posted Feb 28, 2025 8:24 UTC (Fri)
by anton (subscriber, #25547)
[Link] (1 responses)
So what are the semantics if you corrupt the stack and as a consequence jump to uninitialized memory or memory that you intentionally filled with random data to construct a key or even worse, memory filled by data controlled by an attacker. By the very definition of the instruction set anything can happen.Not at all. First of all, the architectural effects of every instruction up to that point continue to hold, while, e.g., in C++ undefined behaviour is reportedly allowed to time-travel. Next, in a well-designed architecture what happens then is defined by the actual content of the memory and the architecture description, which does not contain undefined behaviour (remember, we are discussing well-designed architectures). Maybe you as programmer do not deem it worth reasoning about this case and just want to put the label "undefined behaviour" on it, but as far as the architecture is concerned, the behaviour is defined.
An optimizing out-of-order architecture in the CPU.The architecture does not specify out-of-order execution, on the contrary, it specifies that each instruction is executed one by one. There may be a microarchitecture with out-of-order execution like the Pentium Pro below it, or a microarchitecture with in-order execution like the 486, but the end result of executing a sequence of instructions is the same (except for the few cases where the architectures differ; IIRC the CMOVcc instructions were in the Pentium Pro, but not the 486).
And this [micro]architecture makes similar assumptions on what can happen vs. what cannot happen. And again, you can call this behavior by different names, but it is essentially undefined.Computer architects have learned what later became Hyrum's law long ago, and therefore define completely (or almost completely for not-so-well designed architectures) what happens under what circumstances. Microarchitectures implement the architectures, and they do not assume that something cannot happen when it actually can. When the microarchitects fail at implementing the architecture, as with Zenbleed, that's a bug.
The CPU does not have the global sense of what is going on as the compiler, but messing up locally is enough to corrupt your data.Microarchitectures with out-of-order execution do not commit any changes that do not become architectural, and therefore do not corrupt data (rare architecture-implementation bugs like Zenbleed excepted).
Architecture, microarchitecture, and undefined behaviour
Posted Feb 28, 2025 14:01 UTC (Fri)
by mathstuf (subscriber, #69389)
[Link]
A prediction with no data to support it
Posted Feb 27, 2025 12:31 UTC (Thu)
by excors (subscriber, #95769)
[Link] (2 responses)
A prediction with no data to support it
Posted Feb 28, 2025 8:55 UTC (Fri)
by taladar (subscriber, #68407)
[Link]
UB is not really just a single undefined operation, it is more what happens as a consequence of relying on an invariant the optimizer assumes that then gets broken, e.g. you could have a piece of code that relies on the invariant that an enum discriminant is only ever 0, 1 or 2 and optimizes a jump to go to a base address plus the discriminant multiplied by 8 without checking bounds so if that invariant is broken you end up literally jumping to memory that could have any kind of code and so the behavior is undefined and could launch missiles for all we know.
A prediction with no data to support it
Posted Feb 28, 2025 9:18 UTC (Fri)
by anton (subscriber, #25547)
[Link]
E.g. on x86 there's the BSF/BSR instructions ("If the content of the source operand is 0, the content of the destination operand is undefined"). Many instructions leave flags in an undefined state. With memory accesses to I/O address space, "The exact order of bus cycles used to access unaligned ports is undefined". Running the same machine code on different CPUs can give different behaviour, in the same way that running the same C code through different compilers (or the same compiler with different optimisation flags) can give different behaviour, with no documentation of what will happen, so I think it's reasonable to equate that to C's concept of UB.C language lawyers make a fine-grained difference between different forms of lack of specification in the C standard. IIRC they have "unspecified value" for cases where the result of an operation is unspecified (as in the BSF/BSR case and the unspecified flags results). I think they do not have a special name for an unspecified order.(And the C standard says UB specifically means "behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this document imposes no requirements", so it's not literally dependent on there being an optimising compiler.)
And while I agree with the idea that the C standards committee originally used "undefined behaviour" for cases where different implementations produced different behaviour, and where they did not have a more specific term (such as "unspecified value"), for several decades C compiler writers have used "undefined behaviour" to assume that this behaviour does not occur in the programs they support (unless the program is "relevant" for some reason), and there are people around that advocate the position that this has been the intent of "undefined behaviour" from the start.
And the latter form of "undefined behaviour" has quite different results from the former; e.g., with the latter form a loop with an out-of-bounds access can be "optimized" into an endless loop, while with the former form it will perform the memory access, either giving a result, or producing something like a SIGSEGV.
In practice, all the undefined/unpredictable CPU behaviour that's accessible from userspace is probably documented internally by Intel/Arm for backward compatibility and security reasonsEspecially backwards-compatibility; the security benefits fall out from that. As for the bad design in the ARM architectures, maybe they have had too much contact with compiler people and become infected by them. I expect that at some point the implementors of ARM architectures will find that existing programs break when they implement some of the ARM-undefined behaviour in a way different than earlier implementations of that architecture, and that behaviour then becomes an unofficial part of the architecture, as for the Intel and AMD cases mentioned above. A well-designed architecture avoids this pitfall from the start.
A prediction with no data to support it
Posted Feb 27, 2025 3:18 UTC (Thu)
by raof (subscriber, #57409)
[Link]
Then there is the JVM way of doing things. Use a virtual machine and only code against the virtual machine. I do not see how this should work in the kernel. Also you need a language to write the virtual machine in.
There was a very interesting research OS at Microsoft that did exactly this - Singularity. A bit of bootstrap written in assembly, then jumping into a fully managed environment written in a variant of C# (called Sing#, which was the source of a bunch of C# features over time). Being fully managed meant that one of the core weaknesses of microkernels - context switch overhead - didn't exist, because it just didn't use the process-isolation hardware.
There's a really interesting series of blog posts about Midori, the very-nearly-complete project to replace Windows with a Singularity-derived codebase.
Rust will not reduce platforms
Posted Feb 26, 2025 22:23 UTC (Wed)
by jmalcolm (subscriber, #8876)
[Link] (3 responses)
Rust will not reduce platforms
Posted Mar 1, 2025 18:32 UTC (Sat)
by mfuzzey (subscriber, #57966)
[Link] (2 responses)
Rust will not reduce platforms
Posted Mar 3, 2025 10:24 UTC (Mon)
by taladar (subscriber, #68407)
[Link]
The real question is why do those niche platforms have such an overwhelming impact on Linux development decisions despite largely being out of production for decades?
Rust will not reduce platforms
Posted Mar 5, 2025 0:59 UTC (Wed)
by edgewood (subscriber, #1123)
[Link]
Are there kernel architectures that are not supported by Rust that can support new devices in need of new drivers? My understanding is that all but one of the kernel architectures not supported by Rust are legacy architectures that are out of manufacturing. Are they really getting new devices? Can you point me to a concrete example of one of these?
A prediction with no data to support it
Posted Feb 27, 2025 0:44 UTC (Thu)
by Cyberax (✭ supporter ✭, #52523)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 17:28 UTC (Wed)
by magnus (subscriber, #34778)
[Link] (13 responses)
I wonder if it is even possible to rewrite the core kernel (like mm, page fault and irq handling, core scheduling code etc) in Rust in a meaningful way or will you just end up with a huge "blob" of unsafe code in the middle that gives no real benefit over the C version?
A prediction with no data to support it
Posted Feb 26, 2025 17:49 UTC (Wed)
by mb (subscriber, #50428)
[Link] (11 responses)
A prediction with no data to support it
Posted Feb 26, 2025 21:56 UTC (Wed)
by Wol (subscriber, #4433)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 22:01 UTC (Wed)
by magnus (subscriber, #34778)
[Link] (9 responses)
I don't disagree with what you write and i think Rust can be great for that kind of code but the core of Linux is a lot more complex than a basic bare metal os. You have all the SMP concurrency issues, page faults and interrupts happening on multiple cpus and io dma flying in and out all at the same time etc, all aggressively optimized. Can what the Linux kernel is doing be expressed in the Rust "framework"? Maybe it can. I dont know Linux or Rust deeply enough to know the answer.
A prediction with no data to support it
Posted Feb 27, 2025 3:03 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link] (7 responses)
A prediction with no data to support it
Posted Feb 27, 2025 3:17 UTC (Thu)
by NYKevin (subscriber, #129325)
[Link]
Note also that many of those rules can be expressed in most languages that have visibility restrictions, not just in Rust. Rust is special mostly because of the "after / no longer" rule, the "may not outlive" rule, all of the thread-related rules, and the fact that it can enforce these rules with zero runtime cost.
A prediction with no data to support it
Posted Feb 27, 2025 4:31 UTC (Thu)
by draco (subscriber, #1792)
[Link]
A prediction with no data to support it
Posted Feb 28, 2025 17:23 UTC (Fri)
by magnus (subscriber, #34778)
[Link] (4 responses)
A prediction with no data to support it
Posted Mar 3, 2025 11:23 UTC (Mon)
by laarmen (subscriber, #63948)
[Link]
Use of unsafe in kernel Rust code
Posted Mar 3, 2025 12:02 UTC (Mon)
by farnz (subscriber, #17727)
[Link] (2 responses)
The goal isn't to remove unsafe completely when you're writing a kernel; rather, you want to constrain it to small chunks of code that are easily verified by a human reader. For example, it's completely reasonable to require unsafe when you're changing paging related registers, since you're changing something underneath yourself that the compiler cannot check, and that can completely break all the safety promises Rust has verified.
It does tend to be true in practice that you can encapsulate your unsafe blocks behind zero-overhead safe abstractions (e.g. having a lock type that is unsafe to construct because it depends on all CPUs running kernel code, not userspace), but that's an observation about code, not a requirement to benefit; even without that encapsulation, you benefit by reducing the scope of unsafe blocks so that it's easier to verify the remaining bits.
Use of unsafe in kernel Rust code
Posted Mar 4, 2025 3:50 UTC (Tue)
by magnus (subscriber, #34778)
[Link] (1 responses)
Use of unsafe in kernel Rust code
Posted Mar 4, 2025 10:23 UTC (Tue)
by farnz (subscriber, #17727)
[Link]
You may have to weaken it as compared to #![forbid(unsafe_code)], but that's still a lot stronger than you get from plain C. Bubbling up unsafe to a high level is absolutely fine, though - it just tells callers that there's safety promises that Rust can't check, but relies on you checking manually instead.
And even in the kernel, the hard distinction makes a lot of sense; the point of unsafe is that the "unsafe superpowers" allow you to cause "spooky action at a distance" by breaking the rules of the abstract machine. The core purpose of the unsafe/safe distinction is to separate out these two classes of code, so that you can focus review efforts on ensuring that unsafe code doesn't break the rules of the machine, and hence that bugs can be found by local reasoning around the area of code with a bug.
The problem that Unsafe Rust and C both share is that a bug doesn't have to have local symptoms; for example, a bug in an in-kernel cipher used for MACsec can result in corruption of another process's VMA structures, causing the damaged process to crash for no apparent reason. That means that you have to understand the entire codebase to be certain of finding the cause of a bug; Safe Rust at least constrains the impact of a bug in the code to the things that code is supposed to be touching, so you can (e.g.) rule out all parts of the Safe Rust codebase that don't touch VMAs if what you're seeing is a corrupt VMA.
A prediction with no data to support it
Posted Feb 27, 2025 5:50 UTC (Thu)
by mb (subscriber, #50428)
[Link]
A prediction with no data to support it
Posted Feb 26, 2025 18:10 UTC (Wed)
by asahilina (subscriber, #166071)
[Link]
Quiet quitting
Posted Feb 26, 2025 8:59 UTC (Wed)
by jezuch (subscriber, #52988)
[Link]
Thank you, Christoph.
Posted Feb 26, 2025 9:12 UTC (Wed)
by hailfinger (subscriber, #76962)
[Link] (1 responses)
Christoph Hellwig has been cleaning up many parts of the kernel, making it more maintainable and ensuring long-term viability of the codebase.
From an outsider's point of view, some of those cleanups probably have also benefited the effort to include Rust in the kernel because (some of) the burden of cleaning up interfaces before others could create Rust bindings was shouldered by Christoph.
Thank you, Christoph.
Posted Feb 26, 2025 11:29 UTC (Wed)
by tlamp (subscriber, #108540)
[Link]
A sincere thank-you to Christoph for years of hard work in a difficult and critical area
Posted Feb 26, 2025 10:15 UTC (Wed)
by sdalley (subscriber, #18550)
[Link] (1 responses)
Doing DMA right is inherently really hard. A multitude of tricky low-level issues around multithreading and resourse contention, interrupt handling, address spaces, memory allocation and protection, and weird and cantankerous hardware devices can come into play, to say nothing of making it work across a plethora of different CPU platforms. My hat's off to Christoph, and all who have made this all work and kept it working over the years.
A sincere thank-you to Christoph for years of hard work in a difficult and critical area
Posted Feb 27, 2025 11:59 UTC (Thu)
by taladar (subscriber, #68407)
[Link]
Sounds to me like the exact kind of code where investing in better tooling and language features would be a good idea.