From 0d48b74becc5778b1fc13eb4259ae1768c687bf3 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 11 Feb 2022 14:40:13 +0100 Subject: [PATCH] Remove Dataspace::phys_addr RPC function The official way to obtain DMA addresses for RAM dataspaces is the RPC function 'Pd_session::dma_addr' now. User-level device drivers should not call this function directly but use the 'Platform_session' interface of the platform driver instead. Fixes #2243 --- .../src/core/include/dataspace_component.h | 7 ++++--- .../src/include/base/internal/region_map_mmap.h | 2 -- .../base-linux/src/include/linux_dataspace/client.h | 5 ++--- repos/base/include/dataspace/client.h | 5 ++--- repos/base/include/dataspace/dataspace.h | 12 +++--------- repos/base/src/core/include/dataspace_component.h | 10 +++++----- 6 files changed, 16 insertions(+), 25 deletions(-) diff --git a/repos/base-linux/src/core/include/dataspace_component.h b/repos/base-linux/src/core/include/dataspace_component.h index 5b4395363c..1a8fb1ab6e 100644 --- a/repos/base-linux/src/core/include/dataspace_component.h +++ b/repos/base-linux/src/core/include/dataspace_component.h @@ -120,14 +120,15 @@ class Genode::Dataspace_component : public Rpc_object */ void detach_from_rm_sessions() { } + addr_t phys_addr() const { return _addr; } + /************************* ** Dataspace interface ** *************************/ - size_t size() override { return _size; } - addr_t phys_addr() override { return _addr; } - bool writable() override { return _writable; } + size_t size() override { return _size; } + bool writable() override { return _writable; } /**************************************** diff --git a/repos/base-linux/src/include/base/internal/region_map_mmap.h b/repos/base-linux/src/include/base/internal/region_map_mmap.h index 5224298352..9d1690bb25 100644 --- a/repos/base-linux/src/include/base/internal/region_map_mmap.h +++ b/repos/base-linux/src/include/base/internal/region_map_mmap.h @@ -134,8 +134,6 @@ class Genode::Region_map_mmap : public Region_map, public Dataspace size_t size() override { return _size; } - addr_t phys_addr() override { return 0; } - bool writable() override { return true; } /** diff --git a/repos/base-linux/src/include/linux_dataspace/client.h b/repos/base-linux/src/include/linux_dataspace/client.h index 982ca7d3a4..cc66d9008f 100644 --- a/repos/base-linux/src/include/linux_dataspace/client.h +++ b/repos/base-linux/src/include/linux_dataspace/client.h @@ -32,9 +32,8 @@ struct Genode::Linux_dataspace_client : Rpc_client ** Generic dataspace interface ** *********************************/ - size_t size() override { return call(); } - addr_t phys_addr() override { return call(); } - bool writable() override { return call(); } + size_t size() override { return call(); } + bool writable() override { return call(); } /**************************************** diff --git a/repos/base/include/dataspace/client.h b/repos/base/include/dataspace/client.h index 215ec10000..d4163fa292 100644 --- a/repos/base/include/dataspace/client.h +++ b/repos/base/include/dataspace/client.h @@ -25,9 +25,8 @@ struct Genode::Dataspace_client : Rpc_client explicit Dataspace_client(Dataspace_capability ds) : Rpc_client(ds) { } - size_t size() override { return call(); } - addr_t phys_addr() override { return call(); } - bool writable() override { return call(); } + size_t size() override { return call(); } + bool writable() override { return call(); } }; #endif /* _INCLUDE__DATASPACE__CLIENT_H_ */ diff --git a/repos/base/include/dataspace/dataspace.h b/repos/base/include/dataspace/dataspace.h index 295df07447..51d29c299f 100644 --- a/repos/base/include/dataspace/dataspace.h +++ b/repos/base/include/dataspace/dataspace.h @@ -29,11 +29,6 @@ struct Genode::Dataspace : Interface */ virtual size_t size() = 0; - /** - * Request base address in physical address space - */ - virtual addr_t phys_addr() = 0; - /** * Return true if dataspace is writable */ @@ -44,11 +39,10 @@ struct Genode::Dataspace : Interface ** RPC declaration ** *********************/ - GENODE_RPC(Rpc_size, size_t, size); - GENODE_RPC(Rpc_phys_addr, addr_t, phys_addr); - GENODE_RPC(Rpc_writable, bool, writable); + GENODE_RPC(Rpc_size, size_t, size); + GENODE_RPC(Rpc_writable, bool, writable); - GENODE_RPC_INTERFACE(Rpc_size, Rpc_phys_addr, Rpc_writable); + GENODE_RPC_INTERFACE(Rpc_size, Rpc_writable); }; #endif /* _INCLUDE__DATASPACE__DATASPACE_H_ */ diff --git a/repos/base/src/core/include/dataspace_component.h b/repos/base/src/core/include/dataspace_component.h index 52f5e6ee41..36f773b1c6 100644 --- a/repos/base/src/core/include/dataspace_component.h +++ b/repos/base/src/core/include/dataspace_component.h @@ -120,6 +120,8 @@ namespace Genode { addr_t core_local_addr() const { return _core_local_addr; } bool io_mem() const { return _io_mem; } Cache cacheability() const { return _cache; } + addr_t phys_addr() const { return _phys_addr; } + bool managed() const { return _managed; } /** * Return dataspace base address to be used for map operations @@ -149,15 +151,13 @@ namespace Genode { List ®ions() { return _regions; } + /************************* ** Dataspace interface ** *************************/ - size_t size() override { return _size; } - addr_t phys_addr() override { return _phys_addr; } - bool writable() override { return _writable; } - - bool managed() { return _managed; } + size_t size() override { return _size; } + bool writable() override { return _writable; } }; }