[RFC PATCH 0/9] simplified UML/NOMMU approach
Johannes Berg <[email protected]> Mon, 20 Jul 2026 20:26:50 +0200
| Newsgroups | gmane.linux.uml.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, After Hajime's talk at netdevconf 0x1A I was this time really tempted into implementing an approach to NOMMU UML that I'd thought about quite a while ago, and here's the resulting code. I had prototyped some of this with LLM help, but now have pretty much reworked most of it (except boilerplate). Instead of using a wholly new architectural interface, new process/thread handling, new seccomp machinery etc. this just reuses all the existing infrastructure (we're not in fact trying to run UML on nommu, but run _as_ nommu), but makes runner processes for each CPU instead of each userspace MM (as it would be on MMU). This eventually results in a far simpler implementation that doesn't have all the complexity of the syscall handling yet again. It's also more capable: - continues working with ptrace - doesn't require disabling SMP (just has a runner per CPU) - should work on 32-bit (untested) - keeps physmem FD, which in theory should allow virtio PCI devices, but PCI doesn't build on !MMU right now However, it does go in an entirely different direction and while it doesn't entirely close off all things for optimisations wrt. syscall speed that the much older versions of the NOMMU patchset did, it does create the infrastructure in a way that doesn't make that easier. Personally, I think the only real use case for this whole thing is NOMMU testing (which was requested), and we don't really need everything else. Note: the futex thing seems odd. I mirrored the existing implementation, but I think it's just wrong. There's a FIXME in the code for now. It does boot ghcr.io/thehajime/alpine:3.20.3-um-nommu as was documented before. johannes