On Tue, Aug 17, 2021 at 12:10 AM Samuel Thibault <samuel.thiba...@gnu.org> wrote: > Yes, and we want to implement nesting: providing a sub-hurd with a > partial view of the PCI space.
Interesting. But I still don't think I understand what the problem you are running into. boot(1) already emulates Mach devices; it would itself use libpciaccess (or the PCI arbiter directly, since it doesn't need portability?) to get access to the host's devices that are to be passed through to the subhurd. Then it'd return whatever memory objects it got from the host's PCI arbiter — or proxies to them — from emulated device_map (). The kernel would take care of short-circuiting the nested proxies, although this is just a tiny optimization in this case and is not required for correctness or anything like that. Is that how you're implementing it? (Hmm, how does I/O port access work in a subhurd? I'm guessing the subhurd has to be privileged? But then it probably has to anyway, to access the PCI devices?) Sergey