From 6276d4ea6c5e7fd62aea28f882dd493415492789 Mon Sep 17 00:00:00 2001 From: Kyle Roarty Date: Thu, 13 Aug 2020 17:49:34 -0500 Subject: [PATCH] misc: Fix db_offset calculation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit db_offset used to be calculated through pointer arithmetic. Pointer arithmetic increments the address by the size of the data type the pointer is pointing at. In the previous db_offset calculation, that was a uint32_t, which means the input was multiplied by 4, which is sizeof(uint32_t) This patch multiplies the input value by sizeof(uint32_t) before assigning it to db_offset. Change-Id: I9042560303ae6b8b1054b98e9a16a9da27843bb2 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32678 Reviewed-by: Matt Sinclair Reviewed-by: Alexandru Duțu Maintainer: Matt Sinclair Tested-by: kokoro --- src/dev/hsa/hw_scheduler.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dev/hsa/hw_scheduler.cc b/src/dev/hsa/hw_scheduler.cc index 8523be9cc..f25839d31 100644 --- a/src/dev/hsa/hw_scheduler.cc +++ b/src/dev/hsa/hw_scheduler.cc @@ -95,7 +95,7 @@ HWScheduler::registerNewQueue(uint64_t hostReadIndexPointer, // #define VOID_PTR_ADD32(ptr,n) // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ // (Addr)VOID_PTR_ADD32(0, queue_id) - Addr db_offset = queue_id; + Addr db_offset = sizeof(uint32_t)*queue_id; if (dbMap.find(db_offset) != dbMap.end()) { panic("Creating an already existing queue (queueID %d)", queue_id); } @@ -346,7 +346,7 @@ HWScheduler::unregisterQueue(uint64_t queue_id) // #define VOID_PTR_ADD32(ptr,n) // (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ // (Addr)VOID_PTR_ADD32(0, queue_id) - Addr db_offset = queue_id; + Addr db_offset = sizeof(uint32_t)*queue_id; auto dbmap_iter = dbMap.find(db_offset); if (dbmap_iter == dbMap.end()) { panic("Destroying a non-existing queue (db_offset %x)", -- 2.30.2