diff --git a/repos/os/src/drivers/platform/device_pd.cc b/repos/os/src/drivers/platform/device_pd.cc index 3266942249..2d3a730c3f 100644 --- a/repos/os/src/drivers/platform/device_pd.cc +++ b/repos/os/src/drivers/platform/device_pd.cc @@ -154,4 +154,7 @@ Device_pd::Device_pd(Env & env, _address_space(env, _pd, ram_guard, cap_guard) { _pd.ref_account(env.pd_session_cap()); + + buffer_registry.for_each([&] (Dma_buffer const & buf) { + add_range({ buf.dma_addr, buf.size }, buf.cap); }); } diff --git a/repos/os/src/drivers/platform/io_mmu.h b/repos/os/src/drivers/platform/io_mmu.h index c2f5f0fcae..821c4e7f9a 100644 --- a/repos/os/src/drivers/platform/io_mmu.h +++ b/repos/os/src/drivers/platform/io_mmu.h @@ -88,15 +88,10 @@ class Driver::Io_mmu : private Io_mmu_devices::Element virtual void remove_range(Range const &) = 0; Domain(Io_mmu & io_mmu, - Allocator & md_alloc, - Registry const & buffer_registry) + Allocator & md_alloc) : Registry::Element(io_mmu._domains, *this), _io_mmu(io_mmu), _md_alloc(md_alloc) - { - /* we always need to add existing buffers when creating a new domain */ - buffer_registry.for_each([&] (Dma_buffer const & buf) { - add_range({ buf.dma_addr, buf.size }, buf.cap); }); - } + { } virtual ~Domain() { } };