Closed klange closed 5 years ago
Specifically:
lfbvideo
does a lot of this to map framebuffers. Can we possibly only map the framebuffer for a consumer process, maybe upon opening the device?e1000
maps an MMIO region, which the IRQ handler needs, so that needs to be global.vbox
has a small mapping also needed by the IRQ handler.Preallocating the page tables for higher memory worked to resolve this issue, but I don't think it's a good long-term solution.
Currently, several modules (especially driver modules) have issues with page mappings the require them to be loaded at boot. These can be fixed by either ensuring that they only access these memory regions in their own tasklets or by adding an interface to add global mappings after we've already started more processes.
If this is fixed, we can load driver modules after boot based on PCI-detected hardware from userspace, which would be neat.