Commit Graph

89 Commits

Author SHA1 Message Date
Jay Cornwall ff8f439112 Handle traps, illegal instruction, memory violations through queue signal
Report traps and fatal exceptions through a wavefront's
amd_queue_t.queue_inactive_signal. Previously, only traps were
reported and requireed the compiler to pass in the signal pointer
in s[0:1].

The signal is obtained through a mapping from doorbell index to
amd_queue_t*. The doorbell is fetched within a wavefront through
the gfx9+ S_SENDMSG(MSG_GET_DOORBELL) instruction.

Change-Id: I319b45f2e15dfcfe4db8f4065da1136e9539a42b
2019-07-01 22:59:41 -04:00
Sean Keely 299874f17d Initial support for deallocation callbacks.
Adds hsa_amd_register_deallocation_callback and hsa_amd_deregister_deallocation_callback
to notify when HSA memory has been released.

Change-Id: I1f33cee250ca890e5c2e7fddfa4479aa5874651d
2019-06-26 04:12:17 -05:00
Evgeny 6c0aaa2773 aqlprofile api fix
Change-Id: I2a710040422c7853ece5472ea776442b25d69dcb
2019-06-19 23:14:27 -04:00
Sean Keely bbb90bdfc9 Fix description of HSA_AMD_MEMORY_POOL_INFO_ACCESSIBLE_BY_ALL.
Description was inconsistent with itself and code.  Existing behavior
returns HSA_AMD_MEMORY_POOL_INFO_ACCESSIBLE_BY_ALL == true for system
memory pools only and system memory pools do require hsa_amd_agents_allow_access.

Change-Id: I64b287bff9fdb21688aa169296e410edf1b209b5
2019-06-11 01:45:22 -04:00
Evgeny a06d96cef8 aqlprofile API: sdma blocks
Change-Id: I619af8adc17706f808644180cdd5a5c785e052ec
2019-06-05 18:54:08 -05:00
Evgeny 1be9298f72 adding new trace API
Change-Id: I6c83b5789f5a6cdbb574d041c40d5a47229c7f1a
2019-06-01 14:33:59 -04:00
Sean Keely 06376e726b Expose HDP flush registers.
Exposed via agent info query.  Only valid if fine grain PCIe memory is enabled.

Change-Id: Ib4770901592ec047276458926a947737f9b93bb5
2019-05-11 00:04:47 -04:00
Sean Keely a535e18cc1 Add hsa_amd_memory_lock_to_pool.
Makes malloc memory accessible to GPUs so that the memory has the
capabilities of the pool it is locked to.
This admits fine grained locked memory and reserves API space for any future
special CPU pools.

Change-Id: If8c3dd8582a43f19d3d36b3763c1a688cc419ef0
2019-03-29 01:09:21 -05:00
Sean Keely 9f7df6d6fe Remove legacy memory fault event name.
Change-Id: I3ad240482523409e1152548009aecf127e63bbfa
2019-03-28 15:25:25 -05:00
Sean Keely 67376e06ab Report SRAM ECC errors through the system event handler.
Modify the system event handler to support multiple users.
Name memory fault reason codes.

Change-Id: I1b5979b36ab15637eb2be59a61e2d57e76d0a70e
2019-02-27 18:08:07 -05:00
Sean Keely 3c3db0243e Loader support for SRAM ECC.
Change-Id: I0c6791c356d9186cc8dabae9fd698b1d4de19b09
2019-02-25 18:30:05 -05:00
Konstantin Zhuravlyov c1ad82a6b7 Loader updates for code object v3
- Fix loading in some cases
  - Fix symbol kind

Change-Id: I721b4a35972b6d2a6d0ac733ab770b096cc74e17
2019-01-18 15:41:01 -05:00
Evgeny d788a53972 aqlprofile extension version check
Change-Id: If824764f199eca15a0341cdf6177d8d6353e29f3
2018-10-22 15:36:57 -04:00
Sean Keely 757502ccd6 Report internal queue creation to tools.
Debug agent requires handles to internal queues for single step debugging.
Added tools only API hsa_amd_runtime_queue_create_register for reporting.

hsa_amd_runtime_queue_create_register sets a callback which is invoked
when internal queues are created.

Change-Id: Ia5190ae724fadba686c15f25b2cd085350eeff0e
2018-10-20 23:12:27 -04:00
Evgeny fdbe277f2a hsa_ven_amd_aqlprofile_pfn_t alias
Change-Id: Ia4a67ef0d2f8975f0e541e85c215afec76e9de5f
2018-09-26 14:10:21 -04:00
Ramesh Errabolu f007870792 ROCr changes to enable small BAR P2P over xGMI
Change-Id: I6aaa3fe2565cdf7e15d58a7484d6bd5916ffff64
2018-09-17 22:54:40 -04:00
Evgeny 81532bb6f5 VERSION_MINOR macro typo fix
aqlprofile info ENABLE_CMD enum adding;

Change-Id: I7b19082144d2bd0bf7af7ddc282358168b225759
2018-09-17 20:49:47 -04:00
Sean Keely e0839ab27e Implement SDMA copy rect for gfx9.
Fix pitch overflow due to small element detection.
Add wide pitch 2D copy handling.
Cleanup code duplication.

Change-Id: I93b1584aba8e5964957eb7ab3544df806ca3e2f9
2018-08-29 19:13:07 -04:00
Sean Keely cd8e5c1da8 Expose ROCr build ID.
Adds HSA_AMD_SYSTEM_INFO_BUILD_VERSION=0x200 to hsa_system_info_t.
This returns a const char* pointing at the build string (git describe).

Change-Id: I73e6612482bf6ffc4037fd365808eb9211a650ad
2018-08-20 20:44:32 -05:00
Jay Cornwall e388a23344 Add hsa_amd_queue_set_priority extension function
Controls dispatch and wavefront scheduling arbitration across quees.

Change-Id: I498f4898b544f79b8fb8514bf7e789ca9da29462
2018-06-19 19:41:28 -05:00
Evgeny 0fcd2fa56e aqlprofile: get version API
Change-Id: I3a85c088bfff3f54d8829e17cdafd7dfcdfb0c1d
2018-04-27 23:11:16 -04:00
Evgeny b37027e347 aqlprofile: read API
Change-Id: I896b1fbf1c19608197ac0a99b9d467d8c1bee775
2018-04-27 11:00:08 -05:00
Qingchuan Shi 49d2175c74 debug suport for queue error.
1/ Revised debug event handler to handle different events.
2/ Added queue error handler using the callback in queue create, which will print out wave info when queue in error state.
3/ Preempt queue instead of destory queue when queue error state.

Change-Id: Ib727d208de9caf1c72c76d42268483b24aaebde8
2018-04-20 14:25:16 -04:00
Evgeny 5a6f47c475 aqlprofile API: adding SQTT SE_MASK parameter
Change-Id: I0149692c2249c6d84ca710ce64e7346784ae593f
2018-04-16 16:39:42 -05:00
Sean Keely 7caf9633f6 Support large scratch allocations and reclaim.
Also improve small_heap used for scratch region allocation.

Change-Id: Ib7311b663b38968d88ebc355b81e12c0863dc541
2018-04-05 21:51:56 -04:00
Sean Keely b6f0248f53 Respect new memory model requirements at queue destroy.
Spec requires GPU release fences and CPU acquire fences at queue destroy.
Also update the recognized status codes.

Change-Id: If9166f5149f65417c7057ff7c0f69f6ac094d6ab
2018-04-04 08:13:00 -04:00
Wilkin 8e3d26c617 ROCm Runtime Support for respecting target xnack setting
This includes the changes provided by Konstantin, "Add xnack from elf header" (Change 136389).

Change-Id: I95e51141caa0d7c21903b09212c02e4906ec54a3
2018-03-20 16:57:15 -04:00
Konstantin Zhuravlyov b7915e9248 Bring loader in sync with stg sc.
Change-Id: Ib4d9231ca61048557acdad8eb8f632688c4aadd8
2018-03-12 15:00:50 -04:00
Sean Keely f59b001c75 Guard against IPC signal use of when profiling copy APIs.
Also update IPC signal API text to allow single process profiling with IPC signals.

Change-Id: I90b246623129d57183acb4ba1789beec360547c3
2018-01-31 19:05:32 -05:00
Tony Tye d472b24d05 Add support for R_AMDGPU_RELATIVE64
- Add support for R_AMDGPU_RELATIVE64 relocation record.
- Return status error if any unsupported relocation record encountered.

Change-Id: Icbb5dcb81109a70c1f2195412a0df58a11be9da1
2018-01-30 18:20:26 -05:00
Sean Keely d2e70bb999 Cleanup Signal interfaces for doorbells.
Create an interface for doorbell signals to reduce code duplication.
No functional changes.

Change-Id: I101a8997dd582ff99e1537758c804b21fe3bb6af
2017-11-28 22:12:19 -06:00
Evgeny 86939368d1 _aqlprofile_start() API migration
Change-Id: I7c8c7a6fc6f9b20cc2e4074dde38fb19440927f1
2017-11-20 17:32:19 -05:00
Evgeny 6e1b9288f6 aqlprofil API: removing from HSA hsa_api_trace/hsa_ext_interface
Change-Id: I12fac55ea9ccfdb119899bf9d000e3c8b0bf4bbb
2017-11-11 10:01:12 -06:00
Evgeny bb8eaf3ac8 aqlprofile API: _aqlprofile_start() returns required profile buffer sizes if undersized
Change-Id: Ib14b2cb2e7e2026c3af0b7bd2f08f51e48e598b2
2017-11-09 20:03:55 -06:00
Sean Keely 0c7dde2d1f Add queue intercept support to the runtime.
Queue intercept is exposed as two tools-only APIs via the API
intercept table.

Change-Id: Iac9602ed3143974d85c3569e9092295ad18037f8
2017-11-08 15:50:01 -05:00
Kent Russell b29d3f63e2 Revert "aqlprofile API: _start() sets buffers sizes with NULL ptr; block counters reg number / block name info"
This reverts commit 3daa85fad8.

Change-Id: Ie90b091df772bf9391494c773d63858aafbc1176
2017-11-08 06:59:33 -04:00
Evgeny 3daa85fad8 aqlprofile API: _start() sets buffers sizes with NULL ptr; block counters reg number / block name info
Change-Id: I3cb93453b683c55bf5ec26271648232306a5d140
2017-11-07 15:05:47 -05:00
Qingchuan Shi ce6aee01ed Add APIs to support debugging vm fault
1. Add hsa ext api hsa_amd_register_vmfault_handler for debugger to register callback in case of VM fault.
2. Extend hsa_ven_amd_loader API to:
   (1) iterate loaded code objects in executable:
       hsa_ven_amd_loader_executable_iterate_loaded_code_objects
   (2) get loaded code object info:
       hsa_ven_amd_loader_loaded_code_object_get_info
3. Make the id of hsa_queue the same as the one used in communication with thunk (for amd_aql_queue)

Change-Id: I68910809e59e24297350d262606f00e96c14bcbd
2017-10-28 21:48:26 -04:00
Ramesh Errabolu dccbc9f2af Changes to support surfacing of link weight as part of link info
Change-Id: I1c0705a9374af1245f0419c51beded0d7ee10639
2017-10-20 12:09:31 -04:00
Evgeny fd99e909ff aqlprofile API: enabling privilege memory related counters
Change-Id: I28a24ad1a3ce78c5d8a6319635ae1ffd392ab690
2017-10-09 17:34:54 -05:00
Evgeny 0e88414f5c removing graphics specific block RMI, ennabling memory related blocks
Change-Id: I477adc49b9ee3c8593c193bdc69c0deb4a9726e1
2017-09-25 10:49:22 -05:00
Sean Keely 117be0b55a Add suballocator for ordinary VRAM allocations smaller than 2MB.
Track pointer info for sub 2MB fragment allocations in allocation_map_.

Add fragment support to IPC.

Change-Id: I00cfc2e2fa289aac90a4718c392f9bb056a61a87
2017-09-19 06:08:36 -04:00
Evgeny 09c732c2f9 aqlprofile api: adding gfx8 mc counters
Change-Id: I84dc06c24b7961dfe665cf7e2ae6cc9ae3b7326b
2017-08-23 15:23:05 -05:00
Evgeny fb4afca8c3 AqlProfile API, commenting out hanging GFX9 blocks, ATC, GCEA, RPB
Change-Id: I411fb33f77c9538ca236b9b6b09c7dfe75220c02
2017-08-15 12:44:00 -05:00
Sean Keely c9642cf7af Initial IPC signal support.
Added an API for creating signals with attributes.
Added two APIs for IPC operations on signals.
Initial use of exceptions for error handling.

Add ref counting to signals.
Removed spin loops from signal destructors.
Signals are no longer to be destroyed with delete, use DeleteSignal instead.
Added delete safety to doorbells.
Added secondary hsa_signal_t -> Signal* translation path for IPC enabled signals.

Change-Id: Id59065d002f0c2566b0a9425694da2ed27cb7d7f
2017-08-11 18:41:34 -05:00
Evgeny 287afd3a52 adding aqlprofile member to HsaApiTable
Change-Id: Id674186dfa2e83295a51f770ccc0400f1cb51a98
2017-08-09 16:09:39 -05:00
Evgeny 4824a2db0b Adding HSA_API macro to the API method declarations to be consistent with other HSA header files, TCS removing
Change-Id: Ic217d3b2bdbb22d3600c5ecaacb7ab53bf26096a
2017-08-08 10:46:12 -04:00
Evgeny 47322942b3 aqlprofile block list, explicit numbers assigned, IA removed
Change-Id: I9f9358f8e03e13eb81845de2e33dd5f3da27811a
2017-08-03 11:39:21 -04:00
Evgeny c66f68041c aql-profile api: reducing blocks list to compute only and new gfx9 blocks
Change-Id: Ib506b82ea407afec4f5d4bcad755d4d57b92e34b
2017-08-02 12:21:24 -04:00
Evgeny ab67b8511b hsa_ven_amd_aqlprofile.h: include <hsa.h> fix
Change-Id: Idfd2fdde112d502d4b4a3365512ec601f7e56a5b
2017-07-12 15:43:58 -05:00