From c078cedb6229e7aca6e9dc7e3cda1302eb3951f4 Mon Sep 17 00:00:00 2001 From: Mikael Olsson Date: Mon, 5 Jun 2023 15:59:27 +0200 Subject: Remove address translation for buffer and carveout Address translation for inference buffers and carveout areas have been removed because the Linux Kernel NPU driver now provides device addresses for them. Change-Id: I71a133ba5ecbb94aa2c225d259e75229b6dbce5b Signed-off-by: Mikael Olsson --- applications/message_handler_openamp/main.cpp | 4 +-- .../message_handler_openamp/message_handler.cpp | 40 ++-------------------- .../message_handler_openamp/message_handler.hpp | 6 +--- 3 files changed, 6 insertions(+), 44 deletions(-) diff --git a/applications/message_handler_openamp/main.cpp b/applications/message_handler_openamp/main.cpp index 62bdc97..c120610 100644 --- a/applications/message_handler_openamp/main.cpp +++ b/applications/message_handler_openamp/main.cpp @@ -179,14 +179,14 @@ int main() { auto messageHandler = std::make_shared(*rproc, "ethos-u-0.0"); printf("TFLM arena. pa=%" PRIx32 ", da=%" PRIx32 ", len=%" PRIx32 "\n", - resourceTable.carveout.da, resourceTable.carveout.pa, + resourceTable.carveout.da, resourceTable.carveout.len); std::array, NUM_PARALLEL_TASKS> inferenceRunner; for (size_t i = 0; i < NUM_PARALLEL_TASKS; i++) { - auto tensorArena = static_cast(messageHandler->physicalToVirtual(resourceTable.carveout.pa)); + auto tensorArena = reinterpret_cast(resourceTable.carveout.da); inferenceRunner[i] = std::make_shared(&tensorArena[arenaSize * i], arenaSize, diff --git a/applications/message_handler_openamp/message_handler.cpp b/applications/message_handler_openamp/message_handler.cpp index 4bd611d..9694f39 100644 --- a/applications/message_handler_openamp/message_handler.cpp +++ b/applications/message_handler_openamp/message_handler.cpp @@ -1,6 +1,5 @@ /* * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates - * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the License); you may @@ -308,7 +307,7 @@ void MessageHandler::sendNetworkInfoRsp(const uint32_t src, rsp.ifm_count = 0; rsp.ofm_count = 0; - bool failed = networkToVirtual(network); + bool failed = getNetwork(network); if (!failed) { InferenceProcess::InferenceParser parser; @@ -333,15 +332,7 @@ void MessageHandler::forwardInferenceReq(const uint32_t src, req = inference; - for (uint32_t i = 0; i < req.ifm_count; i++) { - bufferToVirtual(req.ifm[i]); - } - - for (uint32_t i = 0; i < req.ofm_count; i++) { - bufferToVirtual(req.ofm[i]); - } - - networkToVirtual(req.network); + getNetwork(req.network); inferenceQueue.send(message); } @@ -368,35 +359,10 @@ void MessageHandler::sendCancelInferenceRsp(const uint32_t src, responseQueue.send(message); } -bool MessageHandler::getNetwork(const EthosU::ethosu_core_network_buffer &buffer, void *&data, size_t &size) { +bool MessageHandler::getNetwork(EthosU::ethosu_core_network_buffer &buffer) { switch (buffer.type) { case EthosU::ETHOSU_CORE_NETWORK_BUFFER: - data = physicalToVirtual(buffer.buffer.ptr); - size = buffer.buffer.size; return false; - case EthosU::ETHOSU_CORE_NETWORK_INDEX: - return getIndexedNetwork(buffer.index, data, size); - default: - LOG_WARN("Unsupported network model type. type=%" PRIu32, buffer.type); - return true; - } -} - -bool MessageHandler::bufferToVirtual(EthosU::ethosu_core_buffer &buffer) { - void *ptr = physicalToVirtual(buffer.ptr); - if (ptr == nullptr) { - return true; - } - - buffer.ptr = reinterpret_cast(ptr); - - return false; -} - -bool MessageHandler::networkToVirtual(EthosU::ethosu_core_network_buffer &buffer) { - switch (buffer.type) { - case EthosU::ETHOSU_CORE_NETWORK_BUFFER: - return bufferToVirtual(buffer.buffer); case EthosU::ETHOSU_CORE_NETWORK_INDEX: { void *ptr; size_t size; diff --git a/applications/message_handler_openamp/message_handler.hpp b/applications/message_handler_openamp/message_handler.hpp index 779b05f..86b7c4d 100644 --- a/applications/message_handler_openamp/message_handler.hpp +++ b/applications/message_handler_openamp/message_handler.hpp @@ -1,6 +1,5 @@ /* * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates - * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the License); you may @@ -88,15 +87,12 @@ protected: void sendCancelInferenceRsp(const uint32_t src, const uint64_t msgId, const EthosU::ethosu_core_status status); EthosU::ethosu_core_msg_capabilities_rsp getCapabilities() const; - bool getNetwork(const EthosU::ethosu_core_network_buffer &buffer, void *&data, size_t &size); + bool getNetwork(EthosU::ethosu_core_network_buffer &buffer); // Tasks returning response messages static void responseTask(void *param); private: - bool bufferToVirtual(EthosU::ethosu_core_buffer &buffer); - bool networkToVirtual(EthosU::ethosu_core_network_buffer &buffer); - InferenceQueue inferenceQueue; ResponseQueue responseQueue; EthosU::ethosu_core_msg_capabilities_rsp capabilities; -- cgit v1.2.1