From 8e992530ca093f231cc14a119f12a21b9df17c17 Mon Sep 17 00:00:00 2001 From: Liangfu Chen Date: Thu, 19 Dec 2019 18:45:20 +0800 Subject: [PATCH 1/2] [VTA] improved virtual memory mapping --- vta/src/vmem/virtual_memory.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/vta/src/vmem/virtual_memory.cc b/vta/src/vmem/virtual_memory.cc index 20ffd00b9814..4e8b0e393c8e 100644 --- a/vta/src/vmem/virtual_memory.cc +++ b/vta/src/vmem/virtual_memory.cc @@ -66,7 +66,17 @@ void* VirtualMemoryManager::GetAddr(uint64_t phy_addr) { vta_phy_addr_t VirtualMemoryManager::GetPhyAddr(void* buf) { std::lock_guard lock(mutex_); auto it = pmap_.find(buf); - CHECK(it != pmap_.end()); + uint64_t offset = 0; + if (it == pmap_.end()) { + for (it = pmap_.begin(); it != pmap_.end(); it++) { + uint64_t bytes = it->second->num_pages << kPageBits; + if ((buf >= it->first) && (buf < static_cast(it->first) + bytes)) { + offset = static_cast(buf) - static_cast(it->first); + break; + } + } + CHECK(it != pmap_.end()); + } Page* p = it->second.get(); return (p->ptable_begin + 1) << kPageBits; } From 261251fef09036ced14003ca4a0890dc8702d506 Mon Sep 17 00:00:00 2001 From: Liangfu Chen Date: Fri, 20 Dec 2019 13:49:04 +0800 Subject: [PATCH 2/2] Update virtual_memory.cc --- vta/src/vmem/virtual_memory.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vta/src/vmem/virtual_memory.cc b/vta/src/vmem/virtual_memory.cc index 4e8b0e393c8e..0bf2382e155e 100644 --- a/vta/src/vmem/virtual_memory.cc +++ b/vta/src/vmem/virtual_memory.cc @@ -78,7 +78,7 @@ vta_phy_addr_t VirtualMemoryManager::GetPhyAddr(void* buf) { CHECK(it != pmap_.end()); } Page* p = it->second.get(); - return (p->ptable_begin + 1) << kPageBits; + return ((p->ptable_begin + 1) << kPageBits) + offset; } /*!