mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-20 00:24:58 +08:00
L0Debug - extract memory access params validation
- remove duplication of code by moving common code to DebugSessionImp Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ca4ecdfb06
commit
d139d307f0
@@ -1058,7 +1058,7 @@ ze_result_t DebugSessionImp::writeRegistersImp(ze_device_thread_t thread, uint32
|
||||
return registersAccessHelper(allThreads[convertToThreadId(thread)].get(), regdesc, start, count, pRegisterValues, true);
|
||||
}
|
||||
|
||||
bool DebugSessionImp::isValidGpuAddress(uint64_t address) {
|
||||
bool DebugSessionImp::isValidGpuAddress(uint64_t address) const {
|
||||
auto gmmHelper = connectedDevice->getNEODevice()->getGmmHelper();
|
||||
auto decanonizedAddress = gmmHelper->decanonize(address);
|
||||
bool validAddress = gmmHelper->isValidCanonicalGpuAddress(address);
|
||||
@@ -1069,4 +1069,16 @@ bool DebugSessionImp::isValidGpuAddress(uint64_t address) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ze_result_t DebugSessionImp::validateThreadAndDescForMemoryAccess(ze_device_thread_t thread, const zet_debug_memory_space_desc_t *desc) {
|
||||
if (!isValidGpuAddress(desc->address)) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
ze_result_t status = sanityMemAccessThreadCheck(thread, desc);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
} // namespace L0
|
||||
|
||||
@@ -54,6 +54,7 @@ struct DebugSessionImp : DebugSession {
|
||||
|
||||
virtual ze_result_t readGpuMemory(uint64_t memoryHandle, char *output, size_t size, uint64_t gpuVa) = 0;
|
||||
virtual ze_result_t writeGpuMemory(uint64_t memoryHandle, const char *input, size_t size, uint64_t gpuVa) = 0;
|
||||
ze_result_t validateThreadAndDescForMemoryAccess(ze_device_thread_t thread, const zet_debug_memory_space_desc_t *desc);
|
||||
|
||||
virtual void enqueueApiEvent(zet_debug_event_t &debugEvent) = 0;
|
||||
virtual bool readSystemRoutineIdent(EuThread *thread, uint64_t vmHandle, SIP::sr_ident &srMagic) = 0;
|
||||
@@ -99,7 +100,7 @@ struct DebugSessionImp : DebugSession {
|
||||
}
|
||||
}
|
||||
|
||||
bool isValidGpuAddress(uint64_t address);
|
||||
bool isValidGpuAddress(uint64_t address) const;
|
||||
|
||||
MOCKABLE_VIRTUAL int64_t getTimeDifferenceMilliseconds(std::chrono::high_resolution_clock::time_point time) {
|
||||
auto now = std::chrono::high_resolution_clock::now();
|
||||
|
||||
@@ -1263,12 +1263,7 @@ ze_result_t DebugSessionLinux::readMemory(ze_device_thread_t thread, const zet_d
|
||||
return ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
if (!isValidGpuAddress(desc->address)) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
ze_result_t status = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
status = sanityMemAccessThreadCheck(thread, desc);
|
||||
ze_result_t status = validateThreadAndDescForMemoryAccess(thread, desc);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
@@ -1333,12 +1328,7 @@ ze_result_t DebugSessionLinux::writeMemory(ze_device_thread_t thread, const zet_
|
||||
return ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
if (!isValidGpuAddress(desc->address)) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
ze_result_t status = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
status = sanityMemAccessThreadCheck(thread, desc);
|
||||
ze_result_t status = validateThreadAndDescForMemoryAccess(thread, desc);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -338,12 +338,7 @@ ze_result_t DebugSessionWindows::readMemory(ze_device_thread_t thread, const zet
|
||||
return ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
if (!isValidGpuAddress(desc->address)) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
ze_result_t status = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
status = sanityMemAccessThreadCheck(thread, desc);
|
||||
ze_result_t status = validateThreadAndDescForMemoryAccess(thread, desc);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
@@ -376,12 +371,7 @@ ze_result_t DebugSessionWindows::writeMemory(ze_device_thread_t thread, const ze
|
||||
return ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
if (!isValidGpuAddress(desc->address)) {
|
||||
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
ze_result_t status = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
status = sanityMemAccessThreadCheck(thread, desc);
|
||||
ze_result_t status = validateThreadAndDescForMemoryAccess(thread, desc);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user