From 92f0607f87cf6a15ea06c673cd336c47bacbad85 Mon Sep 17 00:00:00 2001 From: German Date: Fri, 18 Nov 2022 14:04:17 -0500 Subject: [PATCH] SWDEV-368308 - Remove HW debug extension Remove the header file, used in rocclr. Change-Id: I1dfdbb05fdcbaf32708252071e8955d2ca94126d --- opencl/amdocl/cl_debugger_amd.h | 694 -------------------------------- 1 file changed, 694 deletions(-) delete mode 100644 opencl/amdocl/cl_debugger_amd.h diff --git a/opencl/amdocl/cl_debugger_amd.h b/opencl/amdocl/cl_debugger_amd.h deleted file mode 100644 index e06ea855ae..0000000000 --- a/opencl/amdocl/cl_debugger_amd.h +++ /dev/null @@ -1,694 +0,0 @@ -/* Copyright (c) 2014 - 2021 Advanced Micro Devices, Inc. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. */ - -#ifndef __CL_DEBUGGER_AMD_H -#define __CL_DEBUGGER_AMD_H - -#ifdef __APPLE__ -#include -#else -#include -#endif - -/****************************************** -* Private AMD extension cl_dbg * -******************************************/ -#ifdef __cplusplus -extern "C" { -#endif /*__cplusplus*/ - -#define CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD -80 -#define CL_DEBUGGER_REGISTER_FAILURE_AMD -81 -#define CL_TRAP_HANDLER_NOT_DEFINED_AMD -82 -#define CL_EVENT_TIMEOUT_AMD -83 - - -typedef uintptr_t cl_dbg_event_amd; //! debug event - -/*! \brief Trap Handler Type - * - * The trap handler for each support type. - */ -enum cl_dbg_trap_type_amd { - CL_DBG_DEBUG_TRAP = 0, //! HW debug - CL_DBG_MAX_TRAP -}; - -/*! \brief Wave actions used to control the wave execution on the hardware - * - * The wave action enumerations are used to specify the desired - * behavior when calling the wave control function. Overall, there are - * five types of operations that can be specified. - */ -enum cl_dbg_waves_action_amd { - CL_DBG_WAVES_DONT_USE_ZERO = 0, //! NOT USED - CL_DBG_WAVES_HALT = 1, //! halt wave - CL_DBG_WAVES_RESUME = 2, //! resume wave - CL_DBG_WAVES_KILL = 3, //! kill wave - CL_DBG_WAVES_DEBUG = 4, //! debug wave - CL_DBG_WAVES_TRAP = 5, //! trap - CL_DBG_WAVES_MAX -}; - -/*! \brief Host actions when encountering an exception in the kernel. - * - * The host action enumeration is used to specify the desired host - * response in the event thatn a device kernel exception is encountered. - */ -enum cl_dbg_host_action_amd { - CL_DBG_HOST_IGNORE = 1, //! ignore the kernel exception - CL_DBG_HOST_EXIT = 2, //! exit the host application on a kernel exception - CL_DBG_HOST_NOTIFY = 4 //! report the kernel exception -}; - -/*! \brief Mode of the wave action when calling the wave control function - * - * The wave mode enumerations are used to specify the desired - * broadcast level when calling the wave control function. - */ -enum cl_dbg_wave_mode_amd { - CL_DBG_WAVEMODE_SINGLE = 0, //! send command to single wave - CL_DBG_WAVEMODE_BROADCAST = 2, //! send command to wave with match VMID - CL_DBG_WAVEMODE_BROADCAST_CU = 3, //! send command to wave with match VMID with specific CU - CL_DBG_WAVEMODE_MAX -}; - -/*! \brief Enumeration of address watch mode - * - * This enumeration indicates the different modes of address watch. - */ -enum cl_dbg_address_watch_mode_amd { - CL_DBG_ADDR_WATCH_MODE_READ = 0, //! Read operations only - CL_DBG_ADDR_WATCH_MODE_NONREAD = 1, //! Write or Atomic operations only - CL_DBG_ADDR_WATCH_MODE_ATOMIC = 2, //! Atomic Operations only - CL_DBG_ADDR_WATCH_MODE_ALL = 3, //! Read, Write or Atomic operations - CL_DBG_ADDR_WATCH_MODE_MAX //! Number of address watch modes -}; - -/*! \brief Dispatch exception policy descriptor - * - * The dispatch exception policy descriptor is used to define the - * expected exception policy in the event an exception is encountered - * on the associated dispatch. - */ -typedef struct _cl_dbg_exception_policy_amd { - cl_uint exceptionMask; //! exception mask - cl_dbg_waves_action_amd waveAction; //! wave action - cl_dbg_host_action_amd hostAction; //! host action - cl_dbg_wave_mode_amd waveMode; //! wave mode -} cl_dbg_exception_policy_amd; - -/*! \brief Kernel execution mode - * - * This structure is used to control the kernel execution mode. The - * following aspects are included in this structure: - * 1. Regular execution or debug mode (0: regular execution (default), - * 1: debug mode) - * 2. SQ debugger mode on/off - * 3. Disable L1 scalar cache (0: enable (default), 1: disable) - * 4. Disable L1 vector cache (0: enable (default), 1: disable) - * 5. Disable L2 cache (0: enable (default), 1: disable) - * 6. Num of CUs reserved for display (0 (default), 7: max) - */ -typedef struct _cl_dbg_kernel_exec_mode_amd { - union { - struct { - cl_uint monitorMode : 1; - cl_uint gpuSingleStepMode : 1; - cl_uint disableL1Scalar : 1; - cl_uint disableL1Vector : 1; - cl_uint disableL2Cache : 1; - cl_uint reservedCuNum : 3; - cl_uint reserved : 24; - }; - cl_uint ui32All; - }; -} cl_dbg_kernel_exec_mode_amd; - -/*! \brief GPU cache mask - * - * This structure is used to specify the GPU cache to be flushed/invalidated - */ -typedef struct _cl_dbg_gpu_cache_mask_amd { - union { - struct { - cl_uint sqICache : 1; //! instruction cache - cl_uint sqKCache : 1; //! data cache - cl_uint tcL1 : 1; //! tcL1 cache - cl_uint tcL2 : 1; //! tcL2 cache - cl_uint reserved : 28; - }; - cl_uint ui32All; - }; -} cl_dbg_gpu_cache_mask_amd; - -/*! \brief Dispatch Debug Info - * - * This structure is used to store the scratch and global memory descriptors - */ -typedef struct _cl_dispatch_debug_info_amd { - cl_uint scratchMemoryDescriptor[4]; //! Scratch memory descriptors - cl_uint globalMemoryDescriptor[4]; //! Global memory descriptors -} cl_dispatch_debug_info_amd; - -/*! \brief AQL Packet Info - * - * This structure is used to store AQL packet informatin for kernel dispatch - */ -typedef struct _cl_aql_packet_info_amd { - cl_uint trapReservedVgprIndex; //! VGPR index reserved for trap - //! value is -1 when kernel was not compiled - //! in debug mode. - cl_uint scratchBufferWaveOffset; //! scratch buffer wave offset - //! value is -1 when kernel was not compiled - //! in debug mode or scratch buffer is not enabled - void* pointerToIsaBuffer; //! Pointer to buffer containing ISA - size_t sizeOfIsaBuffer; //! Size of the ISA buffer - - cl_uint numberOfVgprs; //! Number of VGPRs used by the kernel - cl_uint numberOfSgprs; //! Number of SGPRs used by the kernel - size_t sizeOfStaticGroupMemory; //! Static local memory used by the kernel -} cl_aql_packet_info_amd; - -/*! \brief Wave address - * - * This structure specifies the wave for the SQ control command - */ -typedef struct _cl_dbg_wave_addr_amd { - cl_uint shaderEngine : 2; //! Shader engine - cl_uint shaderArray : 1; //! Shader array - cl_uint computeUnit : 4; //! Compute unit - cl_uint simd : 2; //! SIMD id - cl_uint wave : 4; //! Wave id - cl_uint vmid : 4; //! VMID - cl_uint reserved : 15; - -} cl_dbg_wave_addr_amd; - -/*! \brief Pre-dispatch call back function signature - * - * This is the signature of the call back fuction before the kernel - * dispatch. The call back function is to indicate the start of the - * the kernel launch. It is used by the debugger. - */ -typedef void* (*cl_PreDispatchCallBackFunctionAMD)(cl_device_id device, void* ocl_event_handle, - const void* aql_packet, void* acl_binary, - void* user_args); - -/*! \brief Post-dispatch call back function signature - * - * This is the signature of the call back fuction after the kernel - * dispatch. The call back function is to indicate the completion of - * the the kernel launch. It is used by the debugger. - */ -typedef void* (*cl_PostDispatchCallBackFunctionAMD)(cl_device_id device, cl_ulong event, - void* user_args); - -/*! \brief Set up the dispatch call back function pointers - * - * \param device specifies the device to be used - * - * \param preDispatchFunction is the function to be called before dispatching the kernel - * - * \param postDispatchFunction is the function to be called after kernel execution - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackFunctionsAMD( - cl_device_id /* device */, cl_PreDispatchCallBackFunctionAMD /* preDispatchFunction */, - cl_PostDispatchCallBackFunctionAMD /* postDispatchFunction */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Set up the arguments of the dispatch call back function - * - * \param device specifies the device to be used - * - * \param preDispatchArgs is the arguments for the pre-dispatch callback function - * - * \param postDispatchArgs is the arguments for the post-dispatch callback function - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetCallBackArgumentsAMD(cl_device_id /* device */, - void* /* preDispatchArgs */, - void* /* postDispatchArgs */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Invalidate all cache on the device. - * - * \param device specifies the device to be used - * - * \param mask is the mask to specify which cache to be flush/invalidate - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgFlushCacheAMD(cl_device_id /* device */, - cl_dbg_gpu_cache_mask_amd /* mask */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Set up an exception policy in the trap handler object - * - * \param device specifies the device to be used - * - * \param policy specifies the exception policy, which includes the exception mask, - * wave action, host action, wave mode. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the policy is not specified (NULL) - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetExceptionPolicyAMD( - cl_device_id /* device */, cl_dbg_exception_policy_amd* /* policy */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Get the exception policy in the trap handler object - * - * \param device specifies the device to be used - * - * \param policy is a pointer to the memory where the policy is returned - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the policy storage is not specified - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetExceptionPolicyAMD( - cl_device_id /* device */, cl_dbg_exception_policy_amd* /* policy */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Set up the kernel execution mode in the trap handler object - * - * \param device specifies the device to be used - * - * \param mode specifies the kernel execution mode, which indicate whether single - * step mode is used, how many CUs are reserved. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the mode is not specified, ie, has a NULL value - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetKernelExecutionModeAMD( - cl_device_id /* device */, cl_dbg_kernel_exec_mode_amd* /* mode */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Get the kernel execution mode in the trap handler object - * - * \param device specifies the device to be used - * - * \param mode is a pointer to the memory where the exectuion mode is returned - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the mode storage is not specified, ie, has a NULL value - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelExecutionModeAMD( - cl_device_id /* device */, cl_dbg_kernel_exec_mode_amd* /* mode */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Create a debug event - * - * \param device specifies the device to be used - * - * \param autoReset is the auto reset flag - * - * \param pDebugEvent returns the debug event to be used for exception notification - * - * \param pEventId is the event ID, which is not used at this moment - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the pDebugEvent value is NULL - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - * - CL_OUT_OF_RESOURCES if fails to create the event - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgCreateEventAMD(cl_device_id /* device */, - bool /* autoReset */, - cl_dbg_event_amd* /* pDebugEvent */, - cl_uint* /* pEventId */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Wait for a debug event to be signaled - * - * \param device specifies the device to be used - * - * \param pDebugEvent is the debug event to be waited for - * - * \param pEventId is the event ID, which is not used at this moment - * - * \param timeOut is the duration for waiting - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the pDebugEvent value is NULL - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - * - CL_EVENT_TIMEOUT_AMD if timeout occurs - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaitEventAMD(cl_device_id /* device */, - cl_dbg_event_amd /* pDebugEvent */, - cl_uint /* pEventId */, - cl_uint /* timeOut */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Destroy a debug event - * - * \param device specifies the device to be used - * - * \param pDebugEvent is the debug event to be waited for - * - * \param pEventId is the event ID, which is not used at this moment - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the pDebugEvent value is NULL - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgDestroyEventAMD(cl_device_id /* device */, - cl_dbg_event_amd* /* pDebugEvent */, - cl_uint* /* pEventId */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Register the debugger on a device - * - * \param context specifies the context for the debugger - * - * \param device specifies the device to be used - * - * \param pMessageStorge specifies the memory for trap message passing between KMD and OCL runtime - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_CONTEXT if the context is not valid - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the pMEssageStorge value is NULL - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - * - CL_OUT_OF_RESOURCES if a host queue cannot be created for the debugger - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgRegisterDebuggerAMD( - cl_context /* context */, cl_device_id /* device */, volatile void* /* pMessageStorage */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Unregister the debugger on a device - * - * \param device specifies the device to be used - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnregisterDebuggerAMD(cl_device_id /* device */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Setup the pointer of the acl_binary to be used by the debugger - * - * \param device specifies the device to be used - * - * \param aclBinary specifies the ACL binary to be used - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the aclBinary is not provided - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetAclBinaryAMD(cl_device_id /* device */, - void* /* aclBinary */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Control the execution of wavefront on the GPU - * - * \param device specifies the device to be used - * - * \param action specifies the wave action - halt, resume, kill, debug - * - * \param mode specifies the wave mode - * - * \param trapID specifies the trap ID, which should be 0x7 - * - * \param waveAddress specifies the wave address for the wave control - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the waveMsg is not provided, invalid action or mode value - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgWaveControlAMD(cl_device_id /* device */, - cl_dbg_waves_action_amd /* action */, - cl_dbg_wave_mode_amd /* mode */, - cl_uint /* trapId */, - cl_dbg_wave_addr_amd /* waveAddress */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Set watch points on memory address ranges to generate exception events - * - * \param device specifies the device to be used - * - * \param numWatchPoints specifies the number of watch points - * - * \param watchMode is the array of watch mode for the watch points - * - * \param watchAddress is the array of watch address for the watch points - * - * \param watchMask is the array of mask for the watch points - * - * \param watchEvent is the array of event for the watch points - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the number of points <= 0, or other parameters is not specified - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgAddressWatchAMD( - cl_device_id /* device */, cl_uint /* numWatchPoints */, - cl_dbg_address_watch_mode_amd* /* watchMode */, void** /* watchAddress */, - cl_ulong* /* watchMask */, cl_dbg_event_amd* /* watchEvent */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Get the packaet information for kernel execution - * - * \param device specifies the device to be used - * - * \param aqlCodeInfo specifies the kernel code and its size - * - * \param packetInfo points to the memory for the packet information to be returned - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetAqlPacketInfoAMD( - cl_device_id /* device */, const void* /* aqlCodeInfo */, - cl_aql_packet_info_amd* /* packetInfo */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Get the dispatch debug information - * - * \param device specifies the device to be used - * - * \param debugInfo points to the memory for the debug information to be returned - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetDispatchDebugInfoAMD( - cl_device_id /* device */, cl_dispatch_debug_info_amd* /* debugInfo */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Map the video memory for the kernel code to allow host access - * - * \param device specifies the device to be used - * - * \param aqlCodeAddress is the memory points to the returned host memory address for the kernel - * code - * - * \param aqlCodeSize returns the size of the kernel code - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapKernelCodeAMD(cl_device_id /* device */, - void* /* aqlCodeInfo */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Unmap the video memory for the kernel code - * - * \param device specifies the device to be used (no needed, just to be consistent) - * - * \param aqlCodeAddress is the memory points to the mapped memory address for the kernel code - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapKernelCodeAMD(cl_device_id /* device */, - cl_ulong* /* aqlCodeAddress */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Map the shader scratch ring's video memory to allow CPU access - * - * \param device specifies the device to be used - * - * \param scratchRingAddr is the memory points to the returned host memory address for scratch - * ring - * - * \param scratchRingSize returns the size of the scratch ring - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgMapScratchRingAMD(cl_device_id /* device */, - cl_ulong* /* scratchRingAddr */, - cl_uint* /* scratchRingSize */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Unmap the shader scratch ring's video memory - * - * \param device specifies the device to be used (no needed, just to be consistent) - * - * \param scratchRingAddr is the memory points to the mapped memory address for scratch ring - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgUnmapScratchRingAMD(cl_device_id /* device */, - cl_ulong* /* scratchRingAddr */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Get the memory object associated with the kernel parameter - * - * \param device specifies the device to be used - * - * \param paramIdx is the index of of the kernel argument - * - * \param paramMem is pointer of the memory associated with the kernel argument to be returned - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if the paramIdx is less than zero, or the paramMem has NULL value - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - * - CL_INVALID_KERNEL_ARGS if it fails to get the memory object for the kernel argument - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgGetKernelParamMemAMD(cl_device_id /* devicepointer */, - cl_uint /* paramIdx */, - cl_mem* /* paramMem */ - ) CL_API_SUFFIX__VERSION_2_0; - -/*! \brief Set value of a global memory object - * - * \param device specifies the device to be used - * - * \param memObject is the memory object handle to be assigned the value specified in srcMem. - * - * \param offset is offset of the memory object - * - * \param srcMem points to the memory which contains the values to be assigned to the memory - * - * \param size size (in bytes) of the srcMem - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if memObj or srcPtr has NULL value, size <= 0 or offset < 0 - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgSetGlobalMemoryAMD(cl_device_id /* device */, - cl_mem /* memObject */, - cl_uint /* offset */, - void* /* srcMem */, - cl_uint /* size */ - ) CL_API_SUFFIX__VERSION_2_0; - - -/*! \brief Install the trap handler of a given type - * - * \param device specifies the device to be used - * - * \param trapType is the type of trap handler - * - * \param trapHandler is the pointer of trap handler (TBA) - * - * \param trapBuffer is the pointer of trap handler buffer (TMA) - * - * \param trapHandlerSize size (in bytes) of the trap handler - * - * \param trapBufferSize size (in bytes) of the trap handler buffer - * - * \return One of the following values: - * - CL_SUCCESS if the event occurs before the timeout - * - CL_INVALID_DEVICE if the device is not valid - * - CL_INVALID_VALUE if trapHandler is NULL or trapHandlerSize <= 0 - * - CL_HWDBG_MANAGER_NOT_AVAILABLE_AMD if there is no HW DEBUG manager - */ -extern CL_API_ENTRY cl_int CL_API_CALL clHwDbgInstallTrapAMD(cl_device_id /* device */, - cl_dbg_trap_type_amd /* trapType */, - cl_mem /* trapHandler */, - cl_mem /* trapBuffer */ - ) CL_API_SUFFIX__VERSION_2_0; - - -#ifdef __cplusplus -} /*extern "C"*/ -#endif /*__cplusplus*/ - -#endif /*__CL_DEBUGGER_AMD_H*/