From 79a63cf292c8f674b9fbfed108b94c1d239ce62b Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Tue, 30 Apr 2024 09:01:09 -0500 Subject: [PATCH 001/159] wsl/hsakmt: initial commit Signed-off-by: lyndonli Signed-off-by: Horatio Zhang Signed-off-by: Shi.Leslie Signed-off-by: LonglongYao Signed-off-by: tiancyin Signed-off-by: Frank Min Signed-off-by: Aaron Liu Signed-off-by: Shane Xiao Signed-off-by: Lang Yu Signed-off-by: Feifei Xu Signed-off-by: Ruili Ji Signed-off-by: Qiang Yu Signed-off-by: Flora Cui --- debug.cpp | 118 +++ events.cpp | 129 +++ globals.cpp | 47 + inc/pm4_cmds.h | 1064 ++++++++++++++++++++++ inc/registers.h | 363 ++++++++ inc/rocr_proxy/rocr_proxy.h | 131 +++ inc/rocr_proxy/wddm_types.h | 155 ++++ inc/wddm/cmd_util.h | 77 ++ inc/wddm/device.h | 245 +++++ inc/wddm/gpu_memory.h | 218 +++++ inc/wddm/queue.h | 284 ++++++ inc/wddm/status.h | 59 ++ inc/wddm/thunks.h | 232 +++++ inc/wddm/types.h | 101 +++ inc/wddm/va_mgr.h | 86 ++ libdrm.cpp | 69 ++ libhsakmt.h | 158 ++++ libhsakmt.ver | 97 ++ memory.cpp | 554 ++++++++++++ openclose.cpp | 274 ++++++ pc_sampling.cpp | 73 ++ perfctr.cpp | 82 ++ queues.cpp | 174 ++++ rocr_proxy/librocr_proxy.a | Bin 0 -> 365408 bytes spm.cpp | 48 + svm.cpp | 52 ++ time.cpp | 52 ++ topology.cpp | 1698 +++++++++++++++++++++++++++++++++++ util/atomic_helpers.h | 519 +++++++++++ util/flag.cpp | 226 +++++ util/flag.h | 360 ++++++++ util/lazy_ptr.h | 155 ++++ util/lnx/os_linux.cpp | 771 ++++++++++++++++ util/locks.h | 290 ++++++ util/os.h | 327 +++++++ util/simple_heap.h | 363 ++++++++ util/small_heap.cpp | 185 ++++ util/small_heap.h | 131 +++ util/timer.cpp | 111 +++ util/timer.h | 173 ++++ util/utils.h | 424 +++++++++ util/win/os_win.cpp | 327 +++++++ version.cpp | 52 ++ wddm/cmd_util.cpp | 281 ++++++ wddm/device.cpp | 879 ++++++++++++++++++ wddm/gpu_memory.cpp | 467 ++++++++++ wddm/queue.cpp | 989 ++++++++++++++++++++ wddm/va_mgr.cpp | 163 ++++ 48 files changed, 13833 insertions(+) create mode 100644 debug.cpp create mode 100644 events.cpp create mode 100644 globals.cpp create mode 100644 inc/pm4_cmds.h create mode 100644 inc/registers.h create mode 100644 inc/rocr_proxy/rocr_proxy.h create mode 100644 inc/rocr_proxy/wddm_types.h create mode 100644 inc/wddm/cmd_util.h create mode 100644 inc/wddm/device.h create mode 100644 inc/wddm/gpu_memory.h create mode 100644 inc/wddm/queue.h create mode 100644 inc/wddm/status.h create mode 100644 inc/wddm/thunks.h create mode 100644 inc/wddm/types.h create mode 100644 inc/wddm/va_mgr.h create mode 100644 libdrm.cpp create mode 100644 libhsakmt.h create mode 100644 libhsakmt.ver create mode 100644 memory.cpp create mode 100644 openclose.cpp create mode 100644 pc_sampling.cpp create mode 100644 perfctr.cpp create mode 100644 queues.cpp create mode 100644 rocr_proxy/librocr_proxy.a create mode 100644 spm.cpp create mode 100644 svm.cpp create mode 100644 time.cpp create mode 100644 topology.cpp create mode 100644 util/atomic_helpers.h create mode 100644 util/flag.cpp create mode 100644 util/flag.h create mode 100644 util/lazy_ptr.h create mode 100644 util/lnx/os_linux.cpp create mode 100644 util/locks.h create mode 100644 util/os.h create mode 100644 util/simple_heap.h create mode 100644 util/small_heap.cpp create mode 100644 util/small_heap.h create mode 100644 util/timer.cpp create mode 100644 util/timer.h create mode 100644 util/utils.h create mode 100644 util/win/os_win.cpp create mode 100644 version.cpp create mode 100644 wddm/cmd_util.cpp create mode 100644 wddm/device.cpp create mode 100644 wddm/gpu_memory.cpp create mode 100644 wddm/queue.cpp create mode 100644 wddm/va_mgr.cpp diff --git a/debug.cpp b/debug.cpp new file mode 100644 index 0000000000..5152aaf483 --- /dev/null +++ b/debug.cpp @@ -0,0 +1,118 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ + +#include +#include + +#include "libhsakmt.h" + +static uint32_t runtime_capabilities_mask = 0; + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgRegister(HSAuint32 NodeId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgUnregister(HSAuint32 NodeId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgWavefrontControl( + HSAuint32 NodeId, HSA_DBG_WAVEOP Operand, HSA_DBG_WAVEMODE Mode, + HSAuint32 TrapId, HsaDbgWaveMessage *DbgWaveMsgRing) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgAddressWatch( + HSAuint32 NodeId, HSAuint32 NumWatchPoints, HSA_DBG_WATCH_MODE WatchMode[], + void *WatchAddress[], HSAuint64 WatchMask[], HsaEvent *WatchEvent[]) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtCheckRuntimeDebugSupport(void) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRuntimeEnable(void *rDebug, bool setupTtmp) { + HSAKMT_STATUS result = hsaKmtCheckRuntimeDebugSupport(); + + if (result) + return result; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRuntimeDisable(void) { + HSAKMT_STATUS result = hsaKmtCheckRuntimeDebugSupport(); + + if (result) + return result; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetRuntimeCapabilities(HSAuint32 *caps_mask) { + CHECK_DXG_OPEN(); + *caps_mask = runtime_capabilities_mask; + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgEnable(void **runtime_info, + HSAuint32 *data_size) { + CHECK_DXG_OPEN(); + + return HSAKMT_STATUS_NOT_SUPPORTED; +} +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgDisable(void) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgGetDeviceData(void **data, + HSAuint32 *n_entries, + HSAuint32 *entry_size) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDbgGetQueueData(void **data, HSAuint32 *n_entries, + HSAuint32 *entry_size, + bool suspend_queues) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtDebugTrapIoctl(struct kfd_ioctl_dbg_trap_args *args, HSA_QUEUEID *Queues, + HSAuint64 *DebugReturn) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} diff --git a/events.cpp b/events.cpp new file mode 100644 index 0000000000..e28491f31c --- /dev/null +++ b/events.cpp @@ -0,0 +1,129 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ + +#include +#include +#include +#include +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtCreateEvent(HsaEventDescriptor *EventDesc, + bool ManualReset, bool IsSignaled, + HsaEvent **Event) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyEvent(HsaEvent *Event) { + CHECK_DXG_OPEN(); + + if (!Event) + return HSAKMT_STATUS_INVALID_HANDLE; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetEvent(HsaEvent *Event) { + CHECK_DXG_OPEN(); + + if (!Event) + return HSAKMT_STATUS_INVALID_HANDLE; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtResetEvent(HsaEvent *Event) { + CHECK_DXG_OPEN(); + + if (!Event) + return HSAKMT_STATUS_INVALID_HANDLE; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtQueryEventState(HsaEvent *Event) { + CHECK_DXG_OPEN(); + + if (!Event) + return HSAKMT_STATUS_INVALID_HANDLE; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnEvent(HsaEvent *Event, + HSAuint32 Milliseconds) { + return hsaKmtWaitOnEvent_Ext(Event, Milliseconds, NULL); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnEvent_Ext(HsaEvent *Event, + HSAuint32 Milliseconds, + uint64_t *event_age) { + if (!Event) + return HSAKMT_STATUS_INVALID_HANDLE; + + return hsaKmtWaitOnMultipleEvents_Ext(&Event, 1, true, Milliseconds, + event_age); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnMultipleEvents(HsaEvent *Events[], + HSAuint32 NumEvents, + bool WaitOnAll, + HSAuint32 Milliseconds) { + return hsaKmtWaitOnMultipleEvents_Ext(Events, NumEvents, WaitOnAll, + Milliseconds, NULL); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnMultipleEvents_Ext(HsaEvent *Events[], + HSAuint32 NumEvents, + bool WaitOnAll, + HSAuint32 Milliseconds, + uint64_t *event_age) { + CHECK_DXG_OPEN(); + + if (!Events) + return HSAKMT_STATUS_INVALID_HANDLE; + + if (NumEvents == 1 && Events[0] == nullptr) { + std::this_thread::sleep_for(std::chrono::microseconds(20)); + return HSAKMT_STATUS_SUCCESS; + } + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtOpenSMI(HSAuint32 NodeId, int *fd) { + CHECK_DXG_OPEN(); + + pr_debug("[%s] node %d\n", __func__, NodeId); + assert(false); + return HSAKMT_STATUS_SUCCESS; +} diff --git a/globals.cpp b/globals.cpp new file mode 100644 index 0000000000..bb635fef4b --- /dev/null +++ b/globals.cpp @@ -0,0 +1,47 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ + +#include "libhsakmt.h" + +// HSAKMT global data + +int kfd_fd = -1; +unsigned long dxg_open_count; +unsigned long system_properties_count; +pthread_mutex_t hsakmt_mutex = PTHREAD_MUTEX_INITIALIZER; +bool is_dgpu; + +#ifndef PAGE_SIZE +int PAGE_SIZE; +#endif + +int PAGE_SHIFT; + +/* whether to check all dGPUs in the topology support SVM API */ +bool is_svm_api_supported; +/* zfb is mainly used during emulation */ +int zfb_support; +/* handle vendor specific packet */ +int vendor_packet_support; \ No newline at end of file diff --git a/inc/pm4_cmds.h b/inc/pm4_cmds.h new file mode 100644 index 0000000000..82edddc8dd --- /dev/null +++ b/inc/pm4_cmds.h @@ -0,0 +1,1064 @@ +#ifndef _ROCR_PM4_CMDS_H_ +#define _ROCR_PM4_CMDS_H_ + +#include + +#define mmCOMPUTE_NUM_THREAD_X 0x2E07 +#define mmCOMPUTE_PGM_LO 0x2E0C +#define mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO 0x2E10 +#define mmCOMPUTE_PGM_RSRC1 0x2E12 +#define mmCOMPUTE_PGM_RSRC3 0x2E28 +#define mmCOMPUTE_RESOURCE_LIMITS 0x2E15 +#define mmCOMPUTE_USER_DATA_0 0x2E40 + +#define PM4_TYPE_SHIFT 30 +#define PM4_COUNT_SHIFT 16 +#define PM4_OPCODE_SHIFT 8 +#define PM4_SHADER_TYPE_SHIFT 1 + +#define PM4_GFX_SHADER 0 +#define PM4_COMPUTE_SHADER 1 + +#define PM4_TYPE3_HDR(_opc_, _count_) \ + (uint32_t)((3) << PM4_TYPE_SHIFT | \ + ((_count_) - 2) << PM4_COUNT_SHIFT | \ + (_opc_) << PM4_OPCODE_SHIFT) | \ + (PM4_COMPUTE_SHADER << PM4_SHADER_TYPE_SHIFT) + +union PM4_MEC_TYPE_3_HEADER { + struct { + uint32_t reserved1 : 8; ///< reserved + uint32_t opcode : 8; ///< IT opcode + uint32_t count : 14;///< number of DWORDs - 1 in the information body. + uint32_t type : 2; ///< packet identifier. It should be 3 for type 3 packets + }; + uint32_t u32All; +}; + +#define IT_DISPATCH_DIRECT 0x15 +#define IT_ATOMIC_MEM 0x1E +#define IT_INDIRECT_BUFFER 0x3F +#define IT_COPY_DATA 0x40 +#define IT_EVENT_WRITE 0x46 +#define IT_RELEASE_MEM 0x49 +#define IT_ACQUIRE_MEM 0x58 +#define IT_SET_SH_REG 0x76 + +struct PM4_MEC_SET_SH_REG { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t reg_offset:16; + uint32_t reserved1:16; + } bitfields2; + uint32_t ordinal2; + }; +}; + +struct PM4_MEC_DISPATCH_DIRECT { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + uint32_t dim_x; + uint32_t dim_y; + uint32_t dim_z; + uint32_t dispatch_initiator; +}; + +// ------------------------------- MEC_EVENT_WRITE_event_index_enum ------------------------------- +enum MEC_EVENT_WRITE_event_index_enum { + event_index__mec_event_write__other = 0, + event_index__mec_event_write__sample_pipelinestat = 2, + event_index__mec_event_write__cs_partial_flush = 4, + event_index__mec_event_write__sample_streamoutstats__GFX11 = 8, + event_index__mec_event_write__sample_streamoutstats1__GFX11 = 9, + event_index__mec_event_write__sample_streamoutstats2__GFX11 = 10, + event_index__mec_event_write__sample_streamoutstats3__GFX11 = 11, +}; + +enum VGT_EVENT_TYPE { + Reserved_0x00 = 0x00000000, + SAMPLE_STREAMOUTSTATS1 = 0x00000001, + SAMPLE_STREAMOUTSTATS2 = 0x00000002, + SAMPLE_STREAMOUTSTATS3 = 0x00000003, + CACHE_FLUSH_TS = 0x00000004, + CONTEXT_DONE = 0x00000005, + CACHE_FLUSH = 0x00000006, + CS_PARTIAL_FLUSH = 0x00000007, + VGT_STREAMOUT_SYNC = 0x00000008, + VGT_STREAMOUT_RESET = 0x0000000a, + END_OF_PIPE_INCR_DE = 0x0000000b, + END_OF_PIPE_IB_END = 0x0000000c, + RST_PIX_CNT = 0x0000000d, + BREAK_BATCH = 0x0000000e, + VS_PARTIAL_FLUSH = 0x0000000f, + PS_PARTIAL_FLUSH = 0x00000010, + FLUSH_HS_OUTPUT = 0x00000011, + FLUSH_DFSM = 0x00000012, + RESET_TO_LOWEST_VGT = 0x00000013, + CACHE_FLUSH_AND_INV_TS_EVENT = 0x00000014, + CACHE_FLUSH_AND_INV_EVENT = 0x00000016, + PERFCOUNTER_START = 0x00000017, + PERFCOUNTER_STOP = 0x00000018, + PIPELINESTAT_START = 0x00000019, + PIPELINESTAT_STOP = 0x0000001a, + PERFCOUNTER_SAMPLE = 0x0000001b, + SAMPLE_PIPELINESTAT = 0x0000001e, + SO_VGTSTREAMOUT_FLUSH = 0x0000001f, + SAMPLE_STREAMOUTSTATS = 0x00000020, + RESET_VTX_CNT = 0x00000021, + BLOCK_CONTEXT_DONE = 0x00000022, + CS_CONTEXT_DONE = 0x00000023, + VGT_FLUSH = 0x00000024, + TGID_ROLLOVER = 0x00000025, + SQ_NON_EVENT = 0x00000026, + SC_SEND_DB_VPZ = 0x00000027, + BOTTOM_OF_PIPE_TS = 0x00000028, + FLUSH_SX_TS = 0x00000029, + DB_CACHE_FLUSH_AND_INV = 0x0000002a, + FLUSH_AND_INV_DB_DATA_TS = 0x0000002b, + FLUSH_AND_INV_DB_META = 0x0000002c, + FLUSH_AND_INV_CB_DATA_TS = 0x0000002d, + FLUSH_AND_INV_CB_META = 0x0000002e, + CS_DONE = 0x0000002f, + PS_DONE = 0x00000030, + FLUSH_AND_INV_CB_PIXEL_DATA = 0x00000031, + SX_CB_RAT_ACK_REQUEST = 0x00000032, + THREAD_TRACE_START = 0x00000033, + THREAD_TRACE_STOP = 0x00000034, + THREAD_TRACE_MARKER = 0x00000035, + THREAD_TRACE_FINISH = 0x00000037, + PIXEL_PIPE_STAT_CONTROL = 0x00000038, + PIXEL_PIPE_STAT_DUMP = 0x00000039, + PIXEL_PIPE_STAT_RESET = 0x0000003a, + CONTEXT_SUSPEND = 0x0000003b, + OFFCHIP_HS_DEALLOC = 0x0000003c, + ENABLE_NGG_PIPELINE = 0x0000003d, + SET_FE_ID__GFX09 = 0x00000009, + Available_0x1c__GFX09 = 0x0000001c, + Available_0x1d__GFX09 = 0x0000001d, + THREAD_TRACE_FLUSH__GFX09 = 0x00000036, + Reserved_0x3f__GFX09 = 0x0000003f, + ZPASS_DONE__GFX09_10 = 0x00000015, + ENABLE_LEGACY_PIPELINE__GFX09_10 = 0x0000003e, + Reserved_0x09__GFX10PLUS = 0x00000009, + FLUSH_ES_OUTPUT__GFX10PLUS = 0x0000001c, + BIN_CONF_OVERRIDE_CHECK__GFX10PLUS = 0x0000001d, + THREAD_TRACE_DRAW__GFX10PLUS = 0x00000036, + DRAW_DONE__GFX10PLUS = 0x0000003f, + WAIT_SYNC__GFX11 = 0x00000015, + ENABLE_PIPELINE_NOT_USED__GFX11 = 0x0000003e, +}; + +struct PM4_MEC_EVENT_WRITE { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t event_type:6; + uint32_t reserved1:2; + uint32_t event_index:4; + uint32_t reserved2:19; + uint32_t offload_enable:1; + } bitfields2; + uint32_t ordinal2; + }; +}; + +struct PM4_MEC_ATOMIC_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t atomic:7; + uint32_t reserved1:1; + uint32_t command:4; + uint32_t reserved2:13; + uint32_t cache_policy:2; + uint32_t reserved3:5; + } bitfields2; + uint32_t ordinal2; + }; + uint32_t addr_lo; + uint32_t addr_hi; + uint32_t src_data_lo; + uint32_t src_data_hi; + uint32_t cmp_data_lo; + uint32_t cmp_data_hi; + union { + struct { + uint32_t loop_interval:13; + uint32_t reserved4:19; + } bitfields9; + uint32_t ordinal9; + }; +}; + +struct PM4_MEC_WRITE_DATA { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t reserved1:8; + uint32_t dst_sel:4; + uint32_t reserved2:4; + uint32_t addr_incr:1; + uint32_t reserved3:2; + uint32_t resume_vf:1; + uint32_t wr_confirm:1; + uint32_t reserved4:4; + uint32_t cache_policy:2; + uint32_t reserved5:5; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t dst_mmreg_addr:18; + uint32_t reserved6:14; + } bitfields3a; + struct { + uint32_t dst_gds_addr:16; + uint32_t reserved7:16; + } bitfields3b; + struct { + uint32_t reserved8:2; + uint32_t dst_mem_addr_lo:30; + } bitfields3c; + uint32_t ordinal3; + }; + uint32_t dst_mem_addr_hi; +}; + +#define PERSISTENT_SPACE_START 0x00002c00 + +template +void GenerateSetShRegHeader(T* pm4, uint32_t reg_addr) { + pm4->cmd_set_data.header.u32All = PM4_TYPE3_HDR(IT_SET_SH_REG, + sizeof(T) / sizeof(uint32_t)); + pm4->cmd_set_data.bitfields2.reg_offset = reg_addr - PERSISTENT_SPACE_START; +} + +template +void GenerateCmdHeader(T* pm4, int op_code) { + pm4->header.u32All = PM4_TYPE3_HDR(op_code, sizeof(T) / sizeof(uint32_t)); +} + +/// @brief Defines the Gpu command to dispatch a kernel. It embeds +/// various Gpu hardware specific data structures for initialization +/// and configuration before a dispatch begins to run +struct DispatchTemplate { + + /// @brief Structure used to initialize the group dimensions + /// of a kernel dispatch and if performance counters are enabled + struct DispatchDimensionRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_num_thread_x; + uint32_t compute_num_thread_y; + uint32_t compute_num_thread_z; + } dimension_regs; + + struct DispatchProgramRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_pgm_lo; + uint32_t compute_pgm_hi; + } program_regs; + + struct DispatchProgramResourceRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_pgm_rsrc1; + uint32_t compute_pgm_rsrc2; + } program_resource_regs; + + /// @brief Structure used to initialize parameters related to + /// thread management i.e. number of waves to issue and number + /// of Compute Units to use + struct DispatchResourceRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_resource_limits; + uint32_t compute_static_thread_mgmt_se0; + uint32_t compute_static_thread_mgmt_se1; + uint32_t compute_tmpring_size; + uint32_t compute_static_thread_mgmt_se2; + uint32_t compute_static_thread_mgmt_se3; + } resource_regs; + + /// @brief Structure used to pass handles of the Aql dispatch + /// packet, Aql queue, Kernel argument address block, Scratch + /// buffer + struct DispatchComputeUserDataRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_user_data[16]; + } compute_user_data_regs; + + /// @brief Structure used to configure Cache flush policy + /// and dimensions of total work size + PM4_MEC_DISPATCH_DIRECT dispatch_direct; +}; + +struct DispatchProgramResourceRegs { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t compute_pgm_rsrc3; +}; + + +/// @brief Structure used to issue a programing scratch command for gfx11+ +struct SetScratchTemplate { + PM4_MEC_SET_SH_REG cmd_set_data; + uint32_t scratch_lo; + uint32_t scratch_hi; +}; + +/// @brief Structure used to issue a Gpu Barrier command +struct BarrierTemplate { + PM4_MEC_EVENT_WRITE event_write; +}; + +//--------------------MEC_ATOMIC_MEM-------------------- +enum MEC_ATOMIC_MEM_command_enum { + command__mec_atomic_mem__single_pass_atomic = 0, + command__mec_atomic_mem__loop_until_compare_satisfied = 1, + command__mec_atomic_mem__wait_for_write_confirmation = 2, + command__mec_atomic_mem__send_and_continue = 3, +}; + +enum MEC_ATOMIC_MEM_cache_policy_enum { + cache_policy__mec_atomic_mem__lru = 0, + cache_policy__mec_atomic_mem__stream = 1, + cache_policy__mec_atomic_mem__noa = 2, + cache_policy__mec_atomic_mem__bypass = 3, +}; + +enum TC_OP { + TC_OP_READ = 0x00000000, + TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 0x00000001, + TC_OP_ATOMIC_FMIN_RTN_32 = 0x00000002, + TC_OP_ATOMIC_FMAX_RTN_32 = 0x00000003, + TC_OP_RESERVED_FOP_RTN_32_0 = 0x00000004, + TC_OP_RESERVED_FOP_RTN_32_2 = 0x00000006, + TC_OP_ATOMIC_SWAP_RTN_32 = 0x00000007, + TC_OP_ATOMIC_CMPSWAP_RTN_32 = 0x00000008, + TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 0x00000009, + TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 0x0000000a, + TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 0x0000000b, + TC_OP_PROBE_FILTER = 0x0000000c, + TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 0x0000000e, + TC_OP_ATOMIC_ADD_RTN_32 = 0x0000000f, + TC_OP_ATOMIC_SUB_RTN_32 = 0x00000010, + TC_OP_ATOMIC_SMIN_RTN_32 = 0x00000011, + TC_OP_ATOMIC_UMIN_RTN_32 = 0x00000012, + TC_OP_ATOMIC_SMAX_RTN_32 = 0x00000013, + TC_OP_ATOMIC_UMAX_RTN_32 = 0x00000014, + TC_OP_ATOMIC_AND_RTN_32 = 0x00000015, + TC_OP_ATOMIC_OR_RTN_32 = 0x00000016, + TC_OP_ATOMIC_XOR_RTN_32 = 0x00000017, + TC_OP_ATOMIC_INC_RTN_32 = 0x00000018, + TC_OP_ATOMIC_DEC_RTN_32 = 0x00000019, + TC_OP_WBINVL1_VOL = 0x0000001a, + TC_OP_WBINVL1_SD = 0x0000001b, + TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 0x0000001c, + TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 0x0000001d, + TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 0x0000001e, + TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 0x0000001f, + TC_OP_WRITE = 0x00000020, + TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 0x00000021, + TC_OP_ATOMIC_FMIN_RTN_64 = 0x00000022, + TC_OP_ATOMIC_FMAX_RTN_64 = 0x00000023, + TC_OP_RESERVED_FOP_RTN_64_0 = 0x00000024, + TC_OP_RESERVED_FOP_RTN_64_1 = 0x00000025, + TC_OP_RESERVED_FOP_RTN_64_2 = 0x00000026, + TC_OP_ATOMIC_SWAP_RTN_64 = 0x00000027, + TC_OP_ATOMIC_CMPSWAP_RTN_64 = 0x00000028, + TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 0x00000029, + TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 0x0000002a, + TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 0x0000002b, + TC_OP_WBINVL2_SD = 0x0000002c, + TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 0x0000002d, + TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 0x0000002e, + TC_OP_ATOMIC_ADD_RTN_64 = 0x0000002f, + TC_OP_ATOMIC_SUB_RTN_64 = 0x00000030, + TC_OP_ATOMIC_SMIN_RTN_64 = 0x00000031, + TC_OP_ATOMIC_UMIN_RTN_64 = 0x00000032, + TC_OP_ATOMIC_SMAX_RTN_64 = 0x00000033, + TC_OP_ATOMIC_UMAX_RTN_64 = 0x00000034, + TC_OP_ATOMIC_AND_RTN_64 = 0x00000035, + TC_OP_ATOMIC_OR_RTN_64 = 0x00000036, + TC_OP_ATOMIC_XOR_RTN_64 = 0x00000037, + TC_OP_ATOMIC_INC_RTN_64 = 0x00000038, + TC_OP_ATOMIC_DEC_RTN_64 = 0x00000039, + TC_OP_WBL2_NC = 0x0000003a, + TC_OP_WBL2_WC = 0x0000003b, + TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 0x0000003c, + TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 0x0000003d, + TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 0x0000003e, + TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 0x0000003f, + TC_OP_WBINVL1 = 0x00000040, + TC_OP_ATOMIC_FCMPSWAP_32 = 0x00000041, + TC_OP_ATOMIC_FMIN_32 = 0x00000042, + TC_OP_ATOMIC_FMAX_32 = 0x00000043, + TC_OP_RESERVED_FOP_32_0 = 0x00000044, + TC_OP_RESERVED_FOP_32_2 = 0x00000046, + TC_OP_ATOMIC_SWAP_32 = 0x00000047, + TC_OP_ATOMIC_CMPSWAP_32 = 0x00000048, + TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 0x00000049, + TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 0x0000004a, + TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 0x0000004b, + TC_OP_INV_METADATA = 0x0000004c, + TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 0x0000004e, + TC_OP_ATOMIC_ADD_32 = 0x0000004f, + TC_OP_ATOMIC_SUB_32 = 0x00000050, + TC_OP_ATOMIC_SMIN_32 = 0x00000051, + TC_OP_ATOMIC_UMIN_32 = 0x00000052, + TC_OP_ATOMIC_SMAX_32 = 0x00000053, + TC_OP_ATOMIC_UMAX_32 = 0x00000054, + TC_OP_ATOMIC_AND_32 = 0x00000055, + TC_OP_ATOMIC_OR_32 = 0x00000056, + TC_OP_ATOMIC_XOR_32 = 0x00000057, + TC_OP_ATOMIC_INC_32 = 0x00000058, + TC_OP_ATOMIC_DEC_32 = 0x00000059, + TC_OP_INVL2_NC = 0x0000005a, + TC_OP_NOP_RTN0 = 0x0000005b, + TC_OP_RESERVED_NON_FLOAT_32_1 = 0x0000005c, + TC_OP_RESERVED_NON_FLOAT_32_2 = 0x0000005d, + TC_OP_RESERVED_NON_FLOAT_32_3 = 0x0000005e, + TC_OP_RESERVED_NON_FLOAT_32_4 = 0x0000005f, + TC_OP_WBINVL2 = 0x00000060, + TC_OP_ATOMIC_FCMPSWAP_64 = 0x00000061, + TC_OP_ATOMIC_FMIN_64 = 0x00000062, + TC_OP_ATOMIC_FMAX_64 = 0x00000063, + TC_OP_RESERVED_FOP_64_0 = 0x00000064, + TC_OP_RESERVED_FOP_64_1 = 0x00000065, + TC_OP_RESERVED_FOP_64_2 = 0x00000066, + TC_OP_ATOMIC_SWAP_64 = 0x00000067, + TC_OP_ATOMIC_CMPSWAP_64 = 0x00000068, + TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 0x00000069, + TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 0x0000006a, + TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 0x0000006b, + TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 0x0000006c, + TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 0x0000006d, + TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 0x0000006e, + TC_OP_ATOMIC_ADD_64 = 0x0000006f, + TC_OP_ATOMIC_SUB_64 = 0x00000070, + TC_OP_ATOMIC_SMIN_64 = 0x00000071, + TC_OP_ATOMIC_UMIN_64 = 0x00000072, + TC_OP_ATOMIC_SMAX_64 = 0x00000073, + TC_OP_ATOMIC_UMAX_64 = 0x00000074, + TC_OP_ATOMIC_AND_64 = 0x00000075, + TC_OP_ATOMIC_OR_64 = 0x00000076, + TC_OP_ATOMIC_XOR_64 = 0x00000077, + TC_OP_ATOMIC_INC_64 = 0x00000078, + TC_OP_ATOMIC_DEC_64 = 0x00000079, + TC_OP_WBINVL2_NC = 0x0000007a, + TC_OP_NOP_ACK = 0x0000007b, + TC_OP_RESERVED_NON_FLOAT_64_1 = 0x0000007c, + TC_OP_RESERVED_NON_FLOAT_64_2 = 0x0000007d, + TC_OP_RESERVED_NON_FLOAT_64_3 = 0x0000007e, + TC_OP_RESERVED_NON_FLOAT_64_4 = 0x0000007f, + TC_OP_RESERVED_FOP_RTN_32_1__GFX09_10 = 0x00000005, + TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1__GFX09_10 = 0x0000000d, + TC_OP_RESERVED_FOP_32_1__GFX09_10 = 0x00000045, + TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1__GFX09_10 = 0x0000004d, + TC_OP_RESERVED_FADD_RTN_32__GFX11 = 0x00000005, + TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32__GFX11 = 0x0000000d, + TC_OP_RESERVED_FADD_32__GFX11 = 0x00000045, + TC_OP_ATOMIC_FADD_FLUSH_DENORM_32__GFX11 = 0x0000004d, +}; + +// Desc: Strucuture used to perform various atomic +// operations - add, subtract, increment, etc +struct AtomicTemplate { + PM4_MEC_ATOMIC_MEM atomic; +}; + +/// @brief PM4 command to write a 64-bit value into a memory +/// location accessible to Gpu +struct WriteDataTemplate { + PM4_MEC_WRITE_DATA write_data; + uint64_t write_data_value; +}; + +// ---------------------------------- MEC_COPY_DATA_src_sel_enum ---------------------------------- +enum MEC_COPY_DATA_src_sel_enum { + src_sel__mec_copy_data__mem_mapped_register = 0, + src_sel__mec_copy_data__tc_l2_obsolete = 1, + src_sel__mec_copy_data__tc_l2 = 2, + src_sel__mec_copy_data__gds = 3, + src_sel__mec_copy_data__perfcounters = 4, + src_sel__mec_copy_data__immediate_data = 5, + src_sel__mec_copy_data__atomic_return_data = 6, + src_sel__mec_copy_data__gds_atomic_return_data0 = 7, + src_sel__mec_copy_data__gds_atomic_return_data1 = 8, + src_sel__mec_copy_data__gpu_clock_count = 9, + src_sel__mec_copy_data__system_clock_count = 10, + src_sel__mec_copy_data__ext32perfcntr = 11, +}; + +// ---------------------------------- MEC_COPY_DATA_dst_sel_enum ---------------------------------- +enum MEC_COPY_DATA_dst_sel_enum { + dst_sel__mec_copy_data__mem_mapped_register = 0, + dst_sel__mec_copy_data__tc_l2 = 2, + dst_sel__mec_copy_data__gds = 3, + dst_sel__mec_copy_data__perfcounters = 4, + dst_sel__mec_copy_data__tc_l2_obsolete = 5, + dst_sel__mec_copy_data__mem_mapped_reg_dc = 6, + dst_sel__mec_copy_data__ext32perfcntr = 11, +}; + +// ------------------------------ MEC_COPY_DATA_src_cache_policy_enum ------------------------------ +enum MEC_COPY_DATA_src_cache_policy_enum { + src_cache_policy__mec_copy_data__lru = 0, + src_cache_policy__mec_copy_data__stream = 1, + src_cache_policy__mec_copy_data__noa = 2, + src_cache_policy__mec_copy_data__bypass = 3, +}; + +// --------------------------------- MEC_COPY_DATA_count_sel_enum --------------------------------- +enum MEC_COPY_DATA_count_sel_enum { + count_sel__mec_copy_data__32_bits_of_data = 0, + count_sel__mec_copy_data__64_bits_of_data = 1, +}; + +// --------------------------------- MEC_COPY_DATA_wr_confirm_enum --------------------------------- +enum MEC_COPY_DATA_wr_confirm_enum { + wr_confirm__mec_copy_data__do_not_wait_for_confirmation = 0, + wr_confirm__mec_copy_data__wait_for_confirmation = 1, +}; + +// ------------------------------ MEC_COPY_DATA_dst_cache_policy_enum ------------------------------ +enum MEC_COPY_DATA_dst_cache_policy_enum { + dst_cache_policy__mec_copy_data__lru = 0, + dst_cache_policy__mec_copy_data__stream = 1, + dst_cache_policy__mec_copy_data__noa = 2, + dst_cache_policy__mec_copy_data__bypass = 3, +}; + +// ------------------------------- MEC_COPY_DATA_pq_exe_status_enum ------------------------------- +enum MEC_COPY_DATA_pq_exe_status_enum { + pq_exe_status__mec_copy_data__default = 0, + pq_exe_status__mec_copy_data__phase_update = 1, +}; + +typedef struct PM4_MEC_COPY_DATA { + union { + PM4_MEC_TYPE_3_HEADER header; /// header + uint32_t ordinal1; + }; + union { + struct { + uint32_t src_sel : 4; + uint32_t reserved1 : 4; + uint32_t dst_sel : 4; + uint32_t reserved2 : 1; + uint32_t src_cache_policy : 2; + uint32_t reserved3 : 1; + uint32_t count_sel : 1; + uint32_t reserved4 : 3; + uint32_t wr_confirm : 1; + uint32_t reserved5 : 4; + uint32_t dst_cache_policy : 2; + uint32_t reserved6 : 2; + uint32_t pq_exe_status : 1; + uint32_t reserved7 : 2; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t src_reg_offset : 18; + uint32_t reserved8 : 14; + } bitfields3a; + struct { + uint32_t reserved9 : 2; + uint32_t src_32b_addr_lo : 30; + } bitfields3b; + struct { + uint32_t reserved10 : 3; + uint32_t src_64b_addr_lo : 29; + } bitfields3c; + struct { + uint32_t src_gds_addr_lo : 16; + uint32_t reserved11 : 16; + } bitfields3d; + uint32_t imm_data; + uint32_t ordinal3; + }; + union { + uint32_t src_memtc_addr_hi; + uint32_t src_imm_data; + uint32_t ordinal4; + }; + union { + struct { + uint32_t dst_reg_offset : 18; + uint32_t reserved12 : 14; + } bitfields5a; + struct { + uint32_t reserved13 : 2; + uint32_t dst_32b_addr_lo : 30; + } bitfields5b; + struct { + uint32_t reserved14 : 3; + uint32_t dst_64b_addr_lo : 29; + } bitfields5c; + struct { + uint32_t dst_gds_addr_lo : 16; + uint32_t reserved15 : 16; + } bitfields5d; + uint32_t ordinal5; + }; + uint32_t dst_addr_hi; +} PM4MEC_COPY_DATA; +namespace gfx9 { + +struct PM4_MEC_ACQUIRE_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t coher_cntl:31; + uint32_t reserved1:1; + } bitfields2; + uint32_t ordinal2; + }; + uint32_t coher_size; + union { + struct { + uint32_t coher_size_hi:8; + uint32_t reserved2:24; + } bitfields4; + uint32_t ordinal4; + }; + uint32_t coher_base_lo; + union { + struct { + uint32_t coher_base_hi:24; + uint32_t reserved3:8; + } bitfields6; + uint32_t ordinal6; + }; + union { + struct { + uint32_t poll_interval:16; + uint32_t reserved4:16; + } bitfields7; + uint32_t ordinal7; + }; +}; + +struct PM4_MEC_RELEASE_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t event_type:6; + uint32_t reserved1:2; + uint32_t event_index:4; + uint32_t tcl1_vol_action_ena:1; + uint32_t tc_vol_action_ena:1; + uint32_t reserved2:1; + uint32_t tc_wb_action_ena:1; + uint32_t tcl1_action_ena:1; + uint32_t tc_action_ena:1; + uint32_t reserved3:1; + uint32_t tc_nc_action_ena:1; + uint32_t tc_wc_action_ena:1; + uint32_t tc_md_action_ena:1; + uint32_t reserved4:3; + uint32_t cache_policy:2; + uint32_t reserved5:2; + uint32_t pq_exe_status:1; + uint32_t reserved6:2; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t reserved7:16; + uint32_t dst_sel:2; + uint32_t reserved8:6; + uint32_t int_sel:3; + uint32_t reserved9:2; + uint32_t data_sel:3; + } bitfields3; + uint32_t ordinal3; + }; + union { + struct { + uint32_t reserved10:2; + uint32_t address_lo_32b:30; + } bitfields4a; + struct { + uint32_t reserved11:3; + uint32_t address_lo_64b:29; + } bitfields4b; + uint32_t reserved12; + uint32_t ordinal4; + }; + union { + uint32_t address_hi; + uint32_t reserved13; + uint32_t ordinal5; + }; + union { + uint32_t data_lo; + uint32_t cmp_data_lo; + struct { + uint32_t dw_offset:16; + uint32_t num_dwords:16; + } bitfields6c; + uint32_t reserved14; + uint32_t ordinal6; + }; + union { + uint32_t data_hi; + uint32_t cmp_data_hi; + uint32_t reserved15; + uint32_t reserved16; + uint32_t ordinal7; + }; + uint32_t int_ctxid; +}; + +struct PM4_MEC_WAIT_REG_MEM64 { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t function:3; + uint32_t reserved1:1; + uint32_t mem_space:2; + uint32_t operation:2; + uint32_t reserved2:24; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t reserved3:3; + uint32_t mem_poll_addr_lo:29; + } bitfields3a; + struct { + uint32_t reg_poll_addr:18; + uint32_t reserved4:14; + } bitfields3b; + struct { + uint32_t reg_write_addr1:18; + uint32_t reserved5:14; + } bitfields3c; + uint32_t ordinal3; + }; + union { + uint32_t mem_poll_addr_hi; + struct { + uint32_t reg_write_addr2:18; + uint32_t reserved6:14; + } bitfields4b; + uint32_t ordinal4; + }; + uint32_t reference; + uint32_t reference_hi; + uint32_t mask; + uint32_t mask_hi; + union { + struct { + uint32_t poll_interval:16; + uint32_t reserved7:16; + } bitfields9; + uint32_t ordinal9; + }; +}; + +/// @brief Structure used to configure the flushing of +/// various caches - instruction, constants, L1 and L2 +struct AcquireMemTemplate { + PM4_MEC_ACQUIRE_MEM acquire_mem; +}; + +struct EndofKernelNotifyTemplate { + PM4_MEC_RELEASE_MEM release_mem; +}; + +/// @brief PM4 command to wait for a certain event before proceeding +/// to process another command on the queue +struct WaitRegMem64Template { + PM4_MEC_WAIT_REG_MEM64 wait_reg_mem; +}; + +} // gfx9 namespace + +namespace gfx10 { + +struct PM4_MEC_ACQUIRE_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + uint32_t reserved1; + uint32_t coher_size; + union { + struct { + uint32_t coher_size_hi:8; + uint32_t reserved2:24; + } bitfields4; + uint32_t ordinal4; + }; + uint32_t coher_base_lo; + union { + struct { + uint32_t coher_base_hi:24; + uint32_t reserved3:8; + } bitfields6; + uint32_t ordinal6; + }; + union { + struct { + uint32_t poll_interval:16; + uint32_t reserved4:16; + } bitfields7; + uint32_t ordinal7; + }; + union { + struct { + uint32_t gcr_cntl:19; + uint32_t reserved4:13; + } bitfields8; + uint32_t ordinal8; + }; +}; + +struct PM4_MEC_RELEASE_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t event_type:6; + uint32_t reserved1:2; + uint32_t event_index:4; + uint32_t gcr_cntl:12; + uint32_t reserved2:1; + uint32_t cache_policy:2; + uint32_t reserved3:2; + uint32_t pq_exe_status:1; + uint32_t reserved4:2; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t reserved7:16; + uint32_t dst_sel:2; + uint32_t reserved8:2; + uint32_t mes_intr_pipe:2; + uint32_t mes_action_id:2; + uint32_t int_sel:3; + uint32_t reserved9:2; + uint32_t data_sel:3; + } bitfields3; + uint32_t ordinal3; + }; + union { + struct { + uint32_t reserved10:2; + uint32_t address_lo_32b:30; + } bitfields4a; + struct { + uint32_t reserved11:3; + uint32_t address_lo_64b:29; + } bitfields4b; + uint32_t reserved12; + uint32_t ordinal4; + }; + union { + uint32_t address_hi; + uint32_t reserved13; + uint32_t ordinal5; + }; + union { + uint32_t data_lo; + uint32_t cmp_data_lo; + struct { + uint32_t dw_offset:16; + uint32_t num_dwords:16; + } bitfields6c; + uint32_t reserved14; + uint32_t ordinal6; + }; + union { + uint32_t data_hi; + uint32_t cmp_data_hi; + uint32_t reserved15; + uint32_t reserved16; + uint32_t ordinal7; + }; + uint32_t int_ctxid; +}; + +struct PM4_MEC_WAIT_REG_MEM64 { + union { + PM4_MEC_TYPE_3_HEADER header; ///header + uint32_t ordinal1; + }; + union { + struct { + uint32_t function:3; + uint32_t reserved1:1; + uint32_t mem_space:2; + uint32_t operation:2; + uint32_t reserved2:14; + uint32_t mes_intr_pipe:2; + uint32_t mes_action:1; + uint32_t cache_policy:2; + uint32_t reserved3:5; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t reserved4:3; + uint32_t mem_poll_addr_lo:29; + } bitfields3a; + struct { + uint32_t reg_poll_addr:18; + uint32_t reserved5:14; + } bitfields3b; + struct { + uint32_t reg_write_addr1:18; + uint32_t reserved6:14; + } bitfields3c; + uint32_t ordinal3; + }; + union { + uint32_t mem_poll_addr_hi; + struct { + uint32_t reg_write_addr2:18; + uint32_t reserved7:14; + } bitfields4b; + uint32_t ordinal4; + }; + uint32_t reference; + uint32_t reference_hi; + uint32_t mask; + uint32_t mask_hi; + union { + struct { + uint32_t poll_interval:16; + uint32_t reserved8:15; + uint32_t optimize_ace_offload_mode:1; + } bitfields9; + uint32_t ordinal9; + }; +}; + +/// @brief Structure used to configure the flushing of +/// various caches - instruction, constants, L1 and L2 +struct AcquireMemTemplate { + PM4_MEC_ACQUIRE_MEM acquire_mem; +}; + +struct EndofKernelNotifyTemplate { + PM4_MEC_RELEASE_MEM release_mem; +}; + +struct WaitRegMem64Template { + PM4_MEC_WAIT_REG_MEM64 wait_reg_mem; +}; + +} // gfx10 namespace + +namespace gfx11 { + +struct PM4_MEC_RELEASE_MEM { + union { + PM4_MEC_TYPE_3_HEADER header; + uint32_t ordinal1; + }; + union { + struct { + uint32_t event_type:6; + uint32_t reserved1:2; + uint32_t event_index:4; + uint32_t gcr_cntl:13; + uint32_t cache_policy:2; + uint32_t reserved2:1; + uint32_t pq_exe_status:1; + uint32_t reserved3:1; + uint32_t glk_inv:1; + uint32_t reserved4:1; + } bitfields2; + uint32_t ordinal2; + }; + union { + struct { + uint32_t reserved5:16; + uint32_t dst_sel:2; + uint32_t reserved6:2; + uint32_t mes_intr_pipe:2; + uint32_t mes_action_id:2; + uint32_t int_sel:3; + uint32_t reserved7:2; + uint32_t data_sel:3; + } bitfields3; + uint32_t ordinal3; + }; + union { + struct { + uint32_t reserved8:2; + uint32_t address_lo_32b:30; + } bitfields4a; + struct { + uint32_t reserved9:3; + uint32_t address_lo_64b:29; + } bitfields4b; + uint32_t reserved10; + uint32_t ordinal4; + }; + union { + uint32_t address_hi; + uint32_t reserved11; + uint32_t ordinal5; + }; + union { + uint32_t data_lo; + uint32_t cmp_data_lo; + struct { + uint32_t dw_offset:16; + uint32_t num_dwords:16; + } bitfields6c; + uint32_t reserved12; + uint32_t ordinal6; + }; + union { + uint32_t data_hi; + uint32_t cmp_data_hi; + uint32_t reserved13; + uint32_t reserved14; + uint32_t ordinal7; + }; + uint32_t int_ctxid; +}; + +struct EndofKernelNotifyTemplate { + PM4_MEC_RELEASE_MEM release_mem; +}; + +} // gfx11 namespace + +#endif diff --git a/inc/registers.h b/inc/registers.h new file mode 100644 index 0000000000..067b808b90 --- /dev/null +++ b/inc/registers.h @@ -0,0 +1,363 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// This file is used only for open source cmake builds, if we hardcode the +// register values in amd_aql_queue.cpp then this file won't be required. For +// now we are using this file where register details are spelled out in the +// structs/unions below. +#ifndef HSA_RUNTME_CORE_INC_REGISTERS_H_ +#define HSA_RUNTME_CORE_INC_REGISTERS_H_ + +typedef enum SQ_RSRC_BUF_TYPE { +SQ_RSRC_BUF = 0x00000000, +SQ_RSRC_BUF_RSVD_1 = 0x00000001, +SQ_RSRC_BUF_RSVD_2 = 0x00000002, +SQ_RSRC_BUF_RSVD_3 = 0x00000003, +} SQ_RSRC_BUF_TYPE; + +typedef enum BUF_DATA_FORMAT { +BUF_DATA_FORMAT_INVALID = 0x00000000, +BUF_DATA_FORMAT_8 = 0x00000001, +BUF_DATA_FORMAT_16 = 0x00000002, +BUF_DATA_FORMAT_8_8 = 0x00000003, +BUF_DATA_FORMAT_32 = 0x00000004, +BUF_DATA_FORMAT_16_16 = 0x00000005, +BUF_DATA_FORMAT_10_11_11 = 0x00000006, +BUF_DATA_FORMAT_11_11_10 = 0x00000007, +BUF_DATA_FORMAT_10_10_10_2 = 0x00000008, +BUF_DATA_FORMAT_2_10_10_10 = 0x00000009, +BUF_DATA_FORMAT_8_8_8_8 = 0x0000000a, +BUF_DATA_FORMAT_32_32 = 0x0000000b, +BUF_DATA_FORMAT_16_16_16_16 = 0x0000000c, +BUF_DATA_FORMAT_32_32_32 = 0x0000000d, +BUF_DATA_FORMAT_32_32_32_32 = 0x0000000e, +BUF_DATA_FORMAT_RESERVED_15 = 0x0000000f, +} BUF_DATA_FORMAT; + +typedef enum BUF_NUM_FORMAT { +BUF_NUM_FORMAT_UNORM = 0x00000000, +BUF_NUM_FORMAT_SNORM = 0x00000001, +BUF_NUM_FORMAT_USCALED = 0x00000002, +BUF_NUM_FORMAT_SSCALED = 0x00000003, +BUF_NUM_FORMAT_UINT = 0x00000004, +BUF_NUM_FORMAT_SINT = 0x00000005, +BUF_NUM_FORMAT_SNORM_OGL__SI__CI = 0x00000006, +BUF_NUM_FORMAT_RESERVED_6__VI = 0x00000006, +BUF_NUM_FORMAT_FLOAT = 0x00000007, +} BUF_NUM_FORMAT; + +typedef enum BUF_FORMAT { +BUF_FORMAT_32_UINT = 0x00000014, +} BUF_FORMAT; + +typedef enum SQ_SEL_XYZW01 { +SQ_SEL_0 = 0x00000000, +SQ_SEL_1 = 0x00000001, +SQ_SEL_RESERVED_0 = 0x00000002, +SQ_SEL_RESERVED_1 = 0x00000003, +SQ_SEL_X = 0x00000004, +SQ_SEL_Y = 0x00000005, +SQ_SEL_Z = 0x00000006, +SQ_SEL_W = 0x00000007, +} SQ_SEL_XYZW01; + + union COMPUTE_TMPRING_SIZE { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int WAVES : 12; + unsigned int WAVESIZE : 13; + unsigned int : 7; +#elif defined(BIGENDIAN_CPU) + unsigned int : 7; + unsigned int WAVESIZE : 13; + unsigned int WAVES : 12; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + union COMPUTE_TMPRING_SIZE_GFX11 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int WAVES : 12; + unsigned int WAVESIZE : 15; + unsigned int : 5; +#elif defined(BIGENDIAN_CPU) + unsigned int : 5; + unsigned int WAVESIZE : 15; + unsigned int WAVES : 12; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + union COMPUTE_TMPRING_SIZE_GFX12 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int WAVES : 12; + unsigned int WAVESIZE : 18; + unsigned int : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int : 2; + unsigned int WAVESIZE : 18; + unsigned int WAVES : 12; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + union SQ_BUF_RSRC_WORD0 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int BASE_ADDRESS : 32; +#elif defined(BIGENDIAN_CPU) + unsigned int BASE_ADDRESS : 32; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + + union SQ_BUF_RSRC_WORD1 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int BASE_ADDRESS_HI : 16; + unsigned int STRIDE : 14; + unsigned int CACHE_SWIZZLE : 1; + unsigned int SWIZZLE_ENABLE : 1; +#elif defined(BIGENDIAN_CPU) + unsigned int SWIZZLE_ENABLE : 1; + unsigned int CACHE_SWIZZLE : 1; + unsigned int STRIDE : 14; + unsigned int BASE_ADDRESS_HI : 16; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + union SQ_BUF_RSRC_WORD1_GFX11 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int BASE_ADDRESS_HI : 16; + unsigned int STRIDE : 14; + unsigned int SWIZZLE_ENABLE : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int SWIZZLE_ENABLE : 2; + unsigned int STRIDE : 14; + unsigned int BASE_ADDRESS_HI : 16; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + + union SQ_BUF_RSRC_WORD2 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int NUM_RECORDS : 32; +#elif defined(BIGENDIAN_CPU) + unsigned int NUM_RECORDS : 32; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + + union SQ_BUF_RSRC_WORD3 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int DST_SEL_X : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_W : 3; + unsigned int NUM_FORMAT : 3; + unsigned int DATA_FORMAT : 4; + unsigned int ELEMENT_SIZE : 2; + unsigned int INDEX_STRIDE : 2; + unsigned int ADD_TID_ENABLE : 1; + unsigned int ATC__CI__VI : 1; + unsigned int HASH_ENABLE : 1; + unsigned int HEAP : 1; + unsigned int MTYPE__CI__VI : 3; + unsigned int TYPE : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int TYPE : 2; + unsigned int MTYPE__CI__VI : 3; + unsigned int HEAP : 1; + unsigned int HASH_ENABLE : 1; + unsigned int ATC__CI__VI : 1; + unsigned int ADD_TID_ENABLE : 1; + unsigned int INDEX_STRIDE : 2; + unsigned int ELEMENT_SIZE : 2; + unsigned int DATA_FORMAT : 4; + unsigned int NUM_FORMAT : 3; + unsigned int DST_SEL_W : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_X : 3; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + union SQ_BUF_RSRC_WORD3_GFX10 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int DST_SEL_X : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_W : 3; + unsigned int FORMAT : 7; + unsigned int RESERVED1 : 2; + unsigned int INDEX_STRIDE : 2; + unsigned int ADD_TID_ENABLE : 1; + unsigned int RESOURCE_LEVEL : 1; + unsigned int RESERVED2 : 3; + unsigned int OOB_SELECT : 2; + unsigned int TYPE : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int TYPE : 2; + unsigned int OOB_SELECT : 2; + unsigned int RESERVED2 : 3; + unsigned int RESOURCE_LEVEL : 1; + unsigned int ADD_TID_ENABLE : 1; + unsigned int INDEX_STRIDE : 2; + unsigned int RESERVED1 : 2; + unsigned int FORMAT : 7; + unsigned int DST_SEL_W : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_X : 3; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + + // From V# Table + union SQ_BUF_RSRC_WORD3_GFX11 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int DST_SEL_X : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_W : 3; + unsigned int FORMAT : 6; + unsigned int RESERVED1 : 3; + unsigned int INDEX_STRIDE : 2; + unsigned int ADD_TID_ENABLE : 1; + unsigned int RESERVED2 : 4; + unsigned int OOB_SELECT : 2; + unsigned int TYPE : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int TYPE : 2; + unsigned int OOB_SELECT : 2; + unsigned int RESERVED2 : 4; + unsigned int ADD_TID_ENABLE : 1; + unsigned int INDEX_STRIDE : 2; + unsigned int RESERVED1 : 3; + unsigned int FORMAT : 6; + unsigned int DST_SEL_W : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_X : 3; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; + // From V# Table + union SQ_BUF_RSRC_WORD3_GFX12 { + struct { +#if defined(LITTLEENDIAN_CPU) + unsigned int DST_SEL_X : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_W : 3; + unsigned int FORMAT : 6; + unsigned int RESERVED1 : 3; + unsigned int INDEX_STRIDE : 2; + unsigned int ADD_TID_ENABLE : 1; + unsigned int WRITE_COMPRESS_ENABLE : 1; + unsigned int COMPRESSION_EN : 1; + unsigned int COMPRESSION_ACCESS_MODE : 2; + unsigned int OOB_SELECT : 2; + unsigned int TYPE : 2; +#elif defined(BIGENDIAN_CPU) + unsigned int TYPE : 2; + unsigned int OOB_SELECT : 2; + unsigned int COMPRESSION_ACCESS_MODE : 2; + unsigned int COMPRESSION_EN : 1; + unsigned int WRITE_COMPRESS_ENABLE : 1; + unsigned int ADD_TID_ENABLE : 1; + unsigned int INDEX_STRIDE : 2; + unsigned int RESERVED1 : 3; + unsigned int FORMAT : 6; + unsigned int DST_SEL_W : 3; + unsigned int DST_SEL_Z : 3; + unsigned int DST_SEL_Y : 3; + unsigned int DST_SEL_X : 3; +#endif + } bitfields, bits; + unsigned int u32All; + signed int i32All; + float f32All; + }; +#endif // header guard diff --git a/inc/rocr_proxy/rocr_proxy.h b/inc/rocr_proxy/rocr_proxy.h new file mode 100644 index 0000000000..60358cdb90 --- /dev/null +++ b/inc/rocr_proxy/rocr_proxy.h @@ -0,0 +1,131 @@ +#ifndef _ROCR_PROXY_H_ +#define _ROCR_PROXY_H_ + +#include + +namespace rocr_proxy { +enum AllocDomain { + kSystem, + kLocal, + kUserMemory, + kUserQueue, + kDomainCount, +}; + +enum MemFlag { + kFineGrain = (1ULL << 0), + kKernarg = (1ULL << 1), +}; + +enum EngineFlag { + KCOMPUTE0 = (1ULL << 0), + KDRMDMA = (1ULL << 1), + KDRMDMA1 = (1ULL << 2), +}; + +enum SchedLevel { + kLow = 0, + kNormal = 1, + kHigh = 2, +}; + +enum AsicFamilyType { + kVega10, + kNavi10, + kSiennaCichlid, + kPlumBONITO, + kNavi44, + kNavi48 +}; + +struct HwsInfo { + union { + struct { + uint32_t gfxHwsEnabled : 1; + uint32_t computeHwsEnabled : 1; + uint32_t dmaHwsEnabled : 1; + uint32_t dma1HwsEnabled : 1; + uint32_t reserved : 28; + } hwsMask; + uint32_t osHwsEnableFlags; + }; + uint64_t engineOrdinalMask; // Indicates which engines (by ordinal) support MES HWS +}; + +typedef struct { + int major; + int minor; + int stepping; + bool is_dgpu; + char product_name[MAX_PATH]; + const char *uuid; + AsicFamilyType family; + uint32_t device_id; + uint32_t wavefront_size; + uint32_t compute_unit_count; + uint32_t max_engine_clock_mhz; + uint32_t watch_points_num; + uint32_t pci_bus_addr; + uint32_t memory_bus_width; + uint32_t max_memory_clock_mhz; + uint64_t gpu_counter_frequency; + uint32_t wave_per_cu; + uint32_t simd_per_cu; + uint32_t max_scratch_slots_per_cu; + uint32_t num_shader_engine; + uint32_t shader_array_per_shader_engine; + uint32_t domain; + uint32_t num_gws; + uint32_t asic_revision; + uint64_t local_visible_heap_size; + uint64_t local_invisible_heap_size; + uint64_t private_aperture_base; + uint64_t private_aperture_size; + uint64_t shared_aperture_base; + uint64_t shared_aperture_size; + uint32_t user_queue_size; + uint32_t lds_size; + uint32_t big_page_alignment_size; + uint32_t hw_big_page_min_alignment_size; + uint32_t hw_big_page_alignment_size; + bool enable_big_page_alignment; + uint32_t mec_fw_version; + uint32_t sdma_fw_version; + uint32_t l1_cache_size; + uint32_t l2_cache_size; + uint32_t l3_cache_size; + uint32_t gl2_cacheline_size; + uint32_t num_cp_queues; + HwsInfo hwsInfo; + std::vector sdma_schedid; + uint32_t compute_schedid; + bool state_shadowing_by_cpfw; + bool platform_atomic_support; + void *adapter_info; + void *adapter_ex_info; +} DeviceInfo; + +int EngineOrdinal(int engine, DeviceInfo *device_info); +bool GetHwsEnabled(int engine, DeviceInfo *device_info); +bool ShouldDisableGpuTimeout(int engine, DeviceInfo *device_info); +bool ParseAdapterInfo(D3DKMT_HANDLE adapter, DeviceInfo *device_info); +bool QueryAdapterSupported(D3DKMT_HANDLE adapter); + +uint32_t QueueEngine2EngineFlag(uint32_t queue_engine); +void SetAllocationInfo(void *data, uint64_t size, AllocDomain domain, + uint64_t addr, uint32_t mem_flags, uint32_t engine_flag, const DeviceInfo &device_info); +bool CreatePrivateAllocInfo(int num_handles, void **ppdrv_priv, void **ppalloc_priv, + int *pdrv_priv_data_size, int *palloc_priv_data_size); +void DestroyPrivateAllocInfo(void *drv_priv, void *alloc_priv); + +int CreateSubmitPrivData(void **priv_data, D3DKMT_HANDLE queue, uint64_t command_addr, + uint64_t command_size, bool is_hw_queue); +int CreateHwQueuePrivData(void **priv_data, D3DKMT_HANDLE context, + bool FwManagedGfxState, SchedLevel level = kNormal); +int CreateContextPrivData(void **priv_data, bool FwManagedGfxState); +int CreatePowerOptPrivData(void **priv_data, bool restore); +int CreateCalibratedTimestampsPrivData(void **priv_data); +void QueryCalibratedTimestamps(void* priv, uint64_t* gpu, uint64_t* cpu); +void DestroyPrivData(void *priv_data); +} +#endif diff --git a/inc/rocr_proxy/wddm_types.h b/inc/rocr_proxy/wddm_types.h new file mode 100644 index 0000000000..f2e60d907d --- /dev/null +++ b/inc/rocr_proxy/wddm_types.h @@ -0,0 +1,155 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2015, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_WDDM_TYPES_H_ +#define _ROCR_WDDM_TYPES_H_ + +#include + +#include + +typedef uint32_t UINT, *UINT_PTR; +typedef int32_t INT32; +typedef int32_t LONG; +typedef uint32_t ULONG, *ULONG_PTR; +typedef int64_t LONGLONG; +typedef int64_t LONG64; +typedef uint64_t ULONGLONG; +typedef uint64_t ULONG64, *ULONG64_PTR; +typedef uint8_t BYTE; +typedef uint16_t WORD; +typedef uint32_t DWORD; +typedef int32_t BOOL; +typedef int32_t NTSTATUS; +typedef uint16_t USHORT; +typedef uint16_t UINT16; +typedef uint32_t UINT32; +typedef uint64_t UINT64; +typedef int32_t INT; +typedef uint64_t SIZE_T; +typedef void VOID; +typedef float FLOAT; +typedef char CHAR; +typedef unsigned char UCHAR; +typedef UCHAR BOOLEAN; +typedef int16_t WCHAR; +typedef void *HANDLE; +typedef void *PVOID; +typedef void *LPVOID; +typedef const int16_t *PCWSTR; + +#define ULONG ULONG +#define ULONG_PTR ULONG_PTR +#define USHORT USHORT + +#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name +#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] + +DECLARE_HANDLE(HWND); +DECLARE_HANDLE(HDC); +DECLARE_HANDLE(PALETTEENTRY); + +typedef struct tagPOINT { + LONG x; + LONG y; +} POINT; + +typedef struct tagRECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECT; + +typedef struct tagRECTL { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECTL; + +typedef union _LARGE_INTEGER { + struct { + DWORD LowPart; + DWORD HighPart; + } u; + LONGLONG QuadPart; +} LARGE_INTEGER; + +typedef LARGE_INTEGER *PLARGE_INTEGER; + +typedef struct _LUID { + ULONG LowPart; + LONG HighPart; +} LUID, *PLUID; + +typedef enum _DEVICE_POWER_STATE { + PowerDeviceUnspecified = 0, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum +} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; + +#define _Check_return_ +#define APIENTRY +#define CONST const +#define IN +#define OUT +#define FAR +#define MAX_PATH 260 +#define __stdcall + +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID { + uint32_t Data1; + uint16_t Data2; + uint16_t Data3; + uint8_t Data4[ 8 ]; +} GUID; +#endif + +#include + +#endif diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h new file mode 100644 index 0000000000..423d9d6290 --- /dev/null +++ b/inc/wddm/cmd_util.h @@ -0,0 +1,77 @@ +/* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. */ + +#ifndef _CMD_UTIL_H_ +#define _CMD_UTIL_H_ + +#include +#include "hsa-runtime/inc/hsa.h" +#include "hsa-runtime/inc/amd_hsa_queue.h" +#include "hsa-runtime/inc/amd_hsa_kernel_code.h" +#include "inc/pm4_cmds.h" +#include "util/utils.h" + +namespace rocr { +namespace core { + +struct DispatchInfo { + uint8_t major; + hsa_kernel_dispatch_packet_t *pPacket; + void *pEntry; + const amd_kernel_code_t *pKernelObject; + uint32_t ldsBlks; + amd_queue_t *pAmdQueue; + bool wave32; + uint32_t srd; + void *pScratchBase; + uint32_t scratchSizePerWave; + uint32_t scratchBaseOffset[2]; + uint32_t offsetCnt; +}; + +class CmdUtil { +public: + CmdUtil() {}; + ~CmdUtil() {}; + + size_t BuildCopyData( + uint64_t *pDstAddr, + void *pBuffer, + uint32_t dstSel = dst_sel__mec_copy_data__tc_l2, + uint32_t dstCachePolicy = dst_cache_policy__mec_copy_data__stream, + uint32_t srcSel = src_sel__mec_copy_data__gpu_clock_count, + uint32_t srcCachePolicy = src_cache_policy__mec_copy_data__lru, + uint32_t countSel = count_sel__mec_copy_data__64_bits_of_data, + uint32_t wrConfirm = wr_confirm__mec_copy_data__wait_for_confirmation); + + size_t BuildBarrier( + void *pBuffer, + uint32_t eventIndex = event_index__mec_event_write__cs_partial_flush, + uint32_t eventType = CS_PARTIAL_FLUSH); + + size_t BuildAcquireMem( + uint8_t major, + void *pBuffer); + + size_t BuildScratch( + void *pScratchBase, + void *pBuffer); + + size_t BuildComputeShaderParams( + void *pBuffer); + + size_t BuildDispatch( + struct DispatchInfo *pInfo, + void *pBuffer); + + size_t BuildAtomicMem( + uint64_t *pAddr, + uint32_t atomic, + void *pBuffer, + uint32_t cachePolicy = cache_policy__mec_atomic_mem__stream, + uint64_t srcData = 1); +}; + +} // namespace core +} // namespace rocr + +#endif \ No newline at end of file diff --git a/inc/wddm/device.h b/inc/wddm/device.h new file mode 100644 index 0000000000..7d912be039 --- /dev/null +++ b/inc/wddm/device.h @@ -0,0 +1,245 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_WDDM_H_ +#define _ROCR_WDDM_H_ + +#include +#include + +#include +#include +#include + +#include "inc/wddm/types.h" +#include "inc/rocr_proxy/rocr_proxy.h" +#include "inc/wddm/va_mgr.h" +#include "inc/wddm/status.h" +#include "inc/wddm/types.h" +#include "inc/wddm/gpu_memory.h" +#include "inc/wddm/cmd_util.h" + +namespace rocr { +namespace core { + +//class Queue; +class WDDMQueue; + +// WSL2 hyperv GPADL protocol limitation +#define MAX_USERPTR_BLOCK_SIZE 0xf0000000 + +class WDDMDevice { +public: + static constexpr size_t GpuMemoryChunkSize = 2 * (1ULL << 30); // 2 GB + + WDDMDevice(D3DKMT_HANDLE adapter, LUID adapter_luid); + ~WDDMDevice(); + + int Major() { return device_info_.major; } + int Minor() { return device_info_.minor; } + int Stepping() { return device_info_.stepping; } + bool IsDgpu() { return device_info_.is_dgpu; } + const char *ProductName() { return device_info_.product_name; } + const char *Uuid() { return device_info_.uuid; } + rocr_proxy::AsicFamilyType GfxFamily() { return device_info_.family; } + uint32_t DeviceId() { return device_info_.device_id; } + uint32_t WavefrontSize() { return device_info_.wavefront_size; } + uint32_t ComputeUnitCount() { return device_info_.compute_unit_count; } + uint32_t MaxEngineClockMhz() { return device_info_.max_engine_clock_mhz; } + uint32_t WatchPointsNum() { return device_info_.watch_points_num; } + uint32_t PciBusAddr() { return device_info_.pci_bus_addr; } + + uint32_t MemoryBusWidth() { return device_info_.memory_bus_width; } + uint32_t MaxMemoryClockMhz() { return device_info_.max_memory_clock_mhz; } + uint32_t WavePerCu() { return device_info_.wave_per_cu; } + uint32_t SimdPerCu() { return device_info_.simd_per_cu; } + uint32_t MaxScratchSlotsPerCu() { return device_info_.max_scratch_slots_per_cu; } + uint32_t NumShaderEngine() { return device_info_.num_shader_engine; } + uint32_t ShaderArrayPerShaderEngine() { return device_info_.shader_array_per_shader_engine; } + uint32_t NumSdmaEngine() { return device_info_.sdma_schedid.size(); } + uint32_t Domain() { return device_info_.domain; } + uint32_t NumGws() { return device_info_.num_gws; } + uint32_t AsicRevision() { return device_info_.asic_revision; } + uint64_t LocalHeapSize() { return device_info_.local_visible_heap_size + device_info_.local_invisible_heap_size; } + uint64_t LocalVisibleHeapSize() { return device_info_.local_visible_heap_size; } + uint64_t LocalInvisibleHeapSize() { return device_info_.local_invisible_heap_size; } + uint64_t PrivateApertureBase() { return device_info_.private_aperture_base; } + uint64_t PrivateApertureSize() { return device_info_.private_aperture_size; } + uint64_t SharedApertureBase() { return device_info_.shared_aperture_base; } + uint64_t SharedApertureSize() { return device_info_.shared_aperture_size; } + uint32_t LdsSize() { return device_info_.lds_size; } + uint64_t GPUCounterFrequency() { return device_info_.gpu_counter_frequency; } + uint32_t GetSwsQueueSize(void) const { return device_info_.user_queue_size; } + uint32_t GetMecFwVersion() { return device_info_.mec_fw_version; } + uint32_t GetSdmaFwVersion() { return device_info_.sdma_fw_version; } + uint32_t GetL1CacheSize() { return device_info_.l1_cache_size; } + uint32_t GetL2CacheSize() { return device_info_.l2_cache_size; } + uint32_t GetL3CacheSize() { return device_info_.l3_cache_size; } + uint32_t Gl2CacheLineSize() { return device_info_.gl2_cacheline_size; } + bool SupportStateShadowingByCpFw(void) const { return device_info_.state_shadowing_by_cpfw; } + bool SupportPlatformAtomic(void) const { return device_info_.platform_atomic_support; } + uint32_t GetSdmaEngine(uint32_t idx) { + assert(idx < NumSdmaEngine()); + return device_info_.sdma_schedid[idx]; + } + uint32_t GetComputeEngine() { return device_info_.compute_schedid; } + + uint64_t VramAvail(); + + void GetClockCounters(uint64_t *gpu, uint64_t *cpu); + uint32_t GetNumCpQueues() { return device_info_.num_cp_queues; } + + bool CreateSyncobj(D3DKMT_HANDLE *handle, uint64_t **addr); + void DestroySyncobj(D3DKMT_HANDLE handle); + + bool CreateQueue(WDDMQueue *queue); + void DestroyQueue(WDDMQueue *queue); + bool CreateHwQueue(WDDMQueue *queue); + bool DestroyHwQueue(WDDMQueue *queue); + bool SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, + uint64_t command_size, uint64_t fence_value); + bool SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, + uint64_t command_size, uint64_t fence_value); + + bool WaitPagingFence(WDDMQueue *queue) { + uint64_t value = page_fence_value_; + + if (*page_fence_addr_ < value && + !GpuWait(queue, &page_syncobj_, &value, 1)) + return false; + + return true; + } + + bool GpuWait(WDDMQueue *queue, const D3DKMT_HANDLE *syncobjs, + uint64_t *values, int count); + bool GpuSignal(D3DKMT_HANDLE context, const D3DKMT_HANDLE *syncobjs, + uint64_t *value, int count); + bool CpuWait(const D3DKMT_HANDLE *syncobjs, uint64_t *value, + int count, bool wait_any); + bool WaitOnPagingFenceFromCpu(); + + uint32_t LdsBlocks(const hsa_kernel_dispatch_packet_t *pkt); + uint32_t GetCmdbufSize(void) const { return cmdbuf_size_; } + uint32_t GetAqlFrameSize(void) const { return cmdbuf_aql_frame_size_; } + static uint32_t GetAqlFrameNum(void) { return cmdbuf_aql_frame_num_; } + + // Both legacy HWS and stage 1 HWS use KMD to alloc use queue memory, + // return false by default + bool AllocUserQueueMemFromUMD(void) const { return false; } + + bool IsHwsEnabled(int engine) { + return rocr_proxy::GetHwsEnabled(engine, &device_info_); + } + + void UpdatePageFence(uint64_t fence_value); + + D3DKMT_HANDLE PagingQueue() const { return page_queue_; } + D3DKMT_HANDLE PagingFence() const { return page_syncobj_; } + D3DKMT_HANDLE DeviceHandle() const { return device_; } + LUID GetLuid() const { return adapter_luid_; } + + const rocr_proxy::DeviceInfo& DeviceInfo() const { return device_info_; } + + ErrorCode ReserveGpuVirtualAddress(rocr_proxy::AllocDomain domain, + gpusize hit_base_addr, + gpusize size, + gpusize *out_gpu_virtual_addr, + gpusize alignment, + bool lock=false); + + ErrorCode FreeGpuVirtualAddress(rocr_proxy::AllocDomain domain, + gpusize base_addr, + gpusize size); + + ErrorCode CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem); +private: + bool ParseDeviceInfo(void); + void DestroyDeviceInfo(void); + bool CreateDevice(void); + bool DestroyDevice(void); + bool CreatePagingQueue(void); + bool DestroyPagingQueue(void); + void *Lock(D3DKMT_HANDLE handle); + bool Unlock(D3DKMT_HANDLE handle); + bool CreateContext(int engine, D3DKMT_HANDLE *handle); + bool DestroyContext(D3DKMT_HANDLE handle); + + void SetPowerOptimization(bool restore); + void InitCmdbufInfo(void); + bool ReserveSystemHeapSpace(void); + bool FreeSystemHeapSpace(void); + bool ReserveLocalHeapSpace(void); + bool CommitSystemHeapSpace(void* addr, int64_t size, bool lock=false); + bool DecommitSystemHeapSpace(void* addr, int64_t size); + bool FreeLocalHeapSpace(void); + void InitVaMgr(); + + D3DKMT_HANDLE adapter_; + LUID adapter_luid_; + D3DKMT_HANDLE device_; + + D3DKMT_HANDLE page_queue_; + D3DKMT_HANDLE page_syncobj_; + uint64_t *page_fence_addr_; + std::atomic page_fence_value_; + + uint64_t local_heap_space_start_; + uint64_t local_heap_space_size_; + uint64_t system_heap_space_start_; + uint64_t system_heap_space_size_; + uint32_t cmdbuf_size_; + uint32_t cmdbuf_aql_frame_size_; + static const uint32_t cmdbuf_aql_frame_num_; + // device info + rocr_proxy::DeviceInfo device_info_; + + std::unique_ptr local_va_mgr_; + //CmdUtil cmd_util; +}; + +NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters); + +} // namespace core +} // namespace rocr + +#endif diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h new file mode 100644 index 0000000000..b04a5d85d3 --- /dev/null +++ b/inc/wddm/gpu_memory.h @@ -0,0 +1,218 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_GPU_MEMORY_H_ +#define _ROCR_GPU_MEMORY_H_ + +#include +#include +#include "util/utils.h" +#include "inc/wddm/types.h" +#include "inc/wddm/thunks.h" +#include "inc/rocr_proxy/rocr_proxy.h" + +namespace rocr { +namespace core { + +class WDDMDevice; + +union GpuMemoryCreateFlags { + struct { + uint64_t virtual_alloc : 1; + uint64_t physical_only : 1; + uint64_t interprocess : 1; + uint64_t locked : 1; + uint64_t unused : 60; + }; + uint64_t reserved; +}; + +struct GpuMemoryCreateInfo { + GpuMemoryCreateInfo() { + flags.reserved = 0; + domain = rocr_proxy::kLocal; + size = 0; + alignment = 0; + mem_flags = 0; + engine_flag = 0; + va_hint = 0; + user_ptr = nullptr; + dmabuf_fd = -1; + } + + GpuMemoryCreateFlags flags; + rocr_proxy::AllocDomain domain; + gpusize size; + gpusize alignment; + int mem_flags; + int engine_flag; + int dmabuf_fd; // Import from dmabuf + + void *user_ptr; + gpusize va_hint; +}; + +struct GpuMemoryDesc { + GpuMemoryDesc() { + gpu_addr = 0; + cpu_addr = nullptr; + client_size = 0; + size = alignment = 0; + flags.reserved = 0; + mem_flags = 0; + engine_flag = 0; + } + + rocr_proxy::AllocDomain domain; + LUID adapter_luid; // Where is the backing store location + gpusize gpu_addr; + void *cpu_addr; + gpusize client_size; // user request size + gpusize size; + gpusize alignment; + + union { + struct { + uint32_t is_virtual : 1; + uint32_t is_shared : 1; + uint32_t is_external : 1; + uint32_t is_physical_only : 1; + uint32_t is_locked : 1; + + uint32_t unused : 27; + }; + + uint32_t reserved; + } flags; + + int mem_flags; + int engine_flag; +}; + +struct SharedHandleInfo { + rocr_proxy::AllocDomain domain; + LUID adapter_luid; + gpusize client_size; // user request size + uint64_t size; + uint32_t flags; + int mem_flags; +}; + +using GpuMemoryHandle = void *; + +class GpuMemory { +public: + static size_t CalcChunkNumbers(gpusize size); + + ErrorCode Init(const GpuMemoryCreateInfo &create_info); + + WDDMDevice *GetDevice() const { return device_; } + gpusize Size() const { return desc_.size; } + gpusize ClientSize() const { return desc_.client_size; } + uint64_t GpuAddress() const { return desc_.gpu_addr; } + void *CpuAddress() const { return desc_.cpu_addr; } + + inline bool IsLocal() const { return desc_.domain == rocr_proxy::kLocal; } + inline bool IsUserMemory() const { return desc_.domain == rocr_proxy::kUserMemory; } + inline bool IsSystem() const { return desc_.domain == rocr_proxy::kSystem; } + inline bool IsUserQueue() const { return desc_.domain == rocr_proxy::kUserQueue; } + inline bool IsPhysicalOnly() const { return desc_.flags.is_physical_only; } + inline bool IsVirtual() const { return desc_.flags.is_virtual; } + inline bool IsShared() const { return desc_.flags.is_shared; } + inline bool IsExternal() const { return desc_.flags.is_external; } + + inline uint32_t Flags() const { return desc_.flags.reserved; } + inline int GetAllocInfo() const { return desc_.mem_flags; } + inline bool IsFineGrain() const { return (desc_.mem_flags & rocr_proxy::kFineGrain); } + inline bool IsSameAdapter(const LUID &luid) const { + return (desc_.adapter_luid.HighPart == luid.HighPart && + desc_.adapter_luid.LowPart == luid.LowPart); + } + + WinAllocationHandle GetAllocationHandle(size_t index) const { return alloc_handles_ptr_[index]; } + size_t NumChunks() const { return num_allocations_; } + + const GpuMemoryHandle GetGpuMemoryHandle() const { + return reinterpret_cast(const_cast(this)); + } + + static GpuMemory *Convert(GpuMemoryHandle handle) { return reinterpret_cast(handle); } + + ErrorCode ReserveGpuVirtualAddress(gpusize base_virt_addr, gpusize va_size, gpusize alignment); + ErrorCode FreeGpuVirtualAddress(gpusize va_start_address, gpusize va_size); + + ErrorCode MapGpuVirtualAddress(const gpusize map_addr, const gpusize size, gpusize offset = 0); + ErrorCode UnmapGpuVirtualAddress(const gpusize map_addr, const gpusize size, gpusize offset = 0); + + ErrorCode MakeResident(); + ErrorCode Evict(); + + ErrorCode ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags = SHARED_ALLOCATION_ALL_ACCESS); + ErrorCode ImportPhysicalHandle(int dmabuf_fd); + ~GpuMemory(); +protected: + explicit GpuMemory(WDDMDevice *device); +private: + ErrorCode CreatePhysicalMemory(); + ErrorCode FreePhysicalMemory(); + + uint64_t AdjustSize(gpusize size) const; +private: + friend class WDDMDevice; + + WDDMDevice *const device_; + + GpuMemoryDesc desc_; + + size_t num_allocations_; + WinAllocationHandle *alloc_handles_ptr_; + WinAllocationHandle alloc_handle_; // Optimization for num_allocations_ is 1 + + WinResourceHandle resource_; // Handle to a resource object that wraps the allocation. Used for shared resources + + DISALLOW_COPY_AND_ASSIGN(GpuMemory); +}; + +} // namespace core +} // namespace rocr + +#endif diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h new file mode 100644 index 0000000000..51c9dfd453 --- /dev/null +++ b/inc/wddm/queue.h @@ -0,0 +1,284 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef _WDDM_QUEUE_H_ +#define _WDDM_QUEUE_H_ + +#include +#include +#include "inc/wddm/types.h" +#include "inc/wddm/device.h" +#include "inc/wddm/gpu_memory.h" +#include "hsa-runtime/inc/hsa_ext_amd.h" +#include "hsa-runtime/inc/amd_hsa_queue.h" +#include "hsa-runtime/inc/amd_hsa_signal.h" +#include "inc/wddm/cmd_util.h" + +namespace rocr { +namespace core { + +class Queue; +class WDDMDevice; + +class WDDMQueue { +public: + WDDMQueue(WDDMDevice *device, + uint32_t cmdbuf_size, + uint32_t engine, + bool use_hws = true) : + device(device), + context(NULL), + queue(NULL), + syncobj(NULL), + sync_addr(NULL), + cmdbuf(0), + cmdbuf_addr(0), + cmdbuf_size(cmdbuf_size), + queue_engine(engine), + use_hws(use_hws), + prio(rocr_proxy::kNormal) { + + } + + virtual ~WDDMQueue() { } + + virtual hsa_status_t Init(void) = 0; + virtual hsa_status_t Fini(void) = 0; + + hsa_status_t SwsInit(void); + hsa_status_t SwsFini(void); + hsa_status_t SwsSubmit(uint64_t command_addr, + uint64_t command_size, + uint64_t fence_value); + + hsa_status_t HwsInit(void); + hsa_status_t HwsFini(void); + hsa_status_t HwsSubmit(uint64_t command_addr, + uint64_t command_size, + uint64_t fence_value); + hsa_status_t SetPriority(hsa_amd_queue_priority_t priority); + + uint64_t *GetSyncAddr(void) const { return sync_addr; } + uint64_t GetCmdbufAddr(void) const { return cmdbuf_addr; } + + rocr_proxy::SchedLevel ConvertSchedLevel(hsa_amd_queue_priority_t prio) const { + switch (prio) { + case HSA_AMD_QUEUE_PRIORITY_LOW: + return rocr_proxy::kLow; + case HSA_AMD_QUEUE_PRIORITY_HIGH: + return rocr_proxy::kHigh; + case HSA_AMD_QUEUE_PRIORITY_NORMAL: + default: + return rocr_proxy::kNormal; + } + } + + WDDMDevice *device; + + D3DKMT_HANDLE context; + D3DKMT_HANDLE queue; + + D3DKMT_HANDLE syncobj; + uint64_t *sync_addr; + + GpuMemoryHandle cmdbuf; + uint64_t cmdbuf_addr; + uint32_t cmdbuf_size; + + GpuMemoryHandle queue_mem; + uint64_t queue_addr; + + uint32_t queue_engine; + + bool use_hws; + rocr_proxy::SchedLevel prio; +}; + +class ComputeQueue : public WDDMQueue { +public: + ComputeQueue(WDDMDevice *device, + void *ring, + uint64_t ring_size, + std::atomic *ring_wptr, + std::atomic *ring_rptr, + volatile int64_t *error_addr, + uint32_t cmdbuf_size, + uint32_t engine, + bool use_hws = true); + + ~ComputeQueue(); + + virtual hsa_status_t Init(void); + virtual hsa_status_t Fini(void); + virtual hsa_status_t Submit(void); + + void* GetRing(void) const { return ring; } + uint64_t GetRingSize(void) const { return ring_size; } + std::atomic* GetRingWptr(void) const { return ring_wptr; } + std::atomic* GetRingRptr(void) const { return ring_rptr; } + + uint64_t GetAqlWriteIndex(void) const { return cmdbuf_aql_frame_write_index; } + uint32_t GetAqlFrameSize(void) const { return cmdbuf_aql_frame_size; } + + bool IsInvalidPacket(void) const { + uint16_t *packet = (uint16_t *)((char *)ring + + (cmdbuf_aql_frame_write_index % ring_size) * 64); + return ((*packet >> HSA_PACKET_HEADER_TYPE) & ((1 << HSA_PACKET_HEADER_WIDTH_TYPE) - 1)) + == HSA_PACKET_TYPE_INVALID; + } + + hsa_status_t Process(void); + uint64_t * GetDoorbellPtr() const { return (uint64_t *)&doorbell_signal_.value; } + void RingDoorbell(); +private: + hsa_status_t KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *packet); + hsa_status_t BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet, bool is_or = false); + struct amd_aql_pm4_ib { + uint16_t header; + uint16_t ven_hdr; + uint32_t ib_jump_cmd[4]; + uint32_t dw_cnt_remain; + uint32_t reserved[8]; + hsa_signal_t completion_signal; + }; + hsa_status_t VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *packet); + hsa_status_t SwitchAql2PM4(void); + + hsa_status_t PreSubmit(void); + hsa_status_t EndSubmit(void); + + void *ring; + uint64_t ring_size; + std::atomic *ring_wptr; + std::atomic *ring_rptr; + + // ib_start_addr is the current ib start address + uint64_t ib_start_addr; + + // ib_size is the current ib size. + uint64_t ib_size; + + // record the last submitted aql frame write index + uint64_t sync_point; + + uint64_t cmdbuf_aql_frame_write_index; + uint32_t cmdbuf_aql_frame_size; + + bool needs_barrier; + bool ready_to_submit; + + CmdUtil cmd_util; + +private: + bool EnableProfiling() { + return AMD_HSA_BITS_GET(amd_queue_rocr_->queue_properties, AMD_QUEUE_PROPERTIES_ENABLE_PROFILING); + } + void HandleError(hsa_status_t status); + bool UpdateScratch(uint32_t private_segment_size, bool wave32); + + uint32_t UpdateIndexStride(uint32_t srd, bool wave32); + + void *ScratchBase() { return scratch_base_; } + + void AppendCmdbufSratchBaseOffset(int offset) { + scratch_base_offset_array_.push_back(offset); + } + + bool RelocateCmdbufScratchBase(uint64_t addr); + + uint32_t ScratchSizePerWave() { return scratch_size_per_wave_; } + uint64_t GetKernelObjAddr(uint64_t addr) const; + void InitScratchSRD(); + GpuMemoryHandle amd_queue_mem_; + amd_queue_t *amd_queue_; + amd_queue_t *amd_queue_rocr_; + amd_signal_t doorbell_signal_; + volatile std::atomic *error_code_; + std::thread aql_to_pm4_thread_; + bool thread_stop_; + std::mutex thread_cond_lock_; + std::condition_variable thread_cond_; + static void AqlToPm4Thread(ComputeQueue *queue); + + uint32_t scratch_waves_; + uint32_t scratch_size_per_wave_; + uint32_t scratch_size_; + void *scratch_base_; + GpuMemoryHandle scratch_mem_; + + std::vector scratch_base_offset_array_; +}; + +class SDMAQueue : public WDDMQueue { +public: + SDMAQueue(WDDMDevice *device, + uint64_t cmdbuf_size, + uint32_t engine, + bool use_hws = true) : + WDDMQueue(device, cmdbuf_size, engine, use_hws), + rptr_next(0), + ib_size(0), + ib_start_addr(0) { + + } + + virtual ~SDMAQueue() { } + + hsa_status_t Init(void); + hsa_status_t Fini(void); + hsa_status_t Submit(void); + + int PreparePacket(uint32_t offset, uint64_t size); + + void WaitQueue(void) { + device->CpuWait(&syncobj, &rptr_next, 1, false); + } + +private: + uint64_t rptr_next; + uint64_t ib_size; + uint64_t ib_start_addr; +}; + +} +} + +#endif diff --git a/inc/wddm/status.h b/inc/wddm/status.h new file mode 100644 index 0000000000..96808622ef --- /dev/null +++ b/inc/wddm/status.h @@ -0,0 +1,59 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_CORE_INC_WDDM_STATUS_H_ +#define _ROCR_CORE_INC_WDDM_STATUS_H_ + +enum class ErrorCode { + Success, + DeviceLost, + UnSupported, + NotReady, + OutOfMemory, + OutOfGpuMemory, + Timeout, + SyscallFail, + InvalidateParams, + Unknown, +}; + +#endif diff --git a/inc/wddm/thunks.h b/inc/wddm/thunks.h new file mode 100644 index 0000000000..15556a8ab5 --- /dev/null +++ b/inc/wddm/thunks.h @@ -0,0 +1,232 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_CORE_INC_WDDM_THUNKS_H_ +#define _ROCR_CORE_INC_WDDM_THUNKS_H_ + +#include "inc/wddm/status.h" +#include "inc/wddm/types.h" + +namespace rocr { +namespace core { + +inline ErrorCode TranslateNtStatus(NTSTATUS status) { + switch (status) { + case STATUS_SUCCESS: + return ErrorCode::Success; + case STATUS_PENDING: + return ErrorCode::NotReady; + case STATUS_NO_MEMORY: + return ErrorCode::OutOfMemory; + case STATUS_DEVICE_REMOVED: + return ErrorCode::DeviceLost; + case STATUS_GRAPHICS_NO_VIDEO_MEMORY: + return ErrorCode::OutOfGpuMemory; + case STATUS_TIMEOUT: + return ErrorCode::Timeout; + case STATUS_INVALID_PARAMETER: + return ErrorCode::InvalidateParams; + default: + break; + } + return ErrorCode::Unknown; +} + +namespace thunk { + +typedef D3DKMT_CREATEALLOCATION CreateAllocationArgs; +typedef D3DKMT_CREATECONTEXT CreateContextArgs; +typedef D3DKMT_CREATECONTEXTVIRTUAL CreateContextVirtualArgs; +typedef D3DKMT_CREATEPAGINGQUEUE CreatePagingQueueArgs; +typedef D3DKMT_CREATESYNCHRONIZATIONOBJECT CreateSynchronizationObjectArgs; +typedef D3DKMT_CREATESYNCHRONIZATIONOBJECT2 CreateSynchronizationObject2Args; +typedef D3DKMT_ESCAPE EscapeArgs; +typedef D3DKMT_EVICT EvictArgs; +typedef D3DKMT_FREEGPUVIRTUALADDRESS FreeGpuVirtualAddressArgs; +typedef D3DKMT_LOCK LockArgs; +typedef D3DKMT_LOCK2 Lock2Args; +typedef D3DKMT_OPENRESOURCE OpenResourceArgs; +typedef D3DKMT_OPENRESOURCEFROMNTHANDLE OpenResourceFromNtHandleArgs; +typedef D3DKMT_QUERYADAPTERINFO QueryAdapterInfoArgs; +typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECT SignalSynchronizationObjectArgs; +typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 SignalSynchronizationObject2Args; +typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU SignalSynchronizationObjectFromCpuArgs; +typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 SignalSynchronizationObjectFromGpuArgs; +typedef D3DKMT_SUBMITCOMMAND SubmitCommandArgs; +typedef D3DKMT_UNLOCK UnlockArgs; +typedef D3DKMT_UNLOCK2 Unlock2Args; +typedef D3DKMT_UPDATEGPUVIRTUALADDRESS UpdateGpuVirtualAddressArgs; +typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECT WaitForSynchronizationObjectArgs; +typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 WaitForSynchronizationObject2Args; +typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU WaitForSynchronizationObjectFromCpuArgs; +typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU WaitForSynchronizationObjectFromGpuArgs; +typedef D3DKMT_ACQUIREKEYEDMUTEX AcquireKeyedMutexArgs; +typedef D3DKMT_RELEASEKEYEDMUTEX ReleaseKeyedMutexArgs; +typedef D3DKMT_OPENKEYEDMUTEX OpenKeyedMutexArgs; +typedef D3DKMT_DESTROYKEYEDMUTEX DestroyKeyedMutexArgs; +typedef D3DKMT_QUERYVIDEOMEMORYINFO QueryVideoMemoryInfoArgs; +typedef D3DKMT_CREATEHWQUEUE CreateHwQueueArgs; +typedef D3DKMT_DESTROYHWQUEUE DestroyHwQueueArgs; +typedef D3DKMT_SUBMITCOMMANDTOHWQUEUE SubmitCommandToHwQueueArgs; +typedef D3DKMT_SUBMITPRESENTTOHWQUEUE SubmitPresentToHwQueueArgs; +typedef D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE SubmitSignalSyncObjectsToHwQueueArgs; +typedef D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE SubmitWaitForSyncObjectsToHwQueueArgs; +typedef D3DKMT_CREATESYNCFILE CreateSyncFileArgs; + +inline ErrorCode MapGpuVirtualAddress(D3DDDI_MAPGPUVIRTUALADDRESS *args) { + return TranslateNtStatus(D3DKMTMapGpuVirtualAddress(args)); +} + +inline ErrorCode CreateAllocation(CreateAllocationArgs *args) { + return TranslateNtStatus(D3DKMTCreateAllocation2(args)); +} + +inline ErrorCode DestroyAllocation( + WinDeviceHandle device, + WinResourceHandle resource, + size_t num_allocations, + const WinAllocationHandle *alloc_handles) { + + D3DKMT_DESTROYALLOCATION2 args{}; + + memset(&args, 0, sizeof(args)); + args.hDevice = device; + if (resource) { + args.hResource = resource; + } else { + args.phAllocationList = alloc_handles; + args.AllocationCount = num_allocations; + } + + return TranslateNtStatus(D3DKMTDestroyAllocation2(&args)); +} + +inline ErrorCode ReserveGpuVirtualAddress(D3DDDI_RESERVEGPUVIRTUALADDRESS *args) { + return TranslateNtStatus(D3DKMTReserveGpuVirtualAddress(args)); +} + +inline ErrorCode ReserveGpuVirtualAddress(WinAdapterHandle handle, + gpusize size, + gpusize base_address, + gpusize *out_addr) { + D3DDDI_RESERVEGPUVIRTUALADDRESS args{}; + args.hPagingQueue = handle; + args.Size = size; + args.BaseAddress = base_address; + + auto code = ReserveGpuVirtualAddress(&args); + if (code == ErrorCode::Success) + *out_addr = args.VirtualAddress; + return code; +} + +inline ErrorCode ReserveGpuVirtualAddress(WinAdapterHandle handle, + gpusize size, + gpusize minimum_address, + gpusize maximum_address, + gpusize *out_addr) { + D3DDDI_RESERVEGPUVIRTUALADDRESS args{}; + args.hPagingQueue = handle; + args.Size = size; + args.MinimumAddress = minimum_address; + args.MaximumAddress = maximum_address; + + auto code = ReserveGpuVirtualAddress(&args); + if (code == ErrorCode::Success) + *out_addr = args.VirtualAddress; + return code; +} + +inline ErrorCode FreeGpuVirtualAddress(FreeGpuVirtualAddressArgs *args) { + return TranslateNtStatus(D3DKMTFreeGpuVirtualAddress(args)); +} + +inline ErrorCode FreeGpuVirtualAddress(WinAdapterHandle handle, + gpusize base_address, + gpusize size) { + FreeGpuVirtualAddressArgs args{}; + args.hAdapter = handle; + args.Size = size; + args.BaseAddress = base_address; + return FreeGpuVirtualAddress(&args); +} + +inline ErrorCode MakeResident(D3DDDI_MAKERESIDENT *args) { + return TranslateNtStatus(D3DKMTMakeResident(args)); +} + +inline ErrorCode Evict(EvictArgs *args) { + return TranslateNtStatus(D3DKMTEvict(args)); +} + +inline ErrorCode ShareObjects(size_t num_allocations, + WinResourceHandle resource, + uint32_t flags, + int* dmabuf_fd) { + OBJECT_ATTRIBUTES obj_attr; + HANDLE nt_handle; + ErrorCode ret; + + InitializeObjectAttributes(&obj_attr, nullptr, OBJ_INHERIT, nullptr, nullptr); + ret = TranslateNtStatus(D3DKMTShareObjects(num_allocations, + &resource, &obj_attr, flags, &nt_handle)); + if (ret == ErrorCode::Success) + *dmabuf_fd = *(reinterpret_cast(&nt_handle)); + else + *dmabuf_fd = -1; + + return ret; +} + +inline ErrorCode QueryResourceInfoFromNtHandle(D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE *args) { + return TranslateNtStatus(D3DKMTQueryResourceInfoFromNtHandle(args)); +} + +inline ErrorCode OpenResourceFromNtHandle(D3DKMT_OPENRESOURCEFROMNTHANDLE *args) { + return TranslateNtStatus(D3DKMTOpenResourceFromNtHandle(args)); +} + +} // namespace thunk +} // namespace core +} // namespace rocr + +#endif // _ROCR_CORE_INC_WDDM_THUNKS_H_ diff --git a/inc/wddm/types.h b/inc/wddm/types.h new file mode 100644 index 0000000000..cd831158ce --- /dev/null +++ b/inc/wddm/types.h @@ -0,0 +1,101 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _ROCR_CORE_INC_WDDM_TYPES_H_ +#define _ROCR_CORE_INC_WDDM_TYPES_H_ + +#include +#include +#include "inc/rocr_proxy/wddm_types.h" +// windows wchar is 16bit, but linux is 32bit +// seems libdxcore (not dxgkrnl.ko) convert thunk windows wchar to linux one +// so only accept 32bit wchar args. note driver private data structure still +// use 16bit wchar +#define WCHAR wchar_t +#define PCWSTR const wchar_t * +#include +#undef WCHAR +#undef PCWSTR + +using gpusize = uint64_t; // Used to specify GPU addresses and sizes of GPU allocations +using WinAllocationHandle = D3DKMT_HANDLE; +using WinResourceHandle = D3DKMT_HANDLE; +using WinContextHandle = D3DKMT_HANDLE; +using WinDeviceHandle = D3DKMT_HANDLE; +using WinAdapterHandle = D3DKMT_HANDLE; + +//reference dk/winnt.h +#define STANDARD_RIGHTS_REQUIRED (0x000F0000L) + +//reference dk/ntdef.h +#define OBJ_INHERIT (0x00000002L) +typedef WCHAR *PWCHAR, *LPWCH, *PWCH; +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; +#ifdef MIDL_PASS + [size_is(MaximumLength / 2), length_is((Length) / 2) ] USHORT * Buffer; +#else // MIDL_PASS + _Field_size_bytes_part_opt_(MaximumLength, Length) PWCH Buffer; +#endif // MIDL_PASS +} UNICODE_STRING; +typedef UNICODE_STRING *PUNICODE_STRING; +typedef const UNICODE_STRING *PCUNICODE_STRING; + +typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES; +#define InitializeObjectAttributes( p, n, a, r, s ) { \ + (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ + (p)->RootDirectory = r; \ + (p)->Attributes = a; \ + (p)->ObjectName = n; \ + (p)->SecurityDescriptor = s; \ + (p)->SecurityQualityOfService = NULL; \ + } + +#endif // _ROCR_CORE_INC_WDDM_TYPES_H_ diff --git a/inc/wddm/va_mgr.h b/inc/wddm/va_mgr.h new file mode 100644 index 0000000000..12dac08c67 --- /dev/null +++ b/inc/wddm/va_mgr.h @@ -0,0 +1,86 @@ +#ifndef VA_MGR_H_ +#define VA_MGR_H_ + +#include +#include +#include "util/utils.h" + +namespace rocr { +namespace core { + +class VaMgr { +public: + VaMgr(uint64_t start, uint64_t size, uint64_t min_align); + ~VaMgr(); + + /* Allocate `bytes` VA, if `align` is not zero, the returned address is aligned by `align`. + * If `addr` parameter is not zero, try best to allocate VA from fixed address `addr`. + */ + uint64_t Alloc(uint64_t bytes, uint64_t align, uint64_t addr = 0); + + void Free(uint64_t addr); + +private: + uint64_t AllocImpl(uint64_t bytes, uint64_t align); + + struct Fragment { + using ptr = std::multimap::iterator; + ptr free_list_entry_; + + struct { + uint64_t size : 63; + bool is_free : 1; + }; + + Fragment() : size(0), is_free(false) {} + Fragment(ptr iterator, uint64_t len, bool is_free) + : free_list_entry_(iterator), size(len), is_free(is_free) {} + }; + + static inline Fragment make_fragment(typename Fragment::ptr iter, uint64_t len) { + return {iter, len, true}; + } + + inline Fragment make_fragment(uint64_t len) { return {free_list_.end(), len, false}; } + + static inline bool is_free(const Fragment& f) { return f.is_free; } + void set_used(Fragment& f) { + f.is_free = false; + f.free_list_entry_ = free_list_.end(); + } + static void set_free(Fragment& f, typename Fragment::ptr iter) { + f.free_list_entry_ = iter; + f.is_free = true; + } + + inline void remove_free_list_entry(Fragment& frag) { + if (frag.free_list_entry_ != free_list_.end()) { + free_list_.erase(frag.free_list_entry_); + frag.free_list_entry_ = free_list_.end(); + } + } + + inline void add_free_fragment(uint64_t size, uint64_t base) { + auto it = free_list_.insert(std::make_pair(size, base)); + frag_map_[base] = make_fragment(it, size); + } + + inline void add_used_fragment(uint64_t size, uint64_t base) { + frag_map_[base] = make_fragment(size); + } + // Indexed by size + std::multimap free_list_; + // Indexed by VA, each fragment has no overlap + std::map frag_map_; + + uint64_t min_align_; + + std::mutex lock_; // Mutex protecting allocation and free of va + + + DISALLOW_COPY_AND_ASSIGN(VaMgr); +}; + +} // namespace core +} // namespace rocr +#endif // VA_MGR_H_ diff --git a/libdrm.cpp b/libdrm.cpp new file mode 100644 index 0000000000..2e2cb8aeac --- /dev/null +++ b/libdrm.cpp @@ -0,0 +1,69 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// +#include +#include +#include + +#include "inc/wddm/types.h" +#include "inc/wddm/device.h" +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( + HSAuint32 NodeId, HsaAMDGPUDeviceHandle *DeviceHandle) { + CHECK_DXG_OPEN(); + + rocr::core::WDDMDevice *pDevice = get_wddmdev(NodeId); + if (pDevice != nullptr) { + *DeviceHandle = reinterpret_cast(pDevice); + return HSAKMT_STATUS_SUCCESS; + } + return HSAKMT_STATUS_ERROR; +} + +HSAKMTAPI int hsaKmtamdgpu_query_gpu_info(void *dev, + struct amdgpu_gpu_info *info) { + rocr::core::WDDMDevice *pDevice = + reinterpret_cast(dev); + memset(info, 0, sizeof(*info)); + info->gpu_counter_freq = pDevice->GPUCounterFrequency() / 1000ull; + return 0; +} diff --git a/libhsakmt.h b/libhsakmt.h new file mode 100644 index 0000000000..471c056307 --- /dev/null +++ b/libhsakmt.h @@ -0,0 +1,158 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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 LIBHSAKMT_H_INCLUDED +#define LIBHSAKMT_H_INCLUDED + +#include +#include +#include +#include "hsakmt/hsakmt.h" + +#include "inc/wddm/types.h" +#include "inc/wddm/device.h" + +rocr::core::WDDMDevice* get_wddmdev(uint32_t node_id); + +extern unsigned long dxg_open_count; +extern bool hsakmt_forked; +extern pthread_mutex_t hsakmt_mutex; +extern bool is_dgpu; +extern bool is_svm_api_supported; +extern int zfb_support; +extern int vendor_packet_support; + +#undef HSAKMTAPI +#define HSAKMTAPI __attribute__((visibility ("default"))) + +#if defined(__clang__) +#if __has_feature(address_sanitizer) +#define SANITIZER_AMDGPU 1 +#endif +#endif + +/*Avoid pointer-to-int-cast warning*/ +#define PORT_VPTR_TO_UINT64(vptr) ((uint64_t)(unsigned long)(vptr)) + +/*Avoid int-to-pointer-cast warning*/ +#define PORT_UINT64_TO_VPTR(v) ((void*)(unsigned long)(v)) + +#define CHECK_DXG_OPEN() \ + do { if (dxg_open_count == 0 || hsakmt_forked) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0) + +/* Might be defined in limits.h on platforms where it is constant (used by musl) */ +/* See also: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html */ +#ifndef PAGE_SIZE +extern int PAGE_SIZE; +#endif +extern int PAGE_SHIFT; + +/* 64KB BigK fragment size for TLB efficiency */ +#define GPU_BIGK_PAGE_SIZE (1 << 16) + +/* 2MB huge page size for 4-level page tables on Vega10 and later GPUs */ +#define GPU_HUGE_PAGE_SIZE (2 << 20) + +#define CHECK_PAGE_MULTIPLE(x) \ + do { if ((uint64_t)PORT_VPTR_TO_UINT64(x) % PAGE_SIZE) return HSAKMT_STATUS_INVALID_PARAMETER; } while(0) + +#define ALIGN_UP(x,align) (((uint64_t)(x) + (align) - 1) & ~(uint64_t)((align)-1)) +#define ALIGN_UP_32(x,align) (((uint32_t)(x) + (align) - 1) & ~(uint32_t)((align)-1)) +#define PAGE_ALIGN_UP(x) ALIGN_UP(x,PAGE_SIZE) +#define BITMASK(n) ((n) ? (UINT64_MAX >> (sizeof(UINT64_MAX) * CHAR_BIT - (n))) : 0) +#define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0])) + +/* HSA Thunk logging usage */ +extern int hsakmt_debug_level; +#define hsakmt_print(level, fmt, ...) \ + do { if (level <= hsakmt_debug_level) fprintf(stderr, fmt, ##__VA_ARGS__); } while (0) +#define HSAKMT_DEBUG_LEVEL_DEFAULT -1 +#define HSAKMT_DEBUG_LEVEL_ERR 3 +#define HSAKMT_DEBUG_LEVEL_WARNING 4 +#define HSAKMT_DEBUG_LEVEL_INFO 6 +#define HSAKMT_DEBUG_LEVEL_DEBUG 7 +#define pr_err(fmt, ...) \ + hsakmt_print(HSAKMT_DEBUG_LEVEL_ERR, fmt, ##__VA_ARGS__) +#define pr_warn(fmt, ...) \ + hsakmt_print(HSAKMT_DEBUG_LEVEL_WARNING, fmt, ##__VA_ARGS__) +#define pr_info(fmt, ...) \ + hsakmt_print(HSAKMT_DEBUG_LEVEL_INFO, fmt, ##__VA_ARGS__) +#define pr_debug(fmt, ...) \ + hsakmt_print(HSAKMT_DEBUG_LEVEL_DEBUG, fmt, ##__VA_ARGS__) +#define pr_err_once(fmt, ...) \ +({ \ + static bool __print_once; \ + if (!__print_once) { \ + __print_once = true; \ + pr_err(fmt, ##__VA_ARGS__); \ + } \ +}) +#define pr_warn_once(fmt, ...) \ +({ \ + static bool __print_once; \ + if (!__print_once) { \ + __print_once = true; \ + pr_warn(fmt, ##__VA_ARGS__); \ + } \ +}) + +/* Expects HSA_ENGINE_ID.ui32, returns gfxv (full) in hex */ +#define HSA_GET_GFX_VERSION_FULL(ui32) \ + (((ui32.Major) << 16) | ((ui32.Minor) << 8) | (ui32.Stepping)) + +HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id); +HSAKMT_STATUS gpuid_to_nodeid(uint32_t gpu_id, uint32_t* node_id); +bool prefer_ats(HSAuint32 node_id); +uint16_t get_device_id_by_node_id(HSAuint32 node_id); +uint16_t get_device_id_by_gpu_id(HSAuint32 gpu_id); +uint32_t get_direct_link_cpu(uint32_t gpu_node); + +HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props); +HSAKMT_STATUS topology_get_node_props(HSAuint32 NodeId, + HsaNodeProperties *NodeProperties); +HSAKMT_STATUS topology_get_iolink_props(HSAuint32 NodeId, + HSAuint32 NumIoLinks, + HsaIoLinkProperties *IoLinkProperties); +void topology_setup_is_dgpu_param(HsaNodeProperties *props); + +HSAuint32 PageSizeFromFlags(unsigned int pageSizeFlags); + +#define MIN(a, b) ({ \ + typeof(a) tmp1 = (a), tmp2 = (b); \ + tmp1 < tmp2 ? tmp1 : tmp2; }) + +#define MAX(a, b) ({ \ + typeof(a) tmp1 = (a), tmp2 = (b); \ + tmp1 > tmp2 ? tmp1 : tmp2; }) + +uint32_t get_num_sysfs_nodes(void); + +bool is_forked_child(void); + +/* Calculate VGPR and SGPR register file size per CU */ +uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); +#define SGPR_SIZE_PER_CU 0x4000 + +#endif diff --git a/libhsakmt.ver b/libhsakmt.ver new file mode 100644 index 0000000000..a203bbc90a --- /dev/null +++ b/libhsakmt.ver @@ -0,0 +1,97 @@ +HSAKMT_1 +{ +global: +hsaKmtOpenKFD; +hsaKmtCloseKFD; +hsaKmtGetVersion; +hsaKmtAcquireSystemProperties; +hsaKmtReleaseSystemProperties; +hsaKmtGetNodeProperties; +hsaKmtGetNodeMemoryProperties; +hsaKmtGetNodeCacheProperties; +hsaKmtGetNodeIoLinkProperties; +hsaKmtCreateEvent; +hsaKmtDestroyEvent; +hsaKmtSetEvent; +hsaKmtResetEvent; +hsaKmtQueryEventState; +hsaKmtWaitOnEvent; +hsaKmtWaitOnMultipleEvents; +hsaKmtCreateQueue; +hsaKmtUpdateQueue; +hsaKmtDestroyQueue; +hsaKmtSetQueueCUMask; +hsaKmtSetMemoryPolicy; +hsaKmtAllocMemory; +hsaKmtAllocMemoryAlign; +hsaKmtFreeMemory; +hsaKmtAvailableMemory; +hsaKmtRegisterMemory; +hsaKmtRegisterMemoryToNodes; +hsaKmtRegisterMemoryWithFlags; +hsaKmtRegisterGraphicsHandleToNodes; +hsaKmtShareMemory; +hsaKmtRegisterSharedHandle; +hsaKmtRegisterSharedHandleToNodes; +hsaKmtProcessVMRead; +hsaKmtProcessVMWrite; +hsaKmtDeregisterMemory; +hsaKmtMapMemoryToGPU; +hsaKmtMapMemoryToGPUNodes; +hsaKmtUnmapMemoryToGPU; +hsaKmtDbgRegister; +hsaKmtDbgUnregister; +hsaKmtDbgWavefrontControl; +hsaKmtDbgAddressWatch; +hsaKmtDbgEnable; +hsaKmtDbgDisable; +hsaKmtDbgGetDeviceData; +hsaKmtDbgGetQueueData; +hsaKmtGetClockCounters; +hsaKmtPmcGetCounterProperties; +hsaKmtPmcRegisterTrace; +hsaKmtPmcUnregisterTrace; +hsaKmtPmcAcquireTraceAccess; +hsaKmtPmcReleaseTraceAccess; +hsaKmtPmcStartTrace; +hsaKmtPmcQueryTrace; +hsaKmtPmcStopTrace; +hsaKmtMapGraphicHandle; +hsaKmtUnmapGraphicHandle; +hsaKmtSetTrapHandler; +hsaKmtGetTileConfig; +hsaKmtQueryPointerInfo; +hsaKmtSetMemoryUserData; +hsaKmtGetQueueInfo; +hsaKmtAllocQueueGWS; +hsaKmtRuntimeEnable; +hsaKmtRuntimeDisable; +hsaKmtCheckRuntimeDebugSupport; +hsaKmtGetRuntimeCapabilities; +hsaKmtDebugTrapIoctl; +hsaKmtSPMAcquire; +hsaKmtSPMRelease; +hsaKmtSPMSetDestBuffer; +hsaKmtSVMSetAttr; +hsaKmtSVMGetAttr; +hsaKmtSetXNACKMode; +hsaKmtGetXNACKMode; +hsaKmtOpenSMI; +hsaKmtExportDMABufHandle; +hsaKmtWaitOnEvent_Ext; +hsaKmtWaitOnMultipleEvents_Ext; +hsaKmtReplaceAsanHeaderPage; +hsaKmtReturnAsanHeaderPage; +hsaKmtGetAMDGPUDeviceHandle; +hsaKmtPcSamplingQueryCapabilities; +hsaKmtPcSamplingCreate; +hsaKmtPcSamplingDestroy; +hsaKmtPcSamplingStart; +hsaKmtPcSamplingStop; +hsaKmtPcSamplingSupport; +hsaKmtGetVersionCapInfo; +hsaKmtQueueRingDoorbell; +hsaKmtamdgpu_query_gpu_info; +local: *; +}; + diff --git a/memory.cpp b/memory.cpp new file mode 100644 index 0000000000..b6e35af6fa --- /dev/null +++ b/memory.cpp @@ -0,0 +1,554 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ + +#include "libhsakmt.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "inc/wddm/gpu_memory.h" + +struct Allocation { + Allocation() + : handle(0), cpu_addr(0), gpu_addr(0), size(0), userptr(false), + user_data(nullptr), size_requested(0), node_id(0), mem_flags_value(0) {} + Allocation(rocr::core::GpuMemoryHandle handle_arg, void *cpu_addr_arg, + uint64_t gpu_addr_arg, size_t size_arg, bool userptr_arg = false, + void *user_data_arg = nullptr, size_t user_size_arg = 0, + HSAuint32 node_id_arg = 0, HSAuint32 mem_flags_value_arg = 0) + : handle(handle_arg), cpu_addr(cpu_addr_arg), gpu_addr(gpu_addr_arg), + size(size_arg), userptr(userptr_arg), user_data(user_data_arg), + size_requested(user_size_arg), node_id(node_id_arg), + mem_flags_value(mem_flags_value_arg) {} + + rocr::core::GpuMemoryHandle handle; + void *cpu_addr; + uint64_t gpu_addr; + bool userptr; + size_t size; /* actual size = align_up(size_requested, granularity) */ + void *user_data; + size_t size_requested; /* size requested by user */ + HSAuint32 node_id; + HSAuint32 mem_flags_value; +}; + +static std::map allocation_map_; +static std::mutex allocation_map_lock_; + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryPolicy(HSAuint32 Node, + HSAuint32 DefaultPolicy, + HSAuint32 AlternatePolicy, + void *MemoryAddressAlternate, + HSAuint64 MemorySizeInBytes) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAuint32 PageSizeFromFlags(unsigned int pageSizeFlags) { + switch (pageSizeFlags) { + case HSA_PAGE_SIZE_4KB: + return 4 * 1024; + case HSA_PAGE_SIZE_64KB: + return 64 * 1024; + case HSA_PAGE_SIZE_2MB: + return 2 * 1024 * 1024; + case HSA_PAGE_SIZE_1GB: + return 1024 * 1024 * 1024; + default: + assert(false); + return 4 * 1024; + } +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemory(HSAuint32 PreferredNode, + HSAuint64 SizeInBytes, + HsaMemFlags MemFlags, + void **MemoryAddress) { + return hsaKmtAllocMemoryAlign(PreferredNode, SizeInBytes, 0, MemFlags, + MemoryAddress); +} + +#define POWER_OF_2(x) ((x && (!(x & (x - 1)))) ? 1 : 0) + +bool isSystemMemoryAvailable(HSAuint64 SizeInBytes) { + struct sysinfo info; + if (sysinfo(&info) != 0) + return false; + return SizeInBytes <= info.freeram; +} + +bool isLocalMemoryAvailable(rocr::core::WDDMDevice *dev, + HSAuint64 SizeInBytes) { + return SizeInBytes <= dev->VramAvail(); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, + HSAuint64 SizeInBytes, + HSAuint64 Alignment, + HsaMemFlags MemFlags, + void **MemoryAddress) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress) + return HSAKMT_STATUS_INVALID_PARAMETER; + + if (MemFlags.ui32.FixedAddress) { + if (*MemoryAddress == nullptr) + return HSAKMT_STATUS_INVALID_PARAMETER; + } else + *MemoryAddress = nullptr; + + rocr::core::WDDMDevice *dev = get_wddmdev(1); + if (!dev) + return HSAKMT_STATUS_ERROR; + + rocr::core::GpuMemory *gpu_mem = nullptr; + rocr::core::GpuMemoryCreateInfo create_info{}; + create_info.size = SizeInBytes; + + if (!MemFlags.ui32.NonPaged || zfb_support || MemFlags.ui32.GTTAccess) { + /* If allocate VRAM under ZFB mode */ + if (zfb_support && MemFlags.ui32.NonPaged == 1) + MemFlags.ui32.CoarseGrain = 1; + + create_info.domain = rocr_proxy::AllocDomain::kSystem; + if (!isSystemMemoryAvailable(SizeInBytes)) + return HSAKMT_STATUS_NO_MEMORY; + } else { + create_info.domain = rocr_proxy::AllocDomain::kLocal; + if (!isLocalMemoryAvailable(dev, SizeInBytes)) + return HSAKMT_STATUS_NO_MEMORY; + } + + if (!MemFlags.ui32.CoarseGrain) + create_info.mem_flags = rocr_proxy::kFineGrain; + + // create_info.mem_flags |= rocr_proxy::kKernarg; + create_info.flags.physical_only = MemFlags.ui32.NoAddress; + create_info.flags.interprocess = MemFlags.ui32.NoAddress; + create_info.flags.locked = 0; //!!(alloc_flags & AllocatePinned); + + auto code = dev->CreateGpuMemory(create_info, &gpu_mem); + if (code == ErrorCode::Success) { + *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); + std::lock_guard gard(allocation_map_lock_); + allocation_map_[*MemoryAddress] = Allocation( + gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, + create_info.size, false, nullptr, SizeInBytes, + MemFlags.ui32.GTTAccess ? 0 : PreferredNode, MemFlags.Value); + return HSAKMT_STATUS_SUCCESS; + } + + return HSAKMT_STATUS_ERROR; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, + HSAuint64 SizeInBytes) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress) + return HSAKMT_STATUS_INVALID_PARAMETER; + + rocr::core::GpuMemory *gpu_mem = nullptr; + { + std::lock_guard gard(allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return HSAKMT_STATUS_ERROR; + } + + gpu_mem = rocr::core::GpuMemory::Convert(it->second.handle); + allocation_map_.erase(it); + } + + delete gpu_mem; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtAvailableMemory(HSAuint32 Node, + HSAuint64 *AvailableBytes) { + CHECK_DXG_OPEN(); + + if (!AvailableBytes) + return HSAKMT_STATUS_INVALID_PARAMETER; + + rocr::core::WDDMDevice *dev = get_wddmdev(Node); + if (!dev) + return HSAKMT_STATUS_ERROR; + + *AvailableBytes = dev->VramAvail(); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemory(void *MemoryAddress, + HSAuint64 MemorySizeInBytes) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryToNodes(void *MemoryAddress, + HSAuint64 MemorySizeInBytes, + HSAuint64 NumberOfNodes, + HSAuint32 *NodeArray) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryWithFlags( + void *MemoryAddress, HSAuint64 MemorySizeInBytes, HsaMemFlags MemFlags) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress) + return HSAKMT_STATUS_INVALID_PARAMETER; + + pr_debug("[%s] address %p\n", __func__, MemoryAddress); + + if (MemFlags.ui32.ExtendedCoherent && MemFlags.ui32.CoarseGrain) + return HSAKMT_STATUS_INVALID_PARAMETER; + + // Registered memory should be ordinary paged host memory. + if ((MemFlags.ui32.HostAccess != 1) || (MemFlags.ui32.NonPaged == 1)) + return HSAKMT_STATUS_NOT_SUPPORTED; + + if (!is_dgpu) + /* TODO: support mixed APU and dGPU configurations */ + return HSAKMT_STATUS_NOT_SUPPORTED; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodes( + HSAuint64 GraphicsResourceHandle, + HsaGraphicsResourceInfo *GraphicsResourceInfo, HSAuint64 NumberOfNodes, + HSAuint32 *NodeArray) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, + HSAuint64 MemorySizeInBytes, + int *DMABufFd, + HSAuint64 *Offset) { + CHECK_DXG_OPEN(); + assert(false); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtShareMemory(void *MemoryAddress, HSAuint64 SizeInBytes, + HsaSharedMemoryHandle *SharedMemoryHandle) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtRegisterSharedHandle(const HsaSharedMemoryHandle *SharedMemoryHandle, + void **MemoryAddress, HSAuint64 *SizeInBytes) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterSharedHandleToNodes( + const HsaSharedMemoryHandle *SharedMemoryHandle, void **MemoryAddress, + HSAuint64 *SizeInBytes, HSAuint64 NumberOfNodes, HSAuint32 *NodeArray) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMRead(HSAuint32 Pid, + HsaMemoryRange *LocalMemoryArray, + HSAuint64 LocalMemoryArrayCount, + HsaMemoryRange *RemoteMemoryArray, + HSAuint64 RemoteMemoryArrayCount, + HSAuint64 *SizeCopied) { + pr_err("[%s] Deprecated\n", __func__); + + assert(false); + return HSAKMT_STATUS_NOT_IMPLEMENTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMWrite(HSAuint32 Pid, + HsaMemoryRange *LocalMemoryArray, + HSAuint64 LocalMemoryArrayCount, + HsaMemoryRange *RemoteMemoryArray, + HSAuint64 RemoteMemoryArrayCount, + HSAuint64 *SizeCopied) { + pr_err("[%s] Deprecated\n", __func__); + + assert(false); + return HSAKMT_STATUS_NOT_IMPLEMENTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDeregisterMemory(void *MemoryAddress) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress) + return HSAKMT_STATUS_INVALID_PARAMETER; + + pr_debug("[%s] address %p\n", __func__, MemoryAddress); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, + HSAuint64 MemorySizeInBytes, + HSAuint64 *AlternateVAGPU) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress || !AlternateVAGPU) { + pr_err("FIXME: mapping NULL pointer\n"); + return HSAKMT_STATUS_ERROR; + } + + uint64_t start = rocr::AlignDown((uint64_t)MemoryAddress, 4096); + uint64_t end = + rocr::AlignUp((uint64_t)MemoryAddress + MemorySizeInBytes, 4096); + + void *aligned_ptr = (void *)start; + size_t aligned_size = end - start; + + { + std::lock_guard gard(allocation_map_lock_); + // GTT mem + auto it_gtt = allocation_map_.find(aligned_ptr); + if (it_gtt != allocation_map_.end()) { + if (!it_gtt->second.userptr) { + if (it_gtt->second.size >= MemorySizeInBytes) { + *AlternateVAGPU = (uint64_t)MemoryAddress; + return HSAKMT_STATUS_SUCCESS; + } else { + return HSAKMT_STATUS_ERROR; + } + } + } + + // userptr mem + auto it = allocation_map_.find(MemoryAddress); + if (it != allocation_map_.end()) { + if (it->second.userptr && it->second.size >= MemorySizeInBytes) { + *AlternateVAGPU = + (uintptr_t)it->second.gpu_addr + + ((uintptr_t)MemoryAddress - (uintptr_t)it->second.cpu_addr); + return HSAKMT_STATUS_SUCCESS; + } + } + } + + rocr::core::WDDMDevice *dev = get_wddmdev(1); + if (!dev) + return HSAKMT_STATUS_ERROR; + + rocr::core::GpuMemory *gpu_mem = nullptr; + rocr::core::GpuMemoryHandle handle = 0; + uint64_t addr; + rocr::core::GpuMemoryCreateInfo create_info{}; + create_info.domain = rocr_proxy::kUserMemory; + create_info.size = aligned_size; + create_info.user_ptr = aligned_ptr; + + auto code = dev->CreateGpuMemory(create_info, &gpu_mem); + if (code == ErrorCode::Success) { + addr = gpu_mem->GpuAddress(); + handle = gpu_mem->GetGpuMemoryHandle(); + } else { + return HSAKMT_STATUS_ERROR; + } + + { + std::lock_guard guard(allocation_map_lock_); + allocation_map_[MemoryAddress] = + Allocation(handle, aligned_ptr, addr, aligned_size, true, MemoryAddress, + MemorySizeInBytes); + allocation_map_[(void *)addr] = + Allocation(handle, aligned_ptr, addr, aligned_size, true, nullptr, + MemorySizeInBytes); + } + + *AlternateVAGPU = addr + ((uintptr_t)MemoryAddress - (uintptr_t)aligned_ptr); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPUNodes( + void *MemoryAddress, HSAuint64 MemorySizeInBytes, HSAuint64 *AlternateVAGPU, + HsaMemMapFlags MemMapFlags, HSAuint64 NumberOfNodes, HSAuint32 *NodeArray) { + return hsaKmtMapMemoryToGPU(MemoryAddress, MemorySizeInBytes, AlternateVAGPU); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { + CHECK_DXG_OPEN(); + + if (!MemoryAddress) { + /* Workaround for runtime bug */ + pr_err("FIXME: Unmapping NULL pointer\n"); + return HSAKMT_STATUS_SUCCESS; + } + + pr_debug("[%s] address %p\n", __func__, MemoryAddress); + + rocr::core::GpuMemoryHandle handle = nullptr; + { + std::lock_guard gard(allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return HSAKMT_STATUS_ERROR; + } + + if (!it->second.userptr) { + return HSAKMT_STATUS_SUCCESS; + } + + handle = it->second.handle; + + allocation_map_.erase((void *)it->second.gpu_addr); + allocation_map_.erase(it); + } + auto gpu_mem = rocr::core::GpuMemory::Convert(handle); + delete gpu_mem; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtMapGraphicHandle(HSAuint32 NodeId, + HSAuint64 GraphicDeviceHandle, + HSAuint64 GraphicResourceHandle, + HSAuint64 GraphicResourceOffset, + HSAuint64 GraphicResourceSize, + HSAuint64 *FlatMemoryAddress) { + /* This API was only ever implemented in KFD for Kaveri and + * was never upstreamed. There are no open-source users of + * this interface. It has been superseded by + * RegisterGraphicsHandleToNodes. + */ + return HSAKMT_STATUS_NOT_IMPLEMENTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapGraphicHandle(HSAuint32 NodeId, + HSAuint64 FlatMemoryAddress, + HSAuint64 SizeInBytes) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetTileConfig(HSAuint32 NodeId, + HsaGpuTileConfig *config) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, + HsaPointerInfo *PointerInfo) { + CHECK_DXG_OPEN(); + + if (!Pointer || !PointerInfo) + return HSAKMT_STATUS_INVALID_PARAMETER; + + pr_debug("[%s] pointer %p\n", __func__, Pointer); + + memset(PointerInfo, 0, sizeof(HsaPointerInfo)); + + Allocation allocation_info; + { + std::lock_guard gard(allocation_map_lock_); + auto it = allocation_map_.find(Pointer); + if (it == allocation_map_.end()) { + PointerInfo->Type = HSA_POINTER_UNKNOWN; + return HSAKMT_STATUS_ERROR; + } + allocation_info = it->second; + } + + if (allocation_info.userptr) { + PointerInfo->Type = HSA_POINTER_REGISTERED_USER; + PointerInfo->SizeInBytes = allocation_info.size; + } else { + PointerInfo->Type = HSA_POINTER_ALLOCATED; + PointerInfo->SizeInBytes = allocation_info.size_requested; + } + + PointerInfo->Node = allocation_info.node_id; + PointerInfo->MemFlags.Value = allocation_info.mem_flags_value; + PointerInfo->CPUAddress = allocation_info.cpu_addr; + PointerInfo->GPUAddress = allocation_info.gpu_addr; + PointerInfo->UserData = allocation_info.user_data; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryUserData(const void *Pointer, + void *UserData) { + CHECK_DXG_OPEN(); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtReplaceAsanHeaderPage(void *addr) { + assert(false); +#ifdef SANITIZER_AMDGPU + pr_debug("[%s] address %p\n", __func__, addr); + CHECK_DXG_OPEN(); + + return HSAKMT_STATUS_SUCCESS; +#else + return HSAKMT_STATUS_NOT_SUPPORTED; +#endif +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtReturnAsanHeaderPage(void *addr) { + assert(false); +#ifdef SANITIZER_AMDGPU + pr_debug("[%s] address %p\n", __func__, addr); + CHECK_DXG_OPEN(); + + return HSAKMT_STATUS_SUCCESS; +#else + return HSAKMT_STATUS_NOT_SUPPORTED; +#endif +} diff --git a/openclose.cpp b/openclose.cpp new file mode 100644 index 0000000000..b2b3c04460 --- /dev/null +++ b/openclose.cpp @@ -0,0 +1,274 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "libhsakmt.h" +#include "inc/hsa/hsa.h" +#include "inc/hsa/hsa_ven_amd_loader.h" + +int (*fn_amdgpu_device_get_fd)(HsaAMDGPUDeviceHandle device_handle); + +hsa_signal_value_t (*fn_hsa_signal_load_relaxed)(hsa_signal_t signal); +hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( + hsa_signal_t signal, hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint); +void (*fn_hsa_signal_store_screlease)(hsa_signal_t hsa_signal, + hsa_signal_value_t value); +hsa_status_t (*fn_hsa_ven_amd_loader_query_host_address)( + const void *device_address, const void **host_address); + +static const char dxg_device_name[] = "/dev/dxg"; +static pid_t parent_pid = -1; +int hsakmt_debug_level; +bool hsakmt_forked; +static int dxg_fd = -1; + +/* is_forked_child detects when the process has forked since the last + * time this function was called. We cannot rely on pthread_atfork + * because the process can fork without calling the fork function in + * libc (using clone or calling the system call directly). + */ +bool is_forked_child(void) { + pid_t cur_pid; + + if (hsakmt_forked) + return true; + + cur_pid = getpid(); + + if (parent_pid == -1) { + parent_pid = cur_pid; + return false; + } + + if (parent_pid != cur_pid) { + hsakmt_forked = true; + return true; + } + + return false; +} + +/* Callbacks from pthread_atfork */ +static void prepare_fork_handler(void) { pthread_mutex_lock(&hsakmt_mutex); } +static void parent_fork_handler(void) { pthread_mutex_unlock(&hsakmt_mutex); } +static void child_fork_handler(void) { + pthread_mutex_init(&hsakmt_mutex, NULL); + hsakmt_forked = true; +} + +/* Call this from the child process after fork. This will clear all + * data that is duplicated from the parent process, that is not valid + * in the child. + * The topology information is duplicated from the parent is valid + * in the child process so it is not cleared + */ +static void clear_after_fork(void) { + // TODO: fmm_clear_all_mem(); + if (dxg_fd) { + close(dxg_fd); + dxg_fd = -1; + } + dxg_open_count = 0; + parent_pid = -1; + hsakmt_forked = false; +} + +static inline void init_page_size(void) { +#ifndef PAGE_SIZE + PAGE_SIZE = sysconf(_SC_PAGESIZE); +#endif + PAGE_SHIFT = ffs(PAGE_SIZE) - 1; +} + +static HSAKMT_STATUS init_vars_from_env(void) { + char *envvar; + int debug_level; + + /* Normally libraries don't print messages. For debugging purpose, we'll + * print messages if an environment variable, HSAKMT_DEBUG_LEVEL, is set. + */ + hsakmt_debug_level = HSAKMT_DEBUG_LEVEL_DEFAULT; + + envvar = getenv("HSAKMT_DEBUG_LEVEL"); + if (envvar) { + debug_level = atoi(envvar); + if (debug_level >= HSAKMT_DEBUG_LEVEL_ERR && + debug_level <= HSAKMT_DEBUG_LEVEL_DEBUG) + hsakmt_debug_level = debug_level; + } + + /* Check whether to support Zero frame buffer */ + envvar = getenv("HSA_ZFB"); + if (envvar) + zfb_support = atoi(envvar); + + /* Check whether to handle vendor specific aql packet */ + envvar = getenv("WSLKMT_VENDOR_PACKET"); + if (envvar) + vendor_packet_support = atoi(envvar); + + return HSAKMT_STATUS_SUCCESS; +} + +#define _HSAKMT_LOOKUP_SYMS(_sym) \ + do { \ + fn_##_sym = \ + reinterpret_cast(dlsym(RTLD_DEFAULT, #_sym)); \ + if (!fn_##_sym) { \ + pr_err("%s not found - %s\n", #_sym, dlerror()); \ + return HSAKMT_STATUS_ERROR; \ + } \ + } while (0) + +static HSAKMT_STATUS init_symbols(void) { + _HSAKMT_LOOKUP_SYMS(hsa_signal_load_relaxed); + _HSAKMT_LOOKUP_SYMS(hsa_signal_wait_relaxed); + _HSAKMT_LOOKUP_SYMS(hsa_signal_store_screlease); + + hsa_status_t (*fn_hsa_system_get_extension_table)( + uint16_t extension, uint16_t version_major, uint16_t version_minor, + void *table); + _HSAKMT_LOOKUP_SYMS(hsa_system_get_extension_table); + hsa_ven_amd_loader_1_03_pfn_t table; + fn_hsa_system_get_extension_table(HSA_EXTENSION_AMD_LOADER, 1, 3, &table); + fn_hsa_ven_amd_loader_query_host_address = + table.hsa_ven_amd_loader_query_host_address; + + return HSAKMT_STATUS_SUCCESS; +} + +static void load_libdrm_amdgpu(void) { + /* load libdrm_amdgpu */ + int fd; + uint32_t major, minor; + amdgpu_device_handle device_handle; + amdgpu_device_initialize(fd, &major, &minor, &device_handle); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { + HSAKMT_STATUS result; + int fd = -1; + HsaSystemProperties sys_props; + char *error; + char *useSvmStr; + + pthread_mutex_lock(&hsakmt_mutex); + + /* If the process has forked, the child process must re-initialize + * it's connection to DXG. Any references tracked by dxg_open_count + * belong to the parent + */ + if (is_forked_child()) + clear_after_fork(); + + if (dxg_open_count == 0) { + static bool atfork_installed = false; + + result = init_symbols(); + if (result != HSAKMT_STATUS_SUCCESS) + goto open_failed; + + load_libdrm_amdgpu(); + + result = init_vars_from_env(); + if (result != HSAKMT_STATUS_SUCCESS) + goto open_failed; + + if (dxg_fd < 0) { + fd = open(dxg_device_name, O_RDWR | O_CLOEXEC); + + if (fd == -1) { + result = HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; + goto open_failed; + } + + dxg_fd = fd; + } + + init_page_size(); + + useSvmStr = getenv("HSA_USE_SVM"); + is_svm_api_supported = !(useSvmStr && !strcmp(useSvmStr, "0")) && false; + + // result = topology_sysfs_get_system_props(&sys_props); + if (result != HSAKMT_STATUS_SUCCESS) + goto topology_sysfs_failed; + + dxg_open_count = 1; + + if (!atfork_installed) { + /* Atfork handlers cannot be uninstalled and + * must be installed only once. Otherwise + * prepare will deadlock when trying to take + * the same lock multiple times. + */ + pthread_atfork(prepare_fork_handler, parent_fork_handler, + child_fork_handler); + atfork_installed = true; + } + } else { + dxg_open_count++; + result = HSAKMT_STATUS_KERNEL_ALREADY_OPENED; + } + + pthread_mutex_unlock(&hsakmt_mutex); + return result; +topology_sysfs_failed: + close(fd); +open_failed: + pthread_mutex_unlock(&hsakmt_mutex); + + return result; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtCloseKFD(void) { + HSAKMT_STATUS result; + + pthread_mutex_lock(&hsakmt_mutex); + + if (dxg_open_count > 0) { + if (--dxg_open_count == 0) { + close(dxg_fd); + } + + result = HSAKMT_STATUS_SUCCESS; + } else + result = HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; + + pthread_mutex_unlock(&hsakmt_mutex); + + return result; +} diff --git a/pc_sampling.cpp b/pc_sampling.cpp new file mode 100644 index 0000000000..247726239b --- /dev/null +++ b/pc_sampling.cpp @@ -0,0 +1,73 @@ +/* + * Copyright © 2023 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 (including + * the next paragraph) 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. + */ + +#include +#include +#include +#include +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingSupport(void) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtPcSamplingQueryCapabilities(HSAuint32 NodeId, void *sample_info, + HSAuint32 sample_info_sz, HSAuint32 *size) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingCreate(HSAuint32 NodeId, + HsaPcSamplingInfo *sample_info, + HsaPcSamplingTraceId *traceId) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingDestroy(HSAuint32 NodeId, + HsaPcSamplingTraceId traceId) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingStart(HSAuint32 NodeId, + HsaPcSamplingTraceId traceId) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingStop(HSAuint32 NodeId, + HsaPcSamplingTraceId traceId) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} diff --git a/perfctr.cpp b/perfctr.cpp new file mode 100644 index 0000000000..9f2b755052 --- /dev/null +++ b/perfctr.cpp @@ -0,0 +1,82 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcGetCounterProperties( + HSAuint32 NodeId, HsaCounterProperties **CounterProperties) { + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +/* Registers a set of (HW) counters to be used for tracing/profiling */ +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcRegisterTrace(HSAuint32 NodeId, + HSAuint32 NumberOfCounters, + HsaCounter *Counters, + HsaPmcTraceRoot *TraceRoot) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +/* Unregisters a set of (HW) counters used for tracing/profiling */ + +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcUnregisterTrace(HSAuint32 NodeId, + HSATraceId TraceId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcAcquireTraceAccess(HSAuint32 NodeId, + HSATraceId TraceId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcReleaseTraceAccess(HSAuint32 NodeId, + HSATraceId TraceId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +/* Starts tracing operation on a previously established set of performance + * counters */ +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcStartTrace(HSATraceId TraceId, + void *TraceBuffer, + HSAuint64 TraceBufferSizeBytes) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +/*Forces an update of all the counters that a previously started trace operation + * has registered */ +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcQueryTrace(HSATraceId TraceId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +/* Stops tracing operation on a previously established set of performance + * counters */ +HSAKMT_STATUS HSAKMTAPI hsaKmtPmcStopTrace(HSATraceId TraceId) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} diff --git a/queues.cpp b/queues.cpp new file mode 100644 index 0000000000..7206e32e99 --- /dev/null +++ b/queues.cpp @@ -0,0 +1,174 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ +#include +#include "libhsakmt.h" +#include "inc/wddm/device.h" +#include "inc/wddm/queue.h" +#include "hsa-runtime/inc/amd_hsa_signal.h" + +uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id) { + uint32_t vgpr_size = 0x40000; + + if (id.ui32.Major >= 11) { + vgpr_size = 0x60000; + } + + return vgpr_size; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( + HSAuint32 NodeId, HSA_QUEUE_TYPE Type, HSAuint32 QueuePercentage, + HSA_QUEUE_PRIORITY Priority, void *QueueAddress, HSAuint64 QueueSizeInBytes, + HsaEvent *Event, HsaQueueResource *QueueResource) { + HSAKMT_STATUS result; + + CHECK_DXG_OPEN(); + assert(Event == nullptr); + + if (Priority < HSA_QUEUE_PRIORITY_MINIMUM || + Priority > HSA_QUEUE_PRIORITY_MAXIMUM) + return HSAKMT_STATUS_INVALID_PARAMETER; + + rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + assert(device_); + + switch (Type) { + case HSA_QUEUE_COMPUTE_AQL: { + assert(QueueResource->ErrorReason == nullptr); + uint64_t pkg_num = QueueSizeInBytes / 64; + uint32_t cmdbuf_size = device_->GetCmdbufSize(); + uint32_t queue_engine = device_->GetComputeEngine(); + bool use_hws = device_->IsHwsEnabled(queue_engine); + auto queue_ = new rocr::core::ComputeQueue( + device_, QueueAddress, pkg_num, + reinterpret_cast *>(QueueResource->Queue_write_ptr_aql), + reinterpret_cast *>(QueueResource->Queue_read_ptr_aql), + QueueResource->ErrorReason, cmdbuf_size, queue_engine, use_hws); + + QueueResource->QueueId = reinterpret_cast(queue_); + // for doorbell_signal.hardware_doorbell_ptr + QueueResource->Queue_DoorBell_aql = queue_->GetDoorbellPtr(); + } break; + case HSA_QUEUE_SDMA: + default: + assert(false); + QueueResource->QueueId = 0; + QueueResource->Queue_DoorBell = nullptr; + break; + } + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtUpdateQueue( + HSA_QUEUEID QueueId, HSAuint32 QueuePercentage, HSA_QUEUE_PRIORITY Priority, + void *QueueAddress, HSAuint64 QueueSize, HsaEvent *Event) { + CHECK_DXG_OPEN(); + + if (Priority < HSA_QUEUE_PRIORITY_MINIMUM || + Priority > HSA_QUEUE_PRIORITY_MAXIMUM) + return HSAKMT_STATUS_INVALID_PARAMETER; + + auto queue_ = reinterpret_cast(QueueId); + if (!queue_) + return HSAKMT_STATUS_INVALID_PARAMETER; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyQueue(HSA_QUEUEID QueueId) { + CHECK_DXG_OPEN(); + + auto queue_ = reinterpret_cast(QueueId); + + if (!queue_) + return HSAKMT_STATUS_INVALID_PARAMETER; + + delete queue_; + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetQueueCUMask(HSA_QUEUEID QueueId, + HSAuint32 CUMaskCount, + HSAuint32 *QueueCUMask) { + CHECK_DXG_OPEN(); + + auto queue_ = reinterpret_cast(QueueId); + if (!queue_) + return HSAKMT_STATUS_INVALID_PARAMETER; + + if (CUMaskCount == 0 || !QueueCUMask || ((CUMaskCount % 32) != 0)) + return HSAKMT_STATUS_INVALID_PARAMETER; + + pr_debug("%s not implemented\n", __func__); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetQueueInfo(HSA_QUEUEID QueueId, + HsaQueueInfo *QueueInfo) { + CHECK_DXG_OPEN(); + + if (QueueInfo == NULL) + return HSAKMT_STATUS_INVALID_PARAMETER; + memset(QueueInfo, 0, sizeof(*QueueInfo)); + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetTrapHandler(HSAuint32 Node, + void *TrapHandlerBaseAddress, + HSAuint64 TrapHandlerSizeInBytes, + void *TrapBufferBaseAddress, + HSAuint64 TrapBufferSizeInBytes) { + CHECK_DXG_OPEN(); + + pr_debug("%s not implemented\n", __func__); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtAllocQueueGWS(HSA_QUEUEID QueueId, HSAuint32 nGWS, + HSAuint32 *firstGWS) { + CHECK_DXG_OPEN(); + + auto queue_ = reinterpret_cast(QueueId); + if (!queue_) + return HSAKMT_STATUS_INVALID_PARAMETER; + + assert(false); + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtQueueRingDoorbell(HSA_QUEUEID QueueId) { + CHECK_DXG_OPEN(); + + auto queue_ = reinterpret_cast(QueueId); + if (!queue_) + return HSAKMT_STATUS_INVALID_PARAMETER; + + queue_->RingDoorbell(); + return HSAKMT_STATUS_SUCCESS; +} diff --git a/rocr_proxy/librocr_proxy.a b/rocr_proxy/librocr_proxy.a new file mode 100644 index 0000000000000000000000000000000000000000..57b428938c6e7ab14d99ce517ae323dfa30ec0a6 GIT binary patch literal 365408 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∓X)0!y_X}$A>WYr)7qZtK>Xr& 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 t`oF&QKbN +#include +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtSPMAcquire(HSAuint32 PreferredNode) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSPMSetDestBuffer( + HSAuint32 PreferredNode, HSAuint32 SizeInBytes, HSAuint32 *timeout, + HSAuint32 *SizeCopied, void *DestMemoryAddress, bool *isSPMDataLoss) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSPMRelease(HSAuint32 PreferredNode) { + CHECK_DXG_OPEN(); + // Used for profiling tools + return HSAKMT_STATUS_NOT_SUPPORTED; +} diff --git a/svm.cpp b/svm.cpp new file mode 100644 index 0000000000..9a45f89de9 --- /dev/null +++ b/svm.cpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2020 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 (including + * the next paragraph) 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. + */ +#include "libhsakmt.h" + +/* Helper functions for calling KFD SVM ioctl */ + +HSAKMT_STATUS HSAKMTAPI hsaKmtSVMSetAttr(void *start_addr, HSAuint64 size, + unsigned int nattr, + HSA_SVM_ATTRIBUTE *attrs) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSVMGetAttr(void *start_addr, HSAuint64 size, + unsigned int nattr, + HSA_SVM_ATTRIBUTE *attrs) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtSetXNACKMode(HSAint32 enable) { + CHECK_DXG_OPEN(); + return HSAKMT_STATUS_NOT_SUPPORTED; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetXNACKMode(HSAint32 *enable) { + CHECK_DXG_OPEN(); + *enable = false; + return HSAKMT_STATUS_SUCCESS; +} diff --git a/time.cpp b/time.cpp new file mode 100644 index 0000000000..477d04d0ad --- /dev/null +++ b/time.cpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ +#include +#include +#include +#include +#include "libhsakmt.h" +#include "inc/wddm/device.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetClockCounters(HSAuint32 NodeId, + HsaClockCounters *Counters) { + HSAKMT_STATUS result = HSAKMT_STATUS_SUCCESS; + + CHECK_DXG_OPEN(); + + std::memset(Counters, 0, sizeof(*Counters)); + + rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + assert(device_); + device_->GetClockCounters(&Counters->GPUClockCounter, nullptr); + + struct timespec ts; + if (clock_gettime(CLOCK_REALTIME, &ts) == 0) + Counters->CPUClockCounter = ts.tv_sec * 1e9 + ts.tv_nsec; + if (clock_gettime(CLOCK_BOOTTIME, &ts) == 0) + Counters->SystemClockCounter = ts.tv_sec * 1e9 + ts.tv_nsec; + Counters->SystemClockFrequencyHz = 1000000000; + + return result; +} diff --git a/topology.cpp b/topology.cpp new file mode 100644 index 0000000000..bfa5a22c01 --- /dev/null +++ b/topology.cpp @@ -0,0 +1,1698 @@ +/* + * Copyright © 2014 Advanced Micro Devices, Inc. + * Copyright 2016-2018 Raptor Engineering, LLC. All Rights Reserved. + * + * 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 (including + * the next paragraph) 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "libhsakmt.h" +#include "inc/wddm/types.h" +#include "inc/wddm/device.h" + +/* Number of memory banks added by thunk on top of topology + * This only includes static heaps like LDS, scratch and SVM, + * not for MMIO_REMAP heap. MMIO_REMAP memory bank is reported + * dynamically based on whether mmio aperture was mapped + * successfully on this node. + */ +#define NUM_OF_IGPU_HEAPS 3 +#define NUM_OF_DGPU_HEAPS 3 + +typedef struct { + HsaNodeProperties node; + HsaMemoryProperties *mem; /* node->NumBanks elements */ + HsaCacheProperties *cache; + HsaIoLinkProperties *link; +} node_props_t; + +static HsaSystemProperties *g_system; +static node_props_t *g_props; + +static std::vector wdevices_; +static uint32_t wdevice_num_; +static uint32_t num_sysfs_nodes; + +static int processor_vendor = -1; +/* Supported System Vendors */ +enum SUPPORTED_PROCESSOR_VENDORS { + GENUINE_INTEL = 0, + AUTHENTIC_AMD, + IBM_POWER +}; +/* Adding newline to make the search easier */ +static const char *supported_processor_vendor_name[] = { + "GenuineIntel\n", + "AuthenticAMD\n", + "\n" // POWER requires a different search method +}; + +static HSAKMT_STATUS topology_take_snapshot(void); +static void topology_drop_snapshot(void); + +/* information from /proc/cpuinfo */ +struct proc_cpuinfo { + uint32_t proc_num; /* processor */ + uint32_t apicid; /* apicid */ + char model_name[HSA_PUBLIC_NAME_SIZE]; /* model name */ +}; + +/* CPU cache table for all CPUs on the system. Each entry has the relative CPU + * info and caches connected to that CPU. + */ +typedef struct cpu_cacheinfo { + uint32_t len; /* length of the table = number of online procs */ + int32_t proc_num; /* this cpu's processor number */ + uint32_t num_caches; /* number of caches reported by this cpu */ + HsaCacheProperties *cache_prop; /* a list of cache properties */ +} cpu_cacheinfo_t; + +static void free_properties(node_props_t *props, int size) { + if (props) { + int i; + for (i = 0; i < size; i++) { + free(props[i].mem); + free(props[i].cache); + free(props[i].link); + } + + free(props); + } +} + +/* num_subdirs - find the number of sub-directories in the specified path + * @dirpath - directory path to find sub-directories underneath + * @prefix - only count sub-directory names starting with prefix. + * Use blank string, "", to count all. + * Return - number of sub-directories + */ +static int num_subdirs(char *dirpath, char *prefix) { + int count = 0; + DIR *dirp; + struct dirent *dir; + int prefix_len = strlen(prefix); + + dirp = opendir(dirpath); + if (dirp) { + while ((dir = readdir(dirp)) != 0) { + if ((strcmp(dir->d_name, ".") == 0) || (strcmp(dir->d_name, "..") == 0)) + continue; + if (prefix_len && strncmp(dir->d_name, prefix, prefix_len)) + continue; + count++; + } + closedir(dirp); + } + + return count; +} + +/* fscanf_dec - read a file whose content is a decimal number + * @file [IN ] file to read + * @num [OUT] number in the file + */ +static HSAKMT_STATUS fscanf_dec(char *file, uint32_t *num) { + FILE *fd; + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + + fd = fopen(file, "r"); + if (!fd) { + pr_err("Failed to open %s\n", file); + return HSAKMT_STATUS_INVALID_PARAMETER; + } + if (fscanf(fd, "%u", num) != 1) { + pr_err("Failed to parse %s as a decimal.\n", file); + ret = HSAKMT_STATUS_ERROR; + } + + fclose(fd); + return ret; +} + +/* fscanf_str - read a file whose content is a string + * @file [IN ] file to read + * @str [OUT] string in the file + */ +static HSAKMT_STATUS fscanf_str(char *file, char *str) { + FILE *fd; + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + + fd = fopen(file, "r"); + if (!fd) { + pr_err("Failed to open %s\n", file); + return HSAKMT_STATUS_INVALID_PARAMETER; + } + if (fscanf(fd, "%s", str) != 1) { + pr_err("Failed to parse %s as a string.\n", file); + ret = HSAKMT_STATUS_ERROR; + } + + fclose(fd); + return ret; +} + +/* fscanf_size - read a file whose content represents size as a string + * @file [IN ] file to read + * @bytes [OUT] sizes in bytes + */ +static HSAKMT_STATUS fscanf_size(char *file, uint32_t *bytes) { + FILE *fd; + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + char unit; + int n; + + fd = fopen(file, "r"); + if (!fd) { + pr_err("Failed to open %s\n", file); + return HSAKMT_STATUS_INVALID_PARAMETER; + } + + n = fscanf(fd, "%u%c", bytes, &unit); + if (n < 1) { + pr_err("Failed to parse %s\n", file); + ret = HSAKMT_STATUS_ERROR; + } + + if (n == 2) { + switch (unit) { + case 'K': + *bytes <<= 10; + break; + case 'M': + *bytes <<= 20; + break; + case 'G': + *bytes <<= 30; + break; + default: + ret = HSAKMT_STATUS_ERROR; + break; + } + } + + fclose(fd); + return ret; +} + +/* cpumap_to_cpu_ci - translate shared_cpu_map string + cpuinfo->apicid into + * SiblingMap in cache + * @shared_cpu_map [IN ] shared_cpu_map string + * @cpuinfo [IN ] cpuinfo to get apicid + * @this_cache [OUT] CPU cache to fill in SiblingMap + */ +static void cpumap_to_cpu_ci(char *shared_cpu_map, struct proc_cpuinfo *cpuinfo, + HsaCacheProperties *this_cache) { + int num_hexs, bit; + uint32_t proc, apicid, mask; + char *ch_ptr; + + /* shared_cpu_map is shown as ...X3,X2,X1 Each X is a hex without 0x + * and it's up to 8 characters(32 bits). For the first 32 CPUs(actually + * procs), it's presented in X1. The next 32 is in X2, and so on. + */ + num_hexs = (strlen(shared_cpu_map) + 8) / 9; /* 8 characters + "," */ + ch_ptr = strtok(shared_cpu_map, ","); + while (num_hexs-- > 0) { + mask = strtol(ch_ptr, NULL, 16); /* each X */ + for (bit = 0; bit < 32; bit++) { + if (!((1 << bit) & mask)) + continue; + proc = num_hexs * 32 + bit; + apicid = cpuinfo[proc].apicid; + if (apicid >= HSA_CPU_SIBLINGS) { + pr_warn("SiblingMap buffer %d is too small\n", HSA_CPU_SIBLINGS); + continue; + } + this_cache->SiblingMap[apicid] = 1; + } + ch_ptr = strtok(NULL, ","); + } +} + +/* get_cpu_cache_info - get specified CPU's cache information from sysfs + * @prefix [IN] sysfs path for target cpu cache, + * /sys/devices/system/node/nodeX/cpuY/cache + * @cpuinfo [IN] /proc/cpuinfo data to get apicid + * @cpu_ci: CPU specified. This parameter is an input and also an output. + * [IN] cpu_ci->num_caches: number of index dirs + * [OUT] cpu_ci->cache_info: to store cache info collected + * [OUT] cpu_ci->num_caches: reduces when shared with other cpu(s) + * Return: number of cache reported from this cpu + */ +static int get_cpu_cache_info(const char *prefix, struct proc_cpuinfo *cpuinfo, + cpu_cacheinfo_t *cpu_ci) { + int idx, num_idx, n; + HsaCacheProperties *this_cache; + char path[256], str[256]; + bool is_power9 = false; + + if (processor_vendor == IBM_POWER) { + if (strcmp(cpuinfo[0].model_name, "POWER9") == 0) { + is_power9 = true; + } + } + + this_cache = cpu_ci->cache_prop; + num_idx = cpu_ci->num_caches; + for (idx = 0; idx < num_idx; idx++) { + /* If this cache is shared by multiple CPUs, we only need + * to list it in the first CPU. + */ + if (is_power9) { + // POWER9 has SMT4 + if (cpu_ci->proc_num & 0x3) { + /* proc is not 0,4,8,etc. Skip and reduce the cache count. */ + --cpu_ci->num_caches; + continue; + } + } else { + snprintf(path, 256, "%s/index%d/shared_cpu_list", prefix, idx); + /* shared_cpu_list is shown as n1,n2... or n1-n2,n3-n4... + * For both cases, this cache is listed to proc n1 only. + */ + fscanf_dec(path, (uint32_t *)&n); + if (cpu_ci->proc_num != n) { + /* proc is not n1. Skip and reduce the cache count. */ + --cpu_ci->num_caches; + continue; + } + this_cache->ProcessorIdLow = cpuinfo[cpu_ci->proc_num].apicid; + } + + /* CacheLevel */ + snprintf(path, 256, "%s/index%d/level", prefix, idx); + fscanf_dec(path, &this_cache->CacheLevel); + /* CacheType */ + snprintf(path, 256, "%s/index%d/type", prefix, idx); + + memset(str, 0, sizeof(str)); + fscanf_str(path, str); + if (!strcmp(str, "Data")) + this_cache->CacheType.ui32.Data = 1; + if (!strcmp(str, "Instruction")) + this_cache->CacheType.ui32.Instruction = 1; + if (!strcmp(str, "Unified")) { + this_cache->CacheType.ui32.Data = 1; + this_cache->CacheType.ui32.Instruction = 1; + } + this_cache->CacheType.ui32.CPU = 1; + /* CacheSize */ + snprintf(path, 256, "%s/index%d/size", prefix, idx); + fscanf_size(path, &this_cache->CacheSize); + /* CacheLineSize */ + snprintf(path, 256, "%s/index%d/coherency_line_size", prefix, idx); + fscanf_dec(path, &this_cache->CacheLineSize); + /* CacheAssociativity */ + snprintf(path, 256, "%s/index%d/ways_of_associativity", prefix, idx); + fscanf_dec(path, &this_cache->CacheAssociativity); + /* CacheLinesPerTag */ + snprintf(path, 256, "%s/index%d/physical_line_partition", prefix, idx); + fscanf_dec(path, &this_cache->CacheLinesPerTag); + /* CacheSiblings */ + snprintf(path, 256, "%s/index%d/shared_cpu_map", prefix, idx); + fscanf_str(path, str); + cpumap_to_cpu_ci(str, cpuinfo, this_cache); + + ++this_cache; + } + + return cpu_ci->num_caches; +} + +static HSAKMT_STATUS topology_map_node_id(uint32_t node_id, + rocr::core::WDDMDevice *&device) { + uint32_t idx = node_id; + if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) + return HSAKMT_STATUS_NOT_SUPPORTED; + + device = wdevices_[node_id - 1]; + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + bool is_node_supported = true; + uint32_t num_supported_nodes = 0; + + assert(props); + std::memset(props, 0, sizeof(*props)); + + D3DKMT_ADAPTERINFO *adapters; + int num_adapters; + if (rocr::core::WDDMGetAdapters(adapters, num_adapters) != STATUS_SUCCESS) { + pr_err("Failed to get adapters\n"); + ret = HSAKMT_STATUS_ERROR; + goto err; + } + + num_sysfs_nodes = num_adapters + 1; + + for (auto device : wdevices_) + delete device; + wdevices_.clear(); + + for (uint32_t i = 0; i < num_adapters; i++) { + rocr::core::WDDMDevice *device = new rocr::core::WDDMDevice( + adapters[i].hAdapter, adapters[i].AdapterLuid); + assert(device && "Create WDDM Device fail"); + wdevices_.push_back(device); + } + props->NumNodes = num_sysfs_nodes; + + delete[] adapters; + return ret; +err: + return ret; +} + +void topology_setup_is_dgpu_param(HsaNodeProperties *props) { + /* if we found a dGPU node, then treat the whole system as dGPU */ + if (!props->NumCPUCores && props->NumFComputeCores) + is_dgpu = true; +} + +static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties *props, + struct proc_cpuinfo *cpuinfo, + int num_procs) { + int i, j; + + if (!props) { + pr_err("Invalid props to get cpu model name\n"); + return HSAKMT_STATUS_INVALID_PARAMETER; + } + + for (i = 0; i < num_procs; i++, cpuinfo++) { + if (props->CComputeIdLo == cpuinfo->apicid) { + if (!props->DeviceId) /* CPU-only node */ + strncpy((char *)props->AMDName, cpuinfo->model_name, + sizeof(props->AMDName)); + /* Convert from UTF8 to UTF16 */ + for (j = 0; + cpuinfo->model_name[j] != '\0' && j < HSA_PUBLIC_NAME_SIZE - 1; j++) + props->MarketingName[j] = cpuinfo->model_name[j]; + props->MarketingName[j] = '\0'; + return HSAKMT_STATUS_SUCCESS; + } + } + + return HSAKMT_STATUS_ERROR; +} + +static int topology_search_processor_vendor(const char *processor_name) { + unsigned int i; + + for (i = 0; i < ARRAY_LEN(supported_processor_vendor_name); i++) { + if (!strcmp(processor_name, supported_processor_vendor_name[i])) + return i; + if (!strcmp(processor_name, "POWER9, altivec supported\n")) + return IBM_POWER; + } + return -1; +} + +/* topology_parse_cpuinfo - Parse /proc/cpuinfo and fill up required + * topology information + * cpuinfo [OUT]: output buffer to hold cpu information + * num_procs: number of processors the output buffer can hold + */ +static HSAKMT_STATUS topology_parse_cpuinfo(struct proc_cpuinfo *cpuinfo, + uint32_t num_procs) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + FILE *fd; + char read_buf[256]; + char *p; + uint32_t proc = 0; + size_t p_len; + const char *proc_cpuinfo_path = "/proc/cpuinfo"; + + if (!cpuinfo) { + pr_err("CPU information will be missing\n"); + return HSAKMT_STATUS_INVALID_PARAMETER; + } + + fd = fopen(proc_cpuinfo_path, "r"); + if (!fd) { + pr_err("Failed to open [%s]. Unable to get CPU information", + proc_cpuinfo_path); + return HSAKMT_STATUS_ERROR; + } + +#ifdef __PPC64__ + char *p2; + + /* Each line in /proc/cpuinfo that read_buf is constructed, the format + * is like this: + * "token : value\n" + * where token is our target like vendor_id, model name, apicid ... + * and value is the answer + */ + while (fgets(read_buf, sizeof(read_buf), fd)) { + /* processor number */ + if (!strncmp("processor ", read_buf, sizeof("processor ") - 1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + proc = atoi(p); + if (proc >= num_procs) { + pr_warn("cpuinfo contains processor %d larger than %u\n", proc, + num_procs); + ret = HSAKMT_STATUS_NO_MEMORY; + goto exit; + } + continue; + } + + /* vendor name / model name */ + if (!strncmp("cpu ", read_buf, sizeof("cpu ") - 1) && + (processor_vendor == -1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + processor_vendor = topology_search_processor_vendor(p); + + p2 = strchr(p, ','); + if (p2 != NULL) { + p2++; + *p2 = 0; + } + if (strlen(p) < HSA_PUBLIC_NAME_SIZE) { + /* -1 to remove \n from p */ + strncpy(cpuinfo[proc].model_name, p, strlen(p) - 1); + cpuinfo[proc].model_name[strlen(p) - 1] = '\0'; + } else + strncpy(cpuinfo[proc].model_name, p, HSA_PUBLIC_NAME_SIZE); + continue; + } + } +#else + /* Each line in /proc/cpuinfo that read_buf is constructed, the format + * is like this: + * "token : value\n" + * where token is our target like vendor_id, model name, apicid ... + * and value is the answer + */ + while (fgets(read_buf, sizeof(read_buf), fd)) { + /* processor number */ + if (!strncmp("processor", read_buf, sizeof("processor") - 1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + proc = atoi(p); + if (proc >= num_procs) { + pr_warn("cpuinfo contains processor %d larger than %u\n", proc, + num_procs); + ret = HSAKMT_STATUS_NO_MEMORY; + goto exit; + } + continue; + } + + /* vendor name */ + if (!strncmp("vendor_id", read_buf, sizeof("vendor_id") - 1) && + (processor_vendor == -1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + processor_vendor = topology_search_processor_vendor(p); + continue; + } + + /* model name */ + if (!strncmp("model name", read_buf, sizeof("model name") - 1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + p_len = strlen(p); + if (p_len > HSA_PUBLIC_NAME_SIZE) + p_len = HSA_PUBLIC_NAME_SIZE; + memcpy(cpuinfo[proc].model_name, p, p_len); + cpuinfo[proc].model_name[p_len - 1] = '\0'; + continue; + } + + /* apicid */ + if (!strncmp("apicid", read_buf, sizeof("apicid") - 1)) { + p = strchr(read_buf, ':'); + p += 2; /* remove ": " */ + cpuinfo[proc].apicid = atoi(p); + } + } +#endif + + if (processor_vendor < 0) { + pr_err("Failed to get Processor Vendor. Setting to %s", + supported_processor_vendor_name[GENUINE_INTEL]); + processor_vendor = GENUINE_INTEL; + } + +exit: + fclose(fd); + return ret; +} + +static HSAKMT_STATUS topology_get_cpu_maxfreq(uint32_t *max_freq) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + + std::ifstream cpuinfo_max_freq( + "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); + if (!cpuinfo_max_freq) { + std::ifstream cpuinfo("/proc/cpuinfo"); + if (!cpuinfo) { + std::cerr << "Failed to open /proc/cpuinfo\n"; + return HSAKMT_STATUS_ERROR; + } + + std::string line; + double freq_max_ = 0; + while (std::getline(cpuinfo, line)) { + if (line.substr(0, 7) == "cpu MHz") { + double freq = std::stod(line.substr(line.find(':') + 2)); + if (freq > freq_max_) { + freq_max_ = freq; + } + } + } + *max_freq = static_cast(freq_max_); + } else { + std::string line; + std::getline(cpuinfo_max_freq, line); + *max_freq = static_cast(std::stod(line) / 1000); + } + + return ret; +} + +static int log2_int(int x) { + int result = 0; + while (x >>= 1) { + result++; + } + return result; +} + +static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, + HsaNodeProperties *props, + bool *p2p_links, + uint32_t *num_p2pLinks) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + + assert(props); + memset(props, 0, sizeof(*props)); + if (p2p_links) + *p2p_links = false; + if (num_p2pLinks) + *num_p2pLinks = 0; + + topology_get_cpu_maxfreq(&props->MaxEngineClockMhzCCompute); + + if (node_id == 0) { + /* CPU node */ + props->NumCPUCores = sysconf(_SC_NPROCESSORS_ONLN); + props->NumMemoryBanks = 1; + props->KFDGpuID = 0; + return HSAKMT_STATUS_SUCCESS; + } + + /* gpu node */ + rocr::core::WDDMDevice *device; + ret = topology_map_node_id(node_id, device); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + + props->NumCPUCores = 0; + props->NumFComputeCores = device->SimdPerCu() * device->ComputeUnitCount(); + props->NumMemoryBanks = 1; + props->NumCaches = 3; + props->NumIOLinks = 1; + props->CComputeIdLo = 0; + props->FComputeIdLo = 0; + props->Capability.ui32.ASICRevision = device->AsicRevision(); + props->Capability.ui32.WatchPointsTotalBits = + log2_int(device->WatchPointsNum()); + props->MaxWavesPerSIMD = device->WavePerCu() / device->SimdPerCu(); + props->LDSSizeInKB = device->LdsSize() / 1024; + props->GDSSizeInKB = 0; + props->WaveFrontSize = device->WavefrontSize(); + props->NumShaderBanks = device->NumShaderEngine(); + props->NumArrays = device->ShaderArrayPerShaderEngine(); + props->NumCUPerArray = device->ComputeUnitCount() / props->NumArrays; + props->NumSIMDPerCU = device->SimdPerCu(); + props->MaxSlotsScratchCU = device->MaxScratchSlotsPerCu(); + props->VendorId = 0x1002; + props->DeviceId = device->DeviceId(); + props->LocationId = device->PciBusAddr(); + props->LocalMemSize = 0; + props->MaxEngineClockMhzFCompute = device->MaxEngineClockMhz(); + props->DrmRenderMinor = node_id; + + { + int i; + const char *name = device->ProductName(); + for (i = 0; name[i] != 0 && i < HSA_PUBLIC_NAME_SIZE - 1; i++) + props->MarketingName[i] = name[i]; + props->MarketingName[i] = '\0'; + } + props->uCodeEngineVersions.uCodeSDMA = device->GetSdmaFwVersion(); + props->DebugProperties.Value = 0; + props->HiveID = 0; + props->NumSdmaEngines = device->NumSdmaEngine(); + props->NumSdmaXgmiEngines = 0; + props->NumSdmaQueuesPerEngine = 6; // TODO + props->NumCpQueues = device->GetNumCpQueues(); + props->NumGws = 0; + props->Integrated = !(device->IsDgpu()); + props->Domain = device->Domain(); + props->UniqueID = atol(device->Uuid()); // TODO + props->NumXcc = 1; + props->KFDGpuID = device->DeviceId(); // TODO + props->FamilyID = device->GfxFamily(); + + props->EngineId.ui32.uCode = device->GetMecFwVersion(); + char *envvar = getenv("HSA_OVERRIDE_GFX_VERSION"); + if (envvar) { + char dummy = '\0'; + uint32_t major = 0, minor = 0, step = 0; + /* HSA_OVERRIDE_GFX_VERSION=major.minor.stepping */ + if ((sscanf(envvar, "%u.%u.%u%c", &major, &minor, &step, &dummy) != 3) || + (major > 63 || minor > 255 || step > 255)) { + pr_err("HSA_OVERRIDE_GFX_VERSION %s is invalid\n", envvar); + return HSAKMT_STATUS_ERROR; + } + props->EngineId.ui32.Major = major & 0x3f; + props->EngineId.ui32.Minor = minor & 0xff; + props->EngineId.ui32.Stepping = step & 0xff; + } else { + props->EngineId.ui32.Major = device->Major(); + props->EngineId.ui32.Minor = device->Minor(); + props->EngineId.ui32.Stepping = device->Stepping(); + } + + snprintf((char *)props->AMDName, sizeof(props->AMDName) - 1, "GFX%06x", + HSA_GET_GFX_VERSION_FULL(props->EngineId.ui32)); + + if (!is_svm_api_supported) + props->Capability.ui32.SVMAPISupported = 0; + props->Capability.ui32.DoorbellType = 2; + + /* Get VGPR/SGPR size in byte per CU */ + props->SGPRSizePerCU = SGPR_SIZE_PER_CU; + props->VGPRSizePerCU = get_vgpr_size_per_cu(props->EngineId); + + if (props->NumFComputeCores) + assert(props->EngineId.ui32.Major && + "HSA_OVERRIDE_GFX_VERSION may be needed"); + + return ret; +} + +static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, + uint32_t mem_id, + HsaMemoryProperties *props) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + + assert(props); + std::memset(props, 0, sizeof(*props)); + if (node_id == 0) { + /* CPU node */ + props->HeapType = HSA_HEAPTYPE_SYSTEM; + + struct sysinfo info; + sysinfo(&info); + props->SizeInBytes = info.totalram; + + props->Flags.MemoryProperty = 0; + props->Width = 64; + props->MemoryClockMax = 2133; + return HSAKMT_STATUS_SUCCESS; + } + + rocr::core::WDDMDevice *device; + ret = topology_map_node_id(node_id, device); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + + props->HeapType = HSA_HEAPTYPE_FRAME_BUFFER_PRIVATE; + props->SizeInBytes = device->LocalHeapSize(); + props->Width = device->MemoryBusWidth(); + props->MemoryClockMax = device->MaxMemoryClockMhz(); + + return ret; +} + +/* topology_destroy_temp_cpu_cache_list - + * Free the memory allocated in topology_create_temp_cpu_cache_list(). + */ +static void +topology_destroy_temp_cpu_cache_list(cpu_cacheinfo_t *temp_cpu_ci_list) { + uint32_t n; + cpu_cacheinfo_t *p_temp_cpu_ci_list = temp_cpu_ci_list; + cpu_cacheinfo_t *cpu_ci = p_temp_cpu_ci_list; + + if (p_temp_cpu_ci_list) { + for (n = 0; n < p_temp_cpu_ci_list->len; n++, cpu_ci++) + free(cpu_ci->cache_prop); + free(p_temp_cpu_ci_list); + } + + p_temp_cpu_ci_list = NULL; +} + +/* topology_create_temp_cpu_cache_list - Create a temporary cpu-cache list to + * store cpu cache information. This list will be used to copy + * HsaCacheProperties in the CPU node. Two buffers are allocated + * inside this function: cpu_ci list and cache_prop under each + * cpu_ci. Must call topology_destroy_temp_cpu_cache_list to free + * the memory after the information is copied. + * @node [IN] CPU node number + * @cpuinfo [IN] /proc/cpuinfo data + * @temp_cpu_ci_list [OUT] cpu-cache-info list with data filled + * Return: total number of caches under this CPU node + */ +static int +topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, + cpu_cacheinfo_t **temp_cpu_ci_list) { + /* Get max path size from /sys/devices/system/node/node%d/%s/cache + * below, which will max out according to the largest filename, + * which can be present twice in the string above. 29 is for the prefix + * and the +6 is for the cache suffix + */ +#ifndef MAXNAMLEN +/* MAXNAMLEN is the BSD name for NAME_MAX. glibc aliases this as NAME_MAX, but + * not musl */ +#define MAXNAMLEN NAME_MAX +#endif + constexpr uint32_t MAXPATHSIZE = 29 + MAXNAMLEN + (MAXNAMLEN + 6); + cpu_cacheinfo_t *p_temp_cpu_ci_list; /* a list of cpu_ci */ + char path[MAXPATHSIZE], node_dir[MAXPATHSIZE]; + int max_cpus; + cpu_cacheinfo_t *this_cpu; /* one cpu_ci in cpu_ci_list */ + int cache_cnt = 0; + DIR *dirp = NULL; + struct dirent *dir; + char *p; + + if (!temp_cpu_ci_list) { + pr_err("Invalid temp_cpu_ci_list\n"); + return cache_cnt; + } + *temp_cpu_ci_list = NULL; + + /* Get info from /sys/devices/system/node/nodeX/cpuY/cache */ + int node_real = node; + if (processor_vendor == IBM_POWER) { + if (!strcmp(cpuinfo[0].model_name, "POWER9")) { + node_real = node * 8; + } + } + snprintf(node_dir, MAXPATHSIZE, "/sys/devices/system/node/node%d", node_real); + /* Other than cpuY folders, this dir also has cpulist and cpumap */ + max_cpus = num_subdirs(node_dir, "cpu"); + if (max_cpus <= 0) { + /* If CONFIG_NUMA is not enabled in the kernel, + * /sys/devices/system/node doesn't exist. + */ + if (node) { /* CPU node must be 0 or something is wrong */ + pr_err("Fail to get cpu* dirs under %s.", node_dir); + goto exit; + } + /* Fall back to use /sys/devices/system/cpu */ + snprintf(node_dir, MAXPATHSIZE, "/sys/devices/system/cpu"); + max_cpus = num_subdirs(node_dir, "cpu"); + if (max_cpus <= 0) { + pr_err("Fail to get cpu* dirs under %s\n", node_dir); + goto exit; + } + } + + p_temp_cpu_ci_list = + (cpu_cacheinfo_t *)calloc(max_cpus, sizeof(cpu_cacheinfo_t)); + if (!p_temp_cpu_ci_list) { + pr_err("Fail to allocate p_temp_cpu_ci_list\n"); + goto exit; + } + p_temp_cpu_ci_list->len = 0; + + this_cpu = p_temp_cpu_ci_list; + dirp = opendir(node_dir); + while ((dir = readdir(dirp)) != 0) { + if (strncmp(dir->d_name, "cpu", 3)) + continue; + if (!isdigit(dir->d_name[3])) /* ignore files like cpulist */ + continue; + snprintf(path, MAXPATHSIZE, "%s/%s/cache", node_dir, dir->d_name); + this_cpu->num_caches = num_subdirs(path, "index"); + this_cpu->cache_prop = (HsaCacheProperties *)calloc( + this_cpu->num_caches, sizeof(HsaCacheProperties)); + if (!this_cpu->cache_prop) { + pr_err("Fail to allocate cache_info\n"); + goto exit; + } + p = &dir->d_name[3]; + this_cpu->proc_num = atoi(p); + cache_cnt += get_cpu_cache_info(path, cpuinfo, this_cpu); + ++p_temp_cpu_ci_list->len; + ++this_cpu; + } + *temp_cpu_ci_list = p_temp_cpu_ci_list; + +exit: + if (dirp) + closedir(dirp); + return cache_cnt; +} + +/* topology_get_cpu_cache_props - Read CPU cache information from sysfs + * @node [IN] CPU node number + * @cpuinfo [IN] /proc/cpuinfo data + * @tbl [OUT] the node table to fill up + * Return: HSAKMT_STATUS_SUCCESS in success or error number in failure + */ +static HSAKMT_STATUS topology_get_cpu_cache_props(int node, + struct proc_cpuinfo *cpuinfo, + node_props_t *tbl) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + cpu_cacheinfo_t *cpu_ci_list = NULL; + uint32_t n, cache_cnt, i; + cpu_cacheinfo_t *cpu_ci; + HsaCacheProperties *this_cache; + + tbl->node.NumCaches = + topology_create_temp_cpu_cache_list(node, cpuinfo, &cpu_ci_list); + if (!tbl->node.NumCaches) { + /* For "Intel Meteor lake Mobile", the cache info is not in sysfs, + * That means /sys/devices/system/node/node%d/%s/cache is not exist. + * here AMD will not black this issue. + */ + pr_debug("CPU cache info is not available for node %d \n", node); + goto exit; + } + + tbl->cache = (HsaCacheProperties *)calloc(tbl->node.NumCaches, + sizeof(HsaCacheProperties)); + if (!tbl->cache) { + ret = HSAKMT_STATUS_NO_MEMORY; + goto exit; + } + + /* Now fill in the information to cache properties. */ + cache_cnt = 0; + cpu_ci = cpu_ci_list; + for (n = 0; n < cpu_ci_list->len; n++, cpu_ci++) { + this_cache = cpu_ci->cache_prop; + for (i = 0; i < cpu_ci->num_caches; i++, this_cache++) { + memcpy(&tbl->cache[cache_cnt++], this_cache, sizeof(HsaCacheProperties)); + if (cache_cnt >= tbl->node.NumCaches) + goto exit; + } + } + +exit: + topology_destroy_temp_cpu_cache_list(cpu_ci_list); + + return ret; +} + +/* For a give Node @node_id the function gets @iolink_id information i.e. parses + * sysfs the following sysfs entry + * ./nodes/@node_id/io_links/@iolink_id/properties. @node_id has to be valid + * accessible node. + * + * If node_to specified by the @iolink_id is not accessible the function returns + * HSAKMT_STATUS_NOT_SUPPORTED. If node_to is accessible, then node_to is mapped + * from sysfs_node to user_node and returns HSAKMT_STATUS_SUCCESS. + */ +static HSAKMT_STATUS topology_sysfs_get_iolink_props(uint32_t node_id, + uint32_t iolink_id, + HsaIoLinkProperties *props, + bool p2pLink) { + rocr::core::WDDMDevice *device; + topology_map_node_id(node_id, device); + + std::memset(props, 0, sizeof(*props)); + props->IoLinkType = HSA_IOLINKTYPE_PCIEXPRESS; + props->VersionMajor = props->VersionMinor = 0; + props->NodeFrom = node_id; + props->NodeTo = 0; + props->Weight = 20; + props->Flags.ui32.Override = 1; + props->Flags.ui32.NonCoherent = 1; + props->Flags.ui32.NoAtomics32bit = !(device->SupportPlatformAtomic()); + props->Flags.ui32.NoAtomics64bit = !(device->SupportPlatformAtomic()); + + return HSAKMT_STATUS_SUCCESS; +} + +/* topology_get_free_io_link_slot_for_node - For the given node_id, find the + * next available free slot to add an io_link + */ +static HsaIoLinkProperties * +topology_get_free_io_link_slot_for_node(uint32_t node_id, + const HsaSystemProperties *sys_props, + node_props_t *node_props) { + HsaIoLinkProperties *props; + + if (node_id >= sys_props->NumNodes) { + pr_err("Invalid node [%d]\n", node_id); + return NULL; + } + + props = node_props[node_id].link; + if (!props) { + pr_err("No io_link reported for Node [%d]\n", node_id); + return NULL; + } + + if (node_props[node_id].node.NumIOLinks >= sys_props->NumNodes - 1) { + pr_err("No more space for io_link for Node [%d]\n", node_id); + return NULL; + } + + return &props[node_props[node_id].node.NumIOLinks]; +} + +/* topology_add_io_link_for_node - If a free slot is available, + * add io_link for the given Node. + * TODO: Add other members of HsaIoLinkProperties + */ +static HSAKMT_STATUS topology_add_io_link_for_node( + uint32_t node_from, const HsaSystemProperties *sys_props, + node_props_t *node_props, HSA_IOLINKTYPE IoLinkType, uint32_t node_to, + uint32_t Weight) { + HsaIoLinkProperties *props; + + props = + topology_get_free_io_link_slot_for_node(node_from, sys_props, node_props); + if (!props) + return HSAKMT_STATUS_NO_MEMORY; + + props->IoLinkType = IoLinkType; + props->NodeFrom = node_from; + props->NodeTo = node_to; + props->Weight = Weight; + node_props[node_from].node.NumIOLinks++; + + return HSAKMT_STATUS_SUCCESS; +} + +/* Find the CPU that this GPU (gpu_node) directly connects to */ +static int32_t gpu_get_direct_link_cpu(uint32_t gpu_node, + node_props_t *node_props) { + HsaIoLinkProperties *props = node_props[gpu_node].link; + uint32_t i; + + if (!node_props[gpu_node].node.KFDGpuID || !props || + node_props[gpu_node].node.NumIOLinks == 0) + return -1; + + for (i = 0; i < node_props[gpu_node].node.NumIOLinks; i++) + if (props[i].IoLinkType == HSA_IOLINKTYPE_PCIEXPRESS && + props[i].Weight <= 20) /* >20 is GPU->CPU->GPU */ + return props[i].NodeTo; + + return -1; +} + +/* Get node1->node2 IO link information. This should be a direct link that has + * been created in the kernel. + */ +static HSAKMT_STATUS get_direct_iolink_info(uint32_t node1, uint32_t node2, + node_props_t *node_props, + HSAuint32 *weight, + HSA_IOLINKTYPE *type) { + HsaIoLinkProperties *props = node_props[node1].link; + uint32_t i; + + if (!props) + return HSAKMT_STATUS_INVALID_NODE_UNIT; + + for (i = 0; i < node_props[node1].node.NumIOLinks; i++) + if (props[i].NodeTo == node2) { + if (weight) + *weight = props[i].Weight; + if (type) + *type = props[i].IoLinkType; + return HSAKMT_STATUS_SUCCESS; + } + + return HSAKMT_STATUS_INVALID_PARAMETER; +} + +static HSAKMT_STATUS get_indirect_iolink_info(uint32_t node1, uint32_t node2, + node_props_t *node_props, + HSAuint32 *weight, + HSA_IOLINKTYPE *type) { + int32_t dir_cpu1 = -1, dir_cpu2 = -1; + HSAuint32 weight1 = 0, weight2 = 0, weight3 = 0; + HSAKMT_STATUS ret; + uint32_t i; + + *weight = 0; + *type = HSA_IOLINKTYPE_UNDEFINED; + + if (node1 == node2) + return HSAKMT_STATUS_INVALID_PARAMETER; + + /* CPU->CPU is not an indirect link */ + if (!node_props[node1].node.KFDGpuID && !node_props[node2].node.KFDGpuID) + return HSAKMT_STATUS_INVALID_NODE_UNIT; + + if (node_props[node1].node.HiveID && node_props[node2].node.HiveID && + node_props[node1].node.HiveID == node_props[node2].node.HiveID) + return HSAKMT_STATUS_INVALID_PARAMETER; + + if (node_props[node1].node.KFDGpuID) + dir_cpu1 = gpu_get_direct_link_cpu(node1, node_props); + if (node_props[node2].node.KFDGpuID) + dir_cpu2 = gpu_get_direct_link_cpu(node2, node_props); + + if (dir_cpu1 < 0 && dir_cpu2 < 0) + return HSAKMT_STATUS_ERROR; + + /* if the node2(dst) is GPU , it need to be large bar for host access*/ + if (node_props[node2].node.KFDGpuID) { + for (i = 0; i < node_props[node2].node.NumMemoryBanks; ++i) + if (node_props[node2].mem[i].HeapType == HSA_HEAPTYPE_FRAME_BUFFER_PUBLIC) + break; + if (i >= node_props[node2].node.NumMemoryBanks) + return HSAKMT_STATUS_ERROR; + } + /* Possible topology: + * GPU --(weight1) -- CPU -- (weight2) -- GPU + * GPU --(weight1) -- CPU -- (weight2) -- CPU -- (weight3) -- GPU + * GPU --(weight1) -- CPU -- (weight2) -- CPU + * CPU -- (weight2) -- CPU -- (weight3) -- GPU + */ + if (dir_cpu1 >= 0) { /* GPU->CPU ... */ + if (dir_cpu2 >= 0) { + if (dir_cpu1 == dir_cpu2) /* GPU->CPU->GPU*/ { + ret = + get_direct_iolink_info(node1, dir_cpu1, node_props, &weight1, NULL); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + ret = + get_direct_iolink_info(dir_cpu1, node2, node_props, &weight2, type); + } else /* GPU->CPU->CPU->GPU*/ { + ret = + get_direct_iolink_info(node1, dir_cpu1, node_props, &weight1, NULL); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + ret = get_direct_iolink_info(dir_cpu1, dir_cpu2, node_props, &weight2, + type); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + /* On QPI interconnection, GPUs can't access + * each other if they are attached to different + * CPU sockets. CPU<->CPU weight larger than 20 + * means the two CPUs are in different sockets. + */ + if (*type == HSA_IOLINK_TYPE_QPI_1_1 && weight2 > 20) + return HSAKMT_STATUS_NOT_SUPPORTED; + ret = + get_direct_iolink_info(dir_cpu2, node2, node_props, &weight3, NULL); + } + } else /* GPU->CPU->CPU */ { + ret = get_direct_iolink_info(node1, dir_cpu1, node_props, &weight1, NULL); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + ret = get_direct_iolink_info(dir_cpu1, node2, node_props, &weight2, type); + } + } else { /* CPU->CPU->GPU */ + ret = get_direct_iolink_info(node1, dir_cpu2, node_props, &weight2, type); + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + ret = get_direct_iolink_info(dir_cpu2, node2, node_props, &weight3, NULL); + } + + if (ret != HSAKMT_STATUS_SUCCESS) + return ret; + + *weight = weight1 + weight2 + weight3; + return HSAKMT_STATUS_SUCCESS; +} + +static void +topology_create_indirect_gpu_links(const HsaSystemProperties *sys_props, + node_props_t *node_props) { + + uint32_t i, j; + HSAuint32 weight; + HSA_IOLINKTYPE type; + + for (i = 0; i < sys_props->NumNodes - 1; i++) { + for (j = i + 1; j < sys_props->NumNodes; j++) { + get_indirect_iolink_info(i, j, node_props, &weight, &type); + if (!weight) + goto try_alt_dir; + if (topology_add_io_link_for_node(i, sys_props, node_props, type, j, + weight) != HSAKMT_STATUS_SUCCESS) + pr_err("Fail to add IO link %d->%d\n", i, j); + try_alt_dir: + get_indirect_iolink_info(j, i, node_props, &weight, &type); + if (!weight) + continue; + if (topology_add_io_link_for_node(j, sys_props, node_props, type, i, + weight) != HSAKMT_STATUS_SUCCESS) + pr_err("Fail to add IO link %d->%d\n", j, i); + } + } +} + +HSAKMT_STATUS topology_take_snapshot(void) { + uint32_t i, mem_id, cache_id; + HsaSystemProperties sys_props; + node_props_t *temp_props = 0; + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + struct proc_cpuinfo *cpuinfo; + const uint32_t num_procs = sysconf(_SC_NPROCESSORS_ONLN); + uint32_t num_ioLinks; + bool p2p_links = false; + uint32_t num_p2pLinks = 0; + + cpuinfo = (proc_cpuinfo *)calloc(num_procs, sizeof(struct proc_cpuinfo)); + if (!cpuinfo) { + pr_err("Fail to allocate memory for CPU info\n"); + return HSAKMT_STATUS_NO_MEMORY; + } + topology_parse_cpuinfo(cpuinfo, num_procs); + + ret = topology_sysfs_get_system_props(&sys_props); + if (ret != HSAKMT_STATUS_SUCCESS) + goto err; + if (sys_props.NumNodes > 0) { + temp_props = + (node_props_t *)calloc(sys_props.NumNodes * sizeof(node_props_t), 1); + if (!temp_props) { + ret = HSAKMT_STATUS_NO_MEMORY; + goto err; + } + for (i = 0; i < sys_props.NumNodes; i++) { + rocr::core::WDDMDevice *device_; + topology_map_node_id(i, device_); + + ret = topology_sysfs_get_node_props(i, &temp_props[i].node, &p2p_links, + &num_p2pLinks); + if (ret != HSAKMT_STATUS_SUCCESS) { + free_properties(temp_props, i); + goto err; + } + + if (temp_props[i].node.NumCPUCores) + topology_get_cpu_model_name(&temp_props[i].node, cpuinfo, num_procs); + + if (temp_props[i].node.NumMemoryBanks) { + temp_props[i].mem = (HsaMemoryProperties *)calloc( + temp_props[i].node.NumMemoryBanks * sizeof(HsaMemoryProperties), 1); + if (!temp_props[i].mem) { + ret = HSAKMT_STATUS_NO_MEMORY; + free_properties(temp_props, i + 1); + goto err; + } + for (mem_id = 0; mem_id < temp_props[i].node.NumMemoryBanks; mem_id++) { + ret = topology_sysfs_get_mem_props(i, mem_id, + &temp_props[i].mem[mem_id]); + if (ret != HSAKMT_STATUS_SUCCESS) { + free_properties(temp_props, i + 1); + goto err; + } + } + } + + if (temp_props[i].node.NumCaches) { + temp_props[i].cache = (HsaCacheProperties *)calloc( + temp_props[i].node.NumCaches * sizeof(HsaCacheProperties), 1); + if (!temp_props[i].cache) { + ret = HSAKMT_STATUS_NO_MEMORY; + free_properties(temp_props, i + 1); + goto err; + } + for (int j = 0; j < 3; j++) { + temp_props[i].cache[j].CacheType.ui32.Data = 1; + temp_props[i].cache[j].CacheType.ui32.HSACU = 1; + temp_props[i].cache[j].CacheLevel = j + 1; + } + temp_props[i].cache[0].CacheSize = device_->GetL1CacheSize() / 1024; + temp_props[i].cache[1].CacheSize = device_->GetL2CacheSize() / 1024; + temp_props[i].cache[2].CacheSize = device_->GetL3CacheSize() / 1024; + } else if (!temp_props[i].node.KFDGpuID) { /* a CPU node */ + ret = topology_get_cpu_cache_props(i, cpuinfo, &temp_props[i]); + if (ret != HSAKMT_STATUS_SUCCESS) { + free_properties(temp_props, i + 1); + goto err; + } + } + + /* To simplify, allocate maximum needed memory for io_links for each node. + * This removes the need for realloc when indirect and QPI links are added + * later + */ + temp_props[i].link = (HsaIoLinkProperties *)calloc( + sys_props.NumNodes - 1, sizeof(HsaIoLinkProperties)); + if (!temp_props[i].link) { + ret = HSAKMT_STATUS_NO_MEMORY; + free_properties(temp_props, i + 1); + goto err; + } + num_ioLinks = temp_props[i].node.NumIOLinks - num_p2pLinks; + uint32_t link_id = 0; + + if (num_ioLinks) { + uint32_t sys_link_id = 0; + + /* Parse all the sysfs specified io links. Skip the ones where the + * remote node (node_to) is not accessible + */ + while (sys_link_id < num_ioLinks && link_id < sys_props.NumNodes - 1) { + ret = topology_sysfs_get_iolink_props( + i, sys_link_id++, &temp_props[i].link[link_id], false); + if (ret == HSAKMT_STATUS_NOT_SUPPORTED) { + ret = HSAKMT_STATUS_SUCCESS; + continue; + } else if (ret != HSAKMT_STATUS_SUCCESS) { + free_properties(temp_props, i + 1); + goto err; + } + link_id++; + } + /* sysfs specifies all the io links. Limit the number to valid ones */ + temp_props[i].node.NumIOLinks = link_id; + } + + if (num_p2pLinks) { + uint32_t sys_link_id = 0; + + /* Parse all the sysfs specified p2p links. + */ + while (sys_link_id < num_p2pLinks && link_id < sys_props.NumNodes - 1) { + ret = topology_sysfs_get_iolink_props( + i, sys_link_id++, &temp_props[i].link[link_id], true); + if (ret == HSAKMT_STATUS_NOT_SUPPORTED) { + ret = HSAKMT_STATUS_SUCCESS; + continue; + } else if (ret != HSAKMT_STATUS_SUCCESS) { + free_properties(temp_props, i + 1); + goto err; + } + link_id++; + } + temp_props[i].node.NumIOLinks = link_id; + } + } + } + + if (!p2p_links) { + /* All direct IO links are created in the kernel. Here we need to + * connect GPU<->GPU or GPU<->CPU indirect IO links. + */ + topology_create_indirect_gpu_links(&sys_props, temp_props); + } + + if (!g_system) { + g_system = (HsaSystemProperties *)malloc(sizeof(HsaSystemProperties)); + if (!g_system) { + free_properties(temp_props, sys_props.NumNodes); + ret = HSAKMT_STATUS_NO_MEMORY; + goto err; + } + } + + *g_system = sys_props; + if (g_props) + free(g_props); + g_props = temp_props; +err: + free(cpuinfo); + return ret; +} + +/* Drop the Snashot of the HSA topology information. Assume lock is held. */ +void topology_drop_snapshot(void) { + if (!!g_system != !!g_props) + pr_warn("Probably inconsistency?\n"); + + if (g_props) { + /* Remove state */ + free_properties(g_props, g_system->NumNodes); + g_props = NULL; + } + + free(g_system); + g_system = NULL; + + for (auto device : wdevices_) + delete device; + wdevices_.clear(); +} + +HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id) { + if (!g_props || !g_system || g_system->NumNodes <= nodeid) + return HSAKMT_STATUS_INVALID_NODE_UNIT; + if (gpu_id) + *gpu_id = g_props[nodeid].node.KFDGpuID; + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS gpuid_to_nodeid(uint32_t gpu_id, uint32_t *node_id) { + uint64_t node_idx; + + for (node_idx = 0; node_idx < g_system->NumNodes; node_idx++) { + if (g_props[node_idx].node.KFDGpuID == gpu_id) { + *node_id = node_idx; + return HSAKMT_STATUS_SUCCESS; + } + } + + return HSAKMT_STATUS_INVALID_NODE_UNIT; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtAcquireSystemProperties(HsaSystemProperties *SystemProperties) { + HSAKMT_STATUS err = HSAKMT_STATUS_SUCCESS; + + CHECK_DXG_OPEN(); + + if (!SystemProperties) + return HSAKMT_STATUS_INVALID_PARAMETER; + + pthread_mutex_lock(&hsakmt_mutex); + + /* We already have a valid snapshot. Avoid double initialization that + * would leak memory. + */ + if (g_system) { + *SystemProperties = *g_system; + goto out; + } + + err = topology_take_snapshot(); + if (err != HSAKMT_STATUS_SUCCESS) + goto out; + + assert(g_system); + + // err = fmm_init_process_apertures(g_system->NumNodes); + // TODO: Determine if it is a dGPU + is_dgpu = true; + if (err != HSAKMT_STATUS_SUCCESS) + goto init_process_apertures_failed; + + // err = init_process_doorbells(g_system->NumNodes); + if (err != HSAKMT_STATUS_SUCCESS) + goto init_doorbells_failed; + + *SystemProperties = *g_system; + + goto out; + +init_doorbells_failed: + // fmm_destroy_process_apertures(); +init_process_apertures_failed: + topology_drop_snapshot(); + +out: + pthread_mutex_unlock(&hsakmt_mutex); + return err; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtReleaseSystemProperties(void) { + pthread_mutex_lock(&hsakmt_mutex); + + topology_drop_snapshot(); + + pthread_mutex_unlock(&hsakmt_mutex); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS topology_get_node_props(HSAuint32 NodeId, + HsaNodeProperties *NodeProperties) { + if (!g_system || !g_props || NodeId >= g_system->NumNodes) + return HSAKMT_STATUS_ERROR; + + *NodeProperties = g_props[NodeId].node; + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtGetNodeProperties(HSAuint32 NodeId, HsaNodeProperties *NodeProperties) { + HSAKMT_STATUS err; + uint32_t gpu_id; + + if (!NodeProperties) + return HSAKMT_STATUS_INVALID_PARAMETER; + + CHECK_DXG_OPEN(); + pthread_mutex_lock(&hsakmt_mutex); + + err = validate_nodeid(NodeId, &gpu_id); + if (err != HSAKMT_STATUS_SUCCESS) + goto out; + + err = topology_get_node_props(NodeId, NodeProperties); + if (err != HSAKMT_STATUS_SUCCESS) + goto out; + /* For CPU only node don't add any additional GPU memory banks. */ + if (gpu_id) { + uint64_t base, limit; + if (!(NodeProperties->Integrated)) + NodeProperties->NumMemoryBanks += NUM_OF_DGPU_HEAPS; + else + NodeProperties->NumMemoryBanks += NUM_OF_IGPU_HEAPS; + // TODO: for apu + /*if (fmm_get_aperture_base_and_limit(FMM_MMIO, gpu_id, &base, + &limit) == HSAKMT_STATUS_SUCCESS) + NodeProperties->NumMemoryBanks += 1;*/ + } + +out: + pthread_mutex_unlock(&hsakmt_mutex); + return err; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, + HsaMemoryProperties *MemoryProperties) { + HSAKMT_STATUS err = HSAKMT_STATUS_SUCCESS; + uint32_t i; + + if (!MemoryProperties) + return HSAKMT_STATUS_INVALID_PARAMETER; + + CHECK_DXG_OPEN(); + pthread_mutex_lock(&hsakmt_mutex); + + memset(MemoryProperties, 0, NumBanks * sizeof(HsaMemoryProperties)); + for (i = 0; i < MIN(g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { + assert(g_props[NodeId].mem); + MemoryProperties[i] = g_props[NodeId].mem[i]; + } + + /* The following memory banks does not apply to CPU only node */ + rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + if (device_ == nullptr) + goto out; + + /*Add LDS*/ + if (i < NumBanks) { + MemoryProperties[i].HeapType = HSA_HEAPTYPE_GPU_LDS; + MemoryProperties[i].VirtualBaseAddress = device_->SharedApertureBase(); + MemoryProperties[i].SizeInBytes = g_props[NodeId].node.LDSSizeInKB * 1024; + i++; + } + + /* Add SCRATCH */ + if (i < NumBanks) { + MemoryProperties[i].HeapType = HSA_HEAPTYPE_GPU_SCRATCH; + MemoryProperties[i].VirtualBaseAddress = device_->PrivateApertureBase(); + MemoryProperties[i].SizeInBytes = device_->PrivateApertureSize(); + i++; + } + +out: + pthread_mutex_unlock(&hsakmt_mutex); + return err; +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( + HSAuint32 NodeId, HSAuint32 ProcessorId, HSAuint32 NumCaches, + HsaCacheProperties *CacheProperties) { + HSAKMT_STATUS err; + uint32_t i; + + if (!CacheProperties) + return HSAKMT_STATUS_INVALID_PARAMETER; + + CHECK_DXG_OPEN(); + pthread_mutex_lock(&hsakmt_mutex); + + /* KFD ADD page 18, snapshot protocol violation */ + if (!g_system || NodeId >= g_system->NumNodes) { + err = HSAKMT_STATUS_INVALID_NODE_UNIT; + goto out; + } + + if (NumCaches > g_props[NodeId].node.NumCaches) { + err = HSAKMT_STATUS_INVALID_PARAMETER; + goto out; + } + + for (i = 0; i < MIN(g_props[NodeId].node.NumCaches, NumCaches); i++) { + assert(g_props[NodeId].cache); + CacheProperties[i] = g_props[NodeId].cache[i]; + } + + err = HSAKMT_STATUS_SUCCESS; + +out: + pthread_mutex_unlock(&hsakmt_mutex); + return err; +} + +HSAKMT_STATUS topology_get_iolink_props(HSAuint32 NodeId, HSAuint32 NumIoLinks, + HsaIoLinkProperties *IoLinkProperties) { + if (!g_system || !g_props || NodeId >= g_system->NumNodes) + return HSAKMT_STATUS_ERROR; + + memcpy(IoLinkProperties, g_props[NodeId].link, + NumIoLinks * sizeof(*IoLinkProperties)); + + return HSAKMT_STATUS_SUCCESS; +} + +HSAKMT_STATUS HSAKMTAPI +hsaKmtGetNodeIoLinkProperties(HSAuint32 NodeId, HSAuint32 NumIoLinks, + HsaIoLinkProperties *IoLinkProperties) { + HSAKMT_STATUS err; + + if (!IoLinkProperties) + return HSAKMT_STATUS_INVALID_PARAMETER; + + CHECK_DXG_OPEN(); + + pthread_mutex_lock(&hsakmt_mutex); + + /* KFD ADD page 18, snapshot protocol violation */ + if (!g_system || NodeId >= g_system->NumNodes) { + err = HSAKMT_STATUS_INVALID_NODE_UNIT; + goto out; + } + + if (NumIoLinks > g_props[NodeId].node.NumIOLinks) { + err = HSAKMT_STATUS_INVALID_PARAMETER; + goto out; + } + + assert(g_props[NodeId].link); + err = topology_get_iolink_props(NodeId, NumIoLinks, IoLinkProperties); + +out: + pthread_mutex_unlock(&hsakmt_mutex); + return err; +} + +uint16_t get_device_id_by_node_id(HSAuint32 node_id) { + if (!g_props || !g_system || g_system->NumNodes <= node_id) + return 0; + + return g_props[node_id].node.DeviceId; +} + +bool prefer_ats(HSAuint32 node_id) { + return g_props[node_id].node.Capability.ui32.HSAMMUPresent && + g_props[node_id].node.NumCPUCores && + g_props[node_id].node.NumFComputeCores; +} + +uint16_t get_device_id_by_gpu_id(HSAuint32 gpu_id) { + unsigned int i; + + if (!g_props || !g_system) + return 0; + + for (i = 0; i < g_system->NumNodes; i++) { + if (g_props[i].node.KFDGpuID == gpu_id) + return g_props[i].node.DeviceId; + } + + return 0; +} + +uint32_t get_direct_link_cpu(uint32_t gpu_node) { + HSAuint64 size = 0; + int32_t cpu_id; + HSAuint32 i; + + cpu_id = gpu_get_direct_link_cpu(gpu_node, g_props); + if (cpu_id == -1) + return INVALID_NODEID; + + assert(g_props[cpu_id].mem); + + for (i = 0; i < g_props[cpu_id].node.NumMemoryBanks; i++) + size += g_props[cpu_id].mem[i].SizeInBytes; + + return size ? (uint32_t)cpu_id : INVALID_NODEID; +} + +HSAKMT_STATUS validate_nodeid_array(uint32_t **gpu_id_array, + uint32_t NumberOfNodes, + uint32_t *NodeArray) { + HSAKMT_STATUS ret; + unsigned int i; + + if (NumberOfNodes == 0 || !NodeArray || !gpu_id_array) + return HSAKMT_STATUS_INVALID_PARAMETER; + + /* Translate Node IDs to gpu_ids */ + *gpu_id_array = (uint32_t *)malloc(NumberOfNodes * sizeof(uint32_t)); + if (!(*gpu_id_array)) + return HSAKMT_STATUS_NO_MEMORY; + for (i = 0; i < NumberOfNodes; i++) { + ret = validate_nodeid(NodeArray[i], *gpu_id_array + i); + if (ret != HSAKMT_STATUS_SUCCESS) { + free(*gpu_id_array); + break; + } + } + + return ret; +} + +uint32_t get_num_sysfs_nodes(void) { return num_sysfs_nodes; } + +rocr::core::WDDMDevice *get_wddmdev(uint32_t node_id) { + if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) + return nullptr; + + return wdevices_[node_id - 1]; +} diff --git a/util/atomic_helpers.h b/util/atomic_helpers.h new file mode 100644 index 0000000000..89cef6a638 --- /dev/null +++ b/util/atomic_helpers.h @@ -0,0 +1,519 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +/* + Helpers to use native types with C++11 atomic operations. + Fixes GCC builtin functionality for x86 with respect to WC and non-temporal + stores. +*/ +#ifndef HSA_RUNTIME_CORE_UTIL_ATOMIC_HELPERS_H_ +#define HSA_RUNTIME_CORE_UTIL_ATOMIC_HELPERS_H_ + +#include +#include "utils.h" + +//ALWAYS_CONSERVATIVE will very likely overfence your code. +//For use as a debugging aid only. +#define ALWAYS_CONSERVATIVE 0 + +#if !ALWAYS_CONSERVATIVE +#if defined(__x86_64__) || defined(_M_X64) +#define X64_ORDER_WC 1 +#endif +#if X64_ORDER_WC +#include +#endif +#endif + +namespace rocr { +namespace atomic { + +static constexpr int c11ToBuiltInFlags(std::memory_order order) +{ +#if ALWAYS_CONSERVATIVE + return __ATOMIC_RELAXED; +#elif X64_ORDER_WC + return __ATOMIC_RELAXED; +#else + return (order == std::memory_order_relaxed) ? __ATOMIC_RELAXED : + (order == std::memory_order_acquire) ? __ATOMIC_ACQUIRE : + (order == std::memory_order_release) ? __ATOMIC_RELEASE : + (order == std::memory_order_seq_cst) ? __ATOMIC_SEQ_CST : + (order == std::memory_order_consume) ? __ATOMIC_CONSUME : + (order == std::memory_order_acq_rel) ? __ATOMIC_ACQ_REL : + __ATOMIC_SEQ_CST; +#endif +} + +static __forceinline void PreFence(std::memory_order order) { +#if ALWAYS_CONSERVATIVE + switch (order) { + case std::memory_order_release: + case std::memory_order_seq_cst: + case std::memory_order_acq_rel: + __atomic_thread_fence(__ATOMIC_SEQ_CST); + default:; + } +#elif X64_ORDER_WC + switch (order) { + case std::memory_order_release: + case std::memory_order_seq_cst: + case std::memory_order_acq_rel: + _mm_sfence(); + default:; + } +#endif +} + +static __forceinline void PostFence(std::memory_order order) { +#if ALWAYS_CONSERVATIVE + switch (order) { + case std::memory_order_seq_cst: + case std::memory_order_acq_rel: + case std::memory_order_acquire: + __atomic_thread_fence(__ATOMIC_SEQ_CST); + default:; + } +#elif X64_ORDER_WC + switch (order) { + case std::memory_order_seq_cst: + return _mm_mfence(); + case std::memory_order_acq_rel: + case std::memory_order_acquire: + return _mm_lfence(); + default:; + } +#endif +} + +static __forceinline void Fence(std::memory_order order=std::memory_order_seq_cst) { +#if ALWAYS_CONSERVATIVE + __atomic_thread_fence(__ATOMIC_SEQ_CST); +#elif X64_ORDER_WC + switch (order) { + case std::memory_order_seq_cst: + case std::memory_order_acq_rel: + return _mm_mfence(); + case std::memory_order_acquire: + return _mm_lfence(); + case std::memory_order_release: + return _mm_sfence(); + default:; + } +#else + std::atomic_thread_fence(order); +#endif +} + +template +static __forceinline void BasicCheck(const T* ptr) { + constexpr bool value = __atomic_always_lock_free(sizeof(T), 0); + static_assert(value, "Atomic type may not be compatible with peripheral atomics."); +}; + +template +static __forceinline void BasicCheck(const volatile T* ptr) { + constexpr bool value = __atomic_always_lock_free(sizeof(T), 0); + static_assert(value, "Atomic type may not be compatible with peripheral atomics."); +}; + +/// @brief: Load value of type T atomically with specified memory order. +/// @param: ptr(Input), a pointer to type T. +/// @param: order(Input), memory order with atomic load, relaxed by default. +/// @return: T, loaded value. +template +static __forceinline T + Load(const T* ptr, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + T ret; + PreFence(order); + __atomic_load(ptr, &ret, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: function overloading, for more info, see previous one. +/// @param: ptr(Input), a pointer to volatile type T. +/// @param: order(Input), memory order with atomic load, relaxed by default. +/// @return: T, loaded value. +template +static __forceinline T + Load(const volatile T* ptr, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + T ret; + PreFence(order); + __atomic_load(ptr, &ret, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Store value of type T with specified memory order. +/// @param: ptr(Input), a pointer to instance which will be stored. +/// @param: val(Input), value to be stored. +/// @param: order(Input), memory order with atomic store, relaxed by default. +/// @return: void. +template +static __forceinline void Store( + T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + __atomic_store(ptr, &val, c11ToBuiltInFlags(order)); + PostFence(order); +} + +/// @brief: Function overloading, for more info, see previous one. +/// @param: ptr(Input), a pointer to volatile instance which will be stored. +/// @param: val(Input), value to be stored. +/// @param: order(Input), memory order with atomic store, relaxed by default. +/// @return: void. +template +static __forceinline void Store( + volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + __atomic_store(ptr, &val, c11ToBuiltInFlags(order)); + PostFence(order); +} + +/// @brief: Compare and swap value atomically with specified memory order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value to be stored if condition is satisfied. +/// @param: expected(Input), value which is expected. +/// @param: order(Input), memory order with atomic operation. +/// @return: T, observed value of type T. +template +static __forceinline T + Cas(T* ptr, T val, T expected, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + __atomic_compare_exchange(ptr, &expected, &val, false, c11ToBuiltInFlags(order), __ATOMIC_RELAXED); + PostFence(order); + return expected; +} + +/// @brief: Function overloading, for more info, see previous one. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value to be stored if condition is satisfied. +/// @param: expected(Input), value which is expected. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, observed value of type T. +template +static __forceinline T + Cas(volatile T* ptr, T val, T expected, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + __atomic_compare_exchange(ptr, &expected, &val, false, c11ToBuiltInFlags(order), __ATOMIC_RELAXED); + PostFence(order); + return expected; +} + +/// @brief: Exchange the value atomically with specified memory order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value to be stored. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, the value prior to the exchange. +template +static __forceinline T + Exchange(T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + T ret; + PreFence(order); + __atomic_exchange(ptr, &val, &ret, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Function overloading, for more info, see previous one. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value to be stored. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, the value prior to the exchange. +template +static __forceinline T + Exchange(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + T ret; + PreFence(order); + __atomic_exchange(ptr, &val, &ret, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Add value to variable atomically with specified memory order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value to be added. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, the value of the variable prior to the addition. +template +static __forceinline T + Add(T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_add(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Subtract value from the variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value to be subtraced. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of the variable prior to the subtraction. +template +static __forceinline T + Sub(T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_sub(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit And operation on variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value which is ANDed with variable. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + And(T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_and(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit Or operation on variable atomically with specified memory order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value which is ORed with variable. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + Or(T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_or(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit Xor operation on variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: val(Input), value which is XORed with variable. +/// @order: order(Input), memory order which is relaxed by default. +/// @return: T, valud of variable prior to the opertaion. +template +static __forceinline T + Xor(T* ptr, T val, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_xor(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Increase the value of variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + Increment(T* ptr, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_add(ptr, 1, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Decrease the value of the variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to variable which is operated on. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + Decrement(T* ptr, std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_sub(ptr, 1, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Add value to variable atomically with specified memory order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value to be added. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, the value of the variable prior to the addition. +template +static __forceinline T + Add(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_add(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Subtract value from the variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value to be subtraced. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of the variable prior to the subtraction. +template +static __forceinline T + Sub(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_sub(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit And operation on variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value which is ANDed with variable. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + And(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_and(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit Or operation on variable atomically with specified memory order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value which is ORed with variable. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T Or(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_or(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Bit Xor operation on variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: val(Input), value which is XORed with variable. +/// @order: order(Input), memory order which is relaxed by default. +/// @return: T, valud of variable prior to the opertaion. +template +static __forceinline T + Xor(volatile T* ptr, T val, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_xor(ptr, val, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Increase the value of variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + Increment(volatile T* ptr, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_add(ptr, 1, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} + +/// @brief: Decrease the value of the variable atomically with specified memory +/// order. +/// @param: ptr(Input), a pointer to volatile variable which is operated on. +/// @param: order(Input), memory order which is relaxed by default. +/// @return: T, value of variable prior to the operation. +template +static __forceinline T + Decrement(volatile T* ptr, + std::memory_order order = std::memory_order_relaxed) { + BasicCheck(ptr); + PreFence(order); + T ret = __atomic_fetch_sub(ptr, 1, c11ToBuiltInFlags(order)); + PostFence(order); + return ret; +} +} // namespace atomic +} // namespace rocr + +#ifdef X64_ORDER_WC +#undef X64_ORDER_WC +#endif + +#ifdef ALWAYS_CONSERVATIVE +#undef ALWAYS_CONSERVATIVE +#endif + +#endif // HSA_RUNTIME_CORE_UTIL_ATOMIC_HELPERS_H_ diff --git a/util/flag.cpp b/util/flag.cpp new file mode 100644 index 0000000000..c0ac8bd970 --- /dev/null +++ b/util/flag.cpp @@ -0,0 +1,226 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2021-2024, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESd OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#include "core/util/flag.h" +#include "core/util/utils.h" +#include "core/util/os.h" + +#include +#include +#include +#include +#include + +namespace rocr { +FILE* log_file = stderr; +uint8_t log_flags[8]; + +void log_printf(const char* file, int line, const char* format, ...) { + va_list ap; + std::stringstream str_thrd_id; + str_thrd_id << std::hex << std::this_thread::get_id(); + va_start(ap, format); + char message[4096]; + vsnprintf(message, sizeof(message), format, ap); + va_end(ap); + fprintf(log_file, ":%-25s:%-4d: %010lld us: [pid:%-5d tid:0x%s] [***rocr***] %s\n", + file, line, os::ReadAccurateClock()/1000ULL, os::GetProcessId(), + str_thrd_id.str().c_str(), message); + fflush(log_file); +} + +// split at separators +static std::vector split(std::string& str, char sep) { + std::vector ret; + while (!str.empty()) { + size_t pos = str.find(sep); + if (pos == std::string::npos) { + ret.push_back(str); + return ret; + } + ret.push_back(str.substr(0, pos)); + str.erase(0, pos + 1); + } + return ret; +}; + +// Parse id,id-id,... strings into id lists +static std::vector get_elements(std::string& str, uint32_t maxElement) { + std::vector ret; + MAKE_NAMED_SCOPE_GUARD(error, [&]() { ret.clear(); }); + + std::vector ranges = split(str, ','); + for (auto& str : ranges) { + auto range = split(str, '-'); + // failure, too many -'s. + if (range.size() > 2) return ret; + + char* end; + uint32_t index = strtoul(range[0].c_str(), &end, 10); + // Invalid syntax - id's must be base 10 digits only. + if (*end != '\0') return ret; + if (index <= maxElement) ret.push_back(index); + + if (range.size() == 2) { + uint32_t secondindex = strtoul(range[1].c_str(), &end, 10); + if (*end != '\0') return ret; // bad syntax + if (secondindex < index) return ret; // inverted range + secondindex = Min(secondindex, maxElement); + for (uint32_t i = index + 1; i < secondindex + 1; i++) ret.push_back(i); + } + } + + // Confirm no duplicate ids. + std::sort(ret.begin(), ret.end()); + if (std::adjacent_find(ret.begin(), ret.end()) != ret.end()) return ret; + + // Good parse, keep result. + error.Dismiss(); + return ret; +}; + +/* +Parse env var per the following syntax, all whitespace is ignored: + +ID = [0-9][0-9]* ex. base 10 numbers +ID_list = (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 +GPU_list = ID_list ex. 0,2-4,7 +CU_list = 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 +CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F +HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F + +GPU indexes are taken post ROCR_VISIBLE_DEVICES reordering. +Listed or bit set CUs will be enabled at queue creation on the associated GPU. +All other CUs on the associated GPUs will be disabled. +CU masks of unlisted GPUs are not restricted. + +Repeating a GPU or CU ID is a syntax error. +Parsing stops at the first CU_Set that has a syntax error, that set and all +following sets are ignored. +Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error. +Users should use ROCR_VISIBLE_DEVICES if they want to exclude use of a +particular GPU. +*/ +void Flag::parse_masks(std::string& var, uint32_t maxGpu, uint32_t maxCU) { + if (var.empty()) return; + + // Remove whitespace + auto end = std::remove_if(var.begin(), var.end(), + [](char c) { return std::isspace(c, std::locale::classic()); }); + var.erase(end, var.end()); + + // Switch to uppercase + for (auto& c : var) c = toupper(c); + + // Iterate over cu sets + auto sets = split(var, ';'); + for (auto& set : sets) { + auto parts = split(set, ':'); + if (parts.size() != 2) return; + + // temp storage for cu_set parsing. + std::vector gpu_index; + std::vector mask; + + // parse cu list first, check for bitmask format + if (parts[1][1] == 'X') { + // Confirm hex format and strip prefix + auto& cu = parts[1]; + if (cu[0] != '0') return; + cu.erase(0, 2); + + // Ensure all valid hex characters + for (auto& c : cu) { + if (!isxdigit(c)) return; + } + + // Convert to uint32_t, lsb first. + size_t len = cu.length(); + while (len != 0) { + size_t trim = Min(len, size_t(8)); + len -= trim; + auto tmp = cu.substr(len, trim); + auto chunk = stoul(tmp, nullptr, 16); + mask.push_back(chunk); + } + + // Trim dwords beyond maxCUs + uint32_t maxDwords = maxCU / 32 + 1; + if (maxDwords < mask.size()) mask.resize(maxDwords); + + // Trim leading zeros + while (!mask.empty() && mask.back() == 0) mask.pop_back(); + + // Mask 0x0 is an error. + if (mask.empty()) return; + + } else { + // parse cu lists + auto cu_indices = get_elements(parts[1], maxCU); + if (cu_indices.empty()) return; + uint32_t maxdword = cu_indices.back() / 32 + 1; + mask.resize(maxdword, 0); + for (auto id : cu_indices) { + uint32_t index, offset; + index = id / 32; + offset = id % 32; + mask[index] |= 1ul << offset; + } + } + + // parse device list + gpu_index = get_elements(parts[0], maxGpu); + if (gpu_index.empty()) return; + + // Ensure that no GPU was repeated across cu_sets + for (auto id : gpu_index) { + if (cu_mask_.find(id) != cu_mask_.end()) return; + } + + // Insert into map + for (auto id : gpu_index) { + cu_mask_[id] = mask; + } + } +} + +} // namespace rocr diff --git a/util/flag.h b/util/flag.h new file mode 100644 index 0000000000..46dcf89cae --- /dev/null +++ b/util/flag.h @@ -0,0 +1,360 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2021, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESd OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef HSA_RUNTIME_CORE_INC_FLAG_H_ +#define HSA_RUNTIME_CORE_INC_FLAG_H_ + +#include + +#include +#include +#include + +#include "core/util/os.h" +#include "core/util/utils.h" + +namespace rocr { + +class Flag { + public: + enum SDMA_OVERRIDE { SDMA_DISABLE, SDMA_ENABLE, SDMA_DEFAULT }; + enum SRAMECC_ENABLE { SRAMECC_DISABLED, SRAMECC_ENABLED, SRAMECC_DEFAULT }; + + // The values are meaningful and chosen to satisfy the thunk API. + enum XNACK_REQUEST { XNACK_DISABLE = 0, XNACK_ENABLE = 1, XNACK_UNCHANGED = 2 }; + static_assert(XNACK_DISABLE == 0, "XNACK_REQUEST enum values improperly changed."); + static_assert(XNACK_ENABLE == 1, "XNACK_REQUEST enum values improperly changed."); + + // Lift limit for 2.10 release RCCL workaround. + const size_t DEFAULT_SCRATCH_SINGLE_LIMIT = 146800640; // small_limit >> 2; + + explicit Flag() { Refresh(); } + + virtual ~Flag() {} + + void Refresh() { + std::string var = os::GetEnvVar("HSA_CHECK_FLAT_SCRATCH"); + check_flat_scratch_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_ENABLE_VM_FAULT_MESSAGE"); + enable_vm_fault_message_ = (var == "0") ? false : true; + + var = os::GetEnvVar("HSA_ENABLE_QUEUE_FAULT_MESSAGE"); + enable_queue_fault_message_ = (var == "0") ? false : true; + + var = os::GetEnvVar("HSA_ENABLE_INTERRUPT"); + enable_interrupt_ = (var == "0") ? false : true; + + var = os::GetEnvVar("HSA_ENABLE_SDMA"); + enable_sdma_ = (var == "0") ? SDMA_DISABLE : ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); + + var = os::GetEnvVar("HSA_ENABLE_PEER_SDMA"); + enable_peer_sdma_ = (var == "0") ? SDMA_DISABLE : ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); + + var = os::GetEnvVar("HSA_ENABLE_SDMA_GANG"); + enable_sdma_gang_ = (var == "0") ? SDMA_DISABLE : + ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); + + var = os::GetEnvVar("HSA_ENABLE_SDMA_COPY_SIZE_OVERRIDE"); + enable_sdma_copy_size_override_ = (var == "0") ? SDMA_DISABLE : + ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); + + visible_gpus_ = os::GetEnvVar("ROCR_VISIBLE_DEVICES"); + filter_visible_gpus_ = os::IsEnvVarSet("ROCR_VISIBLE_DEVICES"); + + var = os::GetEnvVar("HSA_RUNNING_UNDER_VALGRIND"); + running_valgrind_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_SDMA_WAIT_IDLE"); + sdma_wait_idle_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_MAX_QUEUES"); + max_queues_ = static_cast(atoi(var.c_str())); + + // Maximum amount of scratch mem that can be used per process per gpu + var = os::GetEnvVar("HSA_SCRATCH_MEM"); + scratch_mem_size_ = atoi(var.c_str()); + + // Scratch memory sizes > HSA_SCRATCH_SINGLE_LIMIT will trigger a use-once scheme + // We also reserve HSA_SCRATCH_SINGLE_LIMIT per process per gpu to guarrantee we + // have sufficient memory to for scratch in case user tried to allocate all device + // memory + if (os::IsEnvVarSet("HSA_SCRATCH_SINGLE_LIMIT")) { + var = os::GetEnvVar("HSA_SCRATCH_SINGLE_LIMIT"); + scratch_single_limit_ = atoi(var.c_str()); + } else { + scratch_single_limit_ = DEFAULT_SCRATCH_SINGLE_LIMIT; + } + + tools_lib_names_ = os::GetEnvVar("HSA_TOOLS_LIB"); + + var = os::GetEnvVar("HSA_TOOLS_REPORT_LOAD_FAILURE"); + + ifdebug { + report_tool_load_failures_ = (var == "1") ? true : false; + } else { + report_tool_load_failures_ = (var == "0") ? false : true; + } + + var = os::GetEnvVar("HSA_DISABLE_FRAGMENT_ALLOCATOR"); + disable_fragment_alloc_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_ENABLE_SDMA_HDP_FLUSH"); + enable_sdma_hdp_flush_ = (var == "0") ? false : true; + + var = os::GetEnvVar("HSA_REV_COPY_DIR"); + rev_copy_dir_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_FORCE_FINE_GRAIN_PCIE"); + fine_grain_pcie_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_NO_SCRATCH_RECLAIM"); + no_scratch_reclaim_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_NO_SCRATCH_THREAD_LIMITER"); + no_scratch_thread_limit_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_DISABLE_IMAGE"); + disable_image_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_DISABLE_PC_SAMPLING"); + disable_pc_sampling_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_LOADER_ENABLE_MMAP_URI"); + loader_enable_mmap_uri_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_FORCE_SDMA_SIZE"); + force_sdma_size_ = var.empty() ? 1024 * 1024 : atoi(var.c_str()); + + var = os::GetEnvVar("HSA_IGNORE_SRAMECC_MISREPORT"); + check_sramecc_validity_ = (var == "1") ? false : true; + + // Legal values are zero "0" or one "1". Any other value will + // be interpreted as not defining the env variable. + var = os::GetEnvVar("HSA_XNACK"); + xnack_ = (var == "0") ? XNACK_DISABLE : ((var == "1") ? XNACK_ENABLE : XNACK_UNCHANGED); + + var = os::GetEnvVar("HSA_ENABLE_DEBUG"); + debug_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_CU_MASK_SKIP_INIT"); + cu_mask_skip_init_ = (var == "1") ? true : false; + + // Temporary opt-in for corrected HSA_AMD_AGENT_INFO_COOPERATIVE_COMPUTE_UNIT_COUNT behavior. + // Will become opt-out and possibly removed in future releases. + var = os::GetEnvVar("HSA_COOP_CU_COUNT"); + coop_cu_count_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_DISCOVER_COPY_AGENTS"); + discover_copy_agents_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_SVM_PROFILE"); + svm_profile_ = var; + + var = os::GetEnvVar("HSA_ENABLE_SRAMECC"); + sramecc_enable_ = + (var == "0") ? SRAMECC_DISABLED : ((var == "1") ? SRAMECC_ENABLED : SRAMECC_DEFAULT); + + var = os::GetEnvVar("HSA_IMAGE_PRINT_SRD"); + image_print_srd_ = (var == "1") ? true : false; + + var = os::GetEnvVar("HSA_ENABLE_MWAITX"); + enable_mwaitx_ = (var == "1") ? true : false; + + // Temporary environment variable to disable CPU affinity override + // Will either rename to HSA_OVERRIDE_CPU_AFFINITY later or remove completely. + var = os::GetEnvVar("HSA_OVERRIDE_CPU_AFFINITY_DEBUG"); + override_cpu_affinity_ = (var == "0") ? false : true; + } + + void parse_masks(uint32_t maxGpu, uint32_t maxCU) { + std::string var = os::GetEnvVar("HSA_CU_MASK"); + parse_masks(var, maxGpu, maxCU); + } + + bool check_flat_scratch() const { return check_flat_scratch_; } + + bool enable_vm_fault_message() const { return enable_vm_fault_message_; } + + bool enable_queue_fault_message() const { return enable_queue_fault_message_; } + + bool enable_interrupt() const { return enable_interrupt_; } + + bool enable_sdma_hdp_flush() const { return enable_sdma_hdp_flush_; } + + bool running_valgrind() const { return running_valgrind_; } + + bool sdma_wait_idle() const { return sdma_wait_idle_; } + + bool report_tool_load_failures() const { return report_tool_load_failures_; } + + bool disable_fragment_alloc() const { return disable_fragment_alloc_; } + + bool rev_copy_dir() const { return rev_copy_dir_; } + + bool fine_grain_pcie() const { return fine_grain_pcie_; } + + bool no_scratch_reclaim() const { return no_scratch_reclaim_; } + + bool no_scratch_thread_limiter() const { return no_scratch_thread_limit_; } + + SDMA_OVERRIDE enable_sdma() const { return enable_sdma_; } + + SDMA_OVERRIDE enable_peer_sdma() const { return enable_peer_sdma_; } + + SDMA_OVERRIDE enable_sdma_gang() const { return enable_sdma_gang_; } + + SDMA_OVERRIDE enable_sdma_copy_size_override() const { return enable_sdma_copy_size_override_; } + + std::string visible_gpus() const { return visible_gpus_; } + + bool filter_visible_gpus() const { return filter_visible_gpus_; } + + uint32_t max_queues() const { return max_queues_; } + + size_t scratch_mem_size() const { return scratch_mem_size_; } + + size_t scratch_single_limit() const { return scratch_single_limit_; } + + std::string tools_lib_names() const { return tools_lib_names_; } + + bool disable_image() const { return disable_image_; } + + bool disable_pc_sampling() const { return disable_pc_sampling_; } + + bool loader_enable_mmap_uri() const { return loader_enable_mmap_uri_; } + + size_t force_sdma_size() const { return force_sdma_size_; } + + bool check_sramecc_validity() const { return check_sramecc_validity_; } + + bool override_cpu_affinity() const { return override_cpu_affinity_; } + + bool image_print_srd() const { return image_print_srd_; } + + bool check_mwaitx(bool mwaitx_supported) { + if (enable_mwaitx_ && !mwaitx_supported) enable_mwaitx_ = false; + + return enable_mwaitx_; + } + + XNACK_REQUEST xnack() const { return xnack_; } + + bool debug() const { return debug_; } + + const std::vector& cu_mask(uint32_t gpu_index) const { + static const std::vector empty; + auto it = cu_mask_.find(gpu_index); + if (it == cu_mask_.end()) return empty; + return it->second; + } + + bool cu_mask_skip_init() const { return cu_mask_skip_init_; } + + bool coop_cu_count() const { return coop_cu_count_; } + + bool discover_copy_agents() const { return discover_copy_agents_; } + + const std::string& svm_profile() const { return svm_profile_; } + + SRAMECC_ENABLE sramecc_enable() const { return sramecc_enable_; } + + private: + bool check_flat_scratch_; + bool enable_vm_fault_message_; + bool enable_interrupt_; + bool enable_sdma_hdp_flush_; + bool running_valgrind_; + bool sdma_wait_idle_; + bool enable_queue_fault_message_; + bool report_tool_load_failures_; + bool disable_fragment_alloc_; + bool rev_copy_dir_; + bool fine_grain_pcie_; + bool no_scratch_reclaim_; + bool no_scratch_thread_limit_; + bool disable_image_; + bool disable_pc_sampling_; + bool loader_enable_mmap_uri_; + bool check_sramecc_validity_; + bool debug_; + bool cu_mask_skip_init_; + bool coop_cu_count_; + bool discover_copy_agents_; + bool override_cpu_affinity_; + bool image_print_srd_; + bool enable_mwaitx_; + + SDMA_OVERRIDE enable_sdma_; + SDMA_OVERRIDE enable_peer_sdma_; + SDMA_OVERRIDE enable_sdma_gang_; + SDMA_OVERRIDE enable_sdma_copy_size_override_; + + bool filter_visible_gpus_; + std::string visible_gpus_; + + uint32_t max_queues_; + + size_t scratch_mem_size_; + size_t scratch_single_limit_; + + std::string tools_lib_names_; + std::string svm_profile_; + + size_t force_sdma_size_; + + // Indicates user preference for Xnack state. + XNACK_REQUEST xnack_; + + SRAMECC_ENABLE sramecc_enable_; + + // Map GPU index post RVD to its default cu mask. + std::map> cu_mask_; + + void parse_masks(std::string& args, uint32_t maxGpu, uint32_t maxCU); + + DISALLOW_COPY_AND_ASSIGN(Flag); +}; + +} // namespace rocr + +#endif // header guard diff --git a/util/lazy_ptr.h b/util/lazy_ptr.h new file mode 100644 index 0000000000..2aef6a3bf3 --- /dev/null +++ b/util/lazy_ptr.h @@ -0,0 +1,155 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESd OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef HSA_RUNTIME_CORE_UTIL_LAZY_PTR_H_ +#define HSA_RUNTIME_CORE_UTIL_LAZY_PTR_H_ + +#include +#include +#include + +#include "core/util/locks.h" +#include "core/util/utils.h" + +namespace rocr { + +/* + * Wrapper for a std::unique_ptr that initializes its object at first use. + */ +template class lazy_ptr { + public: + lazy_ptr() {} + + explicit lazy_ptr(std::function Constructor) { reset(Constructor); } + + lazy_ptr(lazy_ptr&& rhs) { + obj = std::move(rhs.obj); + func = std::move(rhs.func); + } + + lazy_ptr& operator=(lazy_ptr&& rhs) { + obj = std::move(rhs.obj); + func = std::move(rhs.func); + } + + lazy_ptr(lazy_ptr&) = delete; + lazy_ptr& operator=(lazy_ptr&) = delete; + + void reset(std::function Constructor = nullptr) { + obj.reset(); + func = Constructor; + } + + void reset(T* ptr) { + obj.reset(ptr); + func = nullptr; + } + + bool operator==(T* rhs) const { return obj.get() == rhs; } + bool operator!=(T* rhs) const { return obj.get() != rhs; } + + const std::unique_ptr& operator->() const { + make(true); + assert(obj != nullptr && "Null dereference through lazy_ptr."); + return obj; + } + + std::unique_ptr& operator*() { + make(true); + return obj; + } + + const std::unique_ptr& operator*() const { + make(true); + return obj; + } + + /* + * Ensures that the object is created or is being created. + * This is useful when early construction of the object is required. + */ + void touch() const { make(false); } + + // Tells if the lazy object has been constructed or not. + // Construction may fail silently (return nullptr). + bool created() const { + std::atomic_thread_fence(std::memory_order_acquire); + return func == nullptr; + } + + // Tells if the lazy object exists or not. + bool empty() const { + std::atomic_thread_fence(std::memory_order_acquire); + return obj == nullptr; + } + + private: + mutable std::unique_ptr obj; + mutable std::function func; + mutable KernelMutex lock; + + // Separated from make to improve inlining. + void make_body(bool block) const { + if (block) { + lock.Acquire(); + } else if (!lock.Try()) { + return; + } + MAKE_SCOPE_GUARD([&]() { lock.Release(); }); + if (func == nullptr) return; + T* ptr = func(); + obj.reset(ptr); + std::atomic_thread_fence(std::memory_order_release); + func = nullptr; + } + + __forceinline void make(bool block) const { + if (!created()) { + make_body(block); + } + } + +}; + +} // namespace rocr + +#endif // HSA_RUNTIME_CORE_UTIL_LAZY_PTR_H_ diff --git a/util/lnx/os_linux.cpp b/util/lnx/os_linux.cpp new file mode 100644 index 0000000000..aecca6c0fd --- /dev/null +++ b/util/lnx/os_linux.cpp @@ -0,0 +1,771 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2024, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifdef __linux__ +#include "core/util/os.h" +#include "core/util/utils.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "core/inc/runtime.h" +#if defined(__i386__) || defined(__x86_64__) +#include +#endif + +namespace rocr { +namespace os { + +struct ThreadArgs { + void* entry_args; + ThreadEntry entry_function; +}; + +void* __stdcall ThreadTrampoline(void* arg) { + ThreadArgs* ar = (ThreadArgs*)arg; + ThreadEntry CallMe = ar->entry_function; + void* Data = ar->entry_args; + delete ar; + CallMe(Data); + return nullptr; +} + +// Thread container allows multiple waits and separate close (destroy). +class os_thread { + public: + explicit os_thread(ThreadEntry function, void* threadArgument, uint stackSize) + : thread(0), lock(nullptr), state(RUNNING) { + int err; + std::unique_ptr args(new ThreadArgs); + lock = CreateMutex(); + if (lock == nullptr) return; + + args->entry_args = threadArgument; + args->entry_function = function; + + pthread_attr_t attrib; + err = pthread_attr_init(&attrib); + if (err != 0) { + fprintf(stderr, "pthread_attr_init failed: %s\n", strerror(err)); + return; + } + + if (stackSize != 0) { + stackSize = Max(uint(PTHREAD_STACK_MIN), stackSize); + stackSize = AlignUp(stackSize, 4096); + err = pthread_attr_setstacksize(&attrib, stackSize); + if (err != 0) { + fprintf(stderr, "pthread_attr_setstacksize failed: %s\n", strerror(err)); + err = pthread_attr_destroy(&attrib); + if (err != 0) { + fprintf(stderr, "pthread_attr_destroy failed: %s\n", strerror(err)); + return; + } + } + } + + int cores = 0; + cpu_set_t* cpuset = nullptr; + + if (core::Runtime::runtime_singleton_->flag().override_cpu_affinity()) { + cores = get_nprocs_conf(); + cpuset = CPU_ALLOC(cores); + if (cpuset == nullptr) { + fprintf(stderr, "CPU_ALLOC failed: %s\n", strerror(errno)); + return; + } + CPU_ZERO_S(CPU_ALLOC_SIZE(cores), cpuset); + for (int i = 0; i < cores; i++) { + CPU_SET_S(i, CPU_ALLOC_SIZE(cores), cpuset); + } + err = pthread_attr_setaffinity_np(&attrib, CPU_ALLOC_SIZE(cores), cpuset); + CPU_FREE(cpuset); + if (err != 0) { + fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err)); + return; + } + } + + err = pthread_create(&thread, &attrib, ThreadTrampoline, args.get()); + + // Probably a stack size error since system limits can be different from PTHREAD_STACK_MIN + // Attempt to grow the stack within reason. + if ((err == EINVAL) && stackSize != 0) { + while (stackSize < 20 * 1024 * 1024) { + stackSize *= 2; + err = pthread_attr_setstacksize(&attrib, stackSize); + if (err != 0) { + fprintf(stderr, "pthread_attr_setstacksize failed: %s\n", strerror(err)); + return; + } + err = pthread_create(&thread, &attrib, ThreadTrampoline, args.get()); + if (err != EINVAL) break; + debug_print("pthread_create returned EINVAL, doubling stack size\n"); + } + } + + if (err == 0) + args.release(); + else + thread = 0; + + err = pthread_attr_destroy(&attrib); + if (err != 0) { + fprintf(stderr, "pthread_attr_destroy failed: %s\n", strerror(err)); + } + } + + os_thread(os_thread&& rhs) { + thread = rhs.thread; + lock = rhs.lock; + state = int(rhs.state); + rhs.thread = 0; + rhs.lock = nullptr; + } + + os_thread(os_thread&) = delete; + + ~os_thread() { + if (lock != nullptr) DestroyMutex(lock); + if ((state == RUNNING) && (thread != 0)) { + int err = pthread_detach(thread); + if (err != 0) fprintf(stderr, "pthread_detach failed: %s\n", strerror(err)); + } + } + + bool Valid() { return (lock != nullptr) && (thread != 0); } + + bool Wait() { + if (state == FINISHED) return true; + AcquireMutex(lock); + if (state == FINISHED) { + ReleaseMutex(lock); + return true; + } + int err = pthread_join(thread, NULL); + bool success = (err == 0); + if (success) state = FINISHED; + ReleaseMutex(lock); + return success; + } + + private: + pthread_t thread; + Mutex lock; + std::atomic state; + enum { FINISHED = 0, RUNNING = 1 }; +}; + +static_assert(sizeof(LibHandle) == sizeof(void*), "OS abstraction size mismatch"); +static_assert(sizeof(Semaphore) == sizeof(sem_t*), "OS abstraction size mismatch"); +static_assert(sizeof(Mutex) == sizeof(pthread_mutex_t*), "OS abstraction size mismatch"); +static_assert(sizeof(SharedMutex) == sizeof(pthread_rwlock_t*), "OS abstraction size mismatch"); +static_assert(sizeof(Thread) == sizeof(os_thread*), "OS abstraction size mismatch"); + +LibHandle LoadLib(std::string filename) { + void* ret = dlopen(filename.c_str(), RTLD_LAZY); + if (ret == nullptr) debug_print("LoadLib(%s) failed: %s\n", filename.c_str(), dlerror()); + return *(LibHandle*)&ret; +} + +void* GetExportAddress(LibHandle lib, std::string export_name) { + void* ret = dlsym(*(void**)&lib, export_name.c_str()); + + // dlsym searches the given library and all the library's load dependencies. + // Remaining code limits symbol lookup to only the library handle given. + // This lookup pattern matches Windows. + if (ret == NULL) return ret; + + link_map* map; + int err = dlinfo(*(void**)&lib, RTLD_DI_LINKMAP, &map); + if (err == -1) { + fprintf(stderr, "dlinfo failed: %s\n", dlerror()); + return nullptr; + } + + Dl_info info; + err = dladdr(ret, &info); + if (err == 0) { + fprintf(stderr, "dladdr failed.\n"); + return nullptr; + } + + if (strcmp(info.dli_fname, map->l_name) == 0) return ret; + + return NULL; +} + +void CloseLib(LibHandle lib) { dlclose(*(void**)&lib); } + +/* + * @brief Look for a symbol called "HSA_AMD_TOOL_PRIORITY" across all loaded + * shared libraries, and if found, store the name of the library + * + * @param[in]: info A dl_phdr_info struct pointer, which contains information + * about library's load address, header, and name. + * + * @param[in]: size integer size of dl_phdr_info struct + * + * @param[out]: data copy of the data argument to dl_phdr_iterate call + * + * @retval:: Return 0 on Success. If callback returns a non-zero value, + * dl_iterate_phdr() will stop processing, even if there are unprocessed + * shared objects. + */ + +static int callback(struct dl_phdr_info* info, size_t size, void* data) { + std::vector* loadedToolsLib = (std::vector*)data; + assert(loadedToolsLib != nullptr); + /* + * Check if lib name is not empty and its not a "vdso.so" lib, + * The vDSO is a special shared object file that is built into the Linux kernel. + * It is not a regular shared library and thus does not have all the properties + * of regular shared libraries. The way the vDSO is loaded and organized in memory + * is different from regular shared libraries and it's not guaranteed that it + * will have a specific segment or section. Hence its skipped. + */ + + if ((info) && (info->dlpi_name[0] != '\0')) { + if (std::string(info->dlpi_name).find("vdso.so") != std::string::npos) return 0; + + /* + * Iterate through the program headers of the loaded lib and check for PT_DYNAMIC program + * header. If the PT_DYNAMIC program header is found, use dlpi_addr and dlpi_phdr members + * of dl_phdr_info struct to get the address of the dynamic section of the loaded + * library in memory + */ + + for (int i = 0; i < info->dlpi_phnum; i++) { + if (info->dlpi_phdr[i].p_type == PT_DYNAMIC) { + Elf64_Dyn* dyn_section = (Elf64_Dyn*)(info->dlpi_addr + info->dlpi_phdr[i].p_vaddr); + + char* strings = nullptr; + Elf64_Xword limit = 0; + + /* + * The dynamic section is searched for DT_STRTAB (address of string table), + * and DT_STRSZ (size of string table) + * DT_NULL - Marks the end of the _DYNAMIC array + */ + + for (int j = 0;; j++) { + if (dyn_section[j].d_tag == DT_NULL) break; + + if (dyn_section[j].d_tag == DT_STRTAB) strings = (char*)(dyn_section[j].d_un.d_ptr); + + if (dyn_section[j].d_tag == DT_STRSZ) limit = dyn_section[j].d_un.d_val; + } + + if (strings == nullptr) debug_print("String table not found"); + + /* + * Hacky lookup, if string and symbol tables are found, + * iterate through the strings in string table and check if + * any string matches "HSA_AMD_TOOL_PRIORITY". + * If yes, then add the name of the library to the vector of + * lib names + */ + if (strings != nullptr) { + char* end = strings + limit; + while (strings < end) { + if (strcmp(strings, "HSA_AMD_TOOL_PRIORITY") == 0) { + loadedToolsLib->push_back(info->dlpi_name); + return 0; + } + strings += (strlen(strings) + 1); + } + } + } + } + } + return 0; +} + +std::vector GetLoadedToolsLib() { + std::vector ret; + std::vector names; + + /* Iterate through all of the loaded shared libraries in the process */ + dl_iterate_phdr(callback, &names); + + if (!names.empty()) { + for (auto& name : names) ret.push_back(LoadLib(name)); + } + + return ret; +} + +std::string GetLibraryName(LibHandle lib) { + link_map *map; + if(dlinfo(lib, RTLD_DI_LINKMAP, &map)!=0) + return ""; + return map->l_name; +} + +Semaphore CreateSemaphore() { + sem_t *sem = new sem_t; + sem_init(sem, 0, 0); + return *(Semaphore*)&sem; +} + +bool WaitSemaphore(Semaphore sem) { + while(sem_wait(*(sem_t**)&sem)) + if (errno != EINTR) return false; + + return true; +} + +void PostSemaphore(Semaphore sem) { + if (sem_post(*(sem_t**)&sem)) + assert(false && "Failed to post semaphore"); +} + +void DestroySemaphore(Semaphore sem) { + sem_destroy(*(sem_t**)&sem); + delete *(sem_t**)&sem; +} + +Mutex CreateMutex() { + pthread_mutex_t* mutex = new pthread_mutex_t; + pthread_mutex_init(mutex, NULL); + return *(Mutex*)&mutex; +} + +bool TryAcquireMutex(Mutex lock) { + return pthread_mutex_trylock(*(pthread_mutex_t**)&lock) == 0; +} + +bool AcquireMutex(Mutex lock) { + return pthread_mutex_lock(*(pthread_mutex_t**)&lock) == 0; +} + +void ReleaseMutex(Mutex lock) { + pthread_mutex_unlock(*(pthread_mutex_t**)&lock); +} + +void DestroyMutex(Mutex lock) { + pthread_mutex_destroy(*(pthread_mutex_t**)&lock); + delete *(pthread_mutex_t**)&lock; +} + +void Sleep(int delay_in_millisec) { usleep(delay_in_millisec * 1000); } + +void uSleep(int delayInUs) { usleep(delayInUs); } + +void YieldThread() { sched_yield(); } + +Thread CreateThread(ThreadEntry function, void* threadArgument, uint stackSize) { + os_thread* result = new os_thread(function, threadArgument, stackSize); + if (!result->Valid()) { + delete result; + return nullptr; + } + + return reinterpret_cast(result); +} + +void CloseThread(Thread thread) { delete reinterpret_cast(thread); } + +bool WaitForThread(Thread thread) { return reinterpret_cast(thread)->Wait(); } + +bool WaitForAllThreads(Thread* threads, uint threadCount) { + for (uint i = 0; i < threadCount; i++) WaitForThread(threads[i]); + return true; +} + +bool IsEnvVarSet(std::string env_var_name) { + char* buff = NULL; + buff = getenv(env_var_name.c_str()); + return (buff != NULL); +} + +void SetEnvVar(std::string env_var_name, std::string env_var_value) { + setenv(env_var_name.c_str(), env_var_value.c_str(), 1); +} + +int GetProcessId() { + return ::getpid(); +} + +std::string GetEnvVar(std::string env_var_name) { + char* buff; + buff = getenv(env_var_name.c_str()); + std::string ret; + if (buff) { + ret = buff; + } + return ret; +} + +size_t GetUserModeVirtualMemorySize() { +#ifdef _LP64 + // https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt : + // user space is 0000000000000000 - 00007fffffffffff (=47 bits) + return (size_t)(0x800000000000); +#else + return (size_t)(0xffffffff); // ~4GB +#endif +} + +size_t GetUsablePhysicalHostMemorySize() { + struct sysinfo info = {0}; + if (sysinfo(&info) != 0) { + return 0; + } + + const size_t physical_size = + static_cast(info.totalram * info.mem_unit); + return std::min(GetUserModeVirtualMemorySize(), physical_size); +} + +uintptr_t GetUserModeVirtualMemoryBase() { return (uintptr_t)0; } + +// Os event implementation +typedef struct EventDescriptor_ { + pthread_cond_t event; + pthread_mutex_t mutex; + bool state; + bool auto_reset; +} EventDescriptor; + +EventHandle CreateOsEvent(bool auto_reset, bool init_state) { + EventDescriptor* eventDescrp; + eventDescrp = (EventDescriptor*)malloc(sizeof(EventDescriptor)); + + pthread_mutex_init(&eventDescrp->mutex, NULL); + pthread_cond_init(&eventDescrp->event, NULL); + eventDescrp->auto_reset = auto_reset; + eventDescrp->state = init_state; + + EventHandle handle = reinterpret_cast(eventDescrp); + + return handle; +} + +int DestroyOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + + EventDescriptor* eventDescrp = reinterpret_cast(event); + int ret_code = pthread_cond_destroy(&eventDescrp->event); + ret_code |= pthread_mutex_destroy(&eventDescrp->mutex); + free(eventDescrp); + return ret_code; +} + +int WaitForOsEvent(EventHandle event, unsigned int milli_seconds) { + if (event == NULL) { + return -1; + } + + EventDescriptor* eventDescrp = reinterpret_cast(event); + // Event wait time is 0 and state is non-signaled, return directly + if (milli_seconds == 0) { + int tmp_ret = pthread_mutex_trylock(&eventDescrp->mutex); + if (tmp_ret == EBUSY) { + // Timeout + return 1; + } + } + + int ret_code = 0; + pthread_mutex_lock(&eventDescrp->mutex); + if (!eventDescrp->state) { + if (milli_seconds == 0) { + ret_code = 1; + } else { + struct timespec ts; + struct timeval tp; + + ret_code = gettimeofday(&tp, NULL); + ts.tv_sec = tp.tv_sec; + ts.tv_nsec = tp.tv_usec * 1000; + + unsigned int sec = milli_seconds / 1000; + unsigned int mSec = milli_seconds % 1000; + + ts.tv_sec += sec; + ts.tv_nsec += mSec * 1000000; + + // More then one second, add 1 sec to the tv_sec elem + if (ts.tv_nsec > 1000000000) { + ts.tv_sec += 1; + ts.tv_nsec = ts.tv_nsec - 1000000000; + } + + ret_code = + pthread_cond_timedwait(&eventDescrp->event, &eventDescrp->mutex, &ts); + // Time out + if (ret_code == 110) { + ret_code = 0x14003; // 1 means time out in HSA + } + + if (ret_code == 0 && eventDescrp->auto_reset) { + eventDescrp->state = false; + } + } + } else if (eventDescrp->auto_reset) { + eventDescrp->state = false; + } + pthread_mutex_unlock(&eventDescrp->mutex); + + return ret_code; +} + +int SetOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + + EventDescriptor* eventDescrp = reinterpret_cast(event); + int ret_code = 0; + ret_code = pthread_mutex_lock(&eventDescrp->mutex); + eventDescrp->state = true; + ret_code = pthread_mutex_unlock(&eventDescrp->mutex); + ret_code |= pthread_cond_signal(&eventDescrp->event); + + return ret_code; +} + +int ResetOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + + EventDescriptor* eventDescrp = reinterpret_cast(event); + int ret_code = 0; + ret_code = pthread_mutex_lock(&eventDescrp->mutex); + eventDescrp->state = false; + ret_code = pthread_mutex_unlock(&eventDescrp->mutex); + + return ret_code; +} + +static double invPeriod = 0.0; + +uint64_t ReadAccurateClock() { + if (invPeriod == 0.0) AccurateClockFrequency(); + timespec time; + int err = clock_gettime(CLOCK_MONOTONIC_RAW, &time); + if (err != 0) { + perror("clock_gettime(CLOCK_MONOTONIC_RAW,...) failed"); + abort(); + } + return (uint64_t(time.tv_sec) * 1000000000ull + uint64_t(time.tv_nsec)) * invPeriod; +} + +uint64_t AccurateClockFrequency() { + static clockid_t clock = CLOCK_MONOTONIC; + static std::atomic first(true); + // Check kernel version - not a concurrency concern. + // use non-RAW for getres due to bug in older 2.6.x kernels + if (first.load(std::memory_order_acquire)) { + utsname kernelInfo; + if (uname(&kernelInfo) == 0) { + try { + std::string ver = kernelInfo.release; + size_t idx; + int major = std::stoi(ver, &idx); + int minor = std::stoi(ver.substr(idx + 1)); + if ((major >= 4) && (minor >= 4)) { + clock = CLOCK_MONOTONIC_RAW; + } + } catch (...) { + // Kernel version string doesn't conform to the standard pattern. + // Keep using the "safe" (non-RAW) clock. + } + } + first.store(false, std::memory_order_release); + } + timespec time; + int err = clock_getres(clock, &time); + if (err != 0) { + perror("clock_getres failed"); + abort(); + } + if (time.tv_sec != 0 || time.tv_nsec >= 0xFFFFFFFF) { + fprintf(stderr, + "clock_getres(CLOCK_MONOTONIC(_RAW),...) returned very low " + "frequency (<1Hz).\n"); + abort(); + } + if (invPeriod == 0.0) invPeriod = 1.0 / double(time.tv_nsec); + return 1000000000ull / uint64_t(time.tv_nsec); +} + +SharedMutex CreateSharedMutex() { + pthread_rwlockattr_t attrib; + int err = pthread_rwlockattr_init(&attrib); + if (err != 0) { + fprintf(stderr, "rw lock attribute init failed: %s\n", strerror(err)); + return nullptr; + } + +#ifdef __GLIBC__ + err = pthread_rwlockattr_setkind_np(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); + if (err != 0) { + fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); + return nullptr; + } +#else + err = pthread_rwlockattr_setkind(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); + if (err != 0) { + fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); + return nullptr; + } +#endif + + pthread_rwlock_t* lock = new pthread_rwlock_t; + err = pthread_rwlock_init(lock, &attrib); + if (err != 0) { + fprintf(stderr, "rw lock init failed: %s\n", strerror(err)); + return nullptr; + } + + pthread_rwlockattr_destroy(&attrib); + return lock; +} + +bool TryAcquireSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_trywrlock(*(pthread_rwlock_t**)&lock); + return err == 0; +} + +bool AcquireSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_wrlock(*(pthread_rwlock_t**)&lock); + return err == 0; +} + +void ReleaseSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_unlock(*(pthread_rwlock_t**)&lock); + if (err != 0) { + fprintf(stderr, "SharedMutex unlock failed: %s\n", strerror(err)); + abort(); + } +} + +bool TrySharedAcquireSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_tryrdlock(*(pthread_rwlock_t**)&lock); + return err == 0; +} + +bool SharedAcquireSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_rdlock(*(pthread_rwlock_t**)&lock); + return err == 0; +} + +void SharedReleaseSharedMutex(SharedMutex lock) { + int err = pthread_rwlock_unlock(*(pthread_rwlock_t**)&lock); + if (err != 0) { + fprintf(stderr, "SharedMutex unlock failed: %s\n", strerror(err)); + abort(); + } +} + +void DestroySharedMutex(SharedMutex lock) { + pthread_rwlock_destroy(*(pthread_rwlock_t**)&lock); + delete *(pthread_rwlock_t**)&lock; +} + +static uint64_t sys_clock_period_ = 0; + +uint64_t ReadSystemClock() { + struct timespec ts; + clock_gettime(CLOCK_BOOTTIME, &ts); + uint64_t time = (uint64_t(ts.tv_sec) * 1000000000 + uint64_t(ts.tv_nsec)); + if (sys_clock_period_ != 1) + return time / sys_clock_period_; + else + return time; +} + +uint64_t SystemClockFrequency() { + struct timespec ts; + clock_getres(CLOCK_BOOTTIME, &ts); + sys_clock_period_ = (uint64_t(ts.tv_sec) * 1000000000 + uint64_t(ts.tv_nsec)); + return 1000000000 / sys_clock_period_; +} + +bool ParseCpuID(cpuid_t* cpuinfo) { +#if defined(__i386__) || defined(__x86_64__) + uint32_t eax, ebx, ecx, edx, max_eax = 0; + memset(cpuinfo, 0, sizeof(*cpuinfo)); + + /* Make sure current CPU supports at least EAX 4 */ + if (!__get_cpuid_max(0x80000004, NULL)) return false; + + // Manufacturer ID is a twelve-character ASCII string stored in order EBX, EDX, ECX. + if (!__get_cpuid(0, &max_eax, (uint32_t*)&cpuinfo->ManufacturerID[0], + (uint32_t*)&cpuinfo->ManufacturerID[8], + (uint32_t*)&cpuinfo->ManufacturerID[4])) { + return false; + } + + if (!strcmp(cpuinfo->ManufacturerID, "AuthenticAMD")) { + if (__get_cpuid(0x80000001, &eax, &ebx, &ecx, &edx)) { + cpuinfo->mwaitx = !!((ecx >> 29) & 0x1); + } + } + return true; +#else + return false; +#endif +} + +} // namespace os +} // namespace rocr + +#endif diff --git a/util/locks.h b/util/locks.h new file mode 100644 index 0000000000..6c0de49a07 --- /dev/null +++ b/util/locks.h @@ -0,0 +1,290 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// Library of syncronization primitives - to be added to as needed. + +#ifndef HSA_RUNTIME_CORE_UTIL_LOCKS_H_ +#define HSA_RUNTIME_CORE_UTIL_LOCKS_H_ + +#include "utils.h" +#include "os.h" + +namespace rocr { + +class HybridMutex { + public: + HybridMutex():lock_(0) { + sem_ = os::CreateSemaphore(); + } + + ~HybridMutex() { + os::DestroySemaphore(sem_); + } + + bool Try() { + int old = 0; + return lock_.compare_exchange_strong(old, 1); + } + + bool Acquire() { + int cnt = maxSpinIterPause + maxSpinIterYield; + + int old = 0; + while (!lock_.compare_exchange_strong(old, 1)) { + cnt--; + if (cnt > maxSpinIterPause) { + _mm_pause(); + } else if (cnt-- > maxSpinIterYield) { + os::YieldThread(); + } else { + os::WaitSemaphore(sem_); + cnt = maxSpinIterPause + maxSpinIterYield; + } + old = 0; + } + return true; + } + + void Release() { + int old = 1; + if (lock_.compare_exchange_strong(old, 0)) + os::PostSemaphore(sem_); + } + + private: + std::atomic lock_; + os::Semaphore sem_; + const uint32_t maxSpinIterPause = 55; + const uint32_t maxSpinIterYield = 55; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(HybridMutex); +}; + + +/// @brief: a class represents a kernel mutex. +/// Uses the kernel's scheduler to keep the waiting thread from being scheduled +/// until the lock is released (Best for long waits, though anything using +/// a kernel object is a long wait). +class KernelMutex { + public: + KernelMutex() { lock_ = os::CreateMutex(); } + ~KernelMutex() { os::DestroyMutex(lock_); } + + bool Try() { return os::TryAcquireMutex(lock_); } + bool Acquire() { return os::AcquireMutex(lock_); } + void Release() { os::ReleaseMutex(lock_); } + + private: + os::Mutex lock_; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(KernelMutex); +}; + +/// @brief: represents a spin lock. +/// For very short hold durations on the order of the thread scheduling +/// quanta or less. +class SpinMutex { + public: + SpinMutex() { lock_ = 0; } + + bool Try() { + int old = 0; + return lock_.compare_exchange_strong(old, 1); + } + bool Acquire() { + int old = 0; + while (!lock_.compare_exchange_strong(old, 1)) + { + old=0; + os::YieldThread(); + } + return true; + } + void Release() { lock_ = 0; } + + private: + std::atomic lock_; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(SpinMutex); +}; + +class KernelEvent { + public: + KernelEvent() { evt_ = os::CreateOsEvent(true, true); } + ~KernelEvent() { os::DestroyOsEvent(evt_); } + + bool IsSet() { return os::WaitForOsEvent(evt_, 0)==0; } + bool WaitForSet() { return os::WaitForOsEvent(evt_, 0xFFFFFFFF)==0; } + void Set() { os::SetOsEvent(evt_); } + void Reset() { os::ResetOsEvent(evt_); } + + private: + os::EventHandle evt_; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(KernelEvent); +}; + +/// @brief: represents a yielding shared mutex. +/// aka read/write mutex +class KernelSharedMutex { + public: + /// @brief: Interfaces ScopedAcquire to shared operations. + class Shared { + public: + explicit Shared(KernelSharedMutex* lock) : lock_(lock) {} + bool Try() { return lock_->TryShared(); } + bool Acquire() { return lock_->AcquireShared(); } + void Release() { lock_->ReleaseShared(); } + + private: + KernelSharedMutex* lock_; + }; + + KernelSharedMutex() { lock_ = os::CreateSharedMutex(); } + ~KernelSharedMutex() { os::DestroySharedMutex(lock_); } + + // Exclusive mode operations + bool Try() { return os::TryAcquireSharedMutex(lock_); } + bool Acquire() { return os::AcquireSharedMutex(lock_); } + void Release() { os::ReleaseSharedMutex(lock_); } + + // Shared mode operations + bool TryShared() { return os::TrySharedAcquireSharedMutex(lock_); } + bool AcquireShared() { return os::SharedAcquireSharedMutex(lock_); } + void ReleaseShared() { os::SharedReleaseSharedMutex(lock_); } + + // Return shared operations interface + Shared shared() { return Shared(this); } + + private: + os::SharedMutex lock_; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(KernelSharedMutex); +}; + +/// @brief: Type trait to identify mutex types +template class isMutex { + public: + enum { value = false }; +}; +template <> class isMutex { + public: + enum { value = true }; +}; +template <> class isMutex { + public: + enum { value = true }; +}; +template <> class isMutex { + public: + enum { value = true }; +}; +template <> class isMutex { + public: + enum { value = true }; +}; + +/// @brief: A class behaves as a lock in a scope. When trying to enter into the +/// critical section, creat a object of this class. After the control path goes +/// out of the scope, it will release the lock automatically. +template class ScopedAcquire { + public: + /// @brief: When constructing, acquire the lock. + /// @param: lock(Input), pointer to an existing lock. + explicit ScopedAcquire(LockType* lock) : lock_(lock), doRelease(true) { + static_assert(isMutex::value, "ScopedAcquire requires a mutex type."); + lock_.Acquire(); + } + explicit ScopedAcquire(LockType lock) : lock_(lock), doRelease(true) { + static_assert(!isMutex::value, "Mutex types are not copyable."); + lock_.Acquire(); + } + + /// @brief: when destructing, release the lock. + ~ScopedAcquire() { + if (doRelease) lock_.Release(); + } + + /// @brief: Release the lock early. Avoid using when possible. + void Release() { + lock_.Release(); + doRelease = false; + } + + private: + /// @brief: Adapts between pointers to mutex types and mutex pointer types. + template class container { + public: + container(T* lock) : lock_(lock) {} + __forceinline bool Acquire() { return lock_->Acquire(); } + __forceinline void Release() { return lock_->Release(); } + + private: + T* lock_; + }; + + /// @brief: Specialization for mutex pointer types. + template class container { + public: + container(T lock) : lock_(lock) {} + __forceinline bool Acquire() { return lock_.Acquire(); } + __forceinline void Release() { return lock_.Release(); } + + private: + T lock_; + }; + + container::value> lock_; + bool doRelease; + + /// @brief: Disable copiable and assignable ability. + DISALLOW_COPY_AND_ASSIGN(ScopedAcquire); +}; + +} // namespace rocr + +#endif // HSA_RUNTIME_CORE_SUTIL_LOCKS_H_ diff --git a/util/os.h b/util/os.h new file mode 100644 index 0000000000..2eec51a34e --- /dev/null +++ b/util/os.h @@ -0,0 +1,327 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2024, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// Minimal operating system abstraction interfaces. + +#ifndef HSA_RUNTIME_CORE_UTIL_OS_H_ +#define HSA_RUNTIME_CORE_UTIL_OS_H_ + +#include +#include +#include "utils.h" + +namespace rocr { +namespace os { +typedef void* LibHandle; +typedef void* Semaphore; +typedef void* Mutex; +typedef void* SharedMutex; +typedef void* Thread; +typedef void* EventHandle; + +enum class os_t { OS_WIN = 0, OS_LINUX, COUNT }; +static __forceinline std::underlying_type::type os_index(os_t val) { + return std::underlying_type::type(val); +} + +#ifdef _WIN32 +static const os_t current_os = os_t::OS_WIN; +#elif __linux__ +static const os_t current_os = os_t::OS_LINUX; +#else +static_assert(false, "Operating System not detected!"); +#endif + +/// @brief: Loads dynamic library based on file name. Return value will be NULL +/// if failed. +/// @param: filename(Input), file name of the library. +/// @return: LibHandle. +LibHandle LoadLib(std::string filename); + +/// @brief: Gets the address of exported symbol. Return NULl if failed. +/// @param: lib(Input), library handle which exporting from. +/// @param: export_name(Input), the name of the exported symbol. +/// @return: void*. +void* GetExportAddress(LibHandle lib, std::string export_name); + +/// @brief: Unloads the dynamic library. +/// @param: lib(Input), library handle which will be unloaded. +void CloseLib(LibHandle lib); + +/// @brief: Lists loaded tool libraries that contain +/// symbol HSA_AMD_TOOL_PRIORITY +/// @return: List of library handles +std::vector GetLoadedToolsLib(); + +/// @brief: Returns the library's path name. +/// @param: lib(Input), libray handle +/// @return: Path name of library +std::string GetLibraryName(LibHandle lib); + +/// @brief: Creates a Semaphore, will return NULL if failed. +/// @param: void. +/// @return: Semaphore. +Semaphore CreateSemaphore(); + +/// @brief: Waits for the semaphore. This is a blocking wait. +/// If the Semaphore is signalled, this function will return. +/// @param: sem(Input), handle to the semaphore. +/// @return: void. +bool WaitSemaphore(Semaphore sem); + +/// @brief: Post/Signal/Wake-up the semaphore +/// @param: sem(Input), handle to the semaphore. +/// @return: void. +void PostSemaphore(Semaphore sem); + +/// @brief: Destroys the semaphore. +/// @param: sem(Input), handle to the semaphore. +/// @return: void. +void DestroySemaphore(Semaphore sem); + +/// @brief: Creates a mutex, will return NULL if failed. +/// @param: void. +/// @return: Mutex. +Mutex CreateMutex(); + +/// @brief: Tries to acquire the mutex once, if successed, return true. +/// @param: lock(Input), handle to the mutex. +/// @return: bool. +bool TryAcquireMutex(Mutex lock); + +/// @brief: Aquires the mutex, if the mutex is locked, it will wait until it is +/// released. If the mutex is acquired successfully, it will return true. +/// @param: lock(Input), handle to the mutex. +/// @return: bool. +bool AcquireMutex(Mutex lock); + +/// @brief: Releases the mutex. +/// @param: lock(Input), handle to the mutex. +/// @return: void. +void ReleaseMutex(Mutex lock); + +/// @brief: Destroys the mutex. +/// @param: lock(Input), handle to the mutex. +/// @return: void. +void DestroyMutex(Mutex lock); + +/// @brief: Creates a shared mutex, will return NULL if failed. +/// @param: void. +/// @return: SharedMutex. +SharedMutex CreateSharedMutex(); + +/// @brief: Tries to acquire the mutex in exclusive mode once, if successed, return true. +/// @param: lock(Input), handle to the shared mutex. +/// @return: bool. +bool TryAcquireSharedMutex(SharedMutex lock); + +/// @brief: Aquires the mutex in exclusive mode, if the mutex is locked, it will wait until it is +/// released. If the mutex is acquired successfully, it will return true. +/// @param: lock(Input), handle to the mutex. +/// @return: bool. +bool AcquireSharedMutex(SharedMutex lock); + +/// @brief: Releases the mutex from exclusive mode. +/// @param: lock(Input), handle to the mutex. +/// @return: void. +void ReleaseSharedMutex(SharedMutex lock); + +/// @brief: Tries to acquire the mutex in shared mode once, if successed, return true. +/// @param: lock(Input), handle to the mutex. +/// @return: bool. +bool TrySharedAcquireSharedMutex(SharedMutex lock); + +/// @brief: Aquires the mutex in shared mode, if the mutex in exclusive mode, it will wait until it +/// is released. If the mutex is acquired successfully, it will return true. +/// @param: lock(Input), handle to the mutex. +/// @return: bool. +bool SharedAcquireSharedMutex(SharedMutex lock); + +/// @brief: Releases the mutex from shared mode. +/// @param: lock(Input), handle to the mutex. +/// @return: void. +void SharedReleaseSharedMutex(SharedMutex lock); + +/// @brief: Destroys the mutex. +/// @param: lock(Input), handle to the mutex. +/// @return: void. +void DestroySharedMutex(SharedMutex lock); + +/// @brief: Puts current thread to sleep. +/// @param: delayInMs(Input), time in millisecond for sleeping. +/// @return: void. +void Sleep(int delayInMs); + +/// @brief: Puts current thread to sleep. +/// @param: delayInMs(Input), time in millisecond for sleeping. +/// @return: void. +void uSleep(int delayInUs); + +/// @brief: Yields current thread. +/// @param: void. +/// @return: void. +void YieldThread(); + +typedef void (*ThreadEntry)(void*); + +/// @brief: Creates a thread will return NULL if failed. +/// @param: entry_function(Input), a pointer to the function which the thread +/// starts from. +/// @param: entry_argument(Input), a pointer to the argument of the thread +/// function. +/// @param: stack_size(Input), size of the thread's stack, 0 by default. +/// @return: Thread, a handle to thread created. +Thread CreateThread(ThreadEntry entry_function, void* entry_argument, + uint stack_size = 0); + +/// @brief: Destroys the thread. +/// @param: thread(Input), thread handle to what will be destroyed. +/// @return: void. +void CloseThread(Thread thread); + +/// @brief: Waits for specific thread to finish, if successful, return true. +/// @param: thread(Input), handle to waiting thread. +/// @return: bool. +bool WaitForThread(Thread thread); + +/// @brief: Waits for multiple threads to finish, if successful, return true. +/// @param; threads(Input), a pointer to a list of thread handle. +/// @param: thread_count(Input), number of threads to be waited on. +/// @return: bool. +bool WaitForAllThreads(Thread* threads, uint thread_count); + +/// @brief: Determines if environment key is set. +/// @param: env_var_name(Input), name of the environment value. +/// @return: bool, true for binding any value to environment key, +/// including an empty string. False otherwise +bool IsEnvVarSet(std::string env_var_name); + +/// @brief: Sets the environment value. +/// @param: env_var_name(Input), name of the environment value. +/// @param: env_var_value(Input), value of the environment value.s +/// @return: void. +void SetEnvVar(std::string env_var_name, std::string env_var_value); + +/// @brief: Gets the value of environment value. +/// @param: env_var_name(Input), name of the environment value. +/// @return: std::string, value of the environment value, returned as string. +std::string GetEnvVar(std::string env_var_name); + +/// @brief: Gets the process ID. +/// @param: void +/// @return: int, process ID returned as int. +int GetProcessId(); + +/// @brief: Gets the max virtual memory size accessible to the application. +/// @param: void. +/// @return: size_t, size of the accessible memory to the application. +size_t GetUserModeVirtualMemorySize(); + +/// @brief: Gets the max physical host system memory size. +/// @param: void. +/// @return: size_t, size of the physical host system memory. +size_t GetUsablePhysicalHostMemorySize(); + +/// @brief: Gets the virtual memory base address. It is hardcoded to 0. +/// @param: void. +/// @return: uintptr_t, always 0. +uintptr_t GetUserModeVirtualMemoryBase(); + +/// @brief os event api, create an event +/// @param: auto_reset whether an event can reset the status automatically +/// @param: init_state initial state of the event +/// @return: event handle +EventHandle CreateOsEvent(bool auto_reset, bool init_state); + +/// @brief os event api, destroy an event +/// @param: event handle +/// @return: whether destroy is correct +int DestroyOsEvent(EventHandle event); + +/// @brief os event api, wait on event +/// @param: event Event handle +/// @param: milli_seconds wait time +/// @return: Indicate success or timeout +int WaitForOsEvent(EventHandle event, unsigned int milli_seconds); + +/// @brief os event api, set event state +/// @param: event Event handle +/// @return: Whether event set is correct +int SetOsEvent(EventHandle event); + +/// @brief os event api, reset event state +/// @param: event Event handle +/// @return: Whether event reset is correct +int ResetOsEvent(EventHandle event); + +/// @brief reads a clock which is deemed to be accurate for elapsed time +/// measurements, though not necessarilly fast to query +/// @return clock counter value +uint64_t ReadAccurateClock(); + +/// @brief retrieves the frequency in Hz of the unit used in ReadAccurateClock. +/// It does not necessarilly reflect the resolution of the clock, but is the +/// value needed to convert a difference in the clock's counter value to elapsed +/// seconds. This frequency does not change at runtime. +/// @return returns the frequency +uint64_t AccurateClockFrequency(); + +/// @brief read the system clock which serves as the HSA system clock +/// counter in KFD. +uint64_t ReadSystemClock(); + +/// @brief read the system clock frequency +uint64_t SystemClockFrequency(); + +typedef struct cpuid_s { + char ManufacturerID[13]; // 12 char, NULL terminated + bool mwaitx; +} cpuid_t; + +/// @brief parse CPUID +/// @param: cpuinfo struct to be filled +bool ParseCpuID(cpuid_t* cpuinfo); + +} // namespace os +} // namespace rocr + +#endif // HSA_RUNTIME_CORE_UTIL_OS_H_ diff --git a/util/simple_heap.h b/util/simple_heap.h new file mode 100644 index 0000000000..6c7822bcdb --- /dev/null +++ b/util/simple_heap.h @@ -0,0 +1,363 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// A simple best fit memory allocator with eager compaction. Manages block sub-allocation. +// For use when memory efficiency is more important than allocation speed. +// O(log n) time. + +#ifndef HSA_RUNTME_CORE_UTIL_SIMPLE_HEAP_H_ +#define HSA_RUNTME_CORE_UTIL_SIMPLE_HEAP_H_ + +#include +#include +#include + +#include "core/util/utils.h" + +namespace rocr { + +template class SimpleHeap { + private: + struct Fragment_T { + typedef std::multimap::iterator ptr_t; + ptr_t free_list_entry_; + struct { + size_t size : 62; + bool discard : 1; + bool free : 1; + }; + + Fragment_T(ptr_t Iterator, size_t Len, bool Free) + : free_list_entry_(Iterator), size(Len), discard(false), free(Free) {} + Fragment_T() = default; + }; + + struct Block { + uintptr_t base_ptr_; + size_t length_; + + Block(uintptr_t base, size_t length) : base_ptr_(base), length_(length) {} + Block() = default; + }; + + Allocator block_allocator_; + + std::multimap free_list_; + std::map> block_list_; + std::deque block_cache_; + + // Size of blocks that are at least partially in use. + size_t in_use_size_; + // Total size of block cache + size_t cache_size_; + + __forceinline bool isFree(const Fragment_T& node) { return node.free; } + __forceinline void setUsed(Fragment_T& node) { + node.free = false; + node.free_list_entry_ = free_list_.end(); + } + __forceinline void setFree(Fragment_T& node, typename Fragment_T::ptr_t Iterator) { + node.free_list_entry_ = Iterator; + node.free = true; + } + __forceinline Fragment_T makeFragment(size_t Len) { + return Fragment_T(free_list_.end(), Len, false); + } + __forceinline Fragment_T makeFragment(typename Fragment_T::ptr_t Iterator, size_t Len) { + return Fragment_T(Iterator, Len, true); + } + __forceinline void removeFreeListEntry(Fragment_T& node) { + if (node.free_list_entry_ != free_list_.end()) { + free_list_.erase(node.free_list_entry_); + node.free_list_entry_ = free_list_.end(); + } + } + __forceinline void discard(Fragment_T& node) { + removeFreeListEntry(node); + node.discard = true; + } + + public: + explicit SimpleHeap(const Allocator& BlockAllocator = Allocator()) + : block_allocator_(BlockAllocator), in_use_size_(0), cache_size_(0) {} + ~SimpleHeap() { + trim(); + // Leak here may be due to the user. Check is for debugging only. + // assert(in_use_size_ == 0 && "Leak in SimpleHeap."); + } + + SimpleHeap(const SimpleHeap& rhs) = delete; + SimpleHeap(SimpleHeap&& rhs) = delete; + SimpleHeap& operator=(const SimpleHeap& rhs) = delete; + SimpleHeap& operator=(SimpleHeap&& rhs) = delete; + + void* alloc(size_t bytes) { + // Find best fit. + uintptr_t base; + size_t size; + // For bytes >= 2MB, the requested mem should be aligned + size_t align_bytes = bytes; + const int retry = bytes >= GPU_HUGE_PAGE_SIZE ? 1 : 0; + size_t align = bytes >= GPU_HUGE_PAGE_SIZE ? GPU_HUGE_PAGE_SIZE : DEFAULT_GPU_PAGE_SIZE; + + for (int i = 0; i <= retry; i++) { + auto free_fragment = free_list_.lower_bound(align_bytes); + if (free_fragment == free_list_.end()) break; + + uintptr_t addr = free_fragment->second; + size = free_fragment->first; + + assert(size >= bytes && "SimpleHeap: map lower_bound failure."); + + // Find the containing block and fragment + auto it = block_list_.upper_bound(addr); + it--; + auto& frag_map = it->second; + const auto& fragment = frag_map.find(addr); + + assert(fragment != frag_map.end() && "Inconsistency in SimpleHeap."); + assert(size == fragment->second.size && "Inconsistency in SimpleHeap."); + + size_t delta = addr & (align - 1); + if (!delta) { + // already find aligned address + base = addr; + free_list_.erase(free_fragment); + // Sub-allocate from fragment. + fragment->second.size = bytes; + setUsed(fragment->second); + // Record remaining free space. + if (size > bytes) { + free_fragment = free_list_.insert(std::make_pair(size - bytes, base + bytes)); + frag_map[base + bytes] = makeFragment(free_fragment, size - bytes); + } + } else { + // If this is the first request and the requested size is not enough for alignment, + // then request for a bigger hole and do trim. + if (i == 0 && size < bytes + align - delta) { + align_bytes += align; + continue; + } + + uintptr_t aligned_base = addr + align - delta; + base = aligned_base; + + // Erase the old free list + free_list_.erase(free_fragment); + + // fragment 1 - free + free_fragment = free_list_.insert(std::make_pair(aligned_base - addr, addr)); + frag_map[addr] = makeFragment(free_fragment, aligned_base - addr); + + //fragment 2 - used + frag_map[base] = makeFragment(bytes); + + // fragement 3 - free + if (size > aligned_base - addr + bytes) { + free_fragment = free_list_.insert(std::make_pair(size - (aligned_base - addr) - bytes, aligned_base + bytes)); + frag_map[aligned_base + bytes] = makeFragment(free_fragment, size - (aligned_base - addr) - bytes); + } + } + return reinterpret_cast(base); + } + + // No usable fragment, check block cache + if (bytes < default_block_size() && !block_cache_.empty()) { + const auto& block = block_cache_.back(); + base = block.base_ptr_; + size = block.length_; + block_cache_.pop_back(); + cache_size_ -= size; + } else { // Alloc new block - new block may be larger than default. + void* ptr = block_allocator_.alloc(bytes, size); + base = reinterpret_cast(ptr); + assert(ptr != nullptr && "Block allocation failed, Allocator is expected to throw."); + } + + in_use_size_ += size; + assert(size >= bytes && "Alloc exceeds block size."); + // Sub alloc and insert free region. + if (size > bytes) { + auto free_fragment = free_list_.insert(std::make_pair(size - bytes, base + bytes)); + block_list_[base][base + bytes] = makeFragment(free_fragment, size - bytes); + } + // Track used region + block_list_[base][base] = makeFragment(bytes); + + // Disallow multiple suballocation from large blocks. + // Prevents a small allocation from retaining a large block. + if (bytes > default_block_size()) { + bool err = discardBlock(reinterpret_cast(base)); + assert(err && "Large block discard failed."); + } + + return reinterpret_cast(base); + } + + bool free(void* ptr) { + if (ptr == nullptr) return true; + + uintptr_t base = reinterpret_cast(ptr); + + // Find fragment and validate. + auto frag_map_it = block_list_.upper_bound(base); + if (frag_map_it == block_list_.begin()) return false; + frag_map_it--; + auto& frag_map = frag_map_it->second; + auto fragment = frag_map.find(base); + if (fragment == frag_map.end() || isFree(fragment->second)) return false; + + bool discard = fragment->second.discard; + + // Merge lower + if (fragment != frag_map.begin()) { + auto lower = fragment; + lower--; + if (isFree(lower->second)) { + removeFreeListEntry(lower->second); + lower->second.size += fragment->second.size; + frag_map.erase(fragment); + fragment = lower; + } + } + + // Merge upper + { + auto upper = fragment; + upper++; + if ((upper != frag_map.end()) && isFree(upper->second)) { + removeFreeListEntry(upper->second); + fragment->second.size += upper->second.size; + frag_map.erase(upper); + } + } + + // Release whole free blocks. + if (frag_map.size() == 1) { + Block block(fragment->first, fragment->second.size); + block_list_.erase(frag_map_it); + + // Discard or add to the block cache. + if (discard) { + block_allocator_.free(reinterpret_cast(block.base_ptr_), block.length_); + } else { + block_cache_.push_back(block); + cache_size_ += block.length_; + in_use_size_ -= block.length_; + } + + balance(); + + // Don't publish free space since block was moved to the cache. + return true; + } + + // Don't report free memory if discarding the fragment. + if (discard) return true; + + // Report free fragment + const auto& freeEntry = + free_list_.insert(std::make_pair(size_t(fragment->second.size), fragment->first)); + setFree(fragment->second, freeEntry); + + return true; + } + + void balance() { + // Release old blocks when over cache limit. + while ((block_cache_.size() > 1) && (cache_size_ > in_use_size_ * 2)) { + const auto& block = block_cache_.front(); + block_allocator_.free(reinterpret_cast(block.base_ptr_), block.length_); + cache_size_ -= block.length_; + block_cache_.pop_front(); + } + } + + void trim() { + for (const auto& block : block_cache_) + block_allocator_.free(reinterpret_cast(block.base_ptr_), block.length_); + block_cache_.clear(); + cache_size_ = 0; + } + + size_t cache_size() const { return cache_size_; } + + size_t default_block_size() const { return block_allocator_.block_size(); } + + // Prevent reuse of the block containing ptr. No further fragments will be allocated from the + // block and the block will not be added to the block cache when it is free. + bool discardBlock(void* ptr) { + if (ptr == nullptr) return true; + + uintptr_t base = reinterpret_cast(ptr); + + // Find block validate. + auto frag_map_it = block_list_.upper_bound(base); + if (frag_map_it == block_list_.begin()) return false; + frag_map_it--; + auto& frag_map = frag_map_it->second; + if ((base < frag_map.begin()->first) || + (frag_map.rbegin()->first + frag_map.rbegin()->second.size <= base)) + return false; + + // Is block already discarded? + if (frag_map.begin()->second.discard) return true; + + // Mark all fragments for discard and compute block size. Removes freelist records for all + // fragments in the block. + size_t size = 0; + for (auto& frag : frag_map) { + discard(frag.second); + size += frag.second.size; + } + + // Remove discarded block from in-use tracking and rebalance the block cache. + in_use_size_ -= size; + balance(); + + return true; + } +}; + +} // namespace rocr + +#endif // HSA_RUNTME_CORE_UTIL_SIMPLE_HEAP_H_ diff --git a/util/small_heap.cpp b/util/small_heap.cpp new file mode 100644 index 0000000000..9fe5da5fab --- /dev/null +++ b/util/small_heap.cpp @@ -0,0 +1,185 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#include "small_heap.h" + +namespace rocr { + +// Inserts node into freelist after place. +// Assumes node will not be an end of the list (list has guard nodes). +void SmallHeap::insertafter(SmallHeap::iterator_t place, SmallHeap::iterator_t node) { + assert(place->first < node->first && "Order violation"); + assert(isfree(place->second) && "Freelist operation error."); + iterator_t next = place->second.next; + node->second.next = next; + node->second.prior = place; + place->second.next = node; + next->second.prior = node; +} + +// Removes node from freelist. +// Assumes node will not be an end of the list (list has guard nodes). +void SmallHeap::remove(SmallHeap::iterator_t node) { + assert(isfree(node->second) && "Freelist operation error."); + node->second.prior->second.next = node->second.next; + node->second.next->second.prior = node->second.prior; + setused(node->second); +} + +// Returns high if merge failed or the merged node. +SmallHeap::memory_t::iterator SmallHeap::merge(SmallHeap::memory_t::iterator low, + SmallHeap::memory_t::iterator high) { + assert(isfree(low->second) && "Merge with allocated block"); + assert(isfree(high->second) && "Merge with allocated block"); + + if ((char*)low->first + low->second.len != (char*)high->first) return high; + + assert(!islastfree(high->second) && "Illegal merge."); + + low->second.len += high->second.len; + low->second.next = high->second.next; + high->second.next->second.prior = low; + + memory.erase(high); + return low; +} + +void SmallHeap::free(void* ptr) { + if (ptr == nullptr) return; + + auto iterator = memory.find(ptr); + + // Check for illegal free + if (iterator == memory.end()) { + assert(false && "Illegal free."); + return; + } + + // Return memory to total and link node into free list + total_free += iterator->second.len; + + // Could also traverse the free list which might be faster in some cases. + auto before = iterator; + before--; + while (!isfree(before->second)) before--; + assert(before->second.next->first > iterator->first && "Inconsistency in small heap."); + insertafter(before, iterator); + + // Attempt compaction + iterator = merge(before, iterator); + merge(iterator, iterator->second.next); + + // Update lowHighBondary + high.erase(ptr); +} + +void* SmallHeap::alloc(size_t bytes) { + // Is enough memory available? + if ((bytes > total_free) || (bytes == 0)) return nullptr; + + iterator_t current; + + // Walk the free list and allocate at first fitting location + current = firstfree(); + while (!islastfree(current->second)) { + if (bytes <= current->second.len) { + // Decrement from total + total_free -= bytes; + + // Split node + if (bytes != current->second.len) { + void* remaining = (char*)current->first + bytes; + Node& node = memory[remaining]; + node.len = current->second.len - bytes; + current->second.len = bytes; + insertafter(current, memory.find(remaining)); + } + + remove(current); + return current->first; + } + current = current->second.next; + } + assert(current->second.len == 0 && "Freelist corruption."); + + // Can't service the request due to fragmentation + return nullptr; +} + +void* SmallHeap::alloc_high(size_t bytes) { + // Is enough memory available? + if ((bytes > total_free) || (bytes == 0)) return nullptr; + + iterator_t current; + + // Walk the free list and allocate at first fitting location + current = lastfree(); + while (!isfirstfree(current->second)) { + if (bytes <= current->second.len) { + // Decrement from total + total_free -= bytes; + + void* alloc; + // Split node + if (bytes != current->second.len) { + alloc = (char*)current->first + current->second.len - bytes; + current->second.len -= bytes; + Node& node = memory[alloc]; + node.len = bytes; + setused(node); + } else { + alloc = current->first; + remove(current); + } + + high.insert(alloc); + return alloc; + } + current = current->second.prior; + } + assert(current->second.len == 0 && "Freelist corruption."); + + // Can't service the request due to fragmentation + return nullptr; +} + +} // namespace rocr diff --git a/util/small_heap.h b/util/small_heap.h new file mode 100644 index 0000000000..e1f5d7bdeb --- /dev/null +++ b/util/small_heap.h @@ -0,0 +1,131 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// A simple first fit memory allocator with eager compaction. For use with few +// items (where list iteration is faster than trees). +// Not thread safe! + +#ifndef HSA_RUNTME_CORE_UTIL_SMALL_HEAP_H_ +#define HSA_RUNTME_CORE_UTIL_SMALL_HEAP_H_ + +#include +#include + +#include "utils.h" + +namespace rocr { + +class SmallHeap { + private: + struct Node; + typedef std::map memory_t; + typedef memory_t::iterator iterator_t; + + struct Node { + size_t len; + iterator_t next; + iterator_t prior; + }; + + SmallHeap(const SmallHeap& rhs) = delete; + SmallHeap& operator=(const SmallHeap& rhs) = delete; + + void* const pool; + const size_t length; + + size_t total_free; + memory_t memory; + std::set high; + + __forceinline bool isfree(const Node& node) const { return node.next != memory.begin(); } + __forceinline bool islastfree(const Node& node) const { return node.next == memory.end(); } + __forceinline bool isfirstfree(const Node& node) const { return node.prior == memory.end(); } + __forceinline void setlastfree(Node& node) { node.next = memory.end(); } + __forceinline void setfirstfree(Node& node) { node.prior = memory.end(); } + __forceinline void setused(Node& node) { node.next = memory.begin(); } + + __forceinline iterator_t firstfree() { return memory.begin()->second.next; } + __forceinline iterator_t lastfree() { return memory.rbegin()->second.prior; } + void insertafter(iterator_t place, iterator_t node); + void remove(iterator_t node); + iterator_t merge(iterator_t low, iterator_t high); + + public: + SmallHeap() : pool(nullptr), length(0), total_free(0) {} + SmallHeap(void* base, size_t length) + : pool(base), length(length), total_free(length) { + assert(pool != nullptr && "Invalid base address."); + assert(pool != (void*)0xFFFFFFFFFFFFFFFFull && "Invalid base address."); + assert((char*)pool + length != (char*)0xFFFFFFFFFFFFFFFFull && "Invalid pool bounds."); + + Node& start = memory[0]; + Node& node = memory[pool]; + Node& end = memory[(void*)0xFFFFFFFFFFFFFFFFull]; + + start.len = 0; + start.next = memory.find(pool); + setfirstfree(start); + + node.len = length; + node.prior = memory.begin(); + node.next = --memory.end(); + + end.len = 0; + end.prior = start.next; + setlastfree(end); + + high.insert((void*)0xFFFFFFFFFFFFFFFFull); + } + + void* alloc(size_t bytes); + void* alloc_high(size_t bytes); + void free(void* ptr); + + void* base() const { return pool; } + size_t size() const { return length; } + size_t remaining() const { return total_free; } + void* high_split() const { return *high.begin(); } +}; + +} // namespace rocr + +#endif diff --git a/util/timer.cpp b/util/timer.cpp new file mode 100644 index 0000000000..5419e4f61d --- /dev/null +++ b/util/timer.cpp @@ -0,0 +1,111 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#include "core/util/timer.h" + +namespace rocr { +namespace timer { + +accurate_clock::init::init() { + freq = os::AccurateClockFrequency(); + accurate_clock::period_ns = 1e9 / double(freq); +} + +// Calibrates the fast clock using the accurate clock. +fast_clock::init::init() { + typedef accurate_clock clock; + clock::duration delay(std::chrono::milliseconds(1)); + + // calibrate clock + fast_clock::raw_rep min = 0; + clock::duration elapsed; + + do { + elapsed = clock::duration::max(); + + for (int t = 0; t < 10; t++) { + fast_clock::raw_rep r1, r2; + clock::time_point t0, t1, t2, t3; + + t0 = clock::now(); + std::atomic_signal_fence(std::memory_order_acq_rel); + r1 = fast_clock::raw_now(); + std::atomic_signal_fence(std::memory_order_acq_rel); + t1 = clock::now(); + std::atomic_signal_fence(std::memory_order_acq_rel); + + do { + t2 = clock::now(); + } while (t2 - t1 < delay); + + std::atomic_signal_fence(std::memory_order_acq_rel); + r2 = fast_clock::raw_now(); + std::atomic_signal_fence(std::memory_order_acq_rel); + t3 = clock::now(); + + // If elapsed time is shorter than last recorded time and both the start + // and end times are confirmed correlated then record the clock readings. + // This protects against inaccuracy due to thread switching + if ((t3 - t1 < elapsed) && ((t1 - t0) * 10 < (t2 - t1)) && + ((t3 - t2) * 10 < (t2 - t1))) { + elapsed = t3 - t1; + min = r2 - r1; + } + } + delay += delay; + } while (min < 1000); + + fast_clock::freq = double(min) / duration_in_seconds(elapsed); + fast_clock::period_ps = 1e12 / fast_clock::freq; + // printf("Timer setup took %f ms\n", duration_in_seconds(elapsed)*1000.0f); + // printf("Fast clock frequency: %f MHz\n", double(fast_clock::freq)/1e6); +} + +double accurate_clock::period_ns; +accurate_clock::raw_frequency accurate_clock::freq; +accurate_clock::init accurate_clock::accurate_clock_init; + +double fast_clock::period_ps; +fast_clock::raw_frequency fast_clock::freq; +fast_clock::init fast_clock::fast_clock_init; +} // namespace timer +} // namespace rocr diff --git a/util/timer.h b/util/timer.h new file mode 100644 index 0000000000..155a11a393 --- /dev/null +++ b/util/timer.h @@ -0,0 +1,173 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef HSA_RUNTIME_CORE_UTIL_TIMER_H_ +#define HSA_RUNTIME_CORE_UTIL_TIMER_H_ + +#include "core/util/utils.h" +#include "core/util/os.h" +#include +#include +#include + +namespace rocr { +namespace timer { + +// Needed to patch around a mixed arithmetic bug in MSVC's duration_cast as of +// VS 2013. +template +struct wide_type { + typedef double type; +}; +template <> +struct wide_type { + typedef uintmax_t type; +}; +template <> +struct wide_type { + typedef intmax_t type; +}; + +template +static __forceinline To + duration_cast(const std::chrono::duration& d) { + typedef typename wide_type::value, + std::is_signed::value>::type wide; + typedef std::chrono::duration unit_convert_t; + + unit_convert_t temp = std::chrono::duration_cast(d); + return To(static_cast(temp.count())); +} +// End patch + +template +static __forceinline double duration_in_seconds( + std::chrono::duration delta) { + typedef std::chrono::duration> seconds; + return seconds(delta).count(); +} + +template +static __forceinline rep duration_from_seconds(double delta) { + typedef std::chrono::duration> seconds; + return std::chrono::duration_cast(seconds(delta)); +} + +// Provices a C++11 standard clock interface to the os::AccurateClock functions +class accurate_clock { + public: + typedef double rep; + typedef std::nano period; + typedef std::chrono::duration duration; + typedef std::chrono::time_point time_point; + + static const bool is_steady = true; + + static __forceinline time_point now() { + return time_point(duration(raw_now() * period_ns)); + } + + // These two extra APIs and types let us use clocks without conversion to the + // arbitrary period unit + typedef uint64_t raw_rep; + typedef uint64_t raw_frequency; + + static __forceinline raw_rep raw_now() { return os::ReadAccurateClock(); } + static __forceinline raw_frequency raw_freq() { return freq; } + + private: + static double period_ns; + static raw_frequency freq; + + class init { + public: + init(); + }; + static init accurate_clock_init; +}; + +// Provices a C++11 standard clock interface to the lowest latency approximate +// clock +class fast_clock { + public: + typedef double rep; + typedef std::pico period; + typedef std::chrono::duration duration; + typedef std::chrono::time_point time_point; + + static const bool is_steady = true; + + static __forceinline time_point now() { + return time_point(duration(raw_now() * period_ps)); + } + + // These two extra APIs and types let us use clocks without conversion to the + // arbitrary period unit + typedef uint64_t raw_rep; + typedef double raw_frequency; + +#if defined(__x86_64__) || defined(_M_X64) + static __forceinline raw_rep raw_now() { return __rdtsc(); } + static __forceinline raw_frequency raw_freq() { return freq; } +#else + static __forceinline raw_rep raw_now() { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC_RAW, &ts); + return (raw_rep(ts.tv_sec) * 1000000000 + raw_rep(ts.tv_nsec)); + } + static __forceinline raw_frequency raw_freq() { return 1.e-9; } +#endif + + private: + static double period_ps; + static raw_frequency freq; + + class init { + public: + init(); + }; + static init fast_clock_init; +}; +} // namespace timer +} // namespace rocr + +#endif diff --git a/util/utils.h b/util/utils.h new file mode 100644 index 0000000000..c2fa8ef32c --- /dev/null +++ b/util/utils.h @@ -0,0 +1,424 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2024, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +// Generally useful utility functions + +#ifndef HSA_RUNTIME_CORE_UTIL_UTILS_H_ +#define HSA_RUNTIME_CORE_UTIL_UTILS_H_ + +#include "stdint.h" +#include "stddef.h" +#include "stdlib.h" +#include "stdarg.h" +#include "unistd.h" +#include +#include +#include +#include +#include +#include + +namespace rocr { +extern FILE* log_file; +extern uint8_t log_flags[8]; + +typedef unsigned int uint; +typedef uint64_t uint64; + +#if defined(__GNUC__) +#if defined(__i386__) || defined(__x86_64__) +#include +#endif + +// 2MB huge page size +#define GPU_HUGE_PAGE_SIZE (2 << 20) + +// 4KB page size +#define DEFAULT_GPU_PAGE_SIZE (1 << 12) + +#define __forceinline __inline__ __attribute__((always_inline)) +#define __declspec(x) __attribute__((x)) +#undef __stdcall +#define __stdcall // __attribute__((__stdcall__)) +#define __ALIGNED__(x) __attribute__((aligned(x))) + +void log_printf(const char* file, int line, const char* format, ...); + +static __forceinline void* _aligned_malloc(size_t size, size_t alignment) { +#ifdef _ISOC11_SOURCE + return aligned_alloc(alignment, size); +#else + void *mem = NULL; + if (0 != posix_memalign(&mem, alignment, size)) return NULL; + return mem; +#endif +} +static __forceinline void _aligned_free(void* ptr) { return free(ptr); } +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) +#include "intrin.h" +#define __ALIGNED__(x) __declspec(align(x)) +#if (_MSC_VER < 1800) // < VS 2013 +static __forceinline unsigned long long int strtoull(const char* str, + char** endptr, int base) { + return static_cast(_strtoui64(str, endptr, base)); +} +#endif +#if (_MSC_VER < 1900) // < VS 2015 +#define thread_local __declspec(thread) +#endif +#else +#error "Compiler and/or processor not identified." +#endif + +#define STRING2(x) #x +#define STRING(x) STRING2(x) + +#define PASTE2(x, y) x##y +#define PASTE(x, y) PASTE2(x, y) + +#ifdef NDEBUG +#define debug_warning_n(exp, limit) \ + do { \ + } while (false) +#else +#define debug_warning_n(exp, limit) \ + do { \ + static std::atomic count(0); \ + if (!(exp) && (limit == 0 || count < limit)) { \ + fprintf(stderr, "Warning: " STRING(exp) " in %s, " __FILE__ ":" STRING(__LINE__) "\n", \ + __PRETTY_FUNCTION__); \ + count++; \ + } \ + } while (false) +#endif +#define debug_warning(exp) debug_warning_n((exp), 0) + +#ifdef NDEBUG +#define debug_print(fmt, ...) \ + do { \ + } while (false) +#else +#define debug_print(fmt, ...) \ + do { \ + fprintf(stderr, fmt, ##__VA_ARGS__); \ + } while (false) +#endif + +#ifdef NDEBUG +#define ifdebug if (false) +#else +#define ifdebug if (true) +#endif + +#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) + +#define LogPrint(flag, format, ...) \ + do { \ + if (hsa_flag_isset64(log_flags, flag)) \ + rocr::log_printf(__FILENAME__, __LINE__, format, ##__VA_ARGS__); \ + } while (false); + + +// A macro to disallow the copy and move constructor and operator= functions +#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&) = delete; \ + TypeName(TypeName&&) = delete; \ + void operator=(const TypeName&) = delete; \ + void operator=(TypeName&&) = delete; + +template +class ScopeGuard { + public: + explicit __forceinline ScopeGuard(const lambda& release) + : release_(release), dismiss_(false) {} + + ScopeGuard(ScopeGuard& rhs) { *this = rhs; } + + __forceinline ~ScopeGuard() { + if (!dismiss_) release_(); + } + __forceinline ScopeGuard& operator=(ScopeGuard& rhs) { + dismiss_ = rhs.dismiss_; + release_ = rhs.release_; + rhs.dismiss_ = true; + return *this; + } + __forceinline void Dismiss() { dismiss_ = true; } + + private: + lambda release_; + bool dismiss_; +}; + +template +static __forceinline ScopeGuard MakeScopeGuard(lambda rel) { + return ScopeGuard(rel); +} + +#define MAKE_SCOPE_GUARD_HELPER(lname, sname, ...) \ + auto lname = __VA_ARGS__; \ + ScopeGuard sname(lname); +#define MAKE_SCOPE_GUARD(...) \ + MAKE_SCOPE_GUARD_HELPER(PASTE(scopeGuardLambda, __COUNTER__), \ + PASTE(scopeGuard, __COUNTER__), __VA_ARGS__) +#define MAKE_NAMED_SCOPE_GUARD(name, ...) \ + MAKE_SCOPE_GUARD_HELPER(PASTE(scopeGuardLambda, __COUNTER__), name, \ + __VA_ARGS__) + +/// @brief: Finds out the min one of two inputs, input must support ">" +/// operator. +/// @param: a(Input), a reference to type T. +/// @param: b(Input), a reference to type T. +/// @return: T. +template +static __forceinline T Min(const T& a, const T& b) { + return (a > b) ? b : a; +} + +template +static __forceinline T Min(const T& a, const T& b, Arg... args) { + return Min(a, Min(b, args...)); +} + +/// @brief: Find out the max one of two inputs, input must support ">" operator. +/// @param: a(Input), a reference to type T. +/// @param: b(Input), a reference to type T. +/// @return: T. +template +static __forceinline T Max(const T& a, const T& b) { + return (b > a) ? b : a; +} + +template +static __forceinline T Max(const T& a, const T& b, Arg... args) { + return Max(a, Max(b, args...)); +} + +/// @brief: Free the memory space which is newed previously. +/// @param: ptr(Input), a pointer to memory space. Can't be NULL. +/// @return: void. +struct DeleteObject { + template + void operator()(const T* ptr) const { + delete ptr; + } +}; + +/// @brief: Checks if a value is power of two, if it is, return true. Be careful +/// when passing 0. +/// @param: val(Input), the data to be checked. +/// @return: bool. +template +static __forceinline bool IsPowerOfTwo(T val) { + return (val & (val - 1)) == 0; +} + +/// @brief: Calculates the floor value aligned based on parameter of alignment. +/// If value is at the boundary of alignment, it is unchanged. +/// @param: value(Input), value to be calculated. +/// @param: alignment(Input), alignment value. +/// @return: T. +template +static __forceinline T AlignDown(T value, size_t alignment) { + return (T)((value / alignment) * alignment); +} + +/// @brief: Same as previous one, but first parameter becomes pointer, for more +/// info, see the previous desciption. +/// @param: value(Input), pointer to type T. +/// @param: alignment(Input), alignment value. +/// @return: T*, pointer to type T. +template +static __forceinline T* AlignDown(T* value, size_t alignment) { + return (T*)AlignDown((intptr_t)value, alignment); +} + +/// @brief: Calculates the ceiling value aligned based on parameter of +/// alignment. +/// If value is at the boundary of alignment, it is unchanged. +/// @param: value(Input), value to be calculated. +/// @param: alignment(Input), alignment value. +/// @param: T. +template +static __forceinline T AlignUp(T value, size_t alignment) { + return AlignDown((T)(value + alignment - 1), alignment); +} + +/// @brief: Same as previous one, but first parameter becomes pointer, for more +/// info, see the previous desciption. +/// @param: value(Input), pointer to type T. +/// @param: alignment(Input), alignment value. +/// @return: T*, pointer to type T. +template +static __forceinline T* AlignUp(T* value, size_t alignment) { + return (T*)AlignDown((intptr_t)((uint8_t*)value + alignment - 1), alignment); +} + +/// @brief: Checks if the input value is at the boundary of alignment, if it is, +/// @return true. +/// @param: value(Input), value to be checked. +/// @param: alignment(Input), alignment value. +/// @return: bool. +template +static __forceinline bool IsMultipleOf(T value, size_t alignment) { + return (AlignUp(value, alignment) == value); +} + +/// @brief: Same as previous one, but first parameter becomes pointer, for more +/// info, see the previous desciption. +/// @param: value(Input), pointer to type T. +/// @param: alignment(Input), alignment value. +/// @return: bool. +template +static __forceinline bool IsMultipleOf(T* value, size_t alignment) { + return (AlignUp(value, alignment) == value); +} + +static __forceinline uint32_t NextPow2(uint32_t value) { + if (value == 0) return 1; + uint32_t v = value - 1; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + return v + 1; +} + +static __forceinline uint64_t NextPow2(uint64_t value) { + if (value == 0) return 1; + uint64_t v = value - 1; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v |= v >> 32; + return v + 1; +} + +static __forceinline bool strIsEmpty(const char* str) noexcept { return str[0] == '\0'; } + +static __forceinline std::string& ltrim(std::string& s) { + auto it = std::find_if(s.begin(), s.end(), + [](char c) { return !std::isspace(c, std::locale::classic()); }); + s.erase(s.begin(), it); + return s; +} + +static __forceinline std::string& rtrim(std::string& s) { + auto it = std::find_if(s.rbegin(), s.rend(), + [](char c) { return !std::isspace(c, std::locale::classic()); }); + s.erase(it.base(), s.end()); + return s; +} + +static __forceinline std::string& trim(std::string& s) { return ltrim(rtrim(s)); } + +} // namespace rocr + +template +static __forceinline uint32_t BitSelect(T p) { + static_assert(sizeof(T) <= sizeof(uintptr_t), "Type out of range."); + static_assert(highBit < sizeof(uintptr_t) * 8, "Bit index out of range."); + + uintptr_t ptr = p; + if (highBit != (sizeof(uintptr_t) * 8 - 1)) + return (uint32_t)((ptr & ((1ull << (highBit + 1)) - 1)) >> lowBit); + else + return (uint32_t)(ptr >> lowBit); +} + +inline uint32_t PtrLow16Shift8(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + return (uint32_t)((ptr & 0xFFFFULL) >> 8); +} + +inline uint32_t PtrHigh64Shift16(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + return (uint32_t)((ptr & 0xFFFFFFFFFFFF0000ULL) >> 16); +} + +inline uint32_t PtrLow40Shift8(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + return (uint32_t)((ptr & 0xFFFFFFFFFFULL) >> 8); +} + +inline uint32_t PtrHigh64Shift40(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + return (uint32_t)((ptr & 0xFFFFFF0000000000ULL) >> 40); +} + +static inline uint8_t Ptr48High8(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + return (uint8_t)((ptr & 0xFF0000000000ULL) >> 40); +} + +static inline uint32_t Ptr48Low32(const void* p) { + uintptr_t ptr = reinterpret_cast(p); + assert((ptr & 0xFFFFFFFFFF00ULL) == ptr); + return (uint32_t)((ptr & 0xFFFFFFFFFFULL) >> 8); +} + +inline uint32_t PtrLow32(const void* p) { + return static_cast(reinterpret_cast(p)); +} + +inline uint32_t PtrHigh32(const void* p) { + uint32_t ptr = 0; +#ifdef HSA_LARGE_MODEL + ptr = static_cast(reinterpret_cast(p) >> 32); +#endif + return ptr; +} + +inline uint32_t HighPart(uint64_t value) { + return (value & 0xFFFFFFFF00000000) >> 32; +} + +inline uint32_t LowPart(uint64_t value) { + return (value & 0x00000000FFFFFFFF); +} + +#include "atomic_helpers.h" + +#endif // HSA_RUNTIME_CORE_UTIL_UTILS_H_ diff --git a/util/win/os_win.cpp b/util/win/os_win.cpp new file mode 100644 index 0000000000..81c90cd266 --- /dev/null +++ b/util/win/os_win.cpp @@ -0,0 +1,327 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#ifdef _WIN32 // Are we compiling for windows? +#define NOMINMAX + +#include "core/util/os.h" + +#include +#include +#include +#include + +#include +#include +#include + +#undef Yield +#undef CreateMutex + +namespace rocr { +namespace os { + +static_assert(sizeof(LibHandle) == sizeof(HMODULE), + "OS abstraction size mismatch"); +static_assert(sizeof(LibHandle) == sizeof(::HANDLE), + "OS abstraction size mismatch"); +static_assert(sizeof(Semaphore) == sizeof(::HANDLE), + "OS abstraction size mismatch"); +static_assert(sizeof(Mutex) == sizeof(::HANDLE), + "OS abstraction size mismatch"); +static_assert(sizeof(Thread) == sizeof(::HANDLE), + "OS abstraction size mismatch"); +static_assert(sizeof(EventHandle) == sizeof(::HANDLE), + "OS abstraction size mismatch"); + +LibHandle LoadLib(std::string filename) { + HMODULE ret = LoadLibrary(filename.c_str()); + return *(LibHandle*)&ret; +} + +void* GetExportAddress(LibHandle lib, std::string export_name) { + return GetProcAddress(*(HMODULE*)&lib, export_name.c_str()); +} + +void CloseLib(LibHandle lib) { FreeLibrary(*(::HMODULE*)&lib); } + +std::vector GetLoadedLibs() { + // Use EnumProcessModulesEx + static_assert(false, "Not implemented."); +} + +std::string GetLibraryName(LibHandle lib) { + static_assert(false, "Not implemented."); +} + +Semaphore CreateSemaphore() { + sem = static_cast(CreateSemaphore(NULL, 0, LONG_MAX, NULL)); + assert(sem != NULL && "CreateSemaphore failed"); + + return *(Semaphore*)&sem; +} + +bool WaitSemaphore(Semaphore sem) { + return WaitForSingleObject(*(::HANDLE*)&lock, INFINITE) == WAIT_OBJECT_0; +} + +void PostSemaphore(Semaphore sem) { + ReleaseSemaphore(static_cast(*sem), 1, NULL); +} + +void DestroySemaphore(Semaphore sem) { + if (!CloseHandle(static_cast(*sem))) { + assert("CloseHandle() failed"); + } + *sem = NULL; +} + +Mutex CreateMutex() { return CreateEvent(NULL, false, true, NULL); } + +bool TryAcquireMutex(Mutex lock) { + return WaitForSingleObject(*(::HANDLE*)&lock, 0) == WAIT_OBJECT_0; +} + +bool AcquireMutex(Mutex lock) { + return WaitForSingleObject(*(::HANDLE*)&lock, INFINITE) == WAIT_OBJECT_0; +} + +void ReleaseMutex(Mutex lock) { SetEvent(*(::HANDLE*)&lock); } + +void DestroyMutex(Mutex lock) { CloseHandle(*(::HANDLE*)&lock); } + +void Sleep(int delay_in_millisecond) { ::Sleep(delay_in_millisecond); } + +void uSleep(int delayInUs) { ::Sleep(delayInUs / 1000); } + +void YieldThread() { ::Sleep(0); } + +struct ThreadArgs { + void* entry_args; + ThreadEntry entry_function; +}; + +unsigned __stdcall ThreadTrampoline(void* arg) { + ThreadArgs* thread_args = (ThreadArgs*)arg; + ThreadEntry entry = thread_args->entry_function; + void* data = thread_args->entry_args; + delete thread_args; + entry(data); + _endthreadex(0); + return 0; +} + +Thread CreateThread(ThreadEntry entry_function, void* entry_argument, + uint stack_size) { + ThreadArgs* thread_args = new ThreadArgs(); + thread_args->entry_args = entry_argument; + thread_args->entry_function = entry_function; + uintptr_t ret = + _beginthreadex(NULL, stack_size, ThreadTrampoline, thread_args, 0, NULL); + return *(Thread*)&ret; +} + +void CloseThread(Thread thread) { CloseHandle(*(::HANDLE*)&thread); } + +bool WaitForThread(Thread thread) { + return WaitForSingleObject(*(::HANDLE*)&thread, INFINITE) == WAIT_OBJECT_0; +} + +bool WaitForAllThreads(Thread* threads, uint thread_count) { + return WaitForMultipleObjects(thread_count, threads, TRUE, INFINITE) == + WAIT_OBJECT_0; +} + +void SetEnvVar(std::string env_var_name, std::string env_var_value) { + SetEnvironmentVariable(env_var_name.c_str(), env_var_value.c_str()); +} + +std::string GetEnvVar(std::string env_var_name) { + char* buff; + DWORD char_count = GetEnvironmentVariable(env_var_name.c_str(), NULL, 0); + if (char_count == 0) return ""; + buff = (char*)alloca(sizeof(char) * char_count); + GetEnvironmentVariable(env_var_name.c_str(), buff, char_count); + buff[char_count - 1] = '\0'; + std::string ret = buff; + return ret; +} + +size_t GetUserModeVirtualMemorySize() { + SYSTEM_INFO system_info = {0}; + GetSystemInfo(&system_info); + return ((size_t)system_info.lpMaximumApplicationAddress + 1); +} + +size_t GetUsablePhysicalHostMemorySize() { + MEMORYSTATUSEX memory_status = {0}; + memory_status.dwLength = sizeof(memory_status); + if (GlobalMemoryStatusEx(&memory_status) == 0) { + return 0; + } + + const size_t physical_size = static_cast(memory_status.ullTotalPhys); + return std::min(GetUserModeVirtualMemorySize(), physical_size); +} + +uintptr_t GetUserModeVirtualMemoryBase() { return (uintptr_t)0; } + +// Os event wrappers +EventHandle CreateOsEvent(bool auto_reset, bool init_state) { + EventHandle evt = reinterpret_cast( + CreateEvent(NULL, (BOOL)(!auto_reset), (BOOL)init_state, NULL)); + return evt; +} + +int DestroyOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + return CloseHandle(reinterpret_cast<::HANDLE>(event)); +} + +int WaitForOsEvent(EventHandle event, unsigned int milli_seconds) { + if (event == NULL) { + return -1; + } + + int ret_code = + WaitForSingleObject(reinterpret_cast<::HANDLE>(event), milli_seconds); + if (ret_code == WAIT_TIMEOUT) { + ret_code = 0x14003; // 0x14003 indicates timeout + } + return ret_code; +} + +int SetOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + return SetEvent(reinterpret_cast<::HANDLE>(event)); +} + +int ResetOsEvent(EventHandle event) { + if (event == NULL) { + return -1; + } + return ResetEvent(reinterpret_cast<::HANDLE>(event)); +} + +uint64_t ReadAccurateClock() { + uint64_t ret; + QueryPerformanceCounter((LARGE_INTEGER*)&ret); + return ret; +} + +uint64_t AccurateClockFrequency() { + uint64_t ret; + QueryPerformanceFrequency((LARGE_INTEGER*)&ret); + return ret; +} + +SharedMutex CreateSharedMutex() { + assert(false && "Not implemented."); + abort(); + return nullptr; +} + +bool TryAcquireSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); + return false; +} + +bool AcquireSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); + return false; +} + +void ReleaseSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); +} + +bool TrySharedAcquireSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); + return false; +} + +bool SharedAcquireSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); + return false; +} + +void SharedReleaseSharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); +} + +void DestroySharedMutex(SharedMutex lock) { + assert(false && "Not implemented."); + abort(); +} + +uint64_t ReadSystemClock() { + assert(false && "Not implemented."); + abort(); + return 0; +} + +uint64_t SystemClockFrequency() { + assert(false && "Not implemented."); + abort(); + return 0; +} + +bool ParseCpuID(cpuid_t* cpuinfo) { + assert(false && "Not implemented."); + abort(); + return false; +} + +} // namespace os +} // namespace rocr + +#endif diff --git a/version.cpp b/version.cpp new file mode 100644 index 0000000000..b71d036fc4 --- /dev/null +++ b/version.cpp @@ -0,0 +1,52 @@ +/* + * Copyright © 2014 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 (including + * the next paragraph) 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. + */ + +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersion(HsaVersionInfo *VersionInfo) { + CHECK_DXG_OPEN(); + + VersionInfo->KernelInterfaceMajorVersion = 1; + VersionInfo->KernelInterfaceMinorVersion = 16; + + return HSAKMT_STATUS_SUCCESS; +} +HSAKMT_STATUS HSAKMTAPI +hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { + CHECK_DXG_OPEN(); + + VersionCapInfo->Value = 0; + /*VersionCapInfo->ui64.InterruptSignal = 0; + VersionCapInfo->ui64.Sdma = 0; + VersionCapInfo->ui64.SdmaXgmi = 0; + VersionCapInfo->ui64.Image = 0; + VersionCapInfo->ui64.EventAge = 0; + VersionCapInfo->ui64.Scratch = 0; + VersionCapInfo->ui64.Vmem = 0; + VersionCapInfo->ui64.dmabuf = 0; + VersionCapInfo->ui64.XNack = 0;*/ + + return HSAKMT_STATUS_SUCCESS; +} \ No newline at end of file diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp new file mode 100644 index 0000000000..20e0231977 --- /dev/null +++ b/wddm/cmd_util.cpp @@ -0,0 +1,281 @@ +/* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. */ + +#include "inc/wddm/cmd_util.h" + +namespace rocr { +namespace core { + +/* + * Builds a COPY_DATA packet that copies data. + */ +size_t CmdUtil::BuildCopyData( + uint64_t *pDstAddr, + void *pBuffer, + uint32_t dstSel, + uint32_t dstCachePolicy, + uint32_t srcSel, + uint32_t srcCachePolicy, + uint32_t countSel, + uint32_t wrConfirm) { + PM4MEC_COPY_DATA copy_data = {0}; + + GenerateCmdHeader(©_data, IT_COPY_DATA); + copy_data.bitfields2.dst_sel = dstSel; + copy_data.bitfields2.src_sel = srcSel; + copy_data.bitfields2.dst_cache_policy = dstCachePolicy; + copy_data.bitfields2.src_cache_policy = srcCachePolicy; + copy_data.bitfields2.count_sel = countSel; + copy_data.bitfields2.wr_confirm = wrConfirm; + copy_data.bitfields5c.dst_64b_addr_lo = (PtrLow32(pDstAddr) >> 3); + copy_data.dst_addr_hi = PtrHigh32(pDstAddr); + memcpy(pBuffer, ©_data, sizeof(copy_data)); + + return sizeof(copy_data); +} + +/* + * Builds a EVENT_WRITE packet. + * Applications can use Barrier command to ensure their + * command is executed only after all other commands have + * completed their execution. + */ +size_t CmdUtil::BuildBarrier( + void *pBuffer, + uint32_t eventIndex, + uint32_t eventType) { + BarrierTemplate barrier = {0}; + + GenerateCmdHeader(&barrier.event_write, IT_EVENT_WRITE); + barrier.event_write.bitfields2.event_index = eventIndex; + barrier.event_write.bitfields2.event_type = eventType; + memcpy(pBuffer, &barrier, sizeof(barrier)); + + return sizeof(barrier); +} + +/* + * Builds a ACQUIRE_MEM packet. + * Users can submit this command to + * invalidate Gpu caches - L1 and or L2. + */ +size_t CmdUtil::BuildAcquireMem( + uint8_t major, + void *pBuffer) { + size_t ret; + if (major == 9) { + gfx9::AcquireMemTemplate acq = {0}; + GenerateCmdHeader(&acq.acquire_mem, IT_ACQUIRE_MEM); + // Specify the size of memory to invalidate. Size is + // specified in terms of 256 byte chunks. A coher_size + // of 0xFFFFFFFF actually specified 0xFFFFFFFF00 (40 bits) + // of memory. The field coher_size_hi specifies memory from + // bits 40-64 for a total of 256 TB. + acq.acquire_mem.coher_size = 0xFFFFFFFF; + acq.acquire_mem.bitfields4.coher_size_hi = 0xFF; + // Specify the address of memory to invalidate. The + // address must be 256 byte aligned. + acq.acquire_mem.coher_base_lo = 0; + acq.acquire_mem.bitfields6.coher_base_hi = 0; + // Specify the poll interval for determing if operation is complete + acq.acquire_mem.bitfields7.poll_interval = 4; + acq.acquire_mem.bitfields2.coher_cntl = + (1 << 29) | // CP_COHER_CNTL__SH_ICACHE_ACTION_ENA_MASK + (1 << 27) | // CP_COHER_CNTL__SH_KCACHE_ACTION_ENA_MASK + (1 << 28); // CP_COHER_CNTL__SH_KCACHE_VOL_ACTION_ENA_MASK + memcpy(pBuffer, &acq, sizeof(acq)); + ret = sizeof(acq); + } else if (major >= 10) { + gfx10::AcquireMemTemplate acq = {0}; + GenerateCmdHeader(&acq.acquire_mem, IT_ACQUIRE_MEM); + acq.acquire_mem.coher_size = 0xFFFFFFFF; + acq.acquire_mem.bitfields4.coher_size_hi = 0xFF; + acq.acquire_mem.coher_base_lo = 0; + acq.acquire_mem.bitfields6.coher_base_hi = 0; + acq.acquire_mem.bitfields7.poll_interval = 4; + acq.acquire_mem.bitfields8.gcr_cntl = + (1 << 16) | // SEQ = FORWARD + (1 << 15) | // GL2_WB + (1 << 14) | // GL2_INV + (1 << 9) | // GL1_INV + (1 << 8) | // GLV_INV + (1 << 7) | // GLK_INV + (1 << 6) | // GLK_WB + (1 << 5) | // GLM_INV + (1 << 4) | // GLM_WB + (1 << 0); // GLI_INV = ALL + memcpy(pBuffer, &acq, sizeof(acq)); + ret = sizeof(acq); + } + + return ret; +} + +/* + * Builds a scratch packet. + */ +size_t CmdUtil::BuildScratch( + void *pScratchBase, + void *pBuffer) { + struct SetScratchTemplate scratch = {0}; + + GenerateSetShRegHeader(&scratch, mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO); + scratch.scratch_lo = Ptr48Low32(pScratchBase); + scratch.scratch_hi = Ptr48High8(pScratchBase); + memcpy(pBuffer, &scratch, sizeof(scratch)); + + return sizeof(scratch); +} + +/** + * @ Set Compute Shader parameter for gfx11 and above + */ +size_t CmdUtil::BuildComputeShaderParams(void *pBuffer) { + struct DispatchProgramResourceRegs compute_shader_params = {0}; + + GenerateSetShRegHeader(&compute_shader_params, mmCOMPUTE_PGM_RSRC3); + // IMAGE_OP: Indicates the compute program contains an image op + // instruction and should be stalled by its WAIT_SYNC fence. + compute_shader_params.compute_pgm_rsrc3 = (1 << 31); + + memcpy(pBuffer, &compute_shader_params, sizeof(compute_shader_params)); + + return sizeof(compute_shader_params); +} + + +/* + * Builds a dispatch packet. + */ +size_t CmdUtil::BuildDispatch( + struct DispatchInfo *pInfo, + void *pBuffer) { + DispatchTemplate dispatch = {0}; + + GenerateSetShRegHeader(&dispatch.dimension_regs, mmCOMPUTE_NUM_THREAD_X); + dispatch.dimension_regs.compute_num_thread_x = pInfo->pPacket->workgroup_size_x; + dispatch.dimension_regs.compute_num_thread_y = pInfo->pPacket->workgroup_size_y; + dispatch.dimension_regs.compute_num_thread_z = pInfo->pPacket->workgroup_size_z; + + // TODO: Add AQL packet index for debugger + // Debugger requires AQL packet index in COMPUTE_DISPATCH_PKT_ADDR_LO + GenerateSetShRegHeader(&dispatch.program_regs, mmCOMPUTE_PGM_LO); + dispatch.program_regs.compute_pgm_lo = Ptr48Low32(pInfo->pEntry); + dispatch.program_regs.compute_pgm_hi = Ptr48High8(pInfo->pEntry); + + GenerateSetShRegHeader(&dispatch.program_resource_regs, mmCOMPUTE_PGM_RSRC1); + dispatch.program_resource_regs.compute_pgm_rsrc1 = pInfo->pKernelObject->compute_pgm_rsrc1; + dispatch.program_resource_regs.compute_pgm_rsrc2 = + (pInfo->ldsBlks << 15) | pInfo->pKernelObject->compute_pgm_rsrc2; + + GenerateSetShRegHeader(&dispatch.resource_regs, mmCOMPUTE_RESOURCE_LIMITS); + dispatch.resource_regs.compute_resource_limits = 0x3ff; + dispatch.resource_regs.compute_static_thread_mgmt_se0 = 0xFFFFFFFF; + dispatch.resource_regs.compute_static_thread_mgmt_se1 = 0xFFFFFFFF; + dispatch.resource_regs.compute_static_thread_mgmt_se2 = 0xFFFFFFFF; + dispatch.resource_regs.compute_static_thread_mgmt_se3 = 0xFFFFFFFF; + + dispatch.resource_regs.compute_tmpring_size = pInfo->pAmdQueue->compute_tmpring_size; + + GenerateSetShRegHeader(&dispatch.compute_user_data_regs, mmCOMPUTE_USER_DATA_0); + + uint32_t sgpr_no = 0; + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_PRIVATE_SEGMENT_BUFFER)) { + assert(pInfo->major < 11); + pInfo->scratchBaseOffset[pInfo->offsetCnt++] = + offsetof(struct DispatchTemplate, compute_user_data_regs.compute_user_data[0]) + + sgpr_no * sizeof(uint32_t); + + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + pInfo->pAmdQueue->scratch_resource_descriptor[0]; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + pInfo->pAmdQueue->scratch_resource_descriptor[1]; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + pInfo->pAmdQueue->scratch_resource_descriptor[2]; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + pInfo->srd; + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_DISPATCH_PTR)) { + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = PtrLow32(pInfo->pPacket); + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = PtrHigh32(pInfo->pPacket); + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_QUEUE_PTR)) { + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = PtrLow32(pInfo->pAmdQueue); + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = PtrHigh32(pInfo->pAmdQueue); + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_KERNARG_SEGMENT_PTR)) { + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + PtrLow32(pInfo->pPacket->kernarg_address); + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + PtrHigh32(pInfo->pPacket->kernarg_address); + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_DISPATCH_ID)) { + // This feature may be enabled as a side effect of indirect calls. + // However, the compiler team confirmed that the dispatch id itself is not used, + // so safe to send 0 for each dispatch. + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = NULL; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = NULL; + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_FLAT_SCRATCH_INIT)) { + assert(pInfo->major < 11); + pInfo->scratchBaseOffset[pInfo->offsetCnt++] = + offsetof(struct DispatchTemplate, compute_user_data_regs.compute_user_data[0]) + + sgpr_no * sizeof(uint32_t); + + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + PtrLow32(pInfo->pScratchBase); + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + PtrHigh32(pInfo->pScratchBase); + } + if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_PRIVATE_SEGMENT_SIZE)) { + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = + pInfo->scratchSizePerWave / (pInfo->wave32 ? 32 : 64); + } + + GenerateCmdHeader(&dispatch.dispatch_direct, IT_DISPATCH_DIRECT); + dispatch.dispatch_direct.dispatch_initiator = + (1 << 0) | // COMPUTE_SHADER_EN + (1 << 2) | // FORCE_START_AT_000 + (1 << 5); // USE_THREAD_DIMENSIONS + if (pInfo->wave32) dispatch.dispatch_direct.dispatch_initiator |= (1 << 15); // CS_W32_EN + dispatch.dispatch_direct.dim_x = pInfo->pPacket->grid_size_x; + dispatch.dispatch_direct.dim_y = pInfo->pPacket->grid_size_y; + dispatch.dispatch_direct.dim_z = pInfo->pPacket->grid_size_z; + memcpy(pBuffer, &dispatch, sizeof(dispatch)); + + return sizeof(dispatch); +} + +/* + * Builds a ATOMIC_MEM packet. + * Users can submit this command + * to perform atomic operations. + */ +size_t CmdUtil::BuildAtomicMem( + uint64_t *pAddr, + uint32_t atomic, + void *pBuffer, + uint32_t cachePolicy, + uint64_t srcData) { + AtomicTemplate atom = {0}; + + GenerateCmdHeader(&atom.atomic, IT_ATOMIC_MEM); + atom.atomic.addr_lo = PtrLow32(pAddr); + atom.atomic.addr_hi = PtrHigh32(pAddr); + atom.atomic.bitfields2.atomic = atomic; + atom.atomic.bitfields2.cache_policy = cachePolicy; + atom.atomic.src_data_lo = LowPart(srcData); + atom.atomic.src_data_hi = HighPart(srcData); + memcpy(pBuffer, &atom, sizeof(atom)); + + return sizeof(atom); +} + +} // namespace core +} // namespace rocr diff --git a/wddm/device.cpp b/wddm/device.cpp new file mode 100644 index 0000000000..753f100a92 --- /dev/null +++ b/wddm/device.cpp @@ -0,0 +1,879 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include +#include +#include +#include +#include +#include "inc/wddm/status.h" +#include "inc/wddm/types.h" +#include "inc/wddm/device.h" +#include "inc/wddm/queue.h" + +namespace rocr { +namespace core { + +const uint32_t WDDMDevice::cmdbuf_aql_frame_num_ = 0x1000; + +WDDMDevice::WDDMDevice(D3DKMT_HANDLE adapter, LUID adapter_luid) + : adapter_(adapter), adapter_luid_(adapter_luid) { + memset(&device_info_, 0, sizeof(device_info_)); + + ParseDeviceInfo(); + CreateDevice(); + SetPowerOptimization(false); + CreatePagingQueue(); + ReserveLocalHeapSpace(); + ReserveSystemHeapSpace(); + InitVaMgr(); + InitCmdbufInfo(); +} + +WDDMDevice::~WDDMDevice() { + FreeLocalHeapSpace(); + FreeSystemHeapSpace(); + DestroyPagingQueue(); + SetPowerOptimization(true); + DestroyDevice(); + + DestroyDeviceInfo(); +} + +static NTSTATUS WDDMQueryAdapter(D3DKMT_HANDLE adapter, KMTQUERYADAPTERINFOTYPE type, + void *data, int size) +{ + D3DKMT_QUERYADAPTERINFO args = {0}; + + args.hAdapter = adapter; + args.Type = type; + args.pPrivateDriverData = data; + args.PrivateDriverDataSize = size; + + return D3DKMTQueryAdapterInfo(&args); +} + +uint64_t WDDMDevice::VramAvail(void) { + D3DKMT_QUERYSTATISTICS stats; + NTSTATUS ret; + uint64_t usedVis = 0; + uint64_t usedInv = 0; + + // wait fence complete + uint64_t value = page_fence_value_.load(); + if(!CpuWait(&page_syncobj_, &value, 1, false)) + return HSA_STATUS_ERROR; + + // local cpu-visible memory + memset(&stats, 0, sizeof(D3DKMT_QUERYSTATISTICS)); + stats.Type = D3DKMT_QUERYSTATISTICS_SEGMENT; + stats.AdapterLuid = adapter_luid_; + stats.QuerySegment.SegmentId = 0; + ret = D3DKMTQueryStatistics(&stats); + if (ret == 0) + usedVis = stats.QueryResult.SegmentInformation.BytesResident; + + // local invisible memory + memset(&stats, 0, sizeof(D3DKMT_QUERYSTATISTICS)); + stats.Type = D3DKMT_QUERYSTATISTICS_SEGMENT; + stats.AdapterLuid = adapter_luid_; + stats.QuerySegment.SegmentId = 1; + + ret = D3DKMTQueryStatistics(&stats); + if (ret == 0) + usedInv = stats.QueryResult.SegmentInformation.BytesResident; + + return LocalHeapSize() - usedVis - usedInv; +} + +bool WDDMDevice::CreateDevice(void) { + D3DKMT_CREATEDEVICE args = {0}; + args.hAdapter = adapter_; + + NTSTATUS ret = D3DKMTCreateDevice(&args); + if (ret == STATUS_SUCCESS) { + device_ = args.hDevice; + return true; + } + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::DestroyDevice(void) { + D3DKMT_DESTROYDEVICE args = {0}; + args.hDevice = device_; + + NTSTATUS ret = D3DKMTDestroyDevice(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::CreatePagingQueue(void) { + D3DKMT_CREATEPAGINGQUEUE args = {0}; + args.hDevice = device_; + args.Priority = D3DDDI_PAGINGQUEUE_PRIORITY_NORMAL; + + NTSTATUS ret = D3DKMTCreatePagingQueue(&args); + if (ret == STATUS_SUCCESS) { + page_queue_ = args.hPagingQueue; + page_syncobj_ = args.hSyncObject; + page_fence_addr_ = (uint64_t *)args.FenceValueCPUVirtualAddress; + page_fence_value_ = 0; + return true; + } + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::DestroyPagingQueue(void) { + D3DDDI_DESTROYPAGINGQUEUE args = {0}; + args.hPagingQueue = page_queue_; + + NTSTATUS ret = D3DKMTDestroyPagingQueue(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::CommitSystemHeapSpace(void* addr, int64_t size, bool lock) { + int32_t protFlags = PROT_READ | PROT_WRITE | PROT_EXEC; + int32_t mapFlags = MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED| + MAP_NORESERVE|MAP_UNINITIALIZED; + if (lock) + mapFlags |= MAP_LOCKED; + void* paddr = mmap(addr, size, protFlags, mapFlags, -1, 0); + if (paddr == MAP_FAILED) { + fprintf(stderr, "%s fail to commit %s addr = %p, paddr = %p\n", + __FUNCTION__, (lock ? "locked" : ""), addr, paddr); + return false; + } + assert(addr == paddr); + + /*if (!Runtime::runtime_singleton_->PinWARequired()) + return true;*/ + + /* + * Do not make the pages in this range available to the child + * after a fork(2). This is useful to prevent copy-on-write + * semantics from changing the physical location of a page if + * the parent writes to it after a fork(2). (Such page + * relocations cause problems for hardware that DMAs into the + * page.) + * + * https://man7.org/linux/man-pages/man2/madvise.2.html + */ + if (madvise(addr, size, MADV_DONTFORK)) + fprintf(stderr, "%s fail to set MADV_DONTFORK for addr = %p\n", + __FUNCTION__, addr); + + return true; +} + +bool WDDMDevice::DecommitSystemHeapSpace(void* addr, int64_t size) { + int32_t protFlags = PROT_NONE; + int32_t mapFlags = MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED| + MAP_NORESERVE|MAP_UNINITIALIZED; + void* paddr = mmap(addr, size, protFlags, mapFlags, -1, 0); + if (paddr == MAP_FAILED) { + fprintf(stderr, "%s fail to decommit addr = %p, paddr = %p\n", + __FUNCTION__, addr, paddr); + return false; + } + assert(addr == paddr); + return true; +} + +bool WDDMDevice::ReserveSystemHeapSpace() { + struct sysinfo info; + int ret = sysinfo(&info); + uint64_t max_ram = 0x10000000000; + uint64_t alignment = 0x100000000; + assert(!ret); + + int32_t protFlags = PROT_NONE; + // minimum of reserve size is 8G, maximum of reserve size is 1T. + system_heap_space_size_ = std::min(AlignUp(info.totalram, alignment) * 2, max_ram); + void* cpu = mmap(NULL, system_heap_space_size_, protFlags, + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (cpu == MAP_FAILED) { + fprintf(stderr, "%s fail to reserve system_heap_space_size_ = %lx \n", + __FUNCTION__, system_heap_space_size_); + return false; + } + + system_heap_space_start_ = (uint64_t)cpu; + return true; +} + +bool WDDMDevice::FreeSystemHeapSpace(void) { + void *cpu = (void *)system_heap_space_start_; + if (munmap(cpu, system_heap_space_size_ != 0)) { + fprintf(stderr, "%s fail to unmap = %p \n", __FUNCTION__, cpu); + return false; + } + return true; +} + +/* + * To find the avaliable same range for cpu + * virtual space and gpu virtual space. + * sys_va_size of cpu va range is larger 1G + * than gpu va range, otherwise ReserveGPUVirtualAddress + * will return error. + */ +bool WDDMDevice::ReserveLocalHeapSpace(void) { + uint64_t sys_va[16] = {0}; + uint64_t local_va; + uint64_t sys_va_size; + int match_index = -1; + uint64_t align = 0x40000000; /* 1G */ + void* ptr = NULL; + + local_heap_space_start_ = 0; + local_heap_space_size_ = AlignUp(LocalHeapSize(), align) * 4; + sys_va_size = local_heap_space_size_ + align; + + /* it will retry 16 times to find the avaliable range. */ + for (int i = 0; i < 16; i++) { + local_va = 0; + ptr = mmap(NULL, sys_va_size , PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (ptr == MAP_FAILED) { + fprintf(stderr, "%s fail to reserve cpu va in %d time!\n", + __FUNCTION__, i); + break; + } + + sys_va[i] = (uint64_t)ptr; + + if (thunk::ReserveGpuVirtualAddress( + adapter_, local_heap_space_size_, + (uint64_t)ptr, + (uint64_t)ptr + sys_va_size, &local_va) == ErrorCode::Success) { + + match_index = i; + local_heap_space_start_ = local_va; + debug_print("%s success to reserve gpu va %lx and va cpu %p in %d time\n", + __FUNCTION__, local_va, ptr, i); + break; + } else { + debug_print("%s fail to reserve gpu va for cpu va %p in %d time!\n", + __FUNCTION__, ptr, i); + } + } + + if (match_index >= 0) { + /* release cpu unused ranges*/ + uint64_t left_size = local_va - sys_va[match_index]; + uint64_t right_size = align - left_size; + if ((left_size > 0) && munmap((void*)sys_va[match_index], left_size)) + fprintf(stderr, "%s fail to unmap left %lx with size %lx\n", + __FUNCTION__, sys_va[match_index], left_size); + if ((right_size > 0) && munmap((void*)(local_va + local_heap_space_size_), right_size)) + fprintf(stderr, "%s fail to unmap right %lx with size %lx\n", + __FUNCTION__, (local_va + local_heap_space_size_), right_size); + } else { + fprintf(stderr, "%s fail to reserve Local Heap Space !\n", + __FUNCTION__); + } + + /* free match fail address for cpu va */ + int free = match_index >= 0 ? match_index : 16; + for (int j = 0; j < free; j++) { + if (sys_va[j] != 0 && munmap((void*)sys_va[j], sys_va_size)) { + fprintf(stderr, "%s fail to unmap %d %lx\n", __FUNCTION__, j, sys_va[j]); + } + } + + return match_index >= 0; +} + +bool WDDMDevice::FreeLocalHeapSpace(void) { + thunk::FreeGpuVirtualAddress(adapter_, local_heap_space_start_, local_heap_space_size_); + void *cpu = (void *)local_heap_space_start_; + return munmap(cpu, local_heap_space_size_) == 0; +} + +void WDDMDevice::InitVaMgr() { + uint32_t min_align = 4096; + local_va_mgr_ = std::make_unique(local_heap_space_start_, local_heap_space_size_, min_align); +} + +void WDDMDevice::SetPowerOptimization(bool restore) { + void *priv_data; + int priv_size; + + priv_size = rocr_proxy::CreatePowerOptPrivData(&priv_data, restore); + + D3DKMT_ESCAPE d3dkmt_escape; + memset(&d3dkmt_escape, 0, sizeof(d3dkmt_escape)); + + d3dkmt_escape.hAdapter = adapter_; + d3dkmt_escape.hDevice = device_; + d3dkmt_escape.hContext = 0; //KMD only use device to identify the process + d3dkmt_escape.Type = D3DKMT_ESCAPE_DRIVERPRIVATE; + d3dkmt_escape.pPrivateDriverData = priv_data; + d3dkmt_escape.PrivateDriverDataSize = priv_size; + d3dkmt_escape.Flags.HardwareAccess = true; + + NTSTATUS status = D3DKMTEscape(&d3dkmt_escape); + debug_print("%s status %d restore %d\n", __FUNCTION__, status, restore); + rocr_proxy::DestroyPrivData(priv_data); +} + +ErrorCode WDDMDevice::ReserveGpuVirtualAddress(const rocr_proxy::AllocDomain domain, + gpusize hit_base_addr, gpusize size, + gpusize *out_gpu_virt_addr, gpusize alignment, bool lock) { + gpusize gpu_addr = 0; + ErrorCode code = ErrorCode::Success; + + if (domain == rocr_proxy::kSystem) { + + code = thunk::ReserveGpuVirtualAddress(adapter_, size, + system_heap_space_start_, + system_heap_space_start_ + system_heap_space_size_, + &gpu_addr); + if (code != ErrorCode::Success) + return code; + + if (!CommitSystemHeapSpace((void*)gpu_addr, size, lock)) { + thunk::FreeGpuVirtualAddress(adapter_, gpu_addr, size); + code = ErrorCode::SyscallFail; + } + } else { + uint64_t align = alignment == 0 ? (64 * 1024) : alignment; // default 64K alignment + if (domain == rocr_proxy::kLocal && size >= GPU_HUGE_PAGE_SIZE) + align = GPU_HUGE_PAGE_SIZE; + + gpu_addr = local_va_mgr_->Alloc(size, align, hit_base_addr); + if (gpu_addr == 0) + code = ErrorCode::OutOfGpuMemory; + + } + + *out_gpu_virt_addr = (code == ErrorCode::Success) ? gpu_addr : 0; + return code; +} + +ErrorCode WDDMDevice::FreeGpuVirtualAddress(const rocr_proxy::AllocDomain domain, + gpusize gpu_addr, gpusize size) { + auto code = ErrorCode::Success; + + if (domain == rocr_proxy::kSystem) { + + DecommitSystemHeapSpace((void *)gpu_addr, size); + + thunk::FreeGpuVirtualAddressArgs free_args{}; + free_args.hAdapter = adapter_; + free_args.BaseAddress = gpu_addr; + free_args.Size = size; + + code = thunk::FreeGpuVirtualAddress(&free_args); + } else { + local_va_mgr_->Free(gpu_addr); + } + + return code; +} + +void WDDMDevice::UpdatePageFence(uint64_t fence_value) { + uint64_t current = page_fence_value_.load(); + + // atomically set fence value when target is bigger than current one + do { + if (current >= fence_value) + break; + } while (!page_fence_value_.compare_exchange_weak(current, fence_value)); +} + +ErrorCode WDDMDevice::CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem) { + ErrorCode ret; + + *gpu_mem = nullptr; + auto mem = new GpuMemory(this); + if (create_info.dmabuf_fd > 0) + ret = mem->ImportPhysicalHandle(create_info.dmabuf_fd); + else + ret = mem->Init(create_info); + if (ret == ErrorCode::Success) + *gpu_mem = mem; + + return ret; +} + +void *WDDMDevice::Lock(D3DKMT_HANDLE handle) { + D3DKMT_LOCK2 args = {0}; + args.hDevice = device_; + args.hAllocation = handle; + + NTSTATUS ret = D3DKMTLock2(&args); + if (ret == STATUS_SUCCESS) + return args.pData; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return NULL; +} + +bool WDDMDevice::Unlock(D3DKMT_HANDLE handle) { + D3DKMT_UNLOCK2 args = {0}; + args.hDevice = device_; + args.hAllocation = handle; + + NTSTATUS ret = D3DKMTUnlock2(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::CreateContext(int engine, D3DKMT_HANDLE *handle) { + void *priv_data; + int priv_size; + + int ordinal = EngineOrdinal(engine, &device_info_); + if (ordinal < 0) + return false; + + bool FwManagedGfxState = SupportStateShadowingByCpFw(); + priv_size = rocr_proxy::CreateContextPrivData(&priv_data, FwManagedGfxState); + + D3DKMT_CREATECONTEXTVIRTUAL args = {0}; + args.hDevice = device_; + args.EngineAffinity = 1 << 0; + args.NodeOrdinal = ordinal; + args.pPrivateDriverData = priv_data; + args.PrivateDriverDataSize = priv_size; + args.ClientHint = D3DKMT_CLIENTHINT_OPENCL; + + if (IsHwsEnabled(engine)) + args.Flags.HwQueueSupported = 1; + else + args.Flags.DisableGpuTimeout = rocr_proxy::ShouldDisableGpuTimeout(engine, &device_info_); + + NTSTATUS ret = D3DKMTCreateContextVirtual(&args); + if (ret == STATUS_SUCCESS) { + *handle = args.hContext; + rocr_proxy::DestroyPrivData(priv_data); + return true; + } + + rocr_proxy::DestroyPrivData(priv_data); + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::DestroyContext(D3DKMT_HANDLE handle) { + D3DKMT_DESTROYCONTEXT args = {0}; + args.hContext = handle; + + NTSTATUS ret = D3DKMTDestroyContext(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::GpuWait(WDDMQueue *queue, const D3DKMT_HANDLE *syncobjs, + uint64_t *values, int count) { + + D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU args = {0}; + args.hContext = queue->context; + args.ObjectCount = count; + args.ObjectHandleArray = syncobjs; + args.MonitoredFenceValueArray = values; + + NTSTATUS ret = D3DKMTWaitForSynchronizationObjectFromGpu(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::GpuSignal(D3DKMT_HANDLE context, const D3DKMT_HANDLE *syncobjs, + uint64_t *value, int count) { + D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU args = {0}; + args.hContext = context; + args.ObjectCount = count; + args.ObjectHandleArray = syncobjs; + args.MonitoredFenceValueArray = value; + + NTSTATUS ret = D3DKMTSignalSynchronizationObjectFromGpu(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::CpuWait(const D3DKMT_HANDLE *syncobjs, uint64_t *value, + int count, bool wait_any) { + D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU args = {0}; + args.hDevice = device_; + args.ObjectCount = count; + args.ObjectHandleArray = syncobjs; + args.FenceValueArray = value; + args.Flags.WaitAny = wait_any; + + NTSTATUS ret = D3DKMTWaitForSynchronizationObjectFromCpu(&args); + if (ret == STATUS_SUCCESS) + return true; + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +bool WDDMDevice::WaitOnPagingFenceFromCpu() { + uint64_t page_fence_value = 0; + + page_fence_value = page_fence_value_.load(); + if (CpuWait(&page_syncobj_, &page_fence_value, 1, false)) + return true; + + return false; +} + +bool WDDMDevice::CreateSyncobj(D3DKMT_HANDLE *handle, uint64_t **addr) { + D3DKMT_CREATESYNCHRONIZATIONOBJECT2 args = {0}; + args.hDevice = device_; + args.Info.Type = D3DDDI_MONITORED_FENCE; + args.Info.MonitoredFence.EngineAffinity = 1 << 0; + + NTSTATUS ret = D3DKMTCreateSynchronizationObject2(&args); + if (ret == STATUS_SUCCESS) { + *handle = args.hSyncObject; + *addr = (uint64_t *)args.Info.MonitoredFence.FenceValueCPUVirtualAddress; + debug_print("create syncobj cpu addr=%p gpu addr=%" PRIx64 "\n", + args.Info.MonitoredFence.FenceValueCPUVirtualAddress, + args.Info.MonitoredFence.FenceValueGPUVirtualAddress); + return true; + } + + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; +} + +void WDDMDevice::DestroySyncobj(D3DKMT_HANDLE handle) { + D3DKMT_DESTROYSYNCHRONIZATIONOBJECT args = {0}; + args.hSyncObject = handle; + + NTSTATUS ret = D3DKMTDestroySynchronizationObject(&args); + if (ret != STATUS_SUCCESS) + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); +} + +void WDDMDevice::InitCmdbufInfo(void) { + if (device_info_.major == 9) { + cmdbuf_aql_frame_size_ = 2 * sizeof(gfx9::AcquireMemTemplate); + } else if (device_info_.major >= 10) { + cmdbuf_aql_frame_size_ = 2 * sizeof(gfx10::AcquireMemTemplate); + } + + if (device_info_.major >= 11) + cmdbuf_aql_frame_size_ += sizeof(SetScratchTemplate); + + cmdbuf_aql_frame_size_ += + sizeof(PM4MEC_COPY_DATA) * 2 + + sizeof(BarrierTemplate) * 2 + + sizeof(DispatchTemplate) + + sizeof(AtomicTemplate) * 2; + cmdbuf_aql_frame_size_ = AlignUp(cmdbuf_aql_frame_size_, 0x10); + + cmdbuf_size_ = AlignUp(cmdbuf_aql_frame_num_ * cmdbuf_aql_frame_size_, 0x1000); +} + +uint32_t WDDMDevice::LdsBlocks(const hsa_kernel_dispatch_packet_t *pkt) { + static const uint32_t blk_sz = 512; + uint32_t total_sz = pkt->group_segment_size; + uint32_t blk_num = (total_sz + blk_sz - 1) / blk_sz; + return blk_num; +} + +NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters) +{ + bool supported = false; + D3DKMT_ENUMADAPTERS2 args = {0}; + NTSTATUS ret = D3DKMTEnumAdapters2(&args); + if (ret != STATUS_SUCCESS) + return ret; + + if (!args.NumAdapters) { + adapters = NULL; + num_adapters = 0; + return STATUS_SUCCESS; + } + + D3DKMT_ADAPTERINFO *info = new D3DKMT_ADAPTERINFO[args.NumAdapters]; + if (!info) + return STATUS_NO_MEMORY; + + args.pAdapters = info; + ret = D3DKMTEnumAdapters2(&args); + if (ret != STATUS_SUCCESS) + goto err_out0; + + adapters = new D3DKMT_ADAPTERINFO[args.NumAdapters]; + if (!adapters) + goto err_out0; + + num_adapters = 0; + for (int i = 0; i < args.NumAdapters; i++) { + D3DKMT_ADAPTERREGISTRYINFO query = {0}; + + ret = WDDMQueryAdapter(info[i].hAdapter, KMTQAITYPE_ADAPTERREGISTRYINFO, + &query, sizeof(query)); + if (ret != STATUS_SUCCESS) + goto err_out1; + + supported = rocr_proxy::QueryAdapterSupported(info[i].hAdapter); + + if (std::wcsstr(query.ChipType, L"AMD") && supported) { + adapters[num_adapters++] = info[i]; + } + } + + delete info; + return STATUS_SUCCESS; + + err_out1: + delete adapters; + adapters = NULL; + err_out0: + delete info; + return ret; +} + +bool WDDMDevice::ParseDeviceInfo() { + bool ret; + + memset(&device_info_, 0, sizeof(device_info_)); + ret = rocr_proxy::ParseAdapterInfo(adapter_, &device_info_); + if (!ret) + return false; + + return true; +} + +void WDDMDevice::DestroyDeviceInfo() { + free(device_info_.adapter_info); +} + +void WDDMDevice::GetClockCounters(uint64_t *gpu, uint64_t *cpu) { + void *priv_data; + int priv_size; + + priv_size = rocr_proxy::CreateCalibratedTimestampsPrivData(&priv_data); + + D3DKMT_ESCAPE d3dkmt_escape; + memset(&d3dkmt_escape, 0, sizeof(d3dkmt_escape)); + + d3dkmt_escape.hAdapter = adapter_; + d3dkmt_escape.hDevice = device_; + d3dkmt_escape.hContext = 0; //KMD only use device to identify the process + d3dkmt_escape.Type = D3DKMT_ESCAPE_DRIVERPRIVATE; + d3dkmt_escape.pPrivateDriverData = priv_data; + d3dkmt_escape.PrivateDriverDataSize = priv_size; + d3dkmt_escape.Flags.HardwareAccess = true; + + NTSTATUS status = D3DKMTEscape(&d3dkmt_escape); + if (status) { + debug_print("%s status %d \n", __FUNCTION__, status); + } else { + rocr_proxy::QueryCalibratedTimestamps(priv_data, gpu, cpu); + } + rocr_proxy::DestroyPrivData(priv_data); +} + +bool WDDMDevice::CreateQueue(WDDMQueue *queue) { + if (!CreateContext(queue->queue_engine, &queue->context)) + return false; + + GpuMemoryCreateInfo create_info{}; + create_info.size = queue->cmdbuf_size; + create_info.domain = rocr_proxy::kSystem; + + GpuMemory *gpu_mem = nullptr; + auto code = CreateGpuMemory(create_info, &gpu_mem); + if (code != ErrorCode::Success) + goto err_out0; + + queue->cmdbuf = gpu_mem->GetGpuMemoryHandle(); + queue->cmdbuf_addr = gpu_mem->GpuAddress(); + + if (queue->Init()) + goto err_out1; + + return true; + +err_out1: + delete gpu_mem; +err_out0: + DestroyContext(queue->context); + + return false; +} + +void WDDMDevice::DestroyQueue(WDDMQueue *queue) { + + queue->Fini(); + + auto cmdbuf_mem = GpuMemory::Convert(queue->cmdbuf); + delete cmdbuf_mem; + + DestroyContext(queue->context); +} + +bool WDDMDevice::SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, + uint64_t command_size, uint64_t fence_value) { + void *priv_data; + int priv_size; + + priv_size = rocr_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, false); + + D3DKMT_SUBMITCOMMAND args = {0}; + args.Commands = command_addr; + args.CommandLength = command_size; + args.BroadcastContextCount = 1; + args.BroadcastContext[0] = queue->context; + args.pPrivateDriverData = priv_data; + args.PrivateDriverDataSize = priv_size; + + NTSTATUS ret = D3DKMTSubmitCommand(&args); + if (ret != STATUS_SUCCESS) { + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + rocr_proxy::DestroyPrivData(priv_data); + return false; + } + + rocr_proxy::DestroyPrivData(priv_data); + + if (!GpuSignal(queue->context, &queue->syncobj, &fence_value, 1)) + return false; + + return true; +} + +bool WDDMDevice::CreateHwQueue(WDDMQueue *queue) { + void *priv_data; + int priv_size; + + bool FwManagedGfxState = SupportStateShadowingByCpFw(); + priv_size = rocr_proxy::CreateHwQueuePrivData(&priv_data, queue->context, + FwManagedGfxState, queue->prio); + + D3DKMT_CREATEHWQUEUE createHwQueue = {0}; + createHwQueue.hHwContext = queue->context; + createHwQueue.Flags.DisableGpuTimeout = rocr_proxy::ShouldDisableGpuTimeout(queue->queue_engine, &device_info_); + createHwQueue.pPrivateDriverData = priv_data; + createHwQueue.PrivateDriverDataSize = priv_size; + + NTSTATUS ret = D3DKMTCreateHwQueue(&createHwQueue); + if (ret != STATUS_SUCCESS) { + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + rocr_proxy::DestroyPrivData(priv_data); + return false; + } + + rocr_proxy::DestroyPrivData(priv_data); + + queue->queue = createHwQueue.hHwQueue; + queue->syncobj = createHwQueue.hHwQueueProgressFence; + queue->sync_addr = (uint64_t *)createHwQueue.HwQueueProgressFenceCPUVirtualAddress; + + return true; +} + +bool WDDMDevice::DestroyHwQueue(WDDMQueue *queue) { + D3DKMT_DESTROYHWQUEUE DestroyHwQueue = { + .hHwQueue = queue->queue, + }; + + NTSTATUS ret = D3DKMTDestroyHwQueue(&DestroyHwQueue); + if (ret != STATUS_SUCCESS) { + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + return false; + } + + return true; +} + +bool WDDMDevice::SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, + uint64_t command_size, uint64_t fence_value) { + void *priv_data; + int priv_size; + + priv_size = rocr_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, true); + + D3DKMT_SUBMITCOMMANDTOHWQUEUE args = {0}; + args.hHwQueue = queue->queue; + args.HwQueueProgressFenceId = fence_value; + args.CommandBuffer = command_addr; + args.CommandLength = command_size; + args.pPrivateDriverData = priv_data; + args.PrivateDriverDataSize = priv_size; + + NTSTATUS ret = D3DKMTSubmitCommandToHwQueue(&args); + if (ret != STATUS_SUCCESS) { + fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + rocr_proxy::DestroyPrivData(priv_data); + return false; + } + + rocr_proxy::DestroyPrivData(priv_data); + + return true; +} + +} // namespace core +} // namespace rocr diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp new file mode 100644 index 0000000000..42aeaf68d6 --- /dev/null +++ b/wddm/gpu_memory.cpp @@ -0,0 +1,467 @@ +#include +#include +#include "inc/wddm/gpu_memory.h" +#include "inc/wddm/device.h" +#include "util/utils.h" + +using namespace std; + +namespace rocr { +namespace core { + +size_t GpuMemory::CalcChunkNumbers(gpusize size) { + const auto chunk_size = core::WDDMDevice::GpuMemoryChunkSize; + return (size + chunk_size - 1) / chunk_size; +} + +gpusize GpuMemory::AdjustSize(gpusize size) const { + const auto &device_info = device_->DeviceInfo(); + + if (device_info.enable_big_page_alignment && desc_.domain == rocr_proxy::kLocal) { + uint32_t alignment = device_info.big_page_alignment_size; + // BigPage is only supported for allocations > bigPageMinAlignment. + // Also, if bigPageMinAlignment == 0, BigPage optimization is not supported per KMD. + // We do either LargePage or BigPage alignment, whichever has a higher value. + if ((device_info.hw_big_page_min_alignment_size > 0) && (size > device_info.hw_big_page_min_alignment_size)) { + alignment = std::max(alignment, device_info.hw_big_page_min_alignment_size); + if (size > device_info.hw_big_page_alignment_size) + alignment = std::max(alignment, device_info.hw_big_page_alignment_size); + } + if (alignment > 0) + size = AlignUp(size, alignment); + } else { + const size_t min_size = 4096; + size = AlignUp(size, min_size); + } + return size; +} + +GpuMemory::GpuMemory(WDDMDevice *device) : device_(device) { + num_allocations_ = 0; + alloc_handles_ptr_ = nullptr; + alloc_handle_ = 0; + resource_ = 0; +} + +GpuMemory::~GpuMemory() { + FreeGpuVirtualAddress(GpuAddress(), Size()); + FreePhysicalMemory(); +} + +ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { + desc_.domain = create_info.domain; + desc_.adapter_luid = device_->GetLuid(); + desc_.client_size = create_info.size; + desc_.alignment = create_info.alignment; + desc_.mem_flags = create_info.mem_flags; + desc_.engine_flag = create_info.engine_flag; + desc_.flags.is_virtual = create_info.flags.virtual_alloc; + desc_.flags.is_physical_only = create_info.flags.physical_only; + desc_.flags.is_shared = create_info.flags.interprocess; + desc_.flags.is_locked = create_info.flags.locked; + + desc_.size = AdjustSize(desc_.client_size); + + if (IsUserMemory() || IsSystem()) + desc_.cpu_addr = create_info.user_ptr; + + num_allocations_ = CalcChunkNumbers(Size()); + if (num_allocations_ == 1) + alloc_handles_ptr_ = &alloc_handle_; + else + alloc_handles_ptr_ = new WinAllocationHandle[num_allocations_]; + + memset(alloc_handles_ptr_, 0, num_allocations_ * sizeof(WinAllocationHandle)); + + auto code = ErrorCode::Success; + + if (IsPhysicalOnly()) { + code = CreatePhysicalMemory(); + return code; + } + + code = ReserveGpuVirtualAddress(create_info.va_hint, Size(), create_info.alignment); + if (IsVirtual() || (code != ErrorCode::Success)) + return code; + + bool physical_created = false; + + auto guard = MakeScopeGuard([this, &physical_created, &code]() { + if (code != ErrorCode::Success) { + + if (physical_created) { + FreePhysicalMemory(); + } + FreeGpuVirtualAddress(GpuAddress(), Size()); + } + }); + (void)guard; + + code = CreatePhysicalMemory(); + if (code != ErrorCode::Success) + return code; + + physical_created = true; + + code = MapGpuVirtualAddress(GpuAddress(), Size()); + if (code != ErrorCode::Success) + return code; + + code = MakeResident(); + if (code != ErrorCode::Success) + return code; + + if (!GetDevice()->WaitOnPagingFenceFromCpu()) + code = ErrorCode::Unknown; + + return code; +} + +ErrorCode GpuMemory::UnmapGpuVirtualAddress(const gpusize addr, const gpusize size, gpusize offset) { + auto code = ErrorCode::Success; + size_t i = 0; + auto map_addr = addr; + auto map_size = size; + + while (offset >= core::WDDMDevice::GpuMemoryChunkSize) { + offset -= core::WDDMDevice::GpuMemoryChunkSize; + i += 1; + } + + while (map_size > 0) { + auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + + D3DDDI_MAPGPUVIRTUALADDRESS args{}; + + args.hPagingQueue = device_->PagingQueue(); + args.BaseAddress = map_addr; + args.hAllocation = GetAllocationHandle(i); + args.SizeInPages = block_size / 0x1000; + args.Protection.NoAccess = 1; + + code = thunk::MapGpuVirtualAddress(&args); + + if (code == ErrorCode::NotReady) + device_->UpdatePageFence(args.PagingFenceValue); + else if (code != ErrorCode::Success) + break; + + map_addr += block_size; + map_size -= block_size; + offset = 0; // reset second unmapped allocation offset to zero + i += 1; + } + + return code; +} + +ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size, gpusize offset) { + + auto code = ErrorCode::Success; + size_t i = 0; + auto map_addr = addr; + auto map_size = size; + const size_t _4K = 0x1000; + + while (offset >= core::WDDMDevice::GpuMemoryChunkSize) { + offset -= core::WDDMDevice::GpuMemoryChunkSize; + i += 1; + } + const size_t first_chunk = i; + const auto first_chunk_offset = offset; + /* Found two limitation for local vram: + * 1. invisible vram va has to be 64K aligned, otherwise map gpu va fail + * 2. visible vram can not be cpu mapped when command submission or after gpu mapped + */ + while (map_size > 0) { + auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + + D3DDDI_MAPGPUVIRTUALADDRESS args{}; + + args.hPagingQueue = device_->PagingQueue(); + args.BaseAddress = map_addr; + args.hAllocation = GetAllocationHandle(i); + args.OffsetInPages = offset / _4K; + args.SizeInPages = block_size / _4K; + args.Protection.Write = 1; + + code = thunk::MapGpuVirtualAddress(&args); + + if (code != ErrorCode::Success) { + if (code == ErrorCode::NotReady) { + const uint64_t fence_value = args.PagingFenceValue; + device_->UpdatePageFence(fence_value); + code = ErrorCode::Success; + } else + break; + } + + map_addr += block_size; + map_size -= block_size; + offset = 0; // reset second mapped allocation offset to zero + i++; + } + + if (code != ErrorCode::Success) { + // Map failed, unmap partial mapped block + offset = first_chunk_offset; + map_addr = addr; + map_size = size; + for (size_t j = first_chunk; j < i; j++) { + auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + + D3DDDI_MAPGPUVIRTUALADDRESS args{}; + + args.hPagingQueue = device_->PagingQueue(); + args.BaseAddress = map_addr; + args.hAllocation = 0; + args.OffsetInPages = offset / _4K; + args.SizeInPages = block_size / _4K; + args.Protection.NoAccess = 1; + + auto unmap_code = thunk::MapGpuVirtualAddress(&args); + if (unmap_code == ErrorCode::NotReady) + device_->UpdatePageFence(args.PagingFenceValue); + + map_addr += block_size; + map_size -= block_size; + } + } + return code; +} + +ErrorCode GpuMemory::ReserveGpuVirtualAddress(gpusize base_virt_addr, gpusize size, gpusize alignment) { + gpusize gpu_virt_addr = 0; + auto status = device_->ReserveGpuVirtualAddress(desc_.domain, base_virt_addr, size, &gpu_virt_addr, alignment, + desc_.flags.is_locked); + if (status == ErrorCode::Success) { + desc_.gpu_addr = gpu_virt_addr; + + if (IsSystem()) + desc_.cpu_addr = reinterpret_cast(desc_.gpu_addr); + } + return status; +} + +ErrorCode GpuMemory::FreeGpuVirtualAddress(gpusize base_addr, gpusize size) { + return base_addr != 0 ? + device_->FreeGpuVirtualAddress(desc_.domain, base_addr, size) : + ErrorCode::Success; +} + +ErrorCode GpuMemory::CreatePhysicalMemory() { + + assert(!IsVirtual() && NumChunks() > 0); + + const auto num_allocations = NumChunks(); + void *priv_drv_data; + void *alloc_priv; + int priv_drv_data_size; + int alloc_priv_data_size; + + if (!rocr_proxy::CreatePrivateAllocInfo(NumChunks(), &priv_drv_data, &alloc_priv, + &priv_drv_data_size, &alloc_priv_data_size)) + return ErrorCode::OutOfMemory; + + auto alloc_info = reinterpret_cast( + static_cast(priv_drv_data) + priv_drv_data_size * num_allocations); + + size_t size = desc_.size; + uint64_t addr = desc_.gpu_addr; + char *cpu_addr = static_cast(desc_.cpu_addr); + const auto &device_info = GetDevice()->DeviceInfo(); + + for (size_t i = 0; i < num_allocations; i++) { + + void* priv_data = (void*)((char*)priv_drv_data + priv_drv_data_size * i); + size_t block_size = std::min(size, core::WDDMDevice::GpuMemoryChunkSize); + + if (IsUserMemory() || IsSystem()) { + rocr_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, 0, desc_.mem_flags, desc_.engine_flag, device_info); + alloc_info[i].pSystemMem = static_cast(cpu_addr); + cpu_addr += block_size; + } else { + rocr_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, addr, desc_.mem_flags, desc_.engine_flag, device_info); + } + + size -= block_size; + addr += block_size; + + alloc_info[i].pPrivateDriverData = priv_data; + alloc_info[i].PrivateDriverDataSize = priv_drv_data_size; + alloc_info[i].VidPnSourceId = D3DDDI_ID_UNINITIALIZED; + } + + D3DKMT_CREATEALLOCATION args = {}; + args.hDevice = device_->DeviceHandle(); + args.pPrivateDriverData = alloc_priv; + args.PrivateDriverDataSize = alloc_priv_data_size; + args.NumAllocations = num_allocations; + args.pAllocationInfo2 = alloc_info; + + SharedHandleInfo shared_info; + if (IsShared()) { + shared_info.size = desc_.size; + shared_info.client_size = desc_.client_size; + shared_info.domain = desc_.domain; + shared_info.adapter_luid = desc_.adapter_luid; + shared_info.flags = reinterpret_cast(desc_.flags.reserved); + shared_info.mem_flags = desc_.mem_flags; + args.pPrivateRuntimeData = &shared_info; + args.PrivateRuntimeDataSize = sizeof(shared_info); + args.Flags.NtSecuritySharing = 1; + args.Flags.CreateShared = 1; + args.Flags.CreateResource = 1; + } + + auto status = thunk::CreateAllocation(&args); + if (status == ErrorCode::Success) { + for (size_t i = 0; i < num_allocations; i++) + alloc_handles_ptr_[i] = alloc_info[i].hAllocation; + + resource_ = args.hResource; + } + rocr_proxy::DestroyPrivateAllocInfo(priv_drv_data, alloc_priv); + return status; +} + +ErrorCode GpuMemory::FreePhysicalMemory() { + auto code = ErrorCode::Success; + + if (alloc_handles_ptr_ == nullptr || (NumChunks() == 1 && *alloc_handles_ptr_ == 0)) + return code; + + code = thunk::DestroyAllocation(device_->DeviceHandle(), + resource_, + NumChunks(), + alloc_handles_ptr_); + if (NumChunks() > 1) + delete[] alloc_handles_ptr_; + + alloc_handles_ptr_ = nullptr; + return code; +} + +ErrorCode GpuMemory::MakeResident() { + + D3DDDI_MAKERESIDENT args = {}; + args.hPagingQueue = device_->PagingQueue(); + args.NumAllocations = NumChunks(); + args.AllocationList = alloc_handles_ptr_; + args.Flags.CantTrimFurther = 1; + + auto code = thunk::MakeResident(&args); + if (code == ErrorCode::NotReady) { + const auto fence_value = args.PagingFenceValue; + device_->UpdatePageFence(fence_value); + code = ErrorCode::Success; + } + return code; +} + +ErrorCode GpuMemory::Evict() { + + D3DKMT_EVICT args = {}; + args.hDevice = device_->DeviceHandle(); + args.NumAllocations = NumChunks(); + args.AllocationList = alloc_handles_ptr_; + + return thunk::Evict(&args); +} + +ErrorCode GpuMemory::ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags) { + if (IsShared()) + return thunk::ShareObjects(num_allocations_, resource_, flags, dmabuf_fd); + else + return ErrorCode::UnSupported; +} + + +ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { + D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE query_args; + + if (dmabuf_fd <= 0) + return ErrorCode::InvalidateParams; + + memset(&query_args, 0, sizeof(query_args)); + query_args.hDevice = device_->DeviceHandle(); + query_args.hNtHandle = reinterpret_cast(dmabuf_fd); + auto ret = thunk::QueryResourceInfoFromNtHandle(&query_args); + if (ret != ErrorCode::Success) { + debug_print("%s query resource info from nt handle failed %d\n", __FUNCTION__, static_cast(ret)); + return ErrorCode::InvalidateParams; + } + debug_print("wsl-rocr: import from nt handle %d, get allocation number %d," + " runtime data size %" PRIx64 " total driver data size %" PRIx64 "resource data size=%" PRIx64 "\n", + dmabuf_fd, + query_args.NumAllocations, + query_args.PrivateRuntimeDataSize, + query_args.TotalPrivateDriverDataSize, + query_args.ResourcePrivateDriverDataSize); + + SharedHandleInfo shared_info; + if(sizeof(shared_info) != query_args.PrivateRuntimeDataSize) { + debug_print("%s shared hanle info size mismatch:%d vs %ld\n", + __FUNCTION__, query_args.PrivateRuntimeDataSize, sizeof(shared_info)); + return ErrorCode::UnSupported; + } + + uint32_t total_size = query_args.NumAllocations * sizeof(D3DDDI_OPENALLOCATIONINFO2) + + query_args.TotalPrivateDriverDataSize + + query_args.ResourcePrivateDriverDataSize; + D3DDDI_OPENALLOCATIONINFO2 *open_info = + reinterpret_cast (calloc(1, total_size)); + if (!open_info) { + debug_print("%s alloc open_info failed, NumAllocations:%d\n", + __FUNCTION__, query_args.NumAllocations); + return ErrorCode::OutOfMemory; + } + + alloc_handles_ptr_ = new WinAllocationHandle[query_args.NumAllocations]; + + D3DKMT_OPENRESOURCEFROMNTHANDLE open_args; + memset(&open_args, 0, sizeof(open_args)); + open_args.hDevice = query_args.hDevice; + open_args.hNtHandle = query_args.hNtHandle; + open_args.NumAllocations = query_args.NumAllocations; + open_args.pOpenAllocationInfo2 = open_info; + open_args.TotalPrivateDriverDataBufferSize = query_args.TotalPrivateDriverDataSize; + open_args.pTotalPrivateDriverDataBuffer = reinterpret_cast + (open_args.pOpenAllocationInfo2 + open_args.NumAllocations); + open_args.ResourcePrivateDriverDataSize = query_args.ResourcePrivateDriverDataSize; + open_args.pResourcePrivateDriverData = reinterpret_cast + (((uint64_t)open_args.pTotalPrivateDriverDataBuffer) + + open_args.TotalPrivateDriverDataBufferSize); + open_args.PrivateRuntimeDataSize = query_args.PrivateRuntimeDataSize; + open_args.pPrivateRuntimeData = reinterpret_cast (&shared_info); + + ret = thunk::OpenResourceFromNtHandle(&open_args); + if (ret != ErrorCode::Success) { + ret = ErrorCode::InvalidateParams; + debug_print("%s open resource failed %d\n", __FUNCTION__, static_cast(ret)); + goto err_out; + } + + desc_.size = shared_info.size; + desc_.client_size = shared_info.client_size; + desc_.domain = shared_info.domain; + desc_.flags.reserved = shared_info.flags; + desc_.mem_flags = shared_info.mem_flags; + desc_.adapter_luid = shared_info.adapter_luid; + resource_ = open_args.hResource; + num_allocations_ = open_args.NumAllocations; + for (int i = 0; i < num_allocations_; i++) + alloc_handles_ptr_[i] = open_info[i].hAllocation; + + free(open_info); + return ErrorCode::Success; + +err_out: + delete[] alloc_handles_ptr_; + alloc_handles_ptr_ = nullptr; + free(open_info); + return ret; +} + +} // namespace code +} // namespace rocr diff --git a/wddm/queue.cpp b/wddm/queue.cpp new file mode 100644 index 0000000000..e6856fbd75 --- /dev/null +++ b/wddm/queue.cpp @@ -0,0 +1,989 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// The University of Illinois/NCSA +// Open Source License (NCSA) +// +// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. +// +// Developed by: +// +// AMD Research and AMD HSA Software Development +// +// Advanced Micro Devices, Inc. +// +// www.amd.com +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal with 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: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in +// the documentation and/or other materials provided with the distribution. +// - Neither the names of Advanced Micro Devices, Inc, +// nor the names of its contributors may be used to endorse or promote +// products derived from this Software without specific prior written +// permission. +// +// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include + +#include "inc/wddm/queue.h" +#include "inc/registers.h" +#include "libhsakmt.h" + +namespace rocr { +namespace core { + +hsa_status_t WDDMQueue::SwsInit(void) { + if (!device->CreateSyncobj(&syncobj, &sync_addr)) + return HSA_STATUS_ERROR; + + if (device->AllocUserQueueMemFromUMD()) { + + GpuMemory *gpu_mem = nullptr; + GpuMemoryCreateInfo create_info{}; + + create_info.domain = rocr_proxy::kUserQueue; + create_info.size = device->GetSwsQueueSize(); + create_info.engine_flag = rocr_proxy::QueueEngine2EngineFlag(queue_engine); + + auto code = device->CreateGpuMemory(create_info, &gpu_mem); + if (code != ErrorCode::Success) { + device->DestroySyncobj(syncobj); + return HSA_STATUS_ERROR; + } + + queue_mem = gpu_mem->GetGpuMemoryHandle(); + queue = gpu_mem->GetAllocationHandle(0); + } + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::SwsFini(void) { + device->DestroySyncobj(syncobj); + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::SwsSubmit(uint64_t command_addr, + uint64_t command_size, + uint64_t fence_value) { + if (!device->SubmitToSwQueue(this, command_addr, command_size, fence_value)) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::HwsInit(void) { + if (!device->CreateHwQueue(this)) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::HwsFini(void) { + if (!device->DestroyHwQueue(this)) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::HwsSubmit(uint64_t command_addr, + uint64_t command_size, + uint64_t fence_value) { + if (!device->SubmitToHwQueue(this, command_addr, command_size, fence_value)) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t WDDMQueue::SetPriority(hsa_amd_queue_priority_t priority) { + if (!use_hws) + return HSA_STATUS_SUCCESS; + + rocr_proxy::SchedLevel new_prio = ConvertSchedLevel(priority); + if (prio == new_prio) + return HSA_STATUS_SUCCESS; + + debug_print("set prio %d -> %d\n", prio, new_prio); + device->DestroyHwQueue(this); + + prio = new_prio; + return HwsInit(); +} + +extern "C" void (*fn_hsa_signal_store_screlease)(hsa_signal_t hsa_signal, hsa_signal_value_t value); +void ComputeQueue::HandleError(hsa_status_t status) { + hsa_signal_t sig = amd_queue_rocr_->queue_inactive_signal; + hsa_signal_value_t val = -1; + + struct queue_error_t { + uint32_t code; + hsa_status_t status; + }; + static const queue_error_t QueueErrors[] = { + {2, HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS}, + {4, HSA_STATUS_ERROR_INVALID_ALLOCATION}, + {8, HSA_STATUS_ERROR_INVALID_CODE_OBJECT}, + //{16, HSA_STATUS_ERROR_INVALID_ARGUMENT}, + {32, HSA_STATUS_ERROR_INVALID_PACKET_FORMAT}, + {64, HSA_STATUS_ERROR_INVALID_ARGUMENT}, + //{128, HSA_STATUS_ERROR_OUT_OF_REGISTERS}, + //{0x20000000, HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION}, + //{0x40000000, HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION}, + {0x80000000, HSA_STATUS_ERROR_EXCEPTION}, + }; + for (std::size_t i = 0; i < sizeof(QueueErrors) / sizeof(QueueErrors[0]); ++i) { + if (QueueErrors[i].status == status) { + val = QueueErrors[i].code; + debug_print("error %d, sig_val %d\n", status, val); + break; + } + } + + if (sig.handle) { + fn_hsa_signal_store_screlease(sig, val); + } + if (error_code_) { + error_code_->store(val, std::memory_order_release); + } +} + +void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { + + ComputeQueue *cq = queue; + // This timing system is used for sleeping this Thread + // when one packet is invalid for about 2 seconds. + std::chrono::steady_clock::time_point start_time, time; + // Set the polling timeout value for 2 seconds + const std::chrono::milliseconds kMaxElapsed(2000); + uint64_t current_position = cq->GetAqlWriteIndex(); + bool sleep = false; + start_time = std::chrono::steady_clock::now(); + + while (true) { + if (!cq->IsInvalidPacket()) { + hsa_status_t status = cq->Process(); + if (status != HSA_STATUS_SUCCESS) { + fprintf(stderr, "process compute queue fail status = %08x\n", status); + queue->HandleError(status); + break; + } + } + + std::unique_lock lock(queue->thread_cond_lock_); + if (current_position == cq->GetAqlWriteIndex()) { + time = std::chrono::steady_clock::now(); + if (time - start_time > kMaxElapsed) + sleep = true; + } else { + start_time = std::chrono::steady_clock::now(); + current_position = cq->GetAqlWriteIndex(); + sleep = false; + } + // CPU wait for valid packet + if (cq->GetRingWptr()->load() <= cq->GetRingRptr()->load() || + (sleep && cq->IsInvalidPacket())) { + if (queue->thread_stop_) + break; + debug_print("wait %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + queue->ring, cq->GetRingWptr()->load(), cq->GetRingRptr()->load()); + queue->thread_cond_.wait(lock); + } + } + + debug_print("aql to pm4 thread %p exit\n", queue->ring); +} + +ComputeQueue::ComputeQueue(WDDMDevice *device, + void *ring, + uint64_t ring_size, + std::atomic *ring_wptr, + std::atomic *ring_rptr, + volatile int64_t *error_addr, + uint32_t cmdbuf_size, + uint32_t engine, + bool use_hws) : + WDDMQueue(device, cmdbuf_size, engine, use_hws), + ring(ring), + ring_size(ring_size), + ring_wptr(ring_wptr), + ring_rptr(ring_rptr), + error_code_(reinterpret_cast*>(error_addr)), + ib_start_addr(0), + ib_size(0), + sync_point(0), + cmdbuf_aql_frame_write_index(0), + cmdbuf_aql_frame_size(0), + needs_barrier(true), + ready_to_submit(false), + thread_stop_(false), + scratch_waves_(device->MaxScratchSlotsPerCu() * device->ComputeUnitCount()), + scratch_size_per_wave_(0), + scratch_size_(0), + scratch_base_(nullptr) { + + bool ret = device->CreateQueue(this); + assert(ret); + + GpuMemoryCreateInfo create_info{}; + create_info.size = PAGE_SIZE; + create_info.domain = rocr_proxy::kSystem; + GpuMemory *gpu_mem = nullptr; + auto code = device->CreateGpuMemory(create_info, &gpu_mem); + assert(code == ErrorCode::Success); + amd_queue_mem_ = gpu_mem->GetGpuMemoryHandle(); + amd_queue_ = reinterpret_cast(gpu_mem->GpuAddress()); + + aql_to_pm4_thread_ = std::thread(AqlToPm4Thread, this); + amd_queue_rocr_ = (amd_queue_t*)((char*)ring_rptr - offsetof(amd_queue_t, read_dispatch_id)); +} + +ComputeQueue::~ComputeQueue() { + thread_cond_lock_.lock(); + thread_stop_ = true; + thread_cond_lock_.unlock(); + thread_cond_.notify_one(); + aql_to_pm4_thread_.join(); + + //doorbell_signal_->Release(); + + device->DestroyQueue(this); + + if (scratch_base_) { + auto scratch_gpu_mem = GpuMemory::Convert(scratch_mem_); + delete scratch_gpu_mem; + } + + auto amd_queue_gpu_mem = GpuMemory::Convert(amd_queue_mem_); + delete amd_queue_gpu_mem; +} + +void ComputeQueue::InitScratchSRD() { + // Populate scratch resource descriptor + SQ_BUF_RSRC_WORD0 srd0; + + uintptr_t scratch_base = uintptr_t(scratch_base_); + srd0.bits.BASE_ADDRESS = scratch_base; + + uint32_t srd1_u32; + + if (device->Major() < 11) { + SQ_BUF_RSRC_WORD1 srd1; + + srd1.bits.BASE_ADDRESS_HI = scratch_base >> 32; + srd1.bits.STRIDE = 0; + srd1.bits.CACHE_SWIZZLE = 0; + srd1.bits.SWIZZLE_ENABLE = 1; + + srd1_u32 = srd1.u32All; + } else { + SQ_BUF_RSRC_WORD1_GFX11 srd1; + + srd1.bits.BASE_ADDRESS_HI = scratch_base >> 32; + srd1.bits.STRIDE = 0; + srd1.bits.SWIZZLE_ENABLE = 1; + + srd1_u32 = srd1.u32All; + } + + SQ_BUF_RSRC_WORD2 srd2; + + srd2.bits.NUM_RECORDS = scratch_size_; + + uint32_t srd3_u32; + + if (device->Major() < 10) { + SQ_BUF_RSRC_WORD3 srd3; + + srd3.bits.DST_SEL_X = SQ_SEL_X; + srd3.bits.DST_SEL_Y = SQ_SEL_Y; + srd3.bits.DST_SEL_Z = SQ_SEL_Z; + srd3.bits.DST_SEL_W = SQ_SEL_W; + srd3.bits.NUM_FORMAT = BUF_NUM_FORMAT_UINT; + srd3.bits.DATA_FORMAT = BUF_DATA_FORMAT_32; + srd3.bits.ELEMENT_SIZE = 1; // 4 + srd3.bits.INDEX_STRIDE = 3; // 64 + srd3.bits.ADD_TID_ENABLE = 1; + srd3.bits.ATC__CI__VI = 0; + srd3.bits.HASH_ENABLE = 0; + srd3.bits.HEAP = 0; + srd3.bits.MTYPE__CI__VI = 0; + srd3.bits.TYPE = SQ_RSRC_BUF; + + srd3_u32 = srd3.u32All; + } else if (device->Major() == 10) { + SQ_BUF_RSRC_WORD3_GFX10 srd3; + + srd3.bits.DST_SEL_X = SQ_SEL_X; + srd3.bits.DST_SEL_Y = SQ_SEL_Y; + srd3.bits.DST_SEL_Z = SQ_SEL_Z; + srd3.bits.DST_SEL_W = SQ_SEL_W; + srd3.bits.FORMAT = BUF_FORMAT_32_UINT; + srd3.bits.RESERVED1 = 0; + srd3.bits.INDEX_STRIDE = 0; // filled in by CP + srd3.bits.ADD_TID_ENABLE = 1; + srd3.bits.RESOURCE_LEVEL = 1; + srd3.bits.RESERVED2 = 0; + srd3.bits.OOB_SELECT = 2; // no bounds check in swizzle mode + srd3.bits.TYPE = SQ_RSRC_BUF; + + srd3_u32 = srd3.u32All; + } else if (device->Major() == 11) { + SQ_BUF_RSRC_WORD3_GFX11 srd3; + + srd3.bits.DST_SEL_X = SQ_SEL_X; + srd3.bits.DST_SEL_Y = SQ_SEL_Y; + srd3.bits.DST_SEL_Z = SQ_SEL_Z; + srd3.bits.DST_SEL_W = SQ_SEL_W; + srd3.bits.FORMAT = BUF_FORMAT_32_UINT; + srd3.bits.RESERVED1 = 0; + srd3.bits.INDEX_STRIDE = 0; // filled in by CP + srd3.bits.ADD_TID_ENABLE = 1; + srd3.bits.RESERVED2 = 0; + srd3.bits.OOB_SELECT = 2; // no bounds check in swizzle mode + srd3.bits.TYPE = SQ_RSRC_BUF; + + srd3_u32 = srd3.u32All; + } else { + SQ_BUF_RSRC_WORD3_GFX12 srd3; + srd3.bits.DST_SEL_X = SQ_SEL_X; + srd3.bits.DST_SEL_Y = SQ_SEL_Y; + srd3.bits.DST_SEL_Z = SQ_SEL_Z; + srd3.bits.DST_SEL_W = SQ_SEL_W; + srd3.bits.FORMAT = BUF_FORMAT_32_UINT; + srd3.bits.RESERVED1 = 0; + srd3.bits.INDEX_STRIDE = 0; // filled in by CP + srd3.bits.ADD_TID_ENABLE = 1; + srd3.bits.WRITE_COMPRESS_ENABLE = 0; + srd3.bits.COMPRESSION_EN = 0; + srd3.bits.COMPRESSION_ACCESS_MODE = 0; + srd3.bits.OOB_SELECT = 2; // no bounds check in swizzle mode + srd3.bits.TYPE = SQ_RSRC_BUF; + + srd3_u32 = srd3.u32All; + } + + // Update Queue's Scratch descriptor's property + amd_queue_->scratch_resource_descriptor[0] = srd0.u32All; + amd_queue_->scratch_resource_descriptor[1] = srd1_u32; + amd_queue_->scratch_resource_descriptor[2] = srd2.u32All; + amd_queue_->scratch_resource_descriptor[3] = srd3_u32; + + // Populate flat scratch parameters in amd_queue_. + amd_queue_->scratch_backing_memory_location = scratch_base; + amd_queue_->scratch_backing_memory_byte_size = scratch_size_; + + // For backwards compatibility this field records the per-lane scratch + // for a 64 lane wavefront. If scratch was allocated for 32 lane waves + // then the effective size for a 64 lane wave is halved. + amd_queue_->scratch_wave64_lane_byte_size = scratch_size_per_wave_ / 64; + + if (device->Major() < 11) { + COMPUTE_TMPRING_SIZE tmpring_size; + tmpring_size.bits.WAVESIZE = scratch_size_per_wave_ / 1024; + tmpring_size.bits.WAVES = scratch_waves_; + + amd_queue_->compute_tmpring_size = tmpring_size.u32All; + } else if (device->Major() == 11) { + COMPUTE_TMPRING_SIZE_GFX11 tmpring_size; + tmpring_size.bits.WAVESIZE = scratch_size_per_wave_ >> 8; + tmpring_size.bits.WAVES = scratch_waves_ / device->NumShaderEngine(); + + amd_queue_->compute_tmpring_size = tmpring_size.u32All; + } else { + COMPUTE_TMPRING_SIZE_GFX12 tmpring_size = {}; + tmpring_size.bits.WAVESIZE = scratch_size_per_wave_ >> 8; + tmpring_size.bits.WAVES = scratch_waves_ / device->NumShaderEngine(); + + amd_queue_->compute_tmpring_size = tmpring_size.u32All; + } + + return; +} + +bool ComputeQueue::UpdateScratch(uint32_t private_segment_size, bool wave32) { + const uint32_t wavefront = wave32 ? 32 : 64; + const uint32_t alignment = 1024 / wavefront; + private_segment_size = AlignUp(private_segment_size, alignment); + + uint32_t scratch_size_per_wave = private_segment_size * wavefront; + uint32_t scratch_size = scratch_size_per_wave * scratch_waves_; + + if (scratch_size_ >= scratch_size) + return true; + + debug_print("need realloc scratch buffer, size %x -> %x\n", + scratch_size_, scratch_size); + + GpuMemoryCreateInfo create_info{}; + create_info.size = scratch_size; + create_info.domain = rocr_proxy::kLocal; + GpuMemory *gpu_mem = nullptr; + auto code = device->CreateGpuMemory(create_info, &gpu_mem); + if (code != ErrorCode::Success) + return false; + + if (scratch_base_) { + auto scratch_gpu_mem = GpuMemory::Convert(scratch_mem_); + delete scratch_gpu_mem; + } + + scratch_size_per_wave_ = scratch_size_per_wave; + scratch_size_ = scratch_size; + scratch_base_ = reinterpret_cast(gpu_mem->GpuAddress()); + scratch_mem_ = gpu_mem->GetGpuMemoryHandle(); + + InitScratchSRD(); + return true; +} + +bool ComputeQueue::RelocateCmdbufScratchBase(uint64_t addr) { + if (scratch_base_offset_array_.empty()) + return true; + + for (size_t i = 0; i < scratch_base_offset_array_.size(); i++) { + uint32_t *p_compute_user_data = + reinterpret_cast(addr + scratch_base_offset_array_[i]); + if (device->Major() >= 11) { + p_compute_user_data[0] = Ptr48Low32(scratch_base_); + p_compute_user_data[1] = Ptr48High8(scratch_base_); + } else { + p_compute_user_data[0] = PtrLow32(scratch_base_); + p_compute_user_data[1] = (p_compute_user_data[1] & 0xffff0000) | PtrHigh32(scratch_base_); + } + } + scratch_base_offset_array_.clear(); + + return true; +} + +uint32_t ComputeQueue::UpdateIndexStride(uint32_t srd, bool wave32) { + + assert(device->Major() < 13); + + if (device->Major() == 10) { + SQ_BUF_RSRC_WORD3_GFX10 srd3; + + srd3.u32All = srd; + srd3.bits.INDEX_STRIDE = wave32 ? 2 : 3; + + return srd3.u32All; + } else if (device->Major() == 11) { + SQ_BUF_RSRC_WORD3_GFX11 srd3; + + srd3.u32All = srd; + srd3.bits.INDEX_STRIDE = wave32 ? 2 : 3; + + return srd3.u32All; + } else if (device->Major() == 12) { + SQ_BUF_RSRC_WORD3_GFX12 srd3; + + srd3.u32All = srd; + srd3.bits.INDEX_STRIDE = wave32 ? 2 : 3; + + return srd3.u32All; + } + + return srd; +} + +extern "C" hsa_status_t (*fn_hsa_ven_amd_loader_query_host_address)( + const void *device_address, + const void **host_address); +uint64_t ComputeQueue::GetKernelObjAddr(uint64_t addr) const { +//TODO: convert dev_addr to host_addr + uint64_t host_addr = 0; + auto ret = fn_hsa_ven_amd_loader_query_host_address(reinterpret_cast(addr), + reinterpret_cast(&host_addr)); + if (ret == HSA_STATUS_ERROR_INVALID_ARGUMENT) { + return NULL; + } + + return host_addr; +} + +void ComputeQueue::RingDoorbell() { + thread_cond_lock_.lock(); + thread_cond_lock_.unlock(); + debug_print("notify %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, GetRingWptr()->load(), GetRingRptr()->load()); + thread_cond_.notify_one(); +} + +hsa_status_t ComputeQueue::Init(void) { + hsa_status_t ret = use_hws ? HwsInit() : SwsInit(); + if (ret) + return ret; + + ib_start_addr = cmdbuf_addr; + cmdbuf_aql_frame_size = device->GetAqlFrameSize(); + + return ret; +} + +hsa_status_t ComputeQueue::Fini(void) { + return use_hws ? HwsFini() : SwsFini(); +} + +hsa_status_t ComputeQueue::PreSubmit(void) { + if (!device->WaitPagingFence(this)) + return HSA_STATUS_ERROR; + + RelocateCmdbufScratchBase(ib_start_addr); + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t ComputeQueue::EndSubmit(void) { + // record last submitted cmdbuf_aql_frame_write_index to see if GPU is hungry + sync_point = cmdbuf_aql_frame_write_index; + + ib_start_addr = cmdbuf_addr + + (cmdbuf_aql_frame_write_index % WDDMDevice::GetAqlFrameNum()) * + cmdbuf_aql_frame_size; + ib_size = 0; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t ComputeQueue::Submit(void) { + hsa_status_t ret = PreSubmit(); + if (ret) + return HSA_STATUS_ERROR; + + ret = use_hws ? + HwsSubmit(ib_start_addr, ib_size, cmdbuf_aql_frame_write_index) : + SwsSubmit(ib_start_addr, ib_size, cmdbuf_aql_frame_write_index); + if (ret) + return HSA_STATUS_ERROR; + + ret = EndSubmit(); + if (ret) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t +ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *packet) { + debug_print("queue %p kernel dispatch head=%x setup=%x wx=%x wy=%x wz=%x " + "gx=%x gy=%x gz=%x ps=%x gs=%x ko=%" PRIx64 " ka=%p cs=%" PRIx64 "\n", + ring, packet->header, + packet->setup, packet->workgroup_size_x, packet->workgroup_size_y, + packet->workgroup_size_z, packet->grid_size_x, packet->grid_size_y, + packet->grid_size_z, packet->private_segment_size, + packet->group_segment_size, packet->kernel_object, packet->kernarg_address, + packet->completion_signal.handle); + + if (packet->workgroup_size_x > 1024 || + packet->workgroup_size_y > 1024 || + packet->workgroup_size_z > 1024) + return HSA_STATUS_ERROR_INVALID_ARGUMENT; + + int major = device->Major(); + int i = ib_size; + + const amd_kernel_code_t* kernel_object = + (const amd_kernel_code_t *)GetKernelObjAddr(packet->kernel_object); + if (kernel_object == NULL) { + return HSA_STATUS_ERROR_INVALID_CODE_OBJECT; + } + + void* entry = (void*)(packet->kernel_object + kernel_object->kernel_code_entry_byte_offset); + assert((size_t)entry % AMD_ISA_ALIGN_BYTES == 0); + + debug_print("kernel object property=%x entry=%p lds=%x+%x\n", + kernel_object->kernel_code_properties, entry, + kernel_object->workgroup_group_segment_byte_size, + packet->group_segment_size); + + if (packet->setup == 0 || packet->setup > 3) + return HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS; + if (packet->group_segment_size > device->LdsSize()) + return HSA_STATUS_ERROR_INVALID_ALLOCATION; + + uint32_t lds_blks = device->LdsBlocks(packet); + if (lds_blks > 128) + return HSA_STATUS_ERROR_INVALID_ARGUMENT; + + const bool wave32 = + AMD_HSA_BITS_GET(kernel_object->kernel_code_properties, + AMD_KERNEL_CODE_PROPERTIES_ENABLE_WAVEFRONT_SIZE32); + + assert(packet->private_segment_size >= kernel_object->workitem_private_segment_byte_size); + UpdateScratch(packet->private_segment_size, wave32); + + amd_signal_t *signal = (amd_signal_t *)packet->completion_signal.handle; + + // Record start timestamp when enabling profiling + if (signal && EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->start_ts, cpu + i); + + // Build a barrier packet if it is requested + const bool is_barrier_packet = (packet->header >> HSA_PACKET_HEADER_BARRIER) & 0x1; + if (is_barrier_packet && needs_barrier) + i += cmd_util.BuildBarrier(cpu + i); + + // flush cache + i += cmd_util.BuildAcquireMem(major, cpu + i); + + if (major >= 11) { + AppendCmdbufSratchBaseOffset( + i + offsetof(struct SetScratchTemplate, scratch_lo)); + + i += cmd_util.BuildScratch(ScratchBase(), cpu + i); + i += cmd_util.BuildComputeShaderParams(cpu + i); + } + + struct DispatchInfo info; + info.major = major; + info.pPacket = packet; + info.pEntry = entry; + info.pKernelObject = kernel_object; + info.ldsBlks = lds_blks; + info.pAmdQueue = amd_queue_; + info.wave32 = wave32; + info.srd = UpdateIndexStride( + info.pAmdQueue->scratch_resource_descriptor[3], wave32); + info.pScratchBase = ScratchBase(); + info.scratchSizePerWave = ScratchSizePerWave(); + memset(info.scratchBaseOffset, 0, sizeof(info.scratchBaseOffset)); + info.offsetCnt = 0; + + size_t size; + size = cmd_util.BuildDispatch(&info, cpu + i); + for (int j = 0; j < info.offsetCnt; j++) + AppendCmdbufSratchBaseOffset(i + info.scratchBaseOffset[j]); + i += size; + + needs_barrier = (packet->completion_signal.handle == 0); + + if (signal) { + // wait cs done + i += cmd_util.BuildBarrier(cpu + i); + + // Record end timestamp when enabling profiling + if (EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->end_ts, cpu + i); + + // flush cache + i += cmd_util.BuildAcquireMem(major, cpu + i); + + assert(signal->kind == AMD_SIGNAL_KIND_USER); + uint64_t *signal_addr = (uint64_t *)&signal->value; + debug_print("signal value=%" PRIx64 "\n", signal->value); + + i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + } + + // The ring_rptr is used to record pm4 queue rptr value, + // dispatch readptr position, this is used to share rptr with + // aql queue. + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + + ib_size = i; + cmdbuf_aql_frame_write_index++; + packet->header = HSA_PACKET_TYPE_INVALID; + + return HSA_STATUS_SUCCESS; +} + +extern "C" hsa_signal_value_t (*fn_hsa_signal_load_relaxed)( + hsa_signal_t signal); +extern "C" hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( + hsa_signal_t signal, + hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, + uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint); +hsa_status_t +ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet, bool is_or) { + debug_print("queue %p %s head=%x dep %" PRIx64 " %" PRIx64 " %" PRIx64 + " %" PRIx64 " %" PRIx64 " cs=%" PRIx64"\n", + ring, is_or ? "or" : "and", + packet->header, packet->dep_signal[0].handle, + packet->dep_signal[1].handle, packet->dep_signal[2].handle, + packet->dep_signal[3].handle, packet->dep_signal[4].handle, + packet->completion_signal.handle); + // fix me: can we use gpu packet? + if (is_or) { + bool unsignaled = true; + hsa_signal_t sig[5]; + int n = 0; + for (int i = 0; i < 5; i++) { + if (packet->dep_signal[i].handle) + sig[n++] = packet->dep_signal[i]; + } + + while (n) { + for (int i = 0; i < n; i++) { + if (!fn_hsa_signal_load_relaxed(sig[i])) { + unsignaled = false; + break; + } + } + if (!unsignaled) + break; + + std::this_thread::sleep_for(std::chrono::microseconds(20)); + } + } else { + for (int i = 0; i < 5; i++) { + if (!packet->dep_signal[i].handle) + continue; + + hsa_signal_value_t value = + fn_hsa_signal_wait_relaxed(packet->dep_signal[i], HSA_SIGNAL_CONDITION_EQ, 0, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); + assert(value == 0); + } + } + + int major = device->Major(); + int i = ib_size; + + if (packet->completion_signal.handle != 0) { + amd_signal_t *signal = (amd_signal_t *)packet->completion_signal.handle; + assert(signal->kind == AMD_SIGNAL_KIND_USER); + uint64_t *signal_addr = (uint64_t *)&signal->value; + debug_print("signal value=%" PRIx64 "\n", signal->value); + + // Record start timestamp when enabling profiling + if (EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->start_ts, cpu + i); + + if (needs_barrier) + i += cmd_util.BuildBarrier(cpu + i); + + needs_barrier = false; + + // Record end timestamp when enabling profiling + if (EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->end_ts, cpu + i); + + // flush cache + i += cmd_util.BuildAcquireMem(major, cpu + i); + + i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + } + + // The ring_rptr is used to record pm4 queue rptr value, + // dispatch readptr position, this is used to share rptr with + // aql queue. + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + + ib_size = i; + cmdbuf_aql_frame_write_index++; + packet->header = HSA_PACKET_TYPE_INVALID; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *packet) { + constexpr uint32_t AMD_AQL_FORMAT_PM4_IB = 0x1; + assert(packet->ven_hdr == AMD_AQL_FORMAT_PM4_IB); + + uint8_t op = (packet->ib_jump_cmd[0] >> PM4_OPCODE_SHIFT) & 0xff; + assert(op == IT_INDIRECT_BUFFER); + uint32_t* pm4_addr = reinterpret_cast((static_cast(packet->ib_jump_cmd[2]) << 32) | (static_cast(packet->ib_jump_cmd[1]) & ~3ull)); + uint32_t pm4_size = packet->ib_jump_cmd[3]&0xfffff; + debug_print("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %" PRIx64 " cs=%" PRIx64"\n", + ring, vendor_packet_support ? "process" : "skip", pm4_addr, pm4_size, + packet->completion_signal.handle); + for (int i = 0; i < pm4_size; i++) { + debug_print("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); + } + + if (vendor_packet_support) { + int major = device->Major(); + int i = ib_size; + + memcpy(cpu+i, pm4_addr, pm4_size * sizeof(uint32_t)); + i += pm4_size * sizeof(uint32_t); + + if (packet->completion_signal.handle != 0) { + amd_signal_t *signal = (amd_signal_t *)packet->completion_signal.handle; + assert(signal->kind == AMD_SIGNAL_KIND_USER); + uint64_t *signal_addr = (uint64_t *)&signal->value; + debug_print("signal value=%" PRIx64 "\n", signal->value); + + // Record start timestamp when enabling profiling + if (EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->start_ts, cpu + i); + + //if (needs_barrier) + i += cmd_util.BuildBarrier(cpu + i); + + //needs_barrier = false; + + // Record end timestamp when enabling profiling + if (EnableProfiling()) + i += cmd_util.BuildCopyData(&signal->end_ts, cpu + i); + + // flush cache + i += cmd_util.BuildAcquireMem(major, cpu + i); + + i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + } + + // The ring_rptr is used to record pm4 queue rptr value, + // dispatch readptr position, this is used to share rptr with + // aql queue. + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + + ib_size = i; + } else { + if (packet->completion_signal.handle != 0) { + fn_hsa_signal_store_screlease(packet->completion_signal, 0); + } + } + + cmdbuf_aql_frame_write_index++; + packet->header = HSA_PACKET_TYPE_INVALID; + return HSA_STATUS_SUCCESS; +} + +hsa_status_t ComputeQueue::SwitchAql2PM4(void) { + + uint16_t *packet = (uint16_t *) ((char *)ring + + (cmdbuf_aql_frame_write_index % ring_size) * 64); + uint16_t header = (*packet >> HSA_PACKET_HEADER_TYPE); + header &= (1 << HSA_PACKET_HEADER_WIDTH_TYPE) - 1; + hsa_kernel_dispatch_packet_t *aql_packet = + (hsa_kernel_dispatch_packet_t *)packet; + hsa_status_t ret; + + switch (header) { + case HSA_PACKET_TYPE_KERNEL_DISPATCH: + ret = KernelDispatchAqlToPm4((char *)ib_start_addr, aql_packet); + if (ret != HSA_STATUS_SUCCESS) + return ret; + + // Stop merging packages util below conditions are met: + // 1) The kernel with completion signal; + // 2) The cmdbuf_aql_frame_write_index reaches the end of cmdbuf + // 3) The queue is empty now, submit the package right now. + if (!(aql_packet->completion_signal.handle) && + (cmdbuf_aql_frame_write_index % WDDMDevice::GetAqlFrameNum()) && + (*sync_addr != sync_point)) + return HSA_STATUS_SUCCESS; + + break; + case HSA_PACKET_TYPE_BARRIER_AND: + BarrierGenericAqlToPm4((char *)ib_start_addr, (hsa_barrier_and_packet_t *)aql_packet); + break; + case HSA_PACKET_TYPE_BARRIER_OR: + BarrierGenericAqlToPm4((char *)ib_start_addr, (hsa_barrier_and_packet_t *)aql_packet, true); + break; + case HSA_PACKET_TYPE_VENDOR_SPECIFIC: + VendorSpecificAqlToPm4((char *)ib_start_addr, (amd_aql_pm4_ib *)aql_packet); + break; + case HSA_PACKET_TYPE_INVALID: + // When packets are submitted out of order, the format field of current AQL packet + // may not have been updated yet and is still INVALID. Return HSA_STATUS_SUCCESS and + // do not process AQL packets before the packet format field is updated. + assert(false && "Should not reach here, HSA_PACKET_TYPE_INVALID has been filtered in upper layer"); + return HSA_STATUS_SUCCESS; + default: + return HSA_STATUS_ERROR_INVALID_PACKET_FORMAT; + } + + ready_to_submit = true; + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t ComputeQueue::Process(void) { + + while (cmdbuf_aql_frame_write_index < ring_wptr->load() && + !IsInvalidPacket()) { + debug_print("process %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, ring_wptr->load(), ring_rptr->load()); + + hsa_status_t ret; + + // wait for next few cmdbuf slots to be free + // If wptr catch up the rptr in the cmdbuf, this needs wait for the rptr to free the cmdbuf. + // Here the wptr comes from queue->cmdbuf_aql_frame_write_index, while rptr comes from *queue->sync_addr. + if (*sync_addr + WDDMDevice::GetAqlFrameNum() <= cmdbuf_aql_frame_write_index) { + uint64_t value = cmdbuf_aql_frame_write_index - WDDMDevice::GetAqlFrameNum() + 1; + if (!device->CpuWait(&syncobj, &value, 1, false)) + return HSA_STATUS_ERROR; + } + + ret = SwitchAql2PM4(); + if (ret != HSA_STATUS_SUCCESS) + return ret; + + if (!ready_to_submit) + continue; + + ret = Submit(); + if (ret != HSA_STATUS_SUCCESS) + return ret; + + ready_to_submit = false; + + debug_print("done %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, ring_wptr->load(), ring_rptr->load()); + + } + + return HSA_STATUS_SUCCESS; +} + +hsa_status_t SDMAQueue::Init(void) { + hsa_status_t ret = use_hws ? HwsInit() : SwsInit(); + if (ret) + return ret; + + std::memset((char *)cmdbuf_addr, 0, cmdbuf_size); + + return ret; +} + +hsa_status_t SDMAQueue::Fini(void) { + return use_hws ? HwsFini() : SwsFini(); +} + +int SDMAQueue::PreparePacket(uint32_t offset, uint64_t size) { + ib_start_addr = cmdbuf_addr + offset; + ib_size = size; + rptr_next += ib_size; + + return STATUS_SUCCESS; +} + +hsa_status_t SDMAQueue::Submit(void) { + if (!device->WaitPagingFence(this)) + return HSA_STATUS_ERROR; + + int ret = use_hws ? + HwsSubmit(ib_start_addr, ib_size, rptr_next) : + SwsSubmit(ib_start_addr, ib_size, rptr_next); + if (ret) + return HSA_STATUS_ERROR; + + return HSA_STATUS_SUCCESS; +} + +} +} diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp new file mode 100644 index 0000000000..426eaa2a5f --- /dev/null +++ b/wddm/va_mgr.cpp @@ -0,0 +1,163 @@ +#include +#include +#include +#include "inc/wddm/va_mgr.h" + +using namespace std; + +namespace rocr { +namespace core { + +VaMgr::VaMgr(uint64_t start, uint64_t size, uint64_t min_align) { + min_align_ = min_align; + auto free_it = free_list_.insert(make_pair(size, start)); + frag_map_[start] = make_fragment(free_it, size); +} + +VaMgr::~VaMgr() { + + assert(free_list_.size() == 1); + assert(frag_map_.size() == 1); + + free_list_.clear(); + frag_map_.clear(); +} + +uint64_t VaMgr::Alloc(uint64_t bytes, uint64_t align, uint64_t addr) { + + if (addr > 0 && + (align == 0 || (addr % align) == 0)) { + + lock_guard gard(lock_); + auto frag_it = frag_map_.upper_bound(addr); + assert(frag_it != frag_map_.begin()); + --frag_it; + + while (frag_it != frag_map_.begin()) { + const uint64_t base = frag_it->first; + const uint64_t size = frag_it->second.size; + + // Cannot find free fragment contains the target `addr` + if (bytes > size || addr < base || addr + bytes >= base + size || + !is_free(frag_it->second)) { + --frag_it; + continue; + } else if (addr >= base + size) + break; + + + // Try to allocate target `addr` from this free fragment + auto free_it = frag_it->second.free_list_entry_; + assert(free_it != free_list_.end()); + + free_list_.erase(free_it); + frag_it->second.size = bytes; + set_used(frag_it->second); + + // [base, addr) + if (addr > base) add_free_fragment(addr - base, base); + + // [addr, addr + bytes) is used + + // [addr + bytes, base + size) + if (base + size > addr + bytes) add_free_fragment(base + size - addr - bytes, addr + bytes); + + return addr; + } + } + + // Allocate not fixed address + return AllocImpl(bytes, align); +} + +uint64_t VaMgr::AllocImpl(const uint64_t bytes, const uint64_t align) { + uint64_t addr = 0; + uint64_t align_bytes = bytes; + const int retry = align == 0 ? 0 : 1; + const uint64_t new_align = align == 0 ? min_align_ : AlignUp(align, min_align_); + + lock_guard gard(lock_); + for (int i = 0; i <= retry; i++) { + auto free_it = free_list_.lower_bound(align_bytes); + if (free_it == free_list_.end()) break; + + uint64_t base = free_it->second; + uint64_t size = free_it->first; + + assert(size >= align_bytes); + + auto fragment = frag_map_.find(base); + + assert(fragment != frag_map_.end()); + assert(size == fragment->second.size); + + uint64_t delta = align == 0 ? 0 : base % align; + if (delta == 0) { + // already find aligned address + addr = base; + + free_list_.erase(free_it); + fragment->second.size = bytes; + set_used(fragment->second); + + if (size > bytes) add_free_fragment(size - bytes, base + bytes); + + break; + } else if (i == 0) { + align_bytes += new_align; + continue; + } else { + uint64_t aligned_base = base + align - delta; + addr = aligned_base; + + free_list_.erase(free_it); + + add_used_fragment(bytes, aligned_base); + add_free_fragment(aligned_base - base, base); + + if (size > aligned_base - base + bytes) + add_free_fragment(size - (aligned_base - base) - bytes, aligned_base + bytes); + + break; + } + } + return addr; +} + +void VaMgr::Free(uint64_t addr) { + if (addr == 0) return; + + lock_guard gard(lock_); + auto frag_it = frag_map_.find(addr); + if (frag_it == frag_map_.end() || is_free(frag_it->second)) return; + + uint64_t base = addr; + // Merge lower + if (frag_it != frag_map_.begin()) { + auto lower = frag_it; + --lower; + if (is_free(lower->second)) { + remove_free_list_entry(lower->second); + base -= lower->second.size; + lower->second.size += frag_it->second.size; + frag_map_.erase(frag_it); + frag_it = lower; + } + } + // Merge upper + { + auto upper = frag_it; + ++upper; + if (upper != frag_map_.end() && is_free(upper->second)) { + remove_free_list_entry(upper->second); + frag_it->second.size += upper->second.size; + frag_map_.erase(upper); + } + } + uint64_t size = frag_it->second.size; + auto it = free_list_.insert(make_pair(size, base)); + set_free(frag_it->second, it); +} + +} // namespace core +} // namespace rocr From ccb3950068f46d69e1e44a6b898d6b163b03a712 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Tue, 10 Sep 2024 08:16:11 -0700 Subject: [PATCH 002/159] wsl/hsakmt: clean up namespace Signed-off-by: Longlong Yao Reviewed-by: lyndonli Reviewed-by: Flora Cui Part-of: --- inc/wddm/cmd_util.h | 8 ++++---- inc/wddm/device.h | 8 ++++---- inc/wddm/gpu_memory.h | 8 ++++---- inc/wddm/queue.h | 8 ++++---- inc/wddm/thunks.h | 10 +++++----- inc/wddm/va_mgr.h | 8 ++++---- libdrm.cpp | 6 +++--- libhsakmt.h | 2 +- memory.cpp | 34 ++++++++++++++++---------------- queues.cpp | 14 ++++++------- time.cpp | 2 +- topology.cpp | 22 ++++++++++----------- util/atomic_helpers.h | 4 ++-- util/flag.cpp | 4 ++-- util/flag.h | 4 ++-- util/lazy_ptr.h | 4 ++-- util/lnx/os_linux.cpp | 4 ++-- util/locks.h | 4 ++-- util/os.h | 4 ++-- util/simple_heap.h | 4 ++-- util/small_heap.cpp | 4 ++-- util/small_heap.h | 4 ++-- util/timer.cpp | 4 ++-- util/timer.h | 4 ++-- util/utils.h | 6 +++--- util/win/os_win.cpp | 4 ++-- wddm/cmd_util.cpp | 8 ++++---- wddm/device.cpp | 20 +++++++++---------- wddm/gpu_memory.cpp | 46 +++++++++++++++++++++---------------------- wddm/queue.cpp | 8 ++++---- wddm/va_mgr.cpp | 8 ++++---- 31 files changed, 139 insertions(+), 139 deletions(-) diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h index 423d9d6290..03a047888e 100644 --- a/inc/wddm/cmd_util.h +++ b/inc/wddm/cmd_util.h @@ -10,8 +10,8 @@ #include "inc/pm4_cmds.h" #include "util/utils.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { struct DispatchInfo { uint8_t major; @@ -71,7 +71,7 @@ public: uint64_t srcData = 1); }; -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl #endif \ No newline at end of file diff --git a/inc/wddm/device.h b/inc/wddm/device.h index 7d912be039..3b3366af7c 100644 --- a/inc/wddm/device.h +++ b/inc/wddm/device.h @@ -58,8 +58,8 @@ #include "inc/wddm/gpu_memory.h" #include "inc/wddm/cmd_util.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { //class Queue; class WDDMQueue; @@ -239,7 +239,7 @@ private: NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters); -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl #endif diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index b04a5d85d3..716e03d3be 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -50,8 +50,8 @@ #include "inc/wddm/thunks.h" #include "inc/rocr_proxy/rocr_proxy.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { class WDDMDevice; @@ -212,7 +212,7 @@ private: DISALLOW_COPY_AND_ASSIGN(GpuMemory); }; -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl #endif diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 51c9dfd453..6b23ce358d 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -52,8 +52,8 @@ #include "hsa-runtime/inc/amd_hsa_signal.h" #include "inc/wddm/cmd_util.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { class Queue; class WDDMDevice; @@ -278,7 +278,7 @@ private: uint64_t ib_start_addr; }; -} -} +} // namespace thunk +} // namespace wsl #endif diff --git a/inc/wddm/thunks.h b/inc/wddm/thunks.h index 15556a8ab5..35308d5012 100644 --- a/inc/wddm/thunks.h +++ b/inc/wddm/thunks.h @@ -46,8 +46,8 @@ #include "inc/wddm/status.h" #include "inc/wddm/types.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { inline ErrorCode TranslateNtStatus(NTSTATUS status) { switch (status) { @@ -71,7 +71,7 @@ inline ErrorCode TranslateNtStatus(NTSTATUS status) { return ErrorCode::Unknown; } -namespace thunk { +namespace d3dthunk { typedef D3DKMT_CREATEALLOCATION CreateAllocationArgs; typedef D3DKMT_CREATECONTEXT CreateContextArgs; @@ -225,8 +225,8 @@ inline ErrorCode OpenResourceFromNtHandle(D3DKMT_OPENRESOURCEFROMNTHANDLE *args) return TranslateNtStatus(D3DKMTOpenResourceFromNtHandle(args)); } +} // namespace d3dthunk } // namespace thunk -} // namespace core -} // namespace rocr +} // namespace wsl #endif // _ROCR_CORE_INC_WDDM_THUNKS_H_ diff --git a/inc/wddm/va_mgr.h b/inc/wddm/va_mgr.h index 12dac08c67..439dd55e41 100644 --- a/inc/wddm/va_mgr.h +++ b/inc/wddm/va_mgr.h @@ -5,8 +5,8 @@ #include #include "util/utils.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { class VaMgr { public: @@ -81,6 +81,6 @@ private: DISALLOW_COPY_AND_ASSIGN(VaMgr); }; -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl #endif // VA_MGR_H_ diff --git a/libdrm.cpp b/libdrm.cpp index 2e2cb8aeac..77f455b570 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -51,7 +51,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( HSAuint32 NodeId, HsaAMDGPUDeviceHandle *DeviceHandle) { CHECK_DXG_OPEN(); - rocr::core::WDDMDevice *pDevice = get_wddmdev(NodeId); + wsl::thunk::WDDMDevice *pDevice = get_wddmdev(NodeId); if (pDevice != nullptr) { *DeviceHandle = reinterpret_cast(pDevice); return HSAKMT_STATUS_SUCCESS; @@ -61,8 +61,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( HSAKMTAPI int hsaKmtamdgpu_query_gpu_info(void *dev, struct amdgpu_gpu_info *info) { - rocr::core::WDDMDevice *pDevice = - reinterpret_cast(dev); + wsl::thunk::WDDMDevice *pDevice = + reinterpret_cast(dev); memset(info, 0, sizeof(*info)); info->gpu_counter_freq = pDevice->GPUCounterFrequency() / 1000ull; return 0; diff --git a/libhsakmt.h b/libhsakmt.h index 471c056307..096f9d8829 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -34,7 +34,7 @@ #include "inc/wddm/types.h" #include "inc/wddm/device.h" -rocr::core::WDDMDevice* get_wddmdev(uint32_t node_id); +wsl::thunk::WDDMDevice* get_wddmdev(uint32_t node_id); extern unsigned long dxg_open_count; extern bool hsakmt_forked; diff --git a/memory.cpp b/memory.cpp index b6e35af6fa..c69f1eef76 100644 --- a/memory.cpp +++ b/memory.cpp @@ -38,7 +38,7 @@ struct Allocation { Allocation() : handle(0), cpu_addr(0), gpu_addr(0), size(0), userptr(false), user_data(nullptr), size_requested(0), node_id(0), mem_flags_value(0) {} - Allocation(rocr::core::GpuMemoryHandle handle_arg, void *cpu_addr_arg, + Allocation(wsl::thunk::GpuMemoryHandle handle_arg, void *cpu_addr_arg, uint64_t gpu_addr_arg, size_t size_arg, bool userptr_arg = false, void *user_data_arg = nullptr, size_t user_size_arg = 0, HSAuint32 node_id_arg = 0, HSAuint32 mem_flags_value_arg = 0) @@ -47,7 +47,7 @@ struct Allocation { size_requested(user_size_arg), node_id(node_id_arg), mem_flags_value(mem_flags_value_arg) {} - rocr::core::GpuMemoryHandle handle; + wsl::thunk::GpuMemoryHandle handle; void *cpu_addr; uint64_t gpu_addr; bool userptr; @@ -105,7 +105,7 @@ bool isSystemMemoryAvailable(HSAuint64 SizeInBytes) { return SizeInBytes <= info.freeram; } -bool isLocalMemoryAvailable(rocr::core::WDDMDevice *dev, +bool isLocalMemoryAvailable(wsl::thunk::WDDMDevice *dev, HSAuint64 SizeInBytes) { return SizeInBytes <= dev->VramAvail(); } @@ -126,12 +126,12 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, } else *MemoryAddress = nullptr; - rocr::core::WDDMDevice *dev = get_wddmdev(1); + wsl::thunk::WDDMDevice *dev = get_wddmdev(1); if (!dev) return HSAKMT_STATUS_ERROR; - rocr::core::GpuMemory *gpu_mem = nullptr; - rocr::core::GpuMemoryCreateInfo create_info{}; + wsl::thunk::GpuMemory *gpu_mem = nullptr; + wsl::thunk::GpuMemoryCreateInfo create_info{}; create_info.size = SizeInBytes; if (!MemFlags.ui32.NonPaged || zfb_support || MemFlags.ui32.GTTAccess) { @@ -177,7 +177,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, if (!MemoryAddress) return HSAKMT_STATUS_INVALID_PARAMETER; - rocr::core::GpuMemory *gpu_mem = nullptr; + wsl::thunk::GpuMemory *gpu_mem = nullptr; { std::lock_guard gard(allocation_map_lock_); auto it = allocation_map_.find(MemoryAddress); @@ -185,7 +185,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, return HSAKMT_STATUS_ERROR; } - gpu_mem = rocr::core::GpuMemory::Convert(it->second.handle); + gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); allocation_map_.erase(it); } @@ -201,7 +201,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAvailableMemory(HSAuint32 Node, if (!AvailableBytes) return HSAKMT_STATUS_INVALID_PARAMETER; - rocr::core::WDDMDevice *dev = get_wddmdev(Node); + wsl::thunk::WDDMDevice *dev = get_wddmdev(Node); if (!dev) return HSAKMT_STATUS_ERROR; @@ -342,9 +342,9 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, return HSAKMT_STATUS_ERROR; } - uint64_t start = rocr::AlignDown((uint64_t)MemoryAddress, 4096); + uint64_t start = wsl::AlignDown((uint64_t)MemoryAddress, 4096); uint64_t end = - rocr::AlignUp((uint64_t)MemoryAddress + MemorySizeInBytes, 4096); + wsl::AlignUp((uint64_t)MemoryAddress + MemorySizeInBytes, 4096); void *aligned_ptr = (void *)start; size_t aligned_size = end - start; @@ -376,14 +376,14 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, } } - rocr::core::WDDMDevice *dev = get_wddmdev(1); + wsl::thunk::WDDMDevice *dev = get_wddmdev(1); if (!dev) return HSAKMT_STATUS_ERROR; - rocr::core::GpuMemory *gpu_mem = nullptr; - rocr::core::GpuMemoryHandle handle = 0; + wsl::thunk::GpuMemory *gpu_mem = nullptr; + wsl::thunk::GpuMemoryHandle handle = 0; uint64_t addr; - rocr::core::GpuMemoryCreateInfo create_info{}; + wsl::thunk::GpuMemoryCreateInfo create_info{}; create_info.domain = rocr_proxy::kUserMemory; create_info.size = aligned_size; create_info.user_ptr = aligned_ptr; @@ -428,7 +428,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { pr_debug("[%s] address %p\n", __func__, MemoryAddress); - rocr::core::GpuMemoryHandle handle = nullptr; + wsl::thunk::GpuMemoryHandle handle = nullptr; { std::lock_guard gard(allocation_map_lock_); auto it = allocation_map_.find(MemoryAddress); @@ -445,7 +445,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { allocation_map_.erase((void *)it->second.gpu_addr); allocation_map_.erase(it); } - auto gpu_mem = rocr::core::GpuMemory::Convert(handle); + auto gpu_mem = wsl::thunk::GpuMemory::Convert(handle); delete gpu_mem; return HSAKMT_STATUS_SUCCESS; diff --git a/queues.cpp b/queues.cpp index 7206e32e99..0d94c833ac 100644 --- a/queues.cpp +++ b/queues.cpp @@ -51,7 +51,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( Priority > HSA_QUEUE_PRIORITY_MAXIMUM) return HSAKMT_STATUS_INVALID_PARAMETER; - rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + wsl::thunk::WDDMDevice *device_ = get_wddmdev(NodeId); assert(device_); switch (Type) { @@ -61,7 +61,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( uint32_t cmdbuf_size = device_->GetCmdbufSize(); uint32_t queue_engine = device_->GetComputeEngine(); bool use_hws = device_->IsHwsEnabled(queue_engine); - auto queue_ = new rocr::core::ComputeQueue( + auto queue_ = new wsl::thunk::ComputeQueue( device_, QueueAddress, pkg_num, reinterpret_cast *>(QueueResource->Queue_write_ptr_aql), reinterpret_cast *>(QueueResource->Queue_read_ptr_aql), @@ -91,7 +91,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUpdateQueue( Priority > HSA_QUEUE_PRIORITY_MAXIMUM) return HSAKMT_STATUS_INVALID_PARAMETER; - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -101,7 +101,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUpdateQueue( HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyQueue(HSA_QUEUEID QueueId) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -115,7 +115,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetQueueCUMask(HSA_QUEUEID QueueId, HSAuint32 *QueueCUMask) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -154,7 +154,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocQueueGWS(HSA_QUEUEID QueueId, HSAuint32 nGWS, HSAuint32 *firstGWS) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -165,7 +165,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocQueueGWS(HSA_QUEUEID QueueId, HSAuint32 nGWS, HSAKMT_STATUS HSAKMTAPI hsaKmtQueueRingDoorbell(HSA_QUEUEID QueueId) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; diff --git a/time.cpp b/time.cpp index 477d04d0ad..f0fa66705d 100644 --- a/time.cpp +++ b/time.cpp @@ -37,7 +37,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetClockCounters(HSAuint32 NodeId, std::memset(Counters, 0, sizeof(*Counters)); - rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + wsl::thunk::WDDMDevice *device_ = get_wddmdev(NodeId); assert(device_); device_->GetClockCounters(&Counters->GPUClockCounter, nullptr); diff --git a/topology.cpp b/topology.cpp index bfa5a22c01..d2c350066f 100644 --- a/topology.cpp +++ b/topology.cpp @@ -64,7 +64,7 @@ typedef struct { static HsaSystemProperties *g_system; static node_props_t *g_props; -static std::vector wdevices_; +static std::vector wdevices_; static uint32_t wdevice_num_; static uint32_t num_sysfs_nodes; @@ -355,7 +355,7 @@ static int get_cpu_cache_info(const char *prefix, struct proc_cpuinfo *cpuinfo, } static HSAKMT_STATUS topology_map_node_id(uint32_t node_id, - rocr::core::WDDMDevice *&device) { + wsl::thunk::WDDMDevice *&device) { uint32_t idx = node_id; if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) return HSAKMT_STATUS_NOT_SUPPORTED; @@ -374,7 +374,7 @@ HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props) { D3DKMT_ADAPTERINFO *adapters; int num_adapters; - if (rocr::core::WDDMGetAdapters(adapters, num_adapters) != STATUS_SUCCESS) { + if (wsl::thunk::WDDMGetAdapters(adapters, num_adapters) != STATUS_SUCCESS) { pr_err("Failed to get adapters\n"); ret = HSAKMT_STATUS_ERROR; goto err; @@ -387,7 +387,7 @@ HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props) { wdevices_.clear(); for (uint32_t i = 0; i < num_adapters; i++) { - rocr::core::WDDMDevice *device = new rocr::core::WDDMDevice( + wsl::thunk::WDDMDevice *device = new wsl::thunk::WDDMDevice( adapters[i].hAdapter, adapters[i].AdapterLuid); assert(device && "Create WDDM Device fail"); wdevices_.push_back(device); @@ -644,7 +644,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, } /* gpu node */ - rocr::core::WDDMDevice *device; + wsl::thunk::WDDMDevice *device; ret = topology_map_node_id(node_id, device); if (ret != HSAKMT_STATUS_SUCCESS) return ret; @@ -756,7 +756,7 @@ static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, return HSAKMT_STATUS_SUCCESS; } - rocr::core::WDDMDevice *device; + wsl::thunk::WDDMDevice *device; ret = topology_map_node_id(node_id, device); if (ret != HSAKMT_STATUS_SUCCESS) return ret; @@ -955,7 +955,7 @@ static HSAKMT_STATUS topology_sysfs_get_iolink_props(uint32_t node_id, uint32_t iolink_id, HsaIoLinkProperties *props, bool p2pLink) { - rocr::core::WDDMDevice *device; + wsl::thunk::WDDMDevice *device; topology_map_node_id(node_id, device); std::memset(props, 0, sizeof(*props)); @@ -1216,7 +1216,7 @@ HSAKMT_STATUS topology_take_snapshot(void) { goto err; } for (i = 0; i < sys_props.NumNodes; i++) { - rocr::core::WDDMDevice *device_; + wsl::thunk::WDDMDevice *device_; topology_map_node_id(i, device_); ret = topology_sysfs_get_node_props(i, &temp_props[i].node, &p2p_links, @@ -1518,7 +1518,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, } /* The following memory banks does not apply to CPU only node */ - rocr::core::WDDMDevice *device_ = get_wddmdev(NodeId); + wsl::thunk::WDDMDevice *device_ = get_wddmdev(NodeId); if (device_ == nullptr) goto out; @@ -1690,9 +1690,9 @@ HSAKMT_STATUS validate_nodeid_array(uint32_t **gpu_id_array, uint32_t get_num_sysfs_nodes(void) { return num_sysfs_nodes; } -rocr::core::WDDMDevice *get_wddmdev(uint32_t node_id) { +wsl::thunk::WDDMDevice *get_wddmdev(uint32_t node_id) { if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) return nullptr; return wdevices_[node_id - 1]; -} +} \ No newline at end of file diff --git a/util/atomic_helpers.h b/util/atomic_helpers.h index 89cef6a638..4b7f8b0362 100644 --- a/util/atomic_helpers.h +++ b/util/atomic_helpers.h @@ -64,7 +64,7 @@ #endif #endif -namespace rocr { +namespace wsl { namespace atomic { static constexpr int c11ToBuiltInFlags(std::memory_order order) @@ -506,7 +506,7 @@ static __forceinline T return ret; } } // namespace atomic -} // namespace rocr +} // namespace wsl #ifdef X64_ORDER_WC #undef X64_ORDER_WC diff --git a/util/flag.cpp b/util/flag.cpp index c0ac8bd970..22862d277c 100644 --- a/util/flag.cpp +++ b/util/flag.cpp @@ -50,7 +50,7 @@ #include #include -namespace rocr { +namespace wsl { FILE* log_file = stderr; uint8_t log_flags[8]; @@ -223,4 +223,4 @@ void Flag::parse_masks(std::string& var, uint32_t maxGpu, uint32_t maxCU) { } } -} // namespace rocr +} // namespace wsl diff --git a/util/flag.h b/util/flag.h index 46dcf89cae..f8f9cc95dd 100644 --- a/util/flag.h +++ b/util/flag.h @@ -52,7 +52,7 @@ #include "core/util/os.h" #include "core/util/utils.h" -namespace rocr { +namespace wsl { class Flag { public: @@ -355,6 +355,6 @@ class Flag { DISALLOW_COPY_AND_ASSIGN(Flag); }; -} // namespace rocr +} // namespace wsl #endif // header guard diff --git a/util/lazy_ptr.h b/util/lazy_ptr.h index 2aef6a3bf3..b5817af40d 100644 --- a/util/lazy_ptr.h +++ b/util/lazy_ptr.h @@ -50,7 +50,7 @@ #include "core/util/locks.h" #include "core/util/utils.h" -namespace rocr { +namespace wsl { /* * Wrapper for a std::unique_ptr that initializes its object at first use. @@ -150,6 +150,6 @@ template class lazy_ptr { }; -} // namespace rocr +} // namespace wsl #endif // HSA_RUNTIME_CORE_UTIL_LAZY_PTR_H_ diff --git a/util/lnx/os_linux.cpp b/util/lnx/os_linux.cpp index aecca6c0fd..a686f0f216 100644 --- a/util/lnx/os_linux.cpp +++ b/util/lnx/os_linux.cpp @@ -65,7 +65,7 @@ #include #endif -namespace rocr { +namespace wsl { namespace os { struct ThreadArgs { @@ -766,6 +766,6 @@ bool ParseCpuID(cpuid_t* cpuinfo) { } } // namespace os -} // namespace rocr +} // namespace wsl #endif diff --git a/util/locks.h b/util/locks.h index 6c0de49a07..a17fa09593 100644 --- a/util/locks.h +++ b/util/locks.h @@ -48,7 +48,7 @@ #include "utils.h" #include "os.h" -namespace rocr { +namespace wsl { class HybridMutex { public: @@ -285,6 +285,6 @@ template class ScopedAcquire { DISALLOW_COPY_AND_ASSIGN(ScopedAcquire); }; -} // namespace rocr +} // namespace wsl #endif // HSA_RUNTIME_CORE_SUTIL_LOCKS_H_ diff --git a/util/os.h b/util/os.h index 2eec51a34e..2f40cd1581 100644 --- a/util/os.h +++ b/util/os.h @@ -49,7 +49,7 @@ #include #include "utils.h" -namespace rocr { +namespace wsl { namespace os { typedef void* LibHandle; typedef void* Semaphore; @@ -322,6 +322,6 @@ typedef struct cpuid_s { bool ParseCpuID(cpuid_t* cpuinfo); } // namespace os -} // namespace rocr +} // namespace wsl #endif // HSA_RUNTIME_CORE_UTIL_OS_H_ diff --git a/util/simple_heap.h b/util/simple_heap.h index 6c7822bcdb..eca19055d8 100644 --- a/util/simple_heap.h +++ b/util/simple_heap.h @@ -53,7 +53,7 @@ #include "core/util/utils.h" -namespace rocr { +namespace wsl { template class SimpleHeap { private: @@ -358,6 +358,6 @@ template class SimpleHeap { } }; -} // namespace rocr +} // namespace wsl #endif // HSA_RUNTME_CORE_UTIL_SIMPLE_HEAP_H_ diff --git a/util/small_heap.cpp b/util/small_heap.cpp index 9fe5da5fab..bcaef5dd87 100644 --- a/util/small_heap.cpp +++ b/util/small_heap.cpp @@ -42,7 +42,7 @@ #include "small_heap.h" -namespace rocr { +namespace wsl { // Inserts node into freelist after place. // Assumes node will not be an end of the list (list has guard nodes). @@ -182,4 +182,4 @@ void* SmallHeap::alloc_high(size_t bytes) { return nullptr; } -} // namespace rocr +} // namespace wsl diff --git a/util/small_heap.h b/util/small_heap.h index e1f5d7bdeb..f6e060cb09 100644 --- a/util/small_heap.h +++ b/util/small_heap.h @@ -52,7 +52,7 @@ #include "utils.h" -namespace rocr { +namespace wsl { class SmallHeap { private: @@ -126,6 +126,6 @@ class SmallHeap { void* high_split() const { return *high.begin(); } }; -} // namespace rocr +} // namespace wsl #endif diff --git a/util/timer.cpp b/util/timer.cpp index 5419e4f61d..c5a2b57c64 100644 --- a/util/timer.cpp +++ b/util/timer.cpp @@ -42,7 +42,7 @@ #include "core/util/timer.h" -namespace rocr { +namespace wsl { namespace timer { accurate_clock::init::init() { @@ -108,4 +108,4 @@ double fast_clock::period_ps; fast_clock::raw_frequency fast_clock::freq; fast_clock::init fast_clock::fast_clock_init; } // namespace timer -} // namespace rocr +} // namespace wsl diff --git a/util/timer.h b/util/timer.h index 155a11a393..3012685113 100644 --- a/util/timer.h +++ b/util/timer.h @@ -49,7 +49,7 @@ #include #include -namespace rocr { +namespace wsl { namespace timer { // Needed to patch around a mixed arithmetic bug in MSVC's duration_cast as of @@ -168,6 +168,6 @@ class fast_clock { static init fast_clock_init; }; } // namespace timer -} // namespace rocr +} // namespace wsl #endif diff --git a/util/utils.h b/util/utils.h index c2fa8ef32c..1aee7762a6 100644 --- a/util/utils.h +++ b/util/utils.h @@ -57,7 +57,7 @@ #include #include -namespace rocr { +namespace wsl { extern FILE* log_file; extern uint8_t log_flags[8]; @@ -154,7 +154,7 @@ static __forceinline unsigned long long int strtoull(const char* str, #define LogPrint(flag, format, ...) \ do { \ if (hsa_flag_isset64(log_flags, flag)) \ - rocr::log_printf(__FILENAME__, __LINE__, format, ##__VA_ARGS__); \ + wsl::log_printf(__FILENAME__, __LINE__, format, ##__VA_ARGS__); \ } while (false); @@ -354,7 +354,7 @@ static __forceinline std::string& rtrim(std::string& s) { static __forceinline std::string& trim(std::string& s) { return ltrim(rtrim(s)); } -} // namespace rocr +} // namespace wsl template static __forceinline uint32_t BitSelect(T p) { diff --git a/util/win/os_win.cpp b/util/win/os_win.cpp index 81c90cd266..b7f2285623 100644 --- a/util/win/os_win.cpp +++ b/util/win/os_win.cpp @@ -57,7 +57,7 @@ #undef Yield #undef CreateMutex -namespace rocr { +namespace wsl { namespace os { static_assert(sizeof(LibHandle) == sizeof(HMODULE), @@ -322,6 +322,6 @@ bool ParseCpuID(cpuid_t* cpuinfo) { } } // namespace os -} // namespace rocr +} // namespace wsl #endif diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp index 20e0231977..bffbe408ee 100644 --- a/wddm/cmd_util.cpp +++ b/wddm/cmd_util.cpp @@ -2,8 +2,8 @@ #include "inc/wddm/cmd_util.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { /* * Builds a COPY_DATA packet that copies data. @@ -277,5 +277,5 @@ size_t CmdUtil::BuildAtomicMem( return sizeof(atom); } -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl diff --git a/wddm/device.cpp b/wddm/device.cpp index 753f100a92..fca4714232 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -53,8 +53,8 @@ #include "inc/wddm/device.h" #include "inc/wddm/queue.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { const uint32_t WDDMDevice::cmdbuf_aql_frame_num_ = 0x1000; @@ -294,7 +294,7 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { sys_va[i] = (uint64_t)ptr; - if (thunk::ReserveGpuVirtualAddress( + if (d3dthunk::ReserveGpuVirtualAddress( adapter_, local_heap_space_size_, (uint64_t)ptr, (uint64_t)ptr + sys_va_size, &local_va) == ErrorCode::Success) { @@ -337,7 +337,7 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { } bool WDDMDevice::FreeLocalHeapSpace(void) { - thunk::FreeGpuVirtualAddress(adapter_, local_heap_space_start_, local_heap_space_size_); + d3dthunk::FreeGpuVirtualAddress(adapter_, local_heap_space_start_, local_heap_space_size_); void *cpu = (void *)local_heap_space_start_; return munmap(cpu, local_heap_space_size_) == 0; } @@ -377,7 +377,7 @@ ErrorCode WDDMDevice::ReserveGpuVirtualAddress(const rocr_proxy::AllocDomain dom if (domain == rocr_proxy::kSystem) { - code = thunk::ReserveGpuVirtualAddress(adapter_, size, + code = d3dthunk::ReserveGpuVirtualAddress(adapter_, size, system_heap_space_start_, system_heap_space_start_ + system_heap_space_size_, &gpu_addr); @@ -385,7 +385,7 @@ ErrorCode WDDMDevice::ReserveGpuVirtualAddress(const rocr_proxy::AllocDomain dom return code; if (!CommitSystemHeapSpace((void*)gpu_addr, size, lock)) { - thunk::FreeGpuVirtualAddress(adapter_, gpu_addr, size); + d3dthunk::FreeGpuVirtualAddress(adapter_, gpu_addr, size); code = ErrorCode::SyscallFail; } } else { @@ -411,12 +411,12 @@ ErrorCode WDDMDevice::FreeGpuVirtualAddress(const rocr_proxy::AllocDomain domain DecommitSystemHeapSpace((void *)gpu_addr, size); - thunk::FreeGpuVirtualAddressArgs free_args{}; + d3dthunk::FreeGpuVirtualAddressArgs free_args{}; free_args.hAdapter = adapter_; free_args.BaseAddress = gpu_addr; free_args.Size = size; - code = thunk::FreeGpuVirtualAddress(&free_args); + code = d3dthunk::FreeGpuVirtualAddress(&free_args); } else { local_va_mgr_->Free(gpu_addr); } @@ -875,5 +875,5 @@ bool WDDMDevice::SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, return true; } -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 42aeaf68d6..076753820a 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -6,11 +6,11 @@ using namespace std; -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { size_t GpuMemory::CalcChunkNumbers(gpusize size) { - const auto chunk_size = core::WDDMDevice::GpuMemoryChunkSize; + const auto chunk_size = WDDMDevice::GpuMemoryChunkSize; return (size + chunk_size - 1) / chunk_size; } @@ -123,13 +123,13 @@ ErrorCode GpuMemory::UnmapGpuVirtualAddress(const gpusize addr, const gpusize si auto map_addr = addr; auto map_size = size; - while (offset >= core::WDDMDevice::GpuMemoryChunkSize) { - offset -= core::WDDMDevice::GpuMemoryChunkSize; + while (offset >= WDDMDevice::GpuMemoryChunkSize) { + offset -= WDDMDevice::GpuMemoryChunkSize; i += 1; } while (map_size > 0) { - auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + auto block_size = std::min(map_size, WDDMDevice::GpuMemoryChunkSize); D3DDDI_MAPGPUVIRTUALADDRESS args{}; @@ -139,7 +139,7 @@ ErrorCode GpuMemory::UnmapGpuVirtualAddress(const gpusize addr, const gpusize si args.SizeInPages = block_size / 0x1000; args.Protection.NoAccess = 1; - code = thunk::MapGpuVirtualAddress(&args); + code = d3dthunk::MapGpuVirtualAddress(&args); if (code == ErrorCode::NotReady) device_->UpdatePageFence(args.PagingFenceValue); @@ -163,8 +163,8 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size auto map_size = size; const size_t _4K = 0x1000; - while (offset >= core::WDDMDevice::GpuMemoryChunkSize) { - offset -= core::WDDMDevice::GpuMemoryChunkSize; + while (offset >= WDDMDevice::GpuMemoryChunkSize) { + offset -= WDDMDevice::GpuMemoryChunkSize; i += 1; } const size_t first_chunk = i; @@ -174,7 +174,7 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size * 2. visible vram can not be cpu mapped when command submission or after gpu mapped */ while (map_size > 0) { - auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + auto block_size = std::min(map_size, WDDMDevice::GpuMemoryChunkSize); D3DDDI_MAPGPUVIRTUALADDRESS args{}; @@ -185,7 +185,7 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size args.SizeInPages = block_size / _4K; args.Protection.Write = 1; - code = thunk::MapGpuVirtualAddress(&args); + code = d3dthunk::MapGpuVirtualAddress(&args); if (code != ErrorCode::Success) { if (code == ErrorCode::NotReady) { @@ -208,7 +208,7 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size map_addr = addr; map_size = size; for (size_t j = first_chunk; j < i; j++) { - auto block_size = std::min(map_size, core::WDDMDevice::GpuMemoryChunkSize); + auto block_size = std::min(map_size, WDDMDevice::GpuMemoryChunkSize); D3DDDI_MAPGPUVIRTUALADDRESS args{}; @@ -219,7 +219,7 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size args.SizeInPages = block_size / _4K; args.Protection.NoAccess = 1; - auto unmap_code = thunk::MapGpuVirtualAddress(&args); + auto unmap_code = d3dthunk::MapGpuVirtualAddress(&args); if (unmap_code == ErrorCode::NotReady) device_->UpdatePageFence(args.PagingFenceValue); @@ -274,7 +274,7 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { for (size_t i = 0; i < num_allocations; i++) { void* priv_data = (void*)((char*)priv_drv_data + priv_drv_data_size * i); - size_t block_size = std::min(size, core::WDDMDevice::GpuMemoryChunkSize); + size_t block_size = std::min(size, WDDMDevice::GpuMemoryChunkSize); if (IsUserMemory() || IsSystem()) { rocr_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, 0, desc_.mem_flags, desc_.engine_flag, device_info); @@ -314,7 +314,7 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { args.Flags.CreateResource = 1; } - auto status = thunk::CreateAllocation(&args); + auto status = d3dthunk::CreateAllocation(&args); if (status == ErrorCode::Success) { for (size_t i = 0; i < num_allocations; i++) alloc_handles_ptr_[i] = alloc_info[i].hAllocation; @@ -331,7 +331,7 @@ ErrorCode GpuMemory::FreePhysicalMemory() { if (alloc_handles_ptr_ == nullptr || (NumChunks() == 1 && *alloc_handles_ptr_ == 0)) return code; - code = thunk::DestroyAllocation(device_->DeviceHandle(), + code = d3dthunk::DestroyAllocation(device_->DeviceHandle(), resource_, NumChunks(), alloc_handles_ptr_); @@ -350,7 +350,7 @@ ErrorCode GpuMemory::MakeResident() { args.AllocationList = alloc_handles_ptr_; args.Flags.CantTrimFurther = 1; - auto code = thunk::MakeResident(&args); + auto code = d3dthunk::MakeResident(&args); if (code == ErrorCode::NotReady) { const auto fence_value = args.PagingFenceValue; device_->UpdatePageFence(fence_value); @@ -366,12 +366,12 @@ ErrorCode GpuMemory::Evict() { args.NumAllocations = NumChunks(); args.AllocationList = alloc_handles_ptr_; - return thunk::Evict(&args); + return d3dthunk::Evict(&args); } ErrorCode GpuMemory::ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags) { if (IsShared()) - return thunk::ShareObjects(num_allocations_, resource_, flags, dmabuf_fd); + return d3dthunk::ShareObjects(num_allocations_, resource_, flags, dmabuf_fd); else return ErrorCode::UnSupported; } @@ -386,7 +386,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { memset(&query_args, 0, sizeof(query_args)); query_args.hDevice = device_->DeviceHandle(); query_args.hNtHandle = reinterpret_cast(dmabuf_fd); - auto ret = thunk::QueryResourceInfoFromNtHandle(&query_args); + auto ret = d3dthunk::QueryResourceInfoFromNtHandle(&query_args); if (ret != ErrorCode::Success) { debug_print("%s query resource info from nt handle failed %d\n", __FUNCTION__, static_cast(ret)); return ErrorCode::InvalidateParams; @@ -435,7 +435,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { open_args.PrivateRuntimeDataSize = query_args.PrivateRuntimeDataSize; open_args.pPrivateRuntimeData = reinterpret_cast (&shared_info); - ret = thunk::OpenResourceFromNtHandle(&open_args); + ret = d3dthunk::OpenResourceFromNtHandle(&open_args); if (ret != ErrorCode::Success) { ret = ErrorCode::InvalidateParams; debug_print("%s open resource failed %d\n", __FUNCTION__, static_cast(ret)); @@ -463,5 +463,5 @@ err_out: return ret; } -} // namespace code -} // namespace rocr +} // namespace thunk +} // namespace wsl diff --git a/wddm/queue.cpp b/wddm/queue.cpp index e6856fbd75..7ee11c24bf 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -48,8 +48,8 @@ #include "inc/registers.h" #include "libhsakmt.h" -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { hsa_status_t WDDMQueue::SwsInit(void) { if (!device->CreateSyncobj(&syncobj, &sync_addr)) @@ -985,5 +985,5 @@ hsa_status_t SDMAQueue::Submit(void) { return HSA_STATUS_SUCCESS; } -} -} +} // namespace thunk +} // namespace wsl diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 426eaa2a5f..9a32e2cd96 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -5,8 +5,8 @@ using namespace std; -namespace rocr { -namespace core { +namespace wsl { +namespace thunk { VaMgr::VaMgr(uint64_t start, uint64_t size, uint64_t min_align) { min_align_ = min_align; @@ -159,5 +159,5 @@ void VaMgr::Free(uint64_t addr) { set_free(frag_it->second, it); } -} // namespace core -} // namespace rocr +} // namespace thunk +} // namespace wsl From b4b0b54c796b41a7f6f8ef89ffa48a76611a0f0f Mon Sep 17 00:00:00 2001 From: lyndonli Date: Mon, 9 Sep 2024 17:05:08 +0800 Subject: [PATCH 003/159] wsl/hsakmt: Add clear_allocation_map If fork() is called, clear allocation map that is invalid in the child process. Signed-off-by: lyndonli Reviewed-by: Shi.Leslie Yuliang.Shi@amd.com Part-of: --- libhsakmt.h | 2 ++ memory.cpp | 21 ++++++++++++++------- openclose.cpp | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 096f9d8829..96b59a462c 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -151,6 +151,8 @@ uint32_t get_num_sysfs_nodes(void); bool is_forked_child(void); +void clear_allocation_map(void); + /* Calculate VGPR and SGPR register file size per CU */ uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); #define SGPR_SIZE_PER_CU 0x4000 diff --git a/memory.cpp b/memory.cpp index c69f1eef76..02e28b4266 100644 --- a/memory.cpp +++ b/memory.cpp @@ -59,7 +59,14 @@ struct Allocation { }; static std::map allocation_map_; -static std::mutex allocation_map_lock_; +static std::unique_ptr allocation_map_lock_ = std::make_unique(); + +void clear_allocation_map(void) +{ + allocation_map_lock_ = std::make_unique(); + std::lock_guard lock(*allocation_map_lock_); + allocation_map_.clear(); +} HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryPolicy(HSAuint32 Node, HSAuint32 DefaultPolicy, @@ -159,7 +166,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); - std::lock_guard gard(allocation_map_lock_); + std::lock_guard gard(*allocation_map_lock_); allocation_map_[*MemoryAddress] = Allocation( gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, create_info.size, false, nullptr, SizeInBytes, @@ -179,7 +186,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, wsl::thunk::GpuMemory *gpu_mem = nullptr; { - std::lock_guard gard(allocation_map_lock_); + std::lock_guard gard(*allocation_map_lock_); auto it = allocation_map_.find(MemoryAddress); if (it == allocation_map_.end()) { return HSAKMT_STATUS_ERROR; @@ -350,7 +357,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, size_t aligned_size = end - start; { - std::lock_guard gard(allocation_map_lock_); + std::lock_guard gard(*allocation_map_lock_); // GTT mem auto it_gtt = allocation_map_.find(aligned_ptr); if (it_gtt != allocation_map_.end()) { @@ -397,7 +404,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, } { - std::lock_guard guard(allocation_map_lock_); + std::lock_guard guard(*allocation_map_lock_); allocation_map_[MemoryAddress] = Allocation(handle, aligned_ptr, addr, aligned_size, true, MemoryAddress, MemorySizeInBytes); @@ -430,7 +437,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { wsl::thunk::GpuMemoryHandle handle = nullptr; { - std::lock_guard gard(allocation_map_lock_); + std::lock_guard gard(*allocation_map_lock_); auto it = allocation_map_.find(MemoryAddress); if (it == allocation_map_.end()) { return HSAKMT_STATUS_ERROR; @@ -495,7 +502,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, Allocation allocation_info; { - std::lock_guard gard(allocation_map_lock_); + std::lock_guard gard(*allocation_map_lock_); auto it = allocation_map_.find(Pointer); if (it == allocation_map_.end()) { PointerInfo->Type = HSA_POINTER_UNKNOWN; diff --git a/openclose.cpp b/openclose.cpp index b2b3c04460..9c66c1a9c7 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -96,7 +96,7 @@ static void child_fork_handler(void) { * in the child process so it is not cleared */ static void clear_after_fork(void) { - // TODO: fmm_clear_all_mem(); + clear_allocation_map(); if (dxg_fd) { close(dxg_fd); dxg_fd = -1; From d00c4446e9e66b18fd943e8c98fc8f18502a640d Mon Sep 17 00:00:00 2001 From: tiancyin Date: Wed, 11 Sep 2024 09:59:15 +0800 Subject: [PATCH 004/159] wsl/hsakmt: just reserve SVM virtual memory for scratch pool the allocation from InitScratchPool() does not really need VRAM Reviewed-by: Flora Cui Signed-off-by: tiancyin --- memory.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/memory.cpp b/memory.cpp index 02e28b4266..e5f3c7a1c8 100644 --- a/memory.cpp +++ b/memory.cpp @@ -141,17 +141,21 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, wsl::thunk::GpuMemoryCreateInfo create_info{}; create_info.size = SizeInBytes; + /* If initialize scratch pool of GpuAgent, treat it as SVM reserve */ + if (MemFlags.ui32.Scratch && MemFlags.ui32.HostAccess && SizeInBytes > 0x80000000) + MemFlags.ui32.OnlyAddress = 1; + if (!MemFlags.ui32.NonPaged || zfb_support || MemFlags.ui32.GTTAccess) { /* If allocate VRAM under ZFB mode */ if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; create_info.domain = rocr_proxy::AllocDomain::kSystem; - if (!isSystemMemoryAvailable(SizeInBytes)) + if (!MemFlags.ui32.OnlyAddress && !isSystemMemoryAvailable(SizeInBytes)) return HSAKMT_STATUS_NO_MEMORY; } else { create_info.domain = rocr_proxy::AllocDomain::kLocal; - if (!isLocalMemoryAvailable(dev, SizeInBytes)) + if (!MemFlags.ui32.OnlyAddress && !isLocalMemoryAvailable(dev, SizeInBytes)) return HSAKMT_STATUS_NO_MEMORY; } From 90759bc89a675f2975ff049ec7c8a9e4e22ec08b Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 12 Sep 2024 12:44:54 +0800 Subject: [PATCH 005/159] wsl/hsakmt: implement vmm Reviewed-by: Shi.Leslie Reviewed-by: Aaron Liu Signed-off-by: tiancyin --- libdrm.cpp | 50 ++++++++++++++++++++++++++++++++ libhsakmt.ver | 4 +++ memory.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++------- topology.cpp | 2 +- version.cpp | 6 ++-- 5 files changed, 127 insertions(+), 14 deletions(-) diff --git a/libdrm.cpp b/libdrm.cpp index 77f455b570..b16907ba40 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -67,3 +67,53 @@ HSAKMTAPI int hsaKmtamdgpu_query_gpu_info(void *dev, info->gpu_counter_freq = pDevice->GPUCounterFrequency() / 1000ull; return 0; } + +HSAKMTAPI int hsaKmtamdgpu_bo_import(amdgpu_device_handle dev, + enum amdgpu_bo_handle_type type, + uint32_t shared_handle, + struct amdgpu_bo_import_result *output) { + void *MemoryAddress = nullptr; + HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &MemoryAddress); + if (ret == HSAKMT_STATUS_SUCCESS) { + //use GpuMemory object's address as drm buf handle + output->buf_handle = reinterpret_cast(MemoryAddress); + return 0; + } else { + return -1; + } +} + + +HSAKMTAPI int hsaKmtamdgpu_bo_va_op(amdgpu_bo_handle bo, + uint64_t offset, + uint64_t size, + uint64_t addr, + uint64_t flags, + uint32_t ops) { + switch(ops) { + case AMDGPU_VA_OP_MAP: + { + wsl::thunk::GpuMemory *gpu_mem = reinterpret_cast(bo); + assert(gpu_mem != nullptr); + auto code = gpu_mem->MapGpuVirtualAddress(reinterpret_cast(addr), size, offset); + if (code != ErrorCode::Success) + return -1; + + code = gpu_mem->MakeResident(); + if (code != ErrorCode::Success) + return -1; + } + break; + case AMDGPU_VA_OP_UNMAP: + { + wsl::thunk::GpuMemory *gpu_mem = reinterpret_cast(bo); + assert(gpu_mem != nullptr); + auto code = gpu_mem->UnmapGpuVirtualAddress(reinterpret_cast(addr), size, offset); + if (code != ErrorCode::Success) + return -1; + gpu_mem->Evict(); + } + break; + } + return 0; +} diff --git a/libhsakmt.ver b/libhsakmt.ver index a203bbc90a..dbc8abf336 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -78,6 +78,7 @@ hsaKmtSetXNACKMode; hsaKmtGetXNACKMode; hsaKmtOpenSMI; hsaKmtExportDMABufHandle; +hsaKmtImportDMABufHandle; hsaKmtWaitOnEvent_Ext; hsaKmtWaitOnMultipleEvents_Ext; hsaKmtReplaceAsanHeaderPage; @@ -92,6 +93,9 @@ hsaKmtPcSamplingSupport; hsaKmtGetVersionCapInfo; hsaKmtQueueRingDoorbell; hsaKmtamdgpu_query_gpu_info; +hsaKmtamdgpu_bo_import; +hsaKmtamdgpu_bo_va_op; + local: *; }; diff --git a/memory.cpp b/memory.cpp index e5f3c7a1c8..acfc3b6d2f 100644 --- a/memory.cpp +++ b/memory.cpp @@ -145,7 +145,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, if (MemFlags.ui32.Scratch && MemFlags.ui32.HostAccess && SizeInBytes > 0x80000000) MemFlags.ui32.OnlyAddress = 1; - if (!MemFlags.ui32.NonPaged || zfb_support || MemFlags.ui32.GTTAccess) { + create_info.alignment = Alignment; + create_info.va_hint = reinterpret_cast(*MemoryAddress); + if ((PreferredNode == 0 && !MemFlags.ui32.NonPaged) + || zfb_support || MemFlags.ui32.GTTAccess) { /* If allocate VRAM under ZFB mode */ if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; @@ -165,12 +168,22 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, // create_info.mem_flags |= rocr_proxy::kKernarg; create_info.flags.physical_only = MemFlags.ui32.NoAddress; create_info.flags.interprocess = MemFlags.ui32.NoAddress; - create_info.flags.locked = 0; //!!(alloc_flags & AllocatePinned); + create_info.flags.locked = MemFlags.ui32.NoSubstitute;//AllocatePinned + create_info.flags.virtual_alloc = MemFlags.ui32.OnlyAddress; + /*when only alloc virtual or only physical, it's vmm allocation, force to local*/ + if (create_info.flags.virtual_alloc || create_info.flags.physical_only) + create_info.domain = rocr_proxy::AllocDomain::kLocal; auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { - *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); std::lock_guard gard(*allocation_map_lock_); + + /* For these physical allcations, use GpuMemory object's address as thunk handle*/ + if (create_info.flags.physical_only || create_info.dmabuf_fd > 0) + *MemoryAddress = reinterpret_cast(gpu_mem); + else + *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); + allocation_map_[*MemoryAddress] = Allocation( gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, create_info.size, false, nullptr, SizeInBytes, @@ -261,26 +274,72 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryWithFlags( return HSAKMT_STATUS_SUCCESS; } -HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodes( - HSAuint64 GraphicsResourceHandle, - HsaGraphicsResourceInfo *GraphicsResourceInfo, HSAuint64 NumberOfNodes, - HSAuint32 *NodeArray) { +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodes(HSAuint64 GraphicsResourceHandle, + HsaGraphicsResourceInfo *GraphicsResourceInfo, + HSAuint64 NumberOfNodes, + HSAuint32 *NodeArray) { CHECK_DXG_OPEN(); + uint32_t *gpu_id_array = NULL; + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - assert(false); - return HSAKMT_STATUS_SUCCESS; + pr_debug("[%s] number of nodes %lu\n", __func__, NumberOfNodes); + + GraphicsResourceInfo->NodeId = 1; + return hsaKmtImportDMABufHandle(GraphicsResourceHandle, &GraphicsResourceInfo->MemoryAddress); } + HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, HSAuint64 MemorySizeInBytes, int *DMABufFd, HSAuint64 *Offset) { CHECK_DXG_OPEN(); - assert(false); + + std::lock_guard gard(*allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) + return HSAKMT_STATUS_ERROR; + + auto gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + auto code = gpu_mem->ExportPhysicalHandle(DMABufFd); + if (code != ErrorCode::Success) + return HSAKMT_STATUS_ERROR; return HSAKMT_STATUS_SUCCESS; } + +HSAKMT_STATUS HSAKMTAPI hsaKmtImportDMABufHandle(int DMABufFd, + void **MemoryAddress) { + + CHECK_DXG_OPEN(); + + wsl::thunk::WDDMDevice* dev = get_wddmdev(1); + wsl::thunk::GpuMemory *gpu_mem = nullptr; + wsl::thunk::GpuMemoryCreateInfo create_info{}; + create_info.dmabuf_fd = DMABufFd; + + auto code = dev->CreateGpuMemory(create_info, &gpu_mem); + if (code == ErrorCode::Success) { + *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); + std::lock_guard gard(*allocation_map_lock_); + /* + * the gpu_mem->Flags() need convert back from GpuMemoryCreateFlags to + * HsaMemFlags, reference hsaKmtAllocMemoryAlign + * */ + allocation_map_[*MemoryAddress] = Allocation( + gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, + gpu_mem->Size(), false, nullptr, gpu_mem->ClientSize(), + 1, gpu_mem->Flags()); + + return HSAKMT_STATUS_SUCCESS; + } + + return HSAKMT_STATUS_ERROR; + +} + + HSAKMT_STATUS HSAKMTAPI hsaKmtShareMemory(void *MemoryAddress, HSAuint64 SizeInBytes, HsaSharedMemoryHandle *SharedMemoryHandle) { diff --git a/topology.cpp b/topology.cpp index d2c350066f..0ac6d48c32 100644 --- a/topology.cpp +++ b/topology.cpp @@ -1695,4 +1695,4 @@ wsl::thunk::WDDMDevice *get_wddmdev(uint32_t node_id) { return nullptr; return wdevices_[node_id - 1]; -} \ No newline at end of file +} diff --git a/version.cpp b/version.cpp index b71d036fc4..ba87575a2d 100644 --- a/version.cpp +++ b/version.cpp @@ -38,15 +38,15 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { CHECK_DXG_OPEN(); VersionCapInfo->Value = 0; + VersionCapInfo->ui64.Vmem = 1; + VersionCapInfo->ui64.dmabuf = 1; /*VersionCapInfo->ui64.InterruptSignal = 0; VersionCapInfo->ui64.Sdma = 0; VersionCapInfo->ui64.SdmaXgmi = 0; VersionCapInfo->ui64.Image = 0; VersionCapInfo->ui64.EventAge = 0; VersionCapInfo->ui64.Scratch = 0; - VersionCapInfo->ui64.Vmem = 0; - VersionCapInfo->ui64.dmabuf = 0; VersionCapInfo->ui64.XNack = 0;*/ return HSAKMT_STATUS_SUCCESS; -} \ No newline at end of file +} From bc9b11d754c6acacf0a5e512ce5c1f3a2375daad Mon Sep 17 00:00:00 2001 From: lyndonli Date: Wed, 11 Sep 2024 10:34:55 +0800 Subject: [PATCH 006/159] wsl/hsakmt: Remove pre-allocation free memory check This change removes the check for sufficient free memory before allocation. The previous check could cause performance degradation. Reserving a portion of system memory helps prevent system hangs due to insufficient memory. However, if free memory is still insufficient, memory allocation may still lead to system hangs. Signed-off-by: lyndonli Reviewed-by: Flora Cui Part-of: --- globals.cpp | 4 +++- libhsakmt.h | 1 + memory.cpp | 19 +++---------------- topology.cpp | 5 +++++ 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/globals.cpp b/globals.cpp index bb635fef4b..4f866ac4fc 100644 --- a/globals.cpp +++ b/globals.cpp @@ -44,4 +44,6 @@ bool is_svm_api_supported; /* zfb is mainly used during emulation */ int zfb_support; /* handle vendor specific packet */ -int vendor_packet_support; \ No newline at end of file +int vendor_packet_support; + +size_t max_single_alloc_size = 0; \ No newline at end of file diff --git a/libhsakmt.h b/libhsakmt.h index 96b59a462c..4ac14a304a 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -43,6 +43,7 @@ extern bool is_dgpu; extern bool is_svm_api_supported; extern int zfb_support; extern int vendor_packet_support; +extern size_t max_single_alloc_size; #undef HSAKMTAPI #define HSAKMTAPI __attribute__((visibility ("default"))) diff --git a/memory.cpp b/memory.cpp index acfc3b6d2f..9d4c1679d8 100644 --- a/memory.cpp +++ b/memory.cpp @@ -105,18 +105,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemory(HSAuint32 PreferredNode, #define POWER_OF_2(x) ((x && (!(x & (x - 1)))) ? 1 : 0) -bool isSystemMemoryAvailable(HSAuint64 SizeInBytes) { - struct sysinfo info; - if (sysinfo(&info) != 0) - return false; - return SizeInBytes <= info.freeram; -} - -bool isLocalMemoryAvailable(wsl::thunk::WDDMDevice *dev, - HSAuint64 SizeInBytes) { - return SizeInBytes <= dev->VramAvail(); -} - HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, HSAuint64 SizeInBytes, HSAuint64 Alignment, @@ -149,17 +137,16 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, create_info.va_hint = reinterpret_cast(*MemoryAddress); if ((PreferredNode == 0 && !MemFlags.ui32.NonPaged) || zfb_support || MemFlags.ui32.GTTAccess) { + if (SizeInBytes > max_single_alloc_size) + return HSAKMT_STATUS_NO_MEMORY; + /* If allocate VRAM under ZFB mode */ if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; create_info.domain = rocr_proxy::AllocDomain::kSystem; - if (!MemFlags.ui32.OnlyAddress && !isSystemMemoryAvailable(SizeInBytes)) - return HSAKMT_STATUS_NO_MEMORY; } else { create_info.domain = rocr_proxy::AllocDomain::kLocal; - if (!MemFlags.ui32.OnlyAddress && !isLocalMemoryAvailable(dev, SizeInBytes)) - return HSAKMT_STATUS_NO_MEMORY; } if (!MemFlags.ui32.CoarseGrain) diff --git a/topology.cpp b/topology.cpp index 0ac6d48c32..2c8be2c02b 100644 --- a/topology.cpp +++ b/topology.cpp @@ -750,6 +750,11 @@ static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, sysinfo(&info); props->SizeInBytes = info.totalram; + /* props->SizeInBytes is the actual physical system + * memory size. Reserve 1/16th for WSL system usage. + */ + max_single_alloc_size = info.totalram - (info.totalram >> 4); + props->Flags.MemoryProperty = 0; props->Width = 64; props->MemoryClockMax = 2133; From c6fe6807e8b9edc3aa5d34e06444677b8a3421f3 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Tue, 10 Sep 2024 06:01:18 -0700 Subject: [PATCH 007/159] wsl/hsakmt: Set uncached for kernel arg region Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- memory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/memory.cpp b/memory.cpp index 9d4c1679d8..a244be19e9 100644 --- a/memory.cpp +++ b/memory.cpp @@ -152,7 +152,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, if (!MemFlags.ui32.CoarseGrain) create_info.mem_flags = rocr_proxy::kFineGrain; - // create_info.mem_flags |= rocr_proxy::kKernarg; + //In hsa-runtime, only kernarg region set Uncached. + if (MemFlags.ui32.Uncached) + create_info.mem_flags |= rocr_proxy::kKernarg; + create_info.flags.physical_only = MemFlags.ui32.NoAddress; create_info.flags.interprocess = MemFlags.ui32.NoAddress; create_info.flags.locked = MemFlags.ui32.NoSubstitute;//AllocatePinned From 48395b229521599b63021f9d417cdb506a114ffa Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Mon, 14 Oct 2024 15:52:52 +0800 Subject: [PATCH 008/159] wsl/hsakmt: rename rocr_proxy to thunk_proxy Signed-off-by: Longlong Yao Part-of: --- .../thunk_proxy.h} | 6 +- inc/{rocr_proxy => thunk_proxy}/wddm_types.h | 0 inc/wddm/device.h | 14 ++--- inc/wddm/gpu_memory.h | 20 +++---- inc/wddm/queue.h | 12 ++-- inc/wddm/types.h | 2 +- memory.cpp | 12 ++-- rocr_proxy/librocr_proxy.a | Bin 365408 -> 0 bytes thunk_proxy/libthunk_proxy.a | Bin 0 -> 365488 bytes wddm/device.cpp | 54 +++++++++--------- wddm/gpu_memory.cpp | 10 ++-- wddm/queue.cpp | 10 ++-- 12 files changed, 70 insertions(+), 70 deletions(-) rename inc/{rocr_proxy/rocr_proxy.h => thunk_proxy/thunk_proxy.h} (97%) rename inc/{rocr_proxy => thunk_proxy}/wddm_types.h (100%) delete mode 100644 rocr_proxy/librocr_proxy.a create mode 100644 thunk_proxy/libthunk_proxy.a diff --git a/inc/rocr_proxy/rocr_proxy.h b/inc/thunk_proxy/thunk_proxy.h similarity index 97% rename from inc/rocr_proxy/rocr_proxy.h rename to inc/thunk_proxy/thunk_proxy.h index 60358cdb90..4a0ad069f4 100644 --- a/inc/rocr_proxy/rocr_proxy.h +++ b/inc/thunk_proxy/thunk_proxy.h @@ -1,9 +1,9 @@ -#ifndef _ROCR_PROXY_H_ -#define _ROCR_PROXY_H_ +#ifndef _WSL_INC_THUNK_PROXY_H_ +#define _WSL_INC_THUNK_PROXY_H_ #include -namespace rocr_proxy { +namespace thunk_proxy { enum AllocDomain { kSystem, kLocal, diff --git a/inc/rocr_proxy/wddm_types.h b/inc/thunk_proxy/wddm_types.h similarity index 100% rename from inc/rocr_proxy/wddm_types.h rename to inc/thunk_proxy/wddm_types.h diff --git a/inc/wddm/device.h b/inc/wddm/device.h index 3b3366af7c..1fb78798ad 100644 --- a/inc/wddm/device.h +++ b/inc/wddm/device.h @@ -51,7 +51,7 @@ #include #include "inc/wddm/types.h" -#include "inc/rocr_proxy/rocr_proxy.h" +#include "inc/thunk_proxy/thunk_proxy.h" #include "inc/wddm/va_mgr.h" #include "inc/wddm/status.h" #include "inc/wddm/types.h" @@ -80,7 +80,7 @@ public: bool IsDgpu() { return device_info_.is_dgpu; } const char *ProductName() { return device_info_.product_name; } const char *Uuid() { return device_info_.uuid; } - rocr_proxy::AsicFamilyType GfxFamily() { return device_info_.family; } + thunk_proxy::AsicFamilyType GfxFamily() { return device_info_.family; } uint32_t DeviceId() { return device_info_.device_id; } uint32_t WavefrontSize() { return device_info_.wavefront_size; } uint32_t ComputeUnitCount() { return device_info_.compute_unit_count; } @@ -168,7 +168,7 @@ public: bool AllocUserQueueMemFromUMD(void) const { return false; } bool IsHwsEnabled(int engine) { - return rocr_proxy::GetHwsEnabled(engine, &device_info_); + return thunk_proxy::GetHwsEnabled(engine, &device_info_); } void UpdatePageFence(uint64_t fence_value); @@ -178,16 +178,16 @@ public: D3DKMT_HANDLE DeviceHandle() const { return device_; } LUID GetLuid() const { return adapter_luid_; } - const rocr_proxy::DeviceInfo& DeviceInfo() const { return device_info_; } + const thunk_proxy::DeviceInfo& DeviceInfo() const { return device_info_; } - ErrorCode ReserveGpuVirtualAddress(rocr_proxy::AllocDomain domain, + ErrorCode ReserveGpuVirtualAddress(thunk_proxy::AllocDomain domain, gpusize hit_base_addr, gpusize size, gpusize *out_gpu_virtual_addr, gpusize alignment, bool lock=false); - ErrorCode FreeGpuVirtualAddress(rocr_proxy::AllocDomain domain, + ErrorCode FreeGpuVirtualAddress(thunk_proxy::AllocDomain domain, gpusize base_addr, gpusize size); @@ -231,7 +231,7 @@ private: uint32_t cmdbuf_aql_frame_size_; static const uint32_t cmdbuf_aql_frame_num_; // device info - rocr_proxy::DeviceInfo device_info_; + thunk_proxy::DeviceInfo device_info_; std::unique_ptr local_va_mgr_; //CmdUtil cmd_util; diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index 716e03d3be..adb39f4618 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -48,7 +48,7 @@ #include "util/utils.h" #include "inc/wddm/types.h" #include "inc/wddm/thunks.h" -#include "inc/rocr_proxy/rocr_proxy.h" +#include "inc/thunk_proxy/thunk_proxy.h" namespace wsl { namespace thunk { @@ -69,7 +69,7 @@ union GpuMemoryCreateFlags { struct GpuMemoryCreateInfo { GpuMemoryCreateInfo() { flags.reserved = 0; - domain = rocr_proxy::kLocal; + domain = thunk_proxy::kLocal; size = 0; alignment = 0; mem_flags = 0; @@ -80,7 +80,7 @@ struct GpuMemoryCreateInfo { } GpuMemoryCreateFlags flags; - rocr_proxy::AllocDomain domain; + thunk_proxy::AllocDomain domain; gpusize size; gpusize alignment; int mem_flags; @@ -102,7 +102,7 @@ struct GpuMemoryDesc { engine_flag = 0; } - rocr_proxy::AllocDomain domain; + thunk_proxy::AllocDomain domain; LUID adapter_luid; // Where is the backing store location gpusize gpu_addr; void *cpu_addr; @@ -129,7 +129,7 @@ struct GpuMemoryDesc { }; struct SharedHandleInfo { - rocr_proxy::AllocDomain domain; + thunk_proxy::AllocDomain domain; LUID adapter_luid; gpusize client_size; // user request size uint64_t size; @@ -151,10 +151,10 @@ public: uint64_t GpuAddress() const { return desc_.gpu_addr; } void *CpuAddress() const { return desc_.cpu_addr; } - inline bool IsLocal() const { return desc_.domain == rocr_proxy::kLocal; } - inline bool IsUserMemory() const { return desc_.domain == rocr_proxy::kUserMemory; } - inline bool IsSystem() const { return desc_.domain == rocr_proxy::kSystem; } - inline bool IsUserQueue() const { return desc_.domain == rocr_proxy::kUserQueue; } + inline bool IsLocal() const { return desc_.domain == thunk_proxy::kLocal; } + inline bool IsUserMemory() const { return desc_.domain == thunk_proxy::kUserMemory; } + inline bool IsSystem() const { return desc_.domain == thunk_proxy::kSystem; } + inline bool IsUserQueue() const { return desc_.domain == thunk_proxy::kUserQueue; } inline bool IsPhysicalOnly() const { return desc_.flags.is_physical_only; } inline bool IsVirtual() const { return desc_.flags.is_virtual; } inline bool IsShared() const { return desc_.flags.is_shared; } @@ -162,7 +162,7 @@ public: inline uint32_t Flags() const { return desc_.flags.reserved; } inline int GetAllocInfo() const { return desc_.mem_flags; } - inline bool IsFineGrain() const { return (desc_.mem_flags & rocr_proxy::kFineGrain); } + inline bool IsFineGrain() const { return (desc_.mem_flags & thunk_proxy::kFineGrain); } inline bool IsSameAdapter(const LUID &luid) const { return (desc_.adapter_luid.HighPart == luid.HighPart && desc_.adapter_luid.LowPart == luid.LowPart); diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 6b23ce358d..ffddf3be60 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -74,7 +74,7 @@ public: cmdbuf_size(cmdbuf_size), queue_engine(engine), use_hws(use_hws), - prio(rocr_proxy::kNormal) { + prio(thunk_proxy::kNormal) { } @@ -99,15 +99,15 @@ public: uint64_t *GetSyncAddr(void) const { return sync_addr; } uint64_t GetCmdbufAddr(void) const { return cmdbuf_addr; } - rocr_proxy::SchedLevel ConvertSchedLevel(hsa_amd_queue_priority_t prio) const { + thunk_proxy::SchedLevel ConvertSchedLevel(hsa_amd_queue_priority_t prio) const { switch (prio) { case HSA_AMD_QUEUE_PRIORITY_LOW: - return rocr_proxy::kLow; + return thunk_proxy::kLow; case HSA_AMD_QUEUE_PRIORITY_HIGH: - return rocr_proxy::kHigh; + return thunk_proxy::kHigh; case HSA_AMD_QUEUE_PRIORITY_NORMAL: default: - return rocr_proxy::kNormal; + return thunk_proxy::kNormal; } } @@ -129,7 +129,7 @@ public: uint32_t queue_engine; bool use_hws; - rocr_proxy::SchedLevel prio; + thunk_proxy::SchedLevel prio; }; class ComputeQueue : public WDDMQueue { diff --git a/inc/wddm/types.h b/inc/wddm/types.h index cd831158ce..3257902ad6 100644 --- a/inc/wddm/types.h +++ b/inc/wddm/types.h @@ -45,7 +45,7 @@ #include #include -#include "inc/rocr_proxy/wddm_types.h" +#include "inc/thunk_proxy/wddm_types.h" // windows wchar is 16bit, but linux is 32bit // seems libdxcore (not dxgkrnl.ko) convert thunk windows wchar to linux one // so only accept 32bit wchar args. note driver private data structure still diff --git a/memory.cpp b/memory.cpp index a244be19e9..ce8fdbbf20 100644 --- a/memory.cpp +++ b/memory.cpp @@ -144,17 +144,17 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; - create_info.domain = rocr_proxy::AllocDomain::kSystem; + create_info.domain = thunk_proxy::AllocDomain::kSystem; } else { - create_info.domain = rocr_proxy::AllocDomain::kLocal; + create_info.domain = thunk_proxy::AllocDomain::kLocal; } if (!MemFlags.ui32.CoarseGrain) - create_info.mem_flags = rocr_proxy::kFineGrain; + create_info.mem_flags = thunk_proxy::kFineGrain; //In hsa-runtime, only kernarg region set Uncached. if (MemFlags.ui32.Uncached) - create_info.mem_flags |= rocr_proxy::kKernarg; + create_info.mem_flags |= thunk_proxy::kKernarg; create_info.flags.physical_only = MemFlags.ui32.NoAddress; create_info.flags.interprocess = MemFlags.ui32.NoAddress; @@ -162,7 +162,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, create_info.flags.virtual_alloc = MemFlags.ui32.OnlyAddress; /*when only alloc virtual or only physical, it's vmm allocation, force to local*/ if (create_info.flags.virtual_alloc || create_info.flags.physical_only) - create_info.domain = rocr_proxy::AllocDomain::kLocal; + create_info.domain = thunk_proxy::AllocDomain::kLocal; auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { @@ -444,7 +444,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, wsl::thunk::GpuMemoryHandle handle = 0; uint64_t addr; wsl::thunk::GpuMemoryCreateInfo create_info{}; - create_info.domain = rocr_proxy::kUserMemory; + create_info.domain = thunk_proxy::kUserMemory; create_info.size = aligned_size; create_info.user_ptr = aligned_ptr; diff --git a/rocr_proxy/librocr_proxy.a b/rocr_proxy/librocr_proxy.a deleted file mode 100644 index 57b428938c6e7ab14d99ce517ae323dfa30ec0a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365408 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∓X)0!y_X}$A>WYr)7qZtK>Xr& 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

FfMrDj~8*^Y%(w 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%0D-?VZTGo&$M$RwNK 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 GPU_HUGE_PAGE_SIZE) + if (domain == thunk_proxy::kLocal && size >= GPU_HUGE_PAGE_SIZE) align = GPU_HUGE_PAGE_SIZE; gpu_addr = local_va_mgr_->Alloc(size, align, hit_base_addr); @@ -403,11 +403,11 @@ ErrorCode WDDMDevice::ReserveGpuVirtualAddress(const rocr_proxy::AllocDomain dom return code; } -ErrorCode WDDMDevice::FreeGpuVirtualAddress(const rocr_proxy::AllocDomain domain, +ErrorCode WDDMDevice::FreeGpuVirtualAddress(const thunk_proxy::AllocDomain domain, gpusize gpu_addr, gpusize size) { auto code = ErrorCode::Success; - if (domain == rocr_proxy::kSystem) { + if (domain == thunk_proxy::kSystem) { DecommitSystemHeapSpace((void *)gpu_addr, size); @@ -484,7 +484,7 @@ bool WDDMDevice::CreateContext(int engine, D3DKMT_HANDLE *handle) { return false; bool FwManagedGfxState = SupportStateShadowingByCpFw(); - priv_size = rocr_proxy::CreateContextPrivData(&priv_data, FwManagedGfxState); + priv_size = thunk_proxy::CreateContextPrivData(&priv_data, FwManagedGfxState); D3DKMT_CREATECONTEXTVIRTUAL args = {0}; args.hDevice = device_; @@ -497,16 +497,16 @@ bool WDDMDevice::CreateContext(int engine, D3DKMT_HANDLE *handle) { if (IsHwsEnabled(engine)) args.Flags.HwQueueSupported = 1; else - args.Flags.DisableGpuTimeout = rocr_proxy::ShouldDisableGpuTimeout(engine, &device_info_); + args.Flags.DisableGpuTimeout = thunk_proxy::ShouldDisableGpuTimeout(engine, &device_info_); NTSTATUS ret = D3DKMTCreateContextVirtual(&args); if (ret == STATUS_SUCCESS) { *handle = args.hContext; - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); return true; } - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); return false; @@ -676,7 +676,7 @@ NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters) if (ret != STATUS_SUCCESS) goto err_out1; - supported = rocr_proxy::QueryAdapterSupported(info[i].hAdapter); + supported = thunk_proxy::QueryAdapterSupported(info[i].hAdapter); if (std::wcsstr(query.ChipType, L"AMD") && supported) { adapters[num_adapters++] = info[i]; @@ -698,7 +698,7 @@ bool WDDMDevice::ParseDeviceInfo() { bool ret; memset(&device_info_, 0, sizeof(device_info_)); - ret = rocr_proxy::ParseAdapterInfo(adapter_, &device_info_); + ret = thunk_proxy::ParseAdapterInfo(adapter_, &device_info_); if (!ret) return false; @@ -713,7 +713,7 @@ void WDDMDevice::GetClockCounters(uint64_t *gpu, uint64_t *cpu) { void *priv_data; int priv_size; - priv_size = rocr_proxy::CreateCalibratedTimestampsPrivData(&priv_data); + priv_size = thunk_proxy::CreateCalibratedTimestampsPrivData(&priv_data); D3DKMT_ESCAPE d3dkmt_escape; memset(&d3dkmt_escape, 0, sizeof(d3dkmt_escape)); @@ -730,9 +730,9 @@ void WDDMDevice::GetClockCounters(uint64_t *gpu, uint64_t *cpu) { if (status) { debug_print("%s status %d \n", __FUNCTION__, status); } else { - rocr_proxy::QueryCalibratedTimestamps(priv_data, gpu, cpu); + thunk_proxy::QueryCalibratedTimestamps(priv_data, gpu, cpu); } - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); } bool WDDMDevice::CreateQueue(WDDMQueue *queue) { @@ -741,7 +741,7 @@ bool WDDMDevice::CreateQueue(WDDMQueue *queue) { GpuMemoryCreateInfo create_info{}; create_info.size = queue->cmdbuf_size; - create_info.domain = rocr_proxy::kSystem; + create_info.domain = thunk_proxy::kSystem; GpuMemory *gpu_mem = nullptr; auto code = CreateGpuMemory(create_info, &gpu_mem); @@ -779,7 +779,7 @@ bool WDDMDevice::SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, void *priv_data; int priv_size; - priv_size = rocr_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, false); + priv_size = thunk_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, false); D3DKMT_SUBMITCOMMAND args = {0}; args.Commands = command_addr; @@ -792,11 +792,11 @@ bool WDDMDevice::SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, NTSTATUS ret = D3DKMTSubmitCommand(&args); if (ret != STATUS_SUCCESS) { fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); return false; } - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); if (!GpuSignal(queue->context, &queue->syncobj, &fence_value, 1)) return false; @@ -809,23 +809,23 @@ bool WDDMDevice::CreateHwQueue(WDDMQueue *queue) { int priv_size; bool FwManagedGfxState = SupportStateShadowingByCpFw(); - priv_size = rocr_proxy::CreateHwQueuePrivData(&priv_data, queue->context, + priv_size = thunk_proxy::CreateHwQueuePrivData(&priv_data, queue->context, FwManagedGfxState, queue->prio); D3DKMT_CREATEHWQUEUE createHwQueue = {0}; createHwQueue.hHwContext = queue->context; - createHwQueue.Flags.DisableGpuTimeout = rocr_proxy::ShouldDisableGpuTimeout(queue->queue_engine, &device_info_); + createHwQueue.Flags.DisableGpuTimeout = thunk_proxy::ShouldDisableGpuTimeout(queue->queue_engine, &device_info_); createHwQueue.pPrivateDriverData = priv_data; createHwQueue.PrivateDriverDataSize = priv_size; NTSTATUS ret = D3DKMTCreateHwQueue(&createHwQueue); if (ret != STATUS_SUCCESS) { fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); return false; } - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); queue->queue = createHwQueue.hHwQueue; queue->syncobj = createHwQueue.hHwQueueProgressFence; @@ -853,7 +853,7 @@ bool WDDMDevice::SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, void *priv_data; int priv_size; - priv_size = rocr_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, true); + priv_size = thunk_proxy::CreateSubmitPrivData(&priv_data, queue->queue, command_addr, command_size, true); D3DKMT_SUBMITCOMMANDTOHWQUEUE args = {0}; args.hHwQueue = queue->queue; @@ -866,11 +866,11 @@ bool WDDMDevice::SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, NTSTATUS ret = D3DKMTSubmitCommandToHwQueue(&args); if (ret != STATUS_SUCCESS) { fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); return false; } - rocr_proxy::DestroyPrivData(priv_data); + thunk_proxy::DestroyPrivData(priv_data); return true; } diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 076753820a..8f9be30567 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -17,7 +17,7 @@ size_t GpuMemory::CalcChunkNumbers(gpusize size) { gpusize GpuMemory::AdjustSize(gpusize size) const { const auto &device_info = device_->DeviceInfo(); - if (device_info.enable_big_page_alignment && desc_.domain == rocr_proxy::kLocal) { + if (device_info.enable_big_page_alignment && desc_.domain == thunk_proxy::kLocal) { uint32_t alignment = device_info.big_page_alignment_size; // BigPage is only supported for allocations > bigPageMinAlignment. // Also, if bigPageMinAlignment == 0, BigPage optimization is not supported per KMD. @@ -259,7 +259,7 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { int priv_drv_data_size; int alloc_priv_data_size; - if (!rocr_proxy::CreatePrivateAllocInfo(NumChunks(), &priv_drv_data, &alloc_priv, + if (!thunk_proxy::CreatePrivateAllocInfo(NumChunks(), &priv_drv_data, &alloc_priv, &priv_drv_data_size, &alloc_priv_data_size)) return ErrorCode::OutOfMemory; @@ -277,11 +277,11 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { size_t block_size = std::min(size, WDDMDevice::GpuMemoryChunkSize); if (IsUserMemory() || IsSystem()) { - rocr_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, 0, desc_.mem_flags, desc_.engine_flag, device_info); + thunk_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, 0, desc_.mem_flags, desc_.engine_flag, device_info); alloc_info[i].pSystemMem = static_cast(cpu_addr); cpu_addr += block_size; } else { - rocr_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, addr, desc_.mem_flags, desc_.engine_flag, device_info); + thunk_proxy::SetAllocationInfo(priv_data, block_size, desc_.domain, addr, desc_.mem_flags, desc_.engine_flag, device_info); } size -= block_size; @@ -321,7 +321,7 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { resource_ = args.hResource; } - rocr_proxy::DestroyPrivateAllocInfo(priv_drv_data, alloc_priv); + thunk_proxy::DestroyPrivateAllocInfo(priv_drv_data, alloc_priv); return status; } diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 7ee11c24bf..1c3ccfae5c 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -60,9 +60,9 @@ hsa_status_t WDDMQueue::SwsInit(void) { GpuMemory *gpu_mem = nullptr; GpuMemoryCreateInfo create_info{}; - create_info.domain = rocr_proxy::kUserQueue; + create_info.domain = thunk_proxy::kUserQueue; create_info.size = device->GetSwsQueueSize(); - create_info.engine_flag = rocr_proxy::QueueEngine2EngineFlag(queue_engine); + create_info.engine_flag = thunk_proxy::QueueEngine2EngineFlag(queue_engine); auto code = device->CreateGpuMemory(create_info, &gpu_mem); if (code != ErrorCode::Success) { @@ -119,7 +119,7 @@ hsa_status_t WDDMQueue::SetPriority(hsa_amd_queue_priority_t priority) { if (!use_hws) return HSA_STATUS_SUCCESS; - rocr_proxy::SchedLevel new_prio = ConvertSchedLevel(priority); + thunk_proxy::SchedLevel new_prio = ConvertSchedLevel(priority); if (prio == new_prio) return HSA_STATUS_SUCCESS; @@ -246,7 +246,7 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, GpuMemoryCreateInfo create_info{}; create_info.size = PAGE_SIZE; - create_info.domain = rocr_proxy::kSystem; + create_info.domain = thunk_proxy::kSystem; GpuMemory *gpu_mem = nullptr; auto code = device->CreateGpuMemory(create_info, &gpu_mem); assert(code == ErrorCode::Success); @@ -436,7 +436,7 @@ bool ComputeQueue::UpdateScratch(uint32_t private_segment_size, bool wave32) { GpuMemoryCreateInfo create_info{}; create_info.size = scratch_size; - create_info.domain = rocr_proxy::kLocal; + create_info.domain = thunk_proxy::kLocal; GpuMemory *gpu_mem = nullptr; auto code = device->CreateGpuMemory(create_info, &gpu_mem); if (code != ErrorCode::Success) From 4ecb939111c0a3c5fe3e4c2db366e5dbe59da203 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Mon, 23 Sep 2024 10:43:06 +0800 Subject: [PATCH 009/159] wsl/hsakmt: remove Vmem and dmabuf from VersionCapability Signed-off-by: tiancyin --- version.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/version.cpp b/version.cpp index ba87575a2d..42c5640b4a 100644 --- a/version.cpp +++ b/version.cpp @@ -38,8 +38,6 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { CHECK_DXG_OPEN(); VersionCapInfo->Value = 0; - VersionCapInfo->ui64.Vmem = 1; - VersionCapInfo->ui64.dmabuf = 1; /*VersionCapInfo->ui64.InterruptSignal = 0; VersionCapInfo->ui64.Sdma = 0; VersionCapInfo->ui64.SdmaXgmi = 0; From e06e9b1d57f0ab6bbebc4e1bfd810bb2529cca6d Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Wed, 11 Sep 2024 10:34:43 +0800 Subject: [PATCH 010/159] wsl/hsakmt: add more flag to control sdma Signed-off-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- version.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/version.cpp b/version.cpp index 42c5640b4a..f8859d04ae 100644 --- a/version.cpp +++ b/version.cpp @@ -40,7 +40,9 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->Value = 0; /*VersionCapInfo->ui64.InterruptSignal = 0; VersionCapInfo->ui64.Sdma = 0; - VersionCapInfo->ui64.SdmaXgmi = 0; + VersionCapInfo->ui64.SdmaUserQueue = 0; + VersionCapInfo->ui64.SdmaPeer = 0; + VersionCapInfo->ui64.SdmaGang = 0; VersionCapInfo->ui64.Image = 0; VersionCapInfo->ui64.EventAge = 0; VersionCapInfo->ui64.Scratch = 0; From ab8771ccae287a33029ab8b5c354cf00d6b558e3 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Wed, 11 Sep 2024 14:21:54 +0800 Subject: [PATCH 011/159] wsl/hsakmt: add sdma queue implementation Signed-off-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- inc/wddm/queue.h | 96 ++++++++++++++++++++++++++++++++++++----- queues.cpp | 22 +++++++--- wddm/device.cpp | 20 +++++---- wddm/queue.cpp | 109 +++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 218 insertions(+), 29 deletions(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index ffddf3be60..6bf8c57dcc 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -44,6 +44,9 @@ #include #include +#include +#include +#include #include "inc/wddm/types.h" #include "inc/wddm/device.h" #include "inc/wddm/gpu_memory.h" @@ -61,6 +64,7 @@ class WDDMDevice; class WDDMQueue { public: WDDMQueue(WDDMDevice *device, + uint64_t cmdbuf_addr, uint32_t cmdbuf_size, uint32_t engine, bool use_hws = true) : @@ -70,7 +74,7 @@ public: syncobj(NULL), sync_addr(NULL), cmdbuf(0), - cmdbuf_addr(0), + cmdbuf_addr(cmdbuf_addr), cmdbuf_size(cmdbuf_size), queue_engine(engine), use_hws(use_hws), @@ -80,8 +84,9 @@ public: virtual ~WDDMQueue() { } - virtual hsa_status_t Init(void) = 0; - virtual hsa_status_t Fini(void) = 0; + virtual hsa_status_t Init(void) { return HSA_STATUS_SUCCESS; } + virtual hsa_status_t Fini(void) { return HSA_STATUS_SUCCESS; } + virtual void RingDoorbell() { } hsa_status_t SwsInit(void); hsa_status_t SwsFini(void); @@ -250,17 +255,12 @@ private: class SDMAQueue : public WDDMQueue { public: SDMAQueue(WDDMDevice *device, + void *ring, uint64_t cmdbuf_size, uint32_t engine, - bool use_hws = true) : - WDDMQueue(device, cmdbuf_size, engine, use_hws), - rptr_next(0), - ib_size(0), - ib_start_addr(0) { + bool use_hws = true); - } - - virtual ~SDMAQueue() { } + virtual ~SDMAQueue(); hsa_status_t Init(void); hsa_status_t Fini(void); @@ -272,10 +272,84 @@ public: device->CpuWait(&syncobj, &rptr_next, 1, false); } + uint64_t * GetRingWptr(void) { return &wptr_next_; } + uint64_t * GetRingRptr(void) { return WDDMQueue::GetSyncAddr(); } + uint64_t * GetDoorbellPtr() { return &doorbell_; } + void RingDoorbell(); + private: + uint64_t wptr_next_; + uint64_t wptr_pre_; uint64_t rptr_next; + uint64_t doorbell_; + std::queue> wptr_queue_; uint64_t ib_size; uint64_t ib_start_addr; + + std::thread thread_; + bool thread_stop_; + std::mutex thread_cond_lock_; + std::condition_variable thread_cond_; + static void SdmaThread(SDMAQueue *queue); + + struct SDMA_PKT_POLL_REGMEM { + union { + struct { + unsigned int op : 8; + unsigned int sub_op : 8; + unsigned int reserved_0 : 10; + unsigned int hdp_flush : 1; + unsigned int reserved_1 : 1; + unsigned int func : 3; + unsigned int mem_poll : 1; + }; + unsigned int DW_0_DATA; + } HEADER_UNION; + + union { + struct { + unsigned int addr_31_0 : 32; + }; + unsigned int DW_1_DATA; + } ADDR_LO_UNION; + + union { + struct { + unsigned int addr_63_32 : 32; + }; + unsigned int DW_2_DATA; + } ADDR_HI_UNION; + + union { + struct { + unsigned int value : 32; + }; + unsigned int DW_3_DATA; + } VALUE_UNION; + + union { + struct { + unsigned int mask : 32; + }; + unsigned int DW_4_DATA; + } MASK_UNION; + + union { + struct { + unsigned int interval : 16; + unsigned int retry_count : 12; + unsigned int reserved_0 : 4; + }; + unsigned int DW_5_DATA; + } DW5_UNION; + }; + const unsigned int SDMA_OP_POLL_REGMEM = 8; + bool IsPollPacket(SDMA_PKT_POLL_REGMEM* pkt) { + return pkt->HEADER_UNION.op == SDMA_OP_POLL_REGMEM && + pkt->HEADER_UNION.mem_poll == 1 && + pkt->HEADER_UNION.func == 3; + } + uint32_t WrapIntoRocrRing(uint64_t idx) { return (idx & (cmdbuf_size - 1)); } }; } // namespace thunk diff --git a/queues.cpp b/queues.cpp index 0d94c833ac..ae8ee471b3 100644 --- a/queues.cpp +++ b/queues.cpp @@ -63,15 +63,27 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( bool use_hws = device_->IsHwsEnabled(queue_engine); auto queue_ = new wsl::thunk::ComputeQueue( device_, QueueAddress, pkg_num, - reinterpret_cast *>(QueueResource->Queue_write_ptr_aql), - reinterpret_cast *>(QueueResource->Queue_read_ptr_aql), + reinterpret_cast *>( + QueueResource->Queue_write_ptr_aql), + reinterpret_cast *>( + QueueResource->Queue_read_ptr_aql), QueueResource->ErrorReason, cmdbuf_size, queue_engine, use_hws); QueueResource->QueueId = reinterpret_cast(queue_); // for doorbell_signal.hardware_doorbell_ptr QueueResource->Queue_DoorBell_aql = queue_->GetDoorbellPtr(); } break; - case HSA_QUEUE_SDMA: + case HSA_QUEUE_SDMA: { + uint32_t queue_engine = device_->GetSdmaEngine(0); // TODO: + bool use_hws = device_->IsHwsEnabled(queue_engine); + auto queue_ = new wsl::thunk::SDMAQueue( + device_, QueueAddress, QueueSizeInBytes, + queue_engine, use_hws); + QueueResource->QueueId = reinterpret_cast(queue_); + QueueResource->Queue_DoorBell_aql = queue_->GetDoorbellPtr(); + QueueResource->Queue_write_ptr_aql = queue_->GetRingWptr(); + QueueResource->Queue_read_ptr_aql = queue_->GetRingRptr(); + } break; default: assert(false); QueueResource->QueueId = 0; @@ -101,7 +113,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUpdateQueue( HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyQueue(HSA_QUEUEID QueueId) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -165,7 +177,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocQueueGWS(HSA_QUEUEID QueueId, HSAuint32 nGWS, HSAKMT_STATUS HSAKMTAPI hsaKmtQueueRingDoorbell(HSA_QUEUEID QueueId) { CHECK_DXG_OPEN(); - auto queue_ = reinterpret_cast(QueueId); + auto queue_ = reinterpret_cast(QueueId); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; diff --git a/wddm/device.cpp b/wddm/device.cpp index cb9dd3b48e..8dfff4032a 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -739,17 +739,19 @@ bool WDDMDevice::CreateQueue(WDDMQueue *queue) { if (!CreateContext(queue->queue_engine, &queue->context)) return false; - GpuMemoryCreateInfo create_info{}; - create_info.size = queue->cmdbuf_size; - create_info.domain = thunk_proxy::kSystem; - GpuMemory *gpu_mem = nullptr; - auto code = CreateGpuMemory(create_info, &gpu_mem); - if (code != ErrorCode::Success) - goto err_out0; + if (queue->cmdbuf_addr == 0) { + GpuMemoryCreateInfo create_info{}; + create_info.size = queue->cmdbuf_size; + create_info.domain = thunk_proxy::kSystem; - queue->cmdbuf = gpu_mem->GetGpuMemoryHandle(); - queue->cmdbuf_addr = gpu_mem->GpuAddress(); + auto code = CreateGpuMemory(create_info, &gpu_mem); + if (code != ErrorCode::Success) + goto err_out0; + + queue->cmdbuf = gpu_mem->GetGpuMemoryHandle(); + queue->cmdbuf_addr = gpu_mem->GpuAddress(); + } if (queue->Init()) goto err_out1; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 1c3ccfae5c..28fcd40ffc 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -222,7 +222,7 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, uint32_t cmdbuf_size, uint32_t engine, bool use_hws) : - WDDMQueue(device, cmdbuf_size, engine, use_hws), + WDDMQueue(device, 0, cmdbuf_size, engine, use_hws), ring(ring), ring_size(ring_size), ring_wptr(ring_wptr), @@ -240,9 +240,8 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, scratch_size_per_wave_(0), scratch_size_(0), scratch_base_(nullptr) { - - bool ret = device->CreateQueue(this); - assert(ret); + bool ret = device->CreateQueue(this); + assert(ret); GpuMemoryCreateInfo create_info{}; create_info.size = PAGE_SIZE; @@ -950,6 +949,108 @@ hsa_status_t ComputeQueue::Process(void) { return HSA_STATUS_SUCCESS; } +void SDMAQueue::SdmaThread(SDMAQueue *queue) { + // This timing system is used for sleeping this Thread + // when one packet is invalid for about 2 seconds. + std::chrono::steady_clock::time_point start_time, time; + // Set the polling timeout value for 2 seconds + const std::chrono::milliseconds kMaxElapsed(2000); + bool sleep = false; + start_time = std::chrono::steady_clock::now(); + + while (true) { + if (!queue->wptr_queue_.empty()) { + uint64_t start = queue->wptr_queue_.front().first; + uint64_t end = queue->wptr_queue_.front().second; + queue->wptr_queue_.pop(); + debug_print("SDMA: wptr %lx %lx\n", start, end); + + SDMA_PKT_POLL_REGMEM* poll_pkt = reinterpret_cast(queue->cmdbuf_addr + queue->WrapIntoRocrRing(start)); + SDMA_PKT_POLL_REGMEM* poll_next_pkt = poll_pkt + 1; + while (queue->IsPollPacket(poll_pkt) && queue->IsPollPacket(poll_next_pkt)) { + uint64_t poll_addr; + uint64_t poll_val; + if (poll_pkt->ADDR_LO_UNION.addr_31_0 > poll_next_pkt->ADDR_LO_UNION.addr_31_0) { + poll_addr = poll_next_pkt->ADDR_LO_UNION.addr_31_0 | + (uint64_t)poll_next_pkt->ADDR_HI_UNION.addr_63_32 << 32; + poll_val = poll_next_pkt->VALUE_UNION.value | + (uint64_t)poll_pkt->VALUE_UNION.value << 32; + } else { + poll_addr = poll_pkt->ADDR_LO_UNION.addr_31_0 | + (uint64_t)poll_pkt->ADDR_HI_UNION.addr_63_32 << 32; + poll_val = poll_pkt->VALUE_UNION.value | + (uint64_t)poll_next_pkt->VALUE_UNION.value << 32; + } + amd_signal_t* signal = (amd_signal_t*)((char*)poll_addr - offsetof(amd_signal_t, value)); + uint64_t signal_handle = reinterpret_cast(signal); + debug_print("SDMA: poll signal %#lx addr %#lx val %d\n", signal_handle, poll_addr, poll_val); + hsa_signal_t hsa_signal = {signal_handle}; + hsa_signal_value_t value = + fn_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); + assert(value == poll_val); + + poll_pkt += 2; + poll_next_pkt += 2; + } + queue->PreparePacket(queue->WrapIntoRocrRing(start), end - start); + std::atomic_thread_fence(std::memory_order_release); + queue->Submit(); + } else { + time = std::chrono::steady_clock::now(); + if (time - start_time > kMaxElapsed) + sleep = true; + } + + std::unique_lock lock(queue->thread_cond_lock_); + if (sleep && queue->wptr_queue_.empty()) { + while (!queue->thread_stop_ && queue->wptr_queue_.empty()) { + queue->thread_cond_.wait(lock); + } + if (queue->thread_stop_) + break; + sleep = false; + start_time = std::chrono::steady_clock::now(); + } + } + debug_print("sdma thread exit\n"); +} + +SDMAQueue::SDMAQueue(WDDMDevice *device, + void *ring, + uint64_t cmdbuf_size, + uint32_t engine, + bool use_hws) : + WDDMQueue(device, reinterpret_cast(ring), cmdbuf_size, engine, use_hws), + wptr_next_(0), + wptr_pre_(0), + rptr_next(0), + thread_stop_(false), + ib_size(0), + ib_start_addr(0) { + bool ret = device->CreateQueue(this); + assert(ret); + + thread_ = std::thread(SdmaThread, this); +} + +SDMAQueue::~SDMAQueue() { + thread_cond_lock_.lock(); + thread_stop_ = true; + thread_cond_lock_.unlock(); + thread_cond_.notify_one(); + thread_.join(); + + device->DestroyQueue(this); +} + +void SDMAQueue::RingDoorbell() { + debug_print("SDMA: ringdoorbell %#llx %#llx\n", wptr_pre_, wptr_next_); + + wptr_queue_.emplace(wptr_pre_, wptr_next_); + thread_cond_.notify_one(); + wptr_pre_ = wptr_next_; +} + hsa_status_t SDMAQueue::Init(void) { hsa_status_t ret = use_hws ? HwsInit() : SwsInit(); if (ret) From 7bf51b889f6a697b2315ae6954eeaa0769638881 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 19 Sep 2024 14:43:39 +0800 Subject: [PATCH 012/159] wsl/hsakmt: enable sdma Signed-off-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- version.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.cpp b/version.cpp index f8859d04ae..9d28cc9389 100644 --- a/version.cpp +++ b/version.cpp @@ -38,8 +38,8 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { CHECK_DXG_OPEN(); VersionCapInfo->Value = 0; + VersionCapInfo->ui64.Sdma = 1; /*VersionCapInfo->ui64.InterruptSignal = 0; - VersionCapInfo->ui64.Sdma = 0; VersionCapInfo->ui64.SdmaUserQueue = 0; VersionCapInfo->ui64.SdmaPeer = 0; VersionCapInfo->ui64.SdmaGang = 0; From f402bf55eb4b1f3a32898ae22c70aabd4d582a49 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Wed, 25 Sep 2024 22:23:25 -0700 Subject: [PATCH 013/159] wsl/hsakmt: add VendorPacket to VersionCapInfo Provide the query for hsa-runtime to decide whether dispatch vendor packet to wsl-thunk Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- globals.cpp | 2 ++ libhsakmt.h | 1 + openclose.cpp | 5 +++++ version.cpp | 2 ++ 4 files changed, 10 insertions(+) diff --git a/globals.cpp b/globals.cpp index 4f866ac4fc..a75100201f 100644 --- a/globals.cpp +++ b/globals.cpp @@ -45,5 +45,7 @@ bool is_svm_api_supported; int zfb_support; /* handle vendor specific packet */ int vendor_packet_support; +/* enable vendor packet in hsa-runtime*/ +int enable_vendor_packet; size_t max_single_alloc_size = 0; \ No newline at end of file diff --git a/libhsakmt.h b/libhsakmt.h index 4ac14a304a..1a3e3a2b6c 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -43,6 +43,7 @@ extern bool is_dgpu; extern bool is_svm_api_supported; extern int zfb_support; extern int vendor_packet_support; +extern int enable_vendor_packet; extern size_t max_single_alloc_size; #undef HSAKMTAPI diff --git a/openclose.cpp b/openclose.cpp index 9c66c1a9c7..49da15d070 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -140,6 +140,11 @@ static HSAKMT_STATUS init_vars_from_env(void) { if (envvar) vendor_packet_support = atoi(envvar); + /* Decide whether hsa-runtime dispatch vendor packet */ + envvar = getenv("WSL_ENABLE_VENDOR_PACKET"); + if (envvar) + enable_vendor_packet = atoi(envvar); + return HSAKMT_STATUS_SUCCESS; } diff --git a/version.cpp b/version.cpp index 9d28cc9389..d3afc40662 100644 --- a/version.cpp +++ b/version.cpp @@ -48,5 +48,7 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->ui64.Scratch = 0; VersionCapInfo->ui64.XNack = 0;*/ + VersionCapInfo->ui64.VendorPacket = enable_vendor_packet; + return HSAKMT_STATUS_SUCCESS; } From c7b5ff64e36188fb85a44bd90ee58fead0c88623 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Sun, 29 Sep 2024 14:42:35 +0800 Subject: [PATCH 014/159] wsl/hsakmt: Remove fn_amdgpu_device_get_fd in openclose.cpp There are already relevant implementations in this patch dcf0fa2 ("wsl/thunk: implement drm interfaces for dropping libdrm*") Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Part-of: --- openclose.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/openclose.cpp b/openclose.cpp index 49da15d070..d419bca721 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -37,8 +37,6 @@ #include "inc/hsa/hsa.h" #include "inc/hsa/hsa_ven_amd_loader.h" -int (*fn_amdgpu_device_get_fd)(HsaAMDGPUDeviceHandle device_handle); - hsa_signal_value_t (*fn_hsa_signal_load_relaxed)(hsa_signal_t signal); hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( hsa_signal_t signal, hsa_signal_condition_t condition, From b5fb17fd66b7788a4924f1f2c61bebe85942ebad Mon Sep 17 00:00:00 2001 From: tiancyin Date: Wed, 18 Sep 2024 11:32:55 +0800 Subject: [PATCH 015/159] wsl/hsakmt: implement drm interfaces for dropping libdrm* Signed-off-by: tiancyin --- libdrm.cpp | 50 +++++++++++++++++++++++++++++++++++++------------- libhsakmt.ver | 11 ++++++++--- openclose.cpp | 10 ---------- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/libdrm.cpp b/libdrm.cpp index b16907ba40..f1c115c207 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -40,6 +40,7 @@ // //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include @@ -59,19 +60,37 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( return HSAKMT_STATUS_ERROR; } -HSAKMTAPI int hsaKmtamdgpu_query_gpu_info(void *dev, - struct amdgpu_gpu_info *info) { +HSAKMTAPI int amdgpu_query_gpu_info(amdgpu_device_handle dev, + struct amdgpu_gpu_info *info) { wsl::thunk::WDDMDevice *pDevice = - reinterpret_cast(dev); + reinterpret_cast(dev); memset(info, 0, sizeof(*info)); info->gpu_counter_freq = pDevice->GPUCounterFrequency() / 1000ull; return 0; } -HSAKMTAPI int hsaKmtamdgpu_bo_import(amdgpu_device_handle dev, - enum amdgpu_bo_handle_type type, - uint32_t shared_handle, - struct amdgpu_bo_import_result *output) { +HSAKMTAPI int amdgpu_device_get_fd(amdgpu_device_handle dev) { + return 0; +} + +HSAKMTAPI int amdgpu_bo_cpu_map(amdgpu_bo_handle bo, void **cpu) { + return 0; +} + +HSAKMTAPI int amdgpu_bo_free(amdgpu_bo_handle buf_handle) { + return 0; +} + +HSAKMTAPI int amdgpu_bo_export(amdgpu_bo_handle bo, + enum amdgpu_bo_handle_type type, + uint32_t *shared_handle) { + *shared_handle = 0; + return 0; +} +HSAKMTAPI int amdgpu_bo_import(amdgpu_device_handle dev, + enum amdgpu_bo_handle_type type, + uint32_t shared_handle, + struct amdgpu_bo_import_result *output) { void *MemoryAddress = nullptr; HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &MemoryAddress); if (ret == HSAKMT_STATUS_SUCCESS) { @@ -84,12 +103,12 @@ HSAKMTAPI int hsaKmtamdgpu_bo_import(amdgpu_device_handle dev, } -HSAKMTAPI int hsaKmtamdgpu_bo_va_op(amdgpu_bo_handle bo, - uint64_t offset, - uint64_t size, - uint64_t addr, - uint64_t flags, - uint32_t ops) { +HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, + uint64_t offset, + uint64_t size, + uint64_t addr, + uint64_t flags, + uint32_t ops) { switch(ops) { case AMDGPU_VA_OP_MAP: { @@ -117,3 +136,8 @@ HSAKMTAPI int hsaKmtamdgpu_bo_va_op(amdgpu_bo_handle bo, } return 0; } + +HSAKMTAPI int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, + void *data, unsigned long size) { + return 0; +} diff --git a/libhsakmt.ver b/libhsakmt.ver index dbc8abf336..cb0adebc6d 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -92,9 +92,14 @@ hsaKmtPcSamplingStop; hsaKmtPcSamplingSupport; hsaKmtGetVersionCapInfo; hsaKmtQueueRingDoorbell; -hsaKmtamdgpu_query_gpu_info; -hsaKmtamdgpu_bo_import; -hsaKmtamdgpu_bo_va_op; +amdgpu_query_gpu_info; +amdgpu_bo_import; +amdgpu_bo_va_op; +amdgpu_device_get_fd; +amdgpu_bo_cpu_map; +amdgpu_bo_free; +amdgpu_bo_export; +drmCommandWriteRead; local: *; }; diff --git a/openclose.cpp b/openclose.cpp index d419bca721..e30f17d6d4 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -173,14 +173,6 @@ static HSAKMT_STATUS init_symbols(void) { return HSAKMT_STATUS_SUCCESS; } -static void load_libdrm_amdgpu(void) { - /* load libdrm_amdgpu */ - int fd; - uint32_t major, minor; - amdgpu_device_handle device_handle; - amdgpu_device_initialize(fd, &major, &minor, &device_handle); -} - HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { HSAKMT_STATUS result; int fd = -1; @@ -204,8 +196,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { if (result != HSAKMT_STATUS_SUCCESS) goto open_failed; - load_libdrm_amdgpu(); - result = init_vars_from_env(); if (result != HSAKMT_STATUS_SUCCESS) goto open_failed; From fa22e6a5301cff819c8012ab4062e7adab797932 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Mon, 14 Oct 2024 16:08:59 +0800 Subject: [PATCH 016/159] wsl/hsakmt: drop dlsym for hsa symbols Signed-off-by: Flora Cui --- hsa.cpp | 120 +++++++++++++++++++++++++++++++++++++++++++++++++ openclose.cpp | 44 ------------------ wddm/queue.cpp | 36 +++++++-------- 3 files changed, 138 insertions(+), 62 deletions(-) create mode 100755 hsa.cpp diff --git a/hsa.cpp b/hsa.cpp new file mode 100755 index 0000000000..a596217598 --- /dev/null +++ b/hsa.cpp @@ -0,0 +1,120 @@ +#include +#include "libhsakmt.h" +#include "hsa-runtime/inc/hsa.h" +#include "hsa-runtime/inc/hsa_ven_amd_loader.h" + +static std::unique_ptr lock_ = std::make_unique(); +static hsa_status_t (*fn_hsa_ven_amd_loader_query_host_address)( + const void *device_address, const void **host_address); + +#if 0 +static hsa_signal_value_t (*fn_hsa_signal_load_relaxed)(hsa_signal_t signal); +static hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( + hsa_signal_t signal, hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint); +static void (*fn_hsa_signal_store_screlease)(hsa_signal_t hsa_signal, + hsa_signal_value_t value); + +#define _HSAKMT_LOOKUP_SYMS(_sym) \ +if (_sym == nullptr) { \ + std::lock_guard gard(*lock_); \ + if (_sym == nullptr) { \ + fn_##_sym = \ + reinterpret_cast(dlsym(RTLD_DEFAULT, #_sym)); \ + if (!fn_##_sym) { \ + pr_err("%s not found - %s\n", #_sym, dlerror()); \ + } \ + } \ +} + +#define _HSAKMT_EXEC_API(_sym, ...) \ +do { \ + if (fn_##_sym != nullptr) { \ + return fn_##_sym(__VA_ARGS__); \ + } \ +} while(0); + +hsa_signal_value_t hsakmt_hsa_signal_load_relaxed(hsa_signal_t signal) { + _HSAKMT_LOOKUP_SYMS(hsa_signal_load_relaxed); + _HSAKMT_EXEC_API(hsa_signal_load_relaxed, signal); + return 0; +} + +hsa_signal_value_t hsakmt_hsa_signal_wait_relaxed( + hsa_signal_t signal, hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint) { + _HSAKMT_LOOKUP_SYMS(hsa_signal_wait_relaxed); + _HSAKMT_EXEC_API(hsa_signal_wait_relaxed, signal, condition, compare_value, + timeout_hint, wait_state_hint); + return 0; +} + +void hsakmt_hsa_signal_store_screlease(hsa_signal_t hsa_signal, + hsa_signal_value_t value){ + _HSAKMT_LOOKUP_SYMS(hsa_signal_store_screlease); + _HSAKMT_EXEC_API(hsa_signal_store_screlease, hsa_signal, value); +} + +hsa_status_t hsakmt_hsa_ven_amd_loader_query_host_address( + const void *device_address, const void **host_address) { + if (fn_hsa_ven_amd_loader_query_host_address == nullptr) { + std::lock_guard gard(*lock_); + if (fn_hsa_ven_amd_loader_query_host_address == nullptr) { + hsa_status_t (*fn_hsa_system_get_extension_table)( + uint16_t extension, uint16_t version_major, uint16_t version_minor, void *table); + fn_hsa_system_get_extension_table = + reinterpret_cast(dlsym(RTLD_DEFAULT, "hsa_system_get_extension_table")); + if (fn_hsa_system_get_extension_table == nullptr) { + pr_err("%s not found - %s\n", "hsa_system_get_extension_table", dlerror()); + return HSA_STATUS_ERROR; + } + + hsa_ven_amd_loader_1_03_pfn_t table; + fn_hsa_system_get_extension_table(HSA_EXTENSION_AMD_LOADER, 1, 3, &table); + fn_hsa_ven_amd_loader_query_host_address = + table.hsa_ven_amd_loader_query_host_address; + } + } + + _HSAKMT_EXEC_API(hsa_ven_amd_loader_query_host_address, device_address, host_address); + return HSA_STATUS_ERROR; +} + +#else +hsa_signal_value_t hsakmt_hsa_signal_load_relaxed(hsa_signal_t signal) { + return hsa_signal_load_relaxed(signal); +} + +hsa_signal_value_t hsakmt_hsa_signal_wait_relaxed( + hsa_signal_t signal, hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint) { + return hsa_signal_wait_relaxed(signal, condition, compare_value, timeout_hint, + wait_state_hint); +} + +void hsakmt_hsa_signal_store_screlease(hsa_signal_t hsa_signal, + hsa_signal_value_t value) { + hsa_signal_store_screlease(hsa_signal, value); +} + +hsa_status_t hsakmt_hsa_ven_amd_loader_query_host_address( + const void *device_address, const void **host_address) { + if (fn_hsa_ven_amd_loader_query_host_address == nullptr) { + std::lock_guard gard(*lock_); + if (fn_hsa_ven_amd_loader_query_host_address == nullptr) { + hsa_ven_amd_loader_1_03_pfn_t table; + hsa_system_get_extension_table(HSA_EXTENSION_AMD_LOADER, 1, 3, &table); + fn_hsa_ven_amd_loader_query_host_address = + table.hsa_ven_amd_loader_query_host_address; + } + } + + if (fn_hsa_ven_amd_loader_query_host_address) + return fn_hsa_ven_amd_loader_query_host_address(device_address, host_address); + + return HSA_STATUS_ERROR; +} +#endif diff --git a/openclose.cpp b/openclose.cpp index e30f17d6d4..0783f401ea 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -30,22 +30,9 @@ #include #include #include -#include #include #include #include "libhsakmt.h" -#include "inc/hsa/hsa.h" -#include "inc/hsa/hsa_ven_amd_loader.h" - -hsa_signal_value_t (*fn_hsa_signal_load_relaxed)(hsa_signal_t signal); -hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( - hsa_signal_t signal, hsa_signal_condition_t condition, - hsa_signal_value_t compare_value, uint64_t timeout_hint, - hsa_wait_state_t wait_state_hint); -void (*fn_hsa_signal_store_screlease)(hsa_signal_t hsa_signal, - hsa_signal_value_t value); -hsa_status_t (*fn_hsa_ven_amd_loader_query_host_address)( - const void *device_address, const void **host_address); static const char dxg_device_name[] = "/dev/dxg"; static pid_t parent_pid = -1; @@ -146,33 +133,6 @@ static HSAKMT_STATUS init_vars_from_env(void) { return HSAKMT_STATUS_SUCCESS; } -#define _HSAKMT_LOOKUP_SYMS(_sym) \ - do { \ - fn_##_sym = \ - reinterpret_cast(dlsym(RTLD_DEFAULT, #_sym)); \ - if (!fn_##_sym) { \ - pr_err("%s not found - %s\n", #_sym, dlerror()); \ - return HSAKMT_STATUS_ERROR; \ - } \ - } while (0) - -static HSAKMT_STATUS init_symbols(void) { - _HSAKMT_LOOKUP_SYMS(hsa_signal_load_relaxed); - _HSAKMT_LOOKUP_SYMS(hsa_signal_wait_relaxed); - _HSAKMT_LOOKUP_SYMS(hsa_signal_store_screlease); - - hsa_status_t (*fn_hsa_system_get_extension_table)( - uint16_t extension, uint16_t version_major, uint16_t version_minor, - void *table); - _HSAKMT_LOOKUP_SYMS(hsa_system_get_extension_table); - hsa_ven_amd_loader_1_03_pfn_t table; - fn_hsa_system_get_extension_table(HSA_EXTENSION_AMD_LOADER, 1, 3, &table); - fn_hsa_ven_amd_loader_query_host_address = - table.hsa_ven_amd_loader_query_host_address; - - return HSAKMT_STATUS_SUCCESS; -} - HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { HSAKMT_STATUS result; int fd = -1; @@ -192,10 +152,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { if (dxg_open_count == 0) { static bool atfork_installed = false; - result = init_symbols(); - if (result != HSAKMT_STATUS_SUCCESS) - goto open_failed; - result = init_vars_from_env(); if (result != HSAKMT_STATUS_SUCCESS) goto open_failed; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 28fcd40ffc..5ffaa12e31 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -48,6 +48,18 @@ #include "inc/registers.h" #include "libhsakmt.h" +#include "hsa-runtime/inc/hsa.h" +#include "hsa-runtime/inc/hsa_ven_amd_loader.h" +extern hsa_signal_value_t hsakmt_hsa_signal_load_relaxed(hsa_signal_t signal); +extern hsa_signal_value_t hsakmt_hsa_signal_wait_relaxed( + hsa_signal_t signal, hsa_signal_condition_t condition, + hsa_signal_value_t compare_value, uint64_t timeout_hint, + hsa_wait_state_t wait_state_hint); +extern void hsakmt_hsa_signal_store_screlease(hsa_signal_t hsa_signal, + hsa_signal_value_t value); +extern hsa_status_t hsakmt_hsa_ven_amd_loader_query_host_address( + const void *device_address, const void **host_address); + namespace wsl { namespace thunk { @@ -130,7 +142,6 @@ hsa_status_t WDDMQueue::SetPriority(hsa_amd_queue_priority_t priority) { return HwsInit(); } -extern "C" void (*fn_hsa_signal_store_screlease)(hsa_signal_t hsa_signal, hsa_signal_value_t value); void ComputeQueue::HandleError(hsa_status_t status) { hsa_signal_t sig = amd_queue_rocr_->queue_inactive_signal; hsa_signal_value_t val = -1; @@ -160,7 +171,7 @@ void ComputeQueue::HandleError(hsa_status_t status) { } if (sig.handle) { - fn_hsa_signal_store_screlease(sig, val); + hsakmt_hsa_signal_store_screlease(sig, val); } if (error_code_) { error_code_->store(val, std::memory_order_release); @@ -505,13 +516,10 @@ uint32_t ComputeQueue::UpdateIndexStride(uint32_t srd, bool wave32) { return srd; } -extern "C" hsa_status_t (*fn_hsa_ven_amd_loader_query_host_address)( - const void *device_address, - const void **host_address); uint64_t ComputeQueue::GetKernelObjAddr(uint64_t addr) const { //TODO: convert dev_addr to host_addr uint64_t host_addr = 0; - auto ret = fn_hsa_ven_amd_loader_query_host_address(reinterpret_cast(addr), + auto ret = hsakmt_hsa_ven_amd_loader_query_host_address(reinterpret_cast(addr), reinterpret_cast(&host_addr)); if (ret == HSA_STATUS_ERROR_INVALID_ARGUMENT) { return NULL; @@ -706,14 +714,6 @@ ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *pa return HSA_STATUS_SUCCESS; } -extern "C" hsa_signal_value_t (*fn_hsa_signal_load_relaxed)( - hsa_signal_t signal); -extern "C" hsa_signal_value_t (*fn_hsa_signal_wait_relaxed)( - hsa_signal_t signal, - hsa_signal_condition_t condition, - hsa_signal_value_t compare_value, - uint64_t timeout_hint, - hsa_wait_state_t wait_state_hint); hsa_status_t ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet, bool is_or) { debug_print("queue %p %s head=%x dep %" PRIx64 " %" PRIx64 " %" PRIx64 @@ -735,7 +735,7 @@ ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet while (n) { for (int i = 0; i < n; i++) { - if (!fn_hsa_signal_load_relaxed(sig[i])) { + if (!hsakmt_hsa_signal_load_relaxed(sig[i])) { unsignaled = false; break; } @@ -751,7 +751,7 @@ ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet continue; hsa_signal_value_t value = - fn_hsa_signal_wait_relaxed(packet->dep_signal[i], HSA_SIGNAL_CONDITION_EQ, 0, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); + hsakmt_hsa_signal_wait_relaxed(packet->dep_signal[i], HSA_SIGNAL_CONDITION_EQ, 0, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); assert(value == 0); } } @@ -851,7 +851,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac ib_size = i; } else { if (packet->completion_signal.handle != 0) { - fn_hsa_signal_store_screlease(packet->completion_signal, 0); + hsakmt_hsa_signal_store_screlease(packet->completion_signal, 0); } } @@ -986,7 +986,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { debug_print("SDMA: poll signal %#lx addr %#lx val %d\n", signal_handle, poll_addr, poll_val); hsa_signal_t hsa_signal = {signal_handle}; hsa_signal_value_t value = - fn_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); + hsakmt_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); assert(value == poll_val); poll_pkt += 2; From 3f66ce03f8c03b2e545f17407fe2eba622557b75 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 17 Oct 2024 11:27:27 +0800 Subject: [PATCH 017/159] wsl/hsakmt: implement hsaKmtRegisterGraphicsHandleToNodesExt Signed-off-by: Flora Cui --- memory.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/memory.cpp b/memory.cpp index ce8fdbbf20..814df1c42b 100644 --- a/memory.cpp +++ b/memory.cpp @@ -268,6 +268,21 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodes(HSAuint64 GraphicsRe HsaGraphicsResourceInfo *GraphicsResourceInfo, HSAuint64 NumberOfNodes, HSAuint32 *NodeArray) { + HSA_REGISTER_MEM_FLAGS regFlags; + regFlags.Value = 0; + + return hsaKmtRegisterGraphicsHandleToNodesExt(GraphicsResourceHandle, + GraphicsResourceInfo, + NumberOfNodes, + NodeArray, + regFlags); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodesExt(HSAuint64 GraphicsResourceHandle, + HsaGraphicsResourceInfo *GraphicsResourceInfo, + HSAuint64 NumberOfNodes, + HSAuint32 *NodeArray, + HSA_REGISTER_MEM_FLAGS RegisterFlags) { CHECK_DXG_OPEN(); uint32_t *gpu_id_array = NULL; HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; From a526a3fadb2ccb3f16e545253ef22618bfb35805 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 17 Oct 2024 14:26:54 +0800 Subject: [PATCH 018/159] wsl/hsakmt: implement hsaKmtCreateQueueExt ref to 1105472: libhsakmt: Extend thunk queue creation with recommended sdma engines | https://gerrit-git.amd.com/c/hsa/ec/rocr-runtime/+/1105472 Signed-off-by: Flora Cui --- queues.cpp | 36 ++++++++++++++++++++++++++++++------ topology.cpp | 1 + version.cpp | 2 +- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/queues.cpp b/queues.cpp index ae8ee471b3..f89c81ce83 100644 --- a/queues.cpp +++ b/queues.cpp @@ -38,10 +38,32 @@ uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id) { return vgpr_size; } -HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( - HSAuint32 NodeId, HSA_QUEUE_TYPE Type, HSAuint32 QueuePercentage, - HSA_QUEUE_PRIORITY Priority, void *QueueAddress, HSAuint64 QueueSizeInBytes, - HsaEvent *Event, HsaQueueResource *QueueResource) { +HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue(HSAuint32 NodeId, + HSA_QUEUE_TYPE Type, + HSAuint32 QueuePercentage, + HSA_QUEUE_PRIORITY Priority, + void *QueueAddress, + HSAuint64 QueueSizeInBytes, + HsaEvent *Event, + HsaQueueResource *QueueResource) +{ + if (Type == HSA_QUEUE_SDMA_BY_ENG_ID) + return HSAKMT_STATUS_ERROR; + + return hsaKmtCreateQueueExt(NodeId, Type, QueuePercentage, Priority, 0, + QueueAddress, QueueSizeInBytes, Event, + QueueResource); +} + +HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueueExt(HSAuint32 NodeId, + HSA_QUEUE_TYPE Type, + HSAuint32 QueuePercentage, + HSA_QUEUE_PRIORITY Priority, + HSAuint32 SdmaEngineId, + void *QueueAddress, + HSAuint64 QueueSizeInBytes, + HsaEvent *Event, + HsaQueueResource *QueueResource) { HSAKMT_STATUS result; CHECK_DXG_OPEN(); @@ -73,8 +95,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueue( // for doorbell_signal.hardware_doorbell_ptr QueueResource->Queue_DoorBell_aql = queue_->GetDoorbellPtr(); } break; - case HSA_QUEUE_SDMA: { - uint32_t queue_engine = device_->GetSdmaEngine(0); // TODO: + case HSA_QUEUE_SDMA: + case HSA_QUEUE_SDMA_BY_ENG_ID: { + pr_debug("create sdma queue in engine %d\n", SdmaEngineId); + uint32_t queue_engine = device_->GetSdmaEngine(0); // TODO: SdmaEngineId bool use_hws = device_->IsHwsEnabled(queue_engine); auto queue_ = new wsl::thunk::SDMAQueue( device_, QueueAddress, QueueSizeInBytes, diff --git a/topology.cpp b/topology.cpp index 2c8be2c02b..92f1f39aa6 100644 --- a/topology.cpp +++ b/topology.cpp @@ -973,6 +973,7 @@ static HSAKMT_STATUS topology_sysfs_get_iolink_props(uint32_t node_id, props->Flags.ui32.NonCoherent = 1; props->Flags.ui32.NoAtomics32bit = !(device->SupportPlatformAtomic()); props->Flags.ui32.NoAtomics64bit = !(device->SupportPlatformAtomic()); + props->RecSdmaEngIdMask = 0; return HSAKMT_STATUS_SUCCESS; } diff --git a/version.cpp b/version.cpp index d3afc40662..27560b43a4 100644 --- a/version.cpp +++ b/version.cpp @@ -29,7 +29,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersion(HsaVersionInfo *VersionInfo) { CHECK_DXG_OPEN(); VersionInfo->KernelInterfaceMajorVersion = 1; - VersionInfo->KernelInterfaceMinorVersion = 16; + VersionInfo->KernelInterfaceMinorVersion = 17; return HSAKMT_STATUS_SUCCESS; } From 49524f5f7aa4383379abcb089669f6180dfd768a Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 17 Oct 2024 13:00:32 +0800 Subject: [PATCH 019/159] wsl/hsakmt: add OverrideEngineId property partial cherry pick 671c6d8(1106575: libhsakmt: add OverrideEngineId property | https://gerrit-git.amd.com/c/hsa/ec/rocr-runtime/+/1106575) Signed-off-by: Flora Cui --- topology.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topology.cpp b/topology.cpp index 92f1f39aa6..55838075fb 100644 --- a/topology.cpp +++ b/topology.cpp @@ -708,9 +708,9 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, pr_err("HSA_OVERRIDE_GFX_VERSION %s is invalid\n", envvar); return HSAKMT_STATUS_ERROR; } - props->EngineId.ui32.Major = major & 0x3f; - props->EngineId.ui32.Minor = minor & 0xff; - props->EngineId.ui32.Stepping = step & 0xff; + props->OverrideEngineId.ui32.Major = major & 0x3f; + props->OverrideEngineId.ui32.Minor = minor & 0xff; + props->OverrideEngineId.ui32.Stepping = step & 0xff; } else { props->EngineId.ui32.Major = device->Major(); props->EngineId.ui32.Minor = device->Minor(); From 17dc4c123962dba88c022de104e462e5be683bee Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Sun, 29 Sep 2024 10:43:09 +0800 Subject: [PATCH 020/159] wsl/hsakmt/sdma: nop poll command since the polling has been concluded Signed-off-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- wddm/queue.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 5ffaa12e31..4d2c5c7734 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -989,6 +989,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { hsakmt_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); assert(value == poll_val); + memset(poll_pkt, 0, 2 * sizeof(*poll_pkt)); poll_pkt += 2; poll_next_pkt += 2; } From 4d4b203412b3fb00a14cc944d93a28ae3d0b9c2f Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Fri, 24 Jan 2025 13:36:17 +0800 Subject: [PATCH 021/159] wsl/hsakmt: adapt optimized sdma poll command Signed-off-by: Flora Cui Part-of: --- wddm/queue.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 4d2c5c7734..c08581d736 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -967,20 +967,25 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { SDMA_PKT_POLL_REGMEM* poll_pkt = reinterpret_cast(queue->cmdbuf_addr + queue->WrapIntoRocrRing(start)); SDMA_PKT_POLL_REGMEM* poll_next_pkt = poll_pkt + 1; - while (queue->IsPollPacket(poll_pkt) && queue->IsPollPacket(poll_next_pkt)) { - uint64_t poll_addr; - uint64_t poll_val; - if (poll_pkt->ADDR_LO_UNION.addr_31_0 > poll_next_pkt->ADDR_LO_UNION.addr_31_0) { - poll_addr = poll_next_pkt->ADDR_LO_UNION.addr_31_0 | - (uint64_t)poll_next_pkt->ADDR_HI_UNION.addr_63_32 << 32; - poll_val = poll_next_pkt->VALUE_UNION.value | - (uint64_t)poll_pkt->VALUE_UNION.value << 32; - } else { - poll_addr = poll_pkt->ADDR_LO_UNION.addr_31_0 | + while (queue->IsPollPacket(poll_pkt)) { + uint64_t poll_addr = poll_pkt->ADDR_LO_UNION.addr_31_0 | (uint64_t)poll_pkt->ADDR_HI_UNION.addr_63_32 << 32; - poll_val = poll_pkt->VALUE_UNION.value | - (uint64_t)poll_next_pkt->VALUE_UNION.value << 32; + + uint64_t poll_val = poll_pkt->VALUE_UNION.value; + uint32_t skip = 1; + + if (queue->IsPollPacket(poll_next_pkt)) { + uint64_t poll_next_addr = poll_next_pkt->ADDR_LO_UNION.addr_31_0 | + (uint64_t)poll_next_pkt->ADDR_HI_UNION.addr_63_32 << 32; + + if (poll_next_addr + sizeof(uint32_t) == poll_addr) { + poll_addr = poll_next_addr; + poll_val = poll_next_pkt->VALUE_UNION.value | + (uint64_t)poll_pkt->VALUE_UNION.value << 32; + skip = 2; + } } + amd_signal_t* signal = (amd_signal_t*)((char*)poll_addr - offsetof(amd_signal_t, value)); uint64_t signal_handle = reinterpret_cast(signal); debug_print("SDMA: poll signal %#lx addr %#lx val %d\n", signal_handle, poll_addr, poll_val); @@ -989,9 +994,9 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { hsakmt_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); assert(value == poll_val); - memset(poll_pkt, 0, 2 * sizeof(*poll_pkt)); - poll_pkt += 2; - poll_next_pkt += 2; + memset(poll_pkt, 0, skip * sizeof(*poll_pkt)); + poll_pkt += skip; + poll_next_pkt += skip; } queue->PreparePacket(queue->WrapIntoRocrRing(start), end - start); std::atomic_thread_fence(std::memory_order_release); From a80ed934848db6b38ae0d26a9d70154527409a29 Mon Sep 17 00:00:00 2001 From: Chengjun Yao Date: Fri, 20 Jun 2025 10:51:59 +0800 Subject: [PATCH 022/159] wsl/libhsakmt: Implement amdgpu_device_initialize and amdgpu_device_deinitialize Signed-off-by: Chengjun Yao Part-of: --- libdrm.cpp | 11 +++++++++++ libhsakmt.ver | 2 ++ 2 files changed, 13 insertions(+) diff --git a/libdrm.cpp b/libdrm.cpp index f1c115c207..a3964c8768 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -60,6 +60,17 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( return HSAKMT_STATUS_ERROR; } +HSAKMTAPI int amdgpu_device_initialize(int fd, + uint32_t *major_version, + uint32_t *minor_version, + amdgpu_device_handle *device_handle) { + return 0; +} + +HSAKMTAPI int amdgpu_device_deinitialize(amdgpu_device_handle device_handle) { + return 0; +} + HSAKMTAPI int amdgpu_query_gpu_info(amdgpu_device_handle dev, struct amdgpu_gpu_info *info) { wsl::thunk::WDDMDevice *pDevice = diff --git a/libhsakmt.ver b/libhsakmt.ver index cb0adebc6d..c237b1e465 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -92,6 +92,8 @@ hsaKmtPcSamplingStop; hsaKmtPcSamplingSupport; hsaKmtGetVersionCapInfo; hsaKmtQueueRingDoorbell; +amdgpu_device_initialize; +amdgpu_device_deinitialize; amdgpu_query_gpu_info; amdgpu_bo_import; amdgpu_bo_va_op; From 09e1dba40b6edbb243d42d873cf23b874d4672fb Mon Sep 17 00:00:00 2001 From: Chengjun Yao Date: Fri, 20 Jun 2025 10:27:55 +0800 Subject: [PATCH 023/159] wsl/hsakmt: Add hsaKmtModelEnabled() Signed-off-by: Flora Cui Signed-off-by: Chengjun Yao Part-of: --- hsakmtmodel.cpp | 32 ++++++++++++++++++++++++++++++++ libhsakmt.ver | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 hsakmtmodel.cpp diff --git a/hsakmtmodel.cpp b/hsakmtmodel.cpp new file mode 100644 index 0000000000..0f27ef291b --- /dev/null +++ b/hsakmtmodel.cpp @@ -0,0 +1,32 @@ +/* +* Copyright © 2025 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 (including +* the next paragraph) 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. +*/ +#include "libhsakmt.h" + +HSAKMT_STATUS HSAKMTAPI hsaKmtModelEnabled(bool* enable) +{ + *enable = false; + pr_warn_once("not supported\n"); + return HSAKMT_STATUS_SUCCESS; +} diff --git a/libhsakmt.ver b/libhsakmt.ver index c237b1e465..ca085857dd 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -90,7 +90,7 @@ hsaKmtPcSamplingDestroy; hsaKmtPcSamplingStart; hsaKmtPcSamplingStop; hsaKmtPcSamplingSupport; -hsaKmtGetVersionCapInfo; +hsaKmtModelEnabled; hsaKmtQueueRingDoorbell; amdgpu_device_initialize; amdgpu_device_deinitialize; From 8663eeaa341edfe8bce2513e15a55af12250474e Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Wed, 30 Oct 2024 12:37:39 +0800 Subject: [PATCH 024/159] wsl: drop libdrm dependency Signed-off-by: Flora Cui Reviewed-by: Shi.Leslie Part-of: wsl/libhsakmt: move drm headers to dedicated directory to maintain a clean and organized codebase. Signed-off-by: Flora Cui Reviewed-by: Horatio Zhang Part-of: --- libdrm.cpp | 5 +---- libhsakmt.h | 1 + openclose.cpp | 1 - topology.cpp | 4 ---- 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/libdrm.cpp b/libdrm.cpp index a3964c8768..878318ae80 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -40,9 +40,6 @@ // //////////////////////////////////////////////////////////////////////////////// #include -#include -#include -#include #include "inc/wddm/types.h" #include "inc/wddm/device.h" @@ -106,7 +103,7 @@ HSAKMTAPI int amdgpu_bo_import(amdgpu_device_handle dev, HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &MemoryAddress); if (ret == HSAKMT_STATUS_SUCCESS) { //use GpuMemory object's address as drm buf handle - output->buf_handle = reinterpret_cast(MemoryAddress); + output->buf_handle = reinterpret_cast(MemoryAddress); return 0; } else { return -1; diff --git a/libhsakmt.h b/libhsakmt.h index 1a3e3a2b6c..fb8e8b0a37 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -30,6 +30,7 @@ #include #include #include "hsakmt/hsakmt.h" +#include "hsakmt/hsakmt_drm.h" #include "inc/wddm/types.h" #include "inc/wddm/device.h" diff --git a/openclose.cpp b/openclose.cpp index 0783f401ea..2aa917f97b 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include "libhsakmt.h" static const char dxg_device_name[] = "/dev/dxg"; diff --git a/topology.cpp b/topology.cpp index 55838075fb..3d3a9e4c93 100644 --- a/topology.cpp +++ b/topology.cpp @@ -37,10 +37,6 @@ #include #include -#include -#include -#include - #include "libhsakmt.h" #include "inc/wddm/types.h" #include "inc/wddm/device.h" From e8235d4a50346c02c9350aa94be99a02a9a691b7 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Mon, 28 Oct 2024 15:38:37 +0800 Subject: [PATCH 025/159] wsl/rocr: Add rocr4wsl project version Users can obtain rocr4wsl version information through the following methods: strings /opt/rocm/lib/libhsa-runtime64.so | grep ROCR4WSL strings /opt/rocm/lib/libhsakmt.a | grep ROCR4WSL Signed-off-by: Horatio Zhang Reviewed-by: tiancyin Part-of: --- version.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/version.cpp b/version.cpp index 27560b43a4..98b4ad7c34 100644 --- a/version.cpp +++ b/version.cpp @@ -25,6 +25,8 @@ #include "libhsakmt.h" +const char rocr4wslbuildid[] __attribute__((used)) = "ROCR4WSL BUILD ID: " STRING(ROCR4WSL_VERSION); + HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersion(HsaVersionInfo *VersionInfo) { CHECK_DXG_OPEN(); @@ -33,6 +35,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersion(HsaVersionInfo *VersionInfo) { return HSAKMT_STATUS_SUCCESS; } + HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { CHECK_DXG_OPEN(); From 186b0843caaaa259e86a88ee5a3dec989315673e Mon Sep 17 00:00:00 2001 From: lyndonli Date: Tue, 10 Sep 2024 10:36:42 +0800 Subject: [PATCH 026/159] wsl/hsakmt: Set PRIV for gfx11 To fix the hang issue when enabling CWSR on gfx11. Signed-off-by: lyndonli Reviewed-by: Longlong Yao Part-of: --- wddm/cmd_util.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp index bffbe408ee..bfd29049d6 100644 --- a/wddm/cmd_util.cpp +++ b/wddm/cmd_util.cpp @@ -164,6 +164,10 @@ size_t CmdUtil::BuildDispatch( GenerateSetShRegHeader(&dispatch.program_resource_regs, mmCOMPUTE_PGM_RSRC1); dispatch.program_resource_regs.compute_pgm_rsrc1 = pInfo->pKernelObject->compute_pgm_rsrc1; + if (pInfo->major == 11) { + AMD_HSA_BITS_SET(dispatch.program_resource_regs.compute_pgm_rsrc1, + AMD_COMPUTE_PGM_RSRC_ONE_PRIV, 1); + } dispatch.program_resource_regs.compute_pgm_rsrc2 = (pInfo->ldsBlks << 15) | pInfo->pKernelObject->compute_pgm_rsrc2; From 56f4bb18f5d9fe494ec0b37949c0b225b9207b65 Mon Sep 17 00:00:00 2001 From: lyndonli Date: Tue, 10 Sep 2024 10:38:30 +0800 Subject: [PATCH 027/159] wsl/hsakmt: Fix memory leak in WDDMDevice::CreateGpuMemory Signed-off-by: lyndonli Reviewed-by: Longlong Yao Part-of: --- wddm/device.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wddm/device.cpp b/wddm/device.cpp index 8dfff4032a..f2c284a379 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -445,6 +445,8 @@ ErrorCode WDDMDevice::CreateGpuMemory(const GpuMemoryCreateInfo &create_info, Gp ret = mem->Init(create_info); if (ret == ErrorCode::Success) *gpu_mem = mem; + else + delete mem; return ret; } From 9c59764f97353982718fcbad0c93fd935d17a409 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Wed, 11 Sep 2024 10:51:53 +0800 Subject: [PATCH 028/159] wsl/hsakmt: fix support ASICs for WSL Signed-off-by: Aaron Liu Part-of: --- inc/thunk_proxy/thunk_proxy.h | 3 --- thunk_proxy/libthunk_proxy.a | Bin 365488 -> 364120 bytes 2 files changed, 3 deletions(-) diff --git a/inc/thunk_proxy/thunk_proxy.h b/inc/thunk_proxy/thunk_proxy.h index 4a0ad069f4..fcdb5ea4de 100644 --- a/inc/thunk_proxy/thunk_proxy.h +++ b/inc/thunk_proxy/thunk_proxy.h @@ -30,9 +30,6 @@ enum SchedLevel { }; enum AsicFamilyType { - kVega10, - kNavi10, - kSiennaCichlid, kPlumBONITO, kNavi44, kNavi48 diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 01cb6f66b267818b76b1604f6d628cf8b3ae1a2a..c4fae89f539ea917f54c80ff67593e04e6087d72 100644 GIT binary patch delta 40718 zcmaKV30zdw`~JN%g92`h;xcYHxZ*zUxZ@740JPSnaFyYDY&^ zu(j?G*}*rqLQ6}h@yAmuEDF#)zG0ztef6t!*XQ~6)TrZ2tn#V80=#kh8eYB-dPd)j zUv+&4t1i^b9G*f`3lG0O{Jt6CDo&^pU=v4eI)KhQ;aA<*$mzo%PmO zEJt)-Y-p|H?}abY^=|>)(f`KM~y7Cpx$NF0f*JEVX^t=5^O=`@-h8!1v(! z4Qe}?BO%z76yHmaEOeVHPbtd{^c_Ii@vJXveGvJY!)bt}`OV$Hov# z`^WGs4le|>q7?4T;KfXB9{ci^0zG`27xe1U=dt!$u6-8*|1cqjSfU@pn>bv#i>B4V zN5DgT_JxiHTyl7+A7XxDN@W;e8R8qVFueH~{9Fkjm4V}#LNg{CPy@d-jrn>B$RUPK z^`$RtrBC%;Tv($kmu$!-8;bOn>8fdVe7F&dhglMMQ-L=E=Hj@oUP4$RGhi7~1{vm} zOPHy4+-E$5=5j$MGXJrmPQp+Muop^kUPs}mi@-C1<&@$~-#?lGLdbU}A*d0Lfw}kh zGFS-Qg@u2(72mH3t@ZJ~x{Jc_-F;C*d{0?)U0>{rUfdJksf$~7Ud)1ghG*jjuR}q1 zP5TZXTM|Qtaio|dcftL~KrE@g-xoJ4$Am2HdLS36z9vgrggh>9Vo0j*=_M@&a^?$< z9d+exe+pXf;KLnR(imKad+Q@Mz7~{&n#ki|q1vRU zrgg*Tv1w>FUs}&))|CD{(q95JQcAV{isqGCy0lgz)3WhiRbRtZ_Wb}xc7dzE(^Jzv z#z%PKbwtNNCwxyBK1)>H7ciQ#_wa|OPh>1P6aO~IG?;d#J5!6(t*z-m7SMF4Lr1~&QO zLA^Dt5Z_H;2gyFUSD2v z1N{CinHj3MJPf~EE)R41rE{~5Hz%8{^|^gDZ4o{Q=vm0_^=({Us|@c1n|!YsKaco6 zUCx60WqDl@GHVITCSTPRVSeQ!z8))>w}~qv#Q5Y=qA&TjbLi9x7TT2+4F_-+tk=pe z_H}^hVom#NT5Ehn_Yld8EWkjYDtU_l7!0NHb(Q9Qzgr9@|9X`nB z$E)hY&F}oX+Uf=(r)j>PtHX?+Pp@tzvd3fW;oH5sg@AhaF0CG}-|{tD)4=j)h;PuE znu&jw`m#*7+F3AqN(?4>d~6J}teOfQkI!;Z^tDG|>#sr}r&P#hM^%K-XMRGTLE!5D zCG@o+ln7JzAYmP7`13PWWJp1%4g{K%3bDqJ{{He4>IH$p|Cdm(=$Jh6sSucB2o2`< zL21hFC$%0D>4ucJS@H=~RI-+z60=OC^uG>+?^~ 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

_Lh#;t9A6+q)t)L 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 P6vODDCn(hy(CGgGt}jhG delta 42338 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 Y-C;ic6OiU&h+qYKypwDCu2NPx098D;;s5{u From 6f331de20d12aacaa94d441125cc0d9594a87bd9 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Wed, 11 Sep 2024 05:15:35 -0700 Subject: [PATCH 029/159] wsl/hsakmt: drop doorbell signal For wsl, doorbell ring needs to call hsaKmtQueueRingDoorbell instead of atomic store in hsa runtime. It does not care about the doorbell signal value. So just return a pointer that points a memory allocation of 8 bytes. Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- inc/wddm/queue.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 6bf8c57dcc..34f9feaee8 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -171,7 +171,7 @@ public: } hsa_status_t Process(void); - uint64_t * GetDoorbellPtr() const { return (uint64_t *)&doorbell_signal_.value; } + uint64_t * GetDoorbellPtr() const { return (uint64_t *)&doorbell_signal_value_; } void RingDoorbell(); private: hsa_status_t KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *packet); @@ -235,7 +235,7 @@ private: GpuMemoryHandle amd_queue_mem_; amd_queue_t *amd_queue_; amd_queue_t *amd_queue_rocr_; - amd_signal_t doorbell_signal_; + uint64_t doorbell_signal_value_; volatile std::atomic *error_code_; std::thread aql_to_pm4_thread_; bool thread_stop_; From efd0158724bbdeb6b86dc17d8e2e81206564dd64 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Fri, 13 Sep 2024 10:06:46 +0800 Subject: [PATCH 030/159] wsl/hsakmt: use GpuMemory object address as va in physical memory handle case Signed-off-by: tiancyin --- memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory.cpp b/memory.cpp index 814df1c42b..8c47bfb282 100644 --- a/memory.cpp +++ b/memory.cpp @@ -326,7 +326,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtImportDMABufHandle(int DMABufFd, auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { - *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); + *MemoryAddress = reinterpret_cast(gpu_mem); std::lock_guard gard(*allocation_map_lock_); /* * the gpu_mem->Flags() need convert back from GpuMemoryCreateFlags to From 3161be161962e6fb3f7f8fc68a7b4bc2802b05aa Mon Sep 17 00:00:00 2001 From: "Shi.Leslie" Date: Fri, 13 Sep 2024 10:33:21 +0800 Subject: [PATCH 031/159] wsl/hsakmt: Add ring ptr check before lock This patch also move the invalid packet check outside the critical section. Signed-off-by: Shi.Leslie Reviewed-by: Shane Xiao --- wddm/queue.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index c08581d736..ec9ad4305a 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -198,18 +198,23 @@ void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { queue->HandleError(status); break; } + sleep = false; + } else { + if (current_position == cq->GetAqlWriteIndex()) { + time = std::chrono::steady_clock::now(); + if (time - start_time > kMaxElapsed) + sleep = true; + } else { + start_time = std::chrono::steady_clock::now(); + current_position = cq->GetAqlWriteIndex(); + sleep = false; + } } + if ((cq->GetRingWptr()->load() > cq->GetRingRptr()->load()) && !sleep) + continue; + std::unique_lock lock(queue->thread_cond_lock_); - if (current_position == cq->GetAqlWriteIndex()) { - time = std::chrono::steady_clock::now(); - if (time - start_time > kMaxElapsed) - sleep = true; - } else { - start_time = std::chrono::steady_clock::now(); - current_position = cq->GetAqlWriteIndex(); - sleep = false; - } // CPU wait for valid packet if (cq->GetRingWptr()->load() <= cq->GetRingRptr()->load() || (sleep && cq->IsInvalidPacket())) { From 4c11077c58d4804fbf151a589590adf25cf2875b Mon Sep 17 00:00:00 2001 From: lyndonli Date: Fri, 13 Sep 2024 17:44:25 +0800 Subject: [PATCH 032/159] wsl/hsakmt: Replace asserts with warnings in VaMgr destructor When NDEBUG is defined, assertions become ineffective. Signed-off-by: lyndonli Reviewed by: Shi.Leslie Part-of: --- wddm/va_mgr.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 9a32e2cd96..39fa74c9e1 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -16,8 +16,10 @@ VaMgr::VaMgr(uint64_t start, uint64_t size, uint64_t min_align) { VaMgr::~VaMgr() { - assert(free_list_.size() == 1); - assert(frag_map_.size() == 1); + if (free_list_.size() != 1) + std::cerr << "Warning: free_list_ size is not 1." << std::endl; + if (frag_map_.size() != 1) + std::cerr << "Warning: frag_map_ size is not 1." << std::endl; free_list_.clear(); frag_map_.clear(); From c06c3fd82b3f54e4a6192a4fc9f1f37ad5022e7f Mon Sep 17 00:00:00 2001 From: lyndonli Date: Fri, 13 Sep 2024 18:13:29 +0800 Subject: [PATCH 033/159] wsl/hsakmt: Fix boundary condition in VaMgr::Alloc Signed-off-by: lyndonli Reviewed by: Shi.Leslie Part-of: --- wddm/va_mgr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 39fa74c9e1..06777bed59 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -40,7 +40,7 @@ uint64_t VaMgr::Alloc(uint64_t bytes, uint64_t align, uint64_t addr) { const uint64_t size = frag_it->second.size; // Cannot find free fragment contains the target `addr` - if (bytes > size || addr < base || addr + bytes >= base + size || + if (bytes > size || addr < base || addr + bytes > base + size || !is_free(frag_it->second)) { --frag_it; continue; From 23243ba966d1f5ba48e9cf3c0f8622e2c884b5da Mon Sep 17 00:00:00 2001 From: Shane Xiao Date: Fri, 13 Sep 2024 15:55:48 +0800 Subject: [PATCH 034/159] wsl/hsakmt: Add pm4 WRITE_DATA packet This patch adds WRITE_DATA packet, which will be used in no PCIe atomic platform. Signed-off-by: Shane Xiao Reviewed-by: Aaron Liu Reviewed-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- inc/pm4_cmds.h | 28 +++++++++++++++++++++++++++- inc/wddm/cmd_util.h | 5 +++++ wddm/cmd_util.cpp | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/inc/pm4_cmds.h b/inc/pm4_cmds.h index 82edddc8dd..d9e60fc086 100644 --- a/inc/pm4_cmds.h +++ b/inc/pm4_cmds.h @@ -37,6 +37,7 @@ union PM4_MEC_TYPE_3_HEADER { #define IT_DISPATCH_DIRECT 0x15 #define IT_ATOMIC_MEM 0x1E +#define IT_WRITE_DATA 0x37 #define IT_INDIRECT_BUFFER 0x3F #define IT_COPY_DATA 0x40 #define IT_EVENT_WRITE 0x46 @@ -238,6 +239,7 @@ struct PM4_MEC_WRITE_DATA { uint32_t ordinal3; }; uint32_t dst_mem_addr_hi; + uint64_t write_data_value; }; #define PERSISTENT_SPACE_START 0x00002c00 @@ -484,7 +486,6 @@ struct AtomicTemplate { /// location accessible to Gpu struct WriteDataTemplate { PM4_MEC_WRITE_DATA write_data; - uint64_t write_data_value; }; // ---------------------------------- MEC_COPY_DATA_src_sel_enum ---------------------------------- @@ -548,6 +549,31 @@ enum MEC_COPY_DATA_pq_exe_status_enum { pq_exe_status__mec_copy_data__phase_update = 1, }; +// ------------------------------- MEC_WRITE_DATA_dst_sel_enum ------------------------------- +enum MEC_WRITE_DATA_dst_sel_enum { + dst_sel__mec_write_data__mem_mapped_register = 0, + dst_sel__mec_write_data__tc_l2 = 2, + dst_sel__mec_write_data__gds = 3, + dst_sel__mec_write_data__memory = 5, + dst_sel__mec_write_data__memory_mapped_adc_persistent_state = 6 }; + +// ------------------------------- MEC_WRITE_DATA_addr_incr_enum ------------------------------- +enum MEC_WRITE_DATA_addr_incr_enum { + addr_incr__mec_write_data__increment_address = 0, + addr_incr__mec_write_data__do_not_increment_address = 1 }; + +// ------------------------------- MEC_WRITE_DATA_wr_confirm_enum ------------------------------- +enum MEC_WRITE_DATA_wr_confirm_enum { + wr_confirm__mec_write_data__do_not_wait_for_write_confirmation = 0, + wr_confirm__mec_write_data__wait_for_write_confirmation = 1 }; + +// ------------------------------- MEC_WRITE_DATA_cache_policy_enum ------------------------------- +enum MEC_WRITE_DATA_cache_policy_enum { + cache_policy__mec_write_data__lru = 0, + cache_policy__mec_write_data__stream = 1, + cache_policy__mec_write_data__noa = 2, + cache_policy__mec_write_data__bypass = 3 }; + typedef struct PM4_MEC_COPY_DATA { union { PM4_MEC_TYPE_3_HEADER header; /// header diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h index 03a047888e..df92e7c233 100644 --- a/inc/wddm/cmd_util.h +++ b/inc/wddm/cmd_util.h @@ -48,6 +48,11 @@ public: uint32_t eventIndex = event_index__mec_event_write__cs_partial_flush, uint32_t eventType = CS_PARTIAL_FLUSH); + size_t BuildWriteData64Command( + void *pBuffer, + uint64_t* write_addr, + uint64_t write_value); + size_t BuildAcquireMem( uint8_t major, void *pBuffer); diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp index bfd29049d6..d977eac731 100644 --- a/wddm/cmd_util.cpp +++ b/wddm/cmd_util.cpp @@ -53,6 +53,41 @@ size_t CmdUtil::BuildBarrier( return sizeof(barrier); } +/** + * Builds a WRITE_DATA packet. + * Writes two DWORDs into the GPU memory address "write_addr" + */ + +size_t CmdUtil::BuildWriteData64Command( + void* pBuffer, + uint64_t* write_addr, + uint64_t write_value) { + WriteDataTemplate command = {0}; + GenerateCmdHeader(&command.write_data, IT_WRITE_DATA); + + // Encode the user specified address to write to + uint64_t addr = uintptr_t(write_addr); + assert(!(addr & 0x3) && "WriteData address must be 4 byte aligned"); + + // Set the bit to confirm the write operation and cache policy + command.write_data.bitfields2.wr_confirm = wr_confirm__mec_write_data__wait_for_write_confirmation; + command.write_data.bitfields2.cache_policy = cache_policy__mec_write_data__bypass; + + // Specify the command to increment address if writing more than one DWord + command.write_data.bitfields2.addr_incr = addr_incr__mec_write_data__increment_address; + // Specify the class to which the write destination belongs + command.write_data.bitfields2.dst_sel = dst_sel__mec_write_data__memory; + + command.write_data.bitfields3c.dst_mem_addr_lo = (PtrLow32(write_addr) >> 2); + command.write_data.dst_mem_addr_hi = PtrHigh32(write_addr); + + // Specify the value to write + command.write_data.write_data_value = write_value; + + memcpy(pBuffer, &command, sizeof(command)); + return sizeof(command); +} + /* * Builds a ACQUIRE_MEM packet. * Users can submit this command to From 8c7d5a01f9975baa11f84d71bb0d6fadd719c4ad Mon Sep 17 00:00:00 2001 From: Shane Xiao Date: Fri, 13 Sep 2024 16:04:09 +0800 Subject: [PATCH 035/159] wsl/hsakmt: Add no pcie atomic support for dispatch packet This patch adds no pcie atomic support. This patch uses cpu to update cmd queue completion signal to resolve potential contention issue, and replaces ATOMIC_MEM with WRITE_DATA packet to update ring_index. Signed-off-by: Shane Xiao Reviewed-by: Aaron Liu Reviewed-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- inc/wddm/queue.h | 2 ++ wddm/queue.cpp | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 34f9feaee8..1324aa31a7 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -207,6 +207,8 @@ private: uint64_t cmdbuf_aql_frame_write_index; uint32_t cmdbuf_aql_frame_size; + uint64_t *signal_addr_; + bool platform_atomic_support_; bool needs_barrier; bool ready_to_submit; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index ec9ad4305a..0635fb46c8 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -251,6 +251,8 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, cmdbuf_aql_frame_size(0), needs_barrier(true), ready_to_submit(false), + platform_atomic_support_(false), + signal_addr_(NULL), thread_stop_(false), scratch_waves_(device->MaxScratchSlotsPerCu() * device->ComputeUnitCount()), scratch_size_per_wave_(0), @@ -548,6 +550,7 @@ hsa_status_t ComputeQueue::Init(void) { ib_start_addr = cmdbuf_addr; cmdbuf_aql_frame_size = device->GetAqlFrameSize(); + platform_atomic_support_ = device->SupportPlatformAtomic(); return ret; } @@ -704,13 +707,19 @@ ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *pa uint64_t *signal_addr = (uint64_t *)&signal->value; debug_print("signal value=%" PRIx64 "\n", signal->value); - i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + if (platform_atomic_support_) + i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + else + signal_addr_ = signal_addr; } // The ring_rptr is used to record pm4 queue rptr value, // dispatch readptr position, this is used to share rptr with // aql queue. - i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + if (platform_atomic_support_) + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + else + i += cmd_util.BuildWriteData64Command(cpu + i, (uint64_t *)ring_rptr, cmdbuf_aql_frame_write_index + 1); ib_size = i; cmdbuf_aql_frame_write_index++; @@ -786,13 +795,19 @@ ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet // flush cache i += cmd_util.BuildAcquireMem(major, cpu + i); - i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + if (platform_atomic_support_) + i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); + else + signal_addr_ = signal_addr; } // The ring_rptr is used to record pm4 queue rptr value, // dispatch readptr position, this is used to share rptr with // aql queue. - i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + if (platform_atomic_support_) + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + else + i += cmd_util.BuildWriteData64Command(cpu + i, (uint64_t *)ring_rptr, cmdbuf_aql_frame_write_index + 1); ib_size = i; cmdbuf_aql_frame_write_index++; @@ -944,6 +959,16 @@ hsa_status_t ComputeQueue::Process(void) { if (ret != HSA_STATUS_SUCCESS) return ret; + // CPU wait for GPU fence, and cpu update the signal. + if (!platform_atomic_support_ && signal_addr_) { + // CPU wait for GPU fence + if (!device->CpuWait(&syncobj, &cmdbuf_aql_frame_write_index, 1, false)) + return HSA_STATUS_ERROR; + //CPU update completional signal + atomic::Decrement(signal_addr_); + signal_addr_ = NULL; + } + ready_to_submit = false; debug_print("done %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", From ea04f9f62f8ed844a09d3b74416644878215b892 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Wed, 18 Sep 2024 17:04:54 +0800 Subject: [PATCH 036/159] wsl/hsakmt: Remove unused flag file in libhsakmt Clean up unused flag* file in libhsakmt, because we reuse the flag from the ROCr layer and pass the support list upwards using HsaVersionCapability. Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Part-of: --- util/flag.cpp | 226 ------------------------------- util/flag.h | 360 -------------------------------------------------- 2 files changed, 586 deletions(-) delete mode 100644 util/flag.cpp delete mode 100644 util/flag.h diff --git a/util/flag.cpp b/util/flag.cpp deleted file mode 100644 index 22862d277c..0000000000 --- a/util/flag.cpp +++ /dev/null @@ -1,226 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2021-2024, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESd OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#include "core/util/flag.h" -#include "core/util/utils.h" -#include "core/util/os.h" - -#include -#include -#include -#include -#include - -namespace wsl { -FILE* log_file = stderr; -uint8_t log_flags[8]; - -void log_printf(const char* file, int line, const char* format, ...) { - va_list ap; - std::stringstream str_thrd_id; - str_thrd_id << std::hex << std::this_thread::get_id(); - va_start(ap, format); - char message[4096]; - vsnprintf(message, sizeof(message), format, ap); - va_end(ap); - fprintf(log_file, ":%-25s:%-4d: %010lld us: [pid:%-5d tid:0x%s] [***rocr***] %s\n", - file, line, os::ReadAccurateClock()/1000ULL, os::GetProcessId(), - str_thrd_id.str().c_str(), message); - fflush(log_file); -} - -// split at separators -static std::vector split(std::string& str, char sep) { - std::vector ret; - while (!str.empty()) { - size_t pos = str.find(sep); - if (pos == std::string::npos) { - ret.push_back(str); - return ret; - } - ret.push_back(str.substr(0, pos)); - str.erase(0, pos + 1); - } - return ret; -}; - -// Parse id,id-id,... strings into id lists -static std::vector get_elements(std::string& str, uint32_t maxElement) { - std::vector ret; - MAKE_NAMED_SCOPE_GUARD(error, [&]() { ret.clear(); }); - - std::vector ranges = split(str, ','); - for (auto& str : ranges) { - auto range = split(str, '-'); - // failure, too many -'s. - if (range.size() > 2) return ret; - - char* end; - uint32_t index = strtoul(range[0].c_str(), &end, 10); - // Invalid syntax - id's must be base 10 digits only. - if (*end != '\0') return ret; - if (index <= maxElement) ret.push_back(index); - - if (range.size() == 2) { - uint32_t secondindex = strtoul(range[1].c_str(), &end, 10); - if (*end != '\0') return ret; // bad syntax - if (secondindex < index) return ret; // inverted range - secondindex = Min(secondindex, maxElement); - for (uint32_t i = index + 1; i < secondindex + 1; i++) ret.push_back(i); - } - } - - // Confirm no duplicate ids. - std::sort(ret.begin(), ret.end()); - if (std::adjacent_find(ret.begin(), ret.end()) != ret.end()) return ret; - - // Good parse, keep result. - error.Dismiss(); - return ret; -}; - -/* -Parse env var per the following syntax, all whitespace is ignored: - -ID = [0-9][0-9]* ex. base 10 numbers -ID_list = (ID | ID-ID)[, (ID | ID-ID)]* ex. 0,2-4,7 -GPU_list = ID_list ex. 0,2-4,7 -CU_list = 0x[0-F]* | ID_list ex. 0x337F OR 0,2-4,7 -CU_Set = GPU_list : CU_list ex. 0,2-4,7:0-15,32-47 OR 0,2-4,7:0x337F -HSA_CU_MASK = CU_Set [; CU_Set]* ex. 0,2-4,7:0-15,32-47; 3-9:0x337F - -GPU indexes are taken post ROCR_VISIBLE_DEVICES reordering. -Listed or bit set CUs will be enabled at queue creation on the associated GPU. -All other CUs on the associated GPUs will be disabled. -CU masks of unlisted GPUs are not restricted. - -Repeating a GPU or CU ID is a syntax error. -Parsing stops at the first CU_Set that has a syntax error, that set and all -following sets are ignored. -Specifying a mask with no usable CUs (CU_list is 0x0) is a syntax error. -Users should use ROCR_VISIBLE_DEVICES if they want to exclude use of a -particular GPU. -*/ -void Flag::parse_masks(std::string& var, uint32_t maxGpu, uint32_t maxCU) { - if (var.empty()) return; - - // Remove whitespace - auto end = std::remove_if(var.begin(), var.end(), - [](char c) { return std::isspace(c, std::locale::classic()); }); - var.erase(end, var.end()); - - // Switch to uppercase - for (auto& c : var) c = toupper(c); - - // Iterate over cu sets - auto sets = split(var, ';'); - for (auto& set : sets) { - auto parts = split(set, ':'); - if (parts.size() != 2) return; - - // temp storage for cu_set parsing. - std::vector gpu_index; - std::vector mask; - - // parse cu list first, check for bitmask format - if (parts[1][1] == 'X') { - // Confirm hex format and strip prefix - auto& cu = parts[1]; - if (cu[0] != '0') return; - cu.erase(0, 2); - - // Ensure all valid hex characters - for (auto& c : cu) { - if (!isxdigit(c)) return; - } - - // Convert to uint32_t, lsb first. - size_t len = cu.length(); - while (len != 0) { - size_t trim = Min(len, size_t(8)); - len -= trim; - auto tmp = cu.substr(len, trim); - auto chunk = stoul(tmp, nullptr, 16); - mask.push_back(chunk); - } - - // Trim dwords beyond maxCUs - uint32_t maxDwords = maxCU / 32 + 1; - if (maxDwords < mask.size()) mask.resize(maxDwords); - - // Trim leading zeros - while (!mask.empty() && mask.back() == 0) mask.pop_back(); - - // Mask 0x0 is an error. - if (mask.empty()) return; - - } else { - // parse cu lists - auto cu_indices = get_elements(parts[1], maxCU); - if (cu_indices.empty()) return; - uint32_t maxdword = cu_indices.back() / 32 + 1; - mask.resize(maxdword, 0); - for (auto id : cu_indices) { - uint32_t index, offset; - index = id / 32; - offset = id % 32; - mask[index] |= 1ul << offset; - } - } - - // parse device list - gpu_index = get_elements(parts[0], maxGpu); - if (gpu_index.empty()) return; - - // Ensure that no GPU was repeated across cu_sets - for (auto id : gpu_index) { - if (cu_mask_.find(id) != cu_mask_.end()) return; - } - - // Insert into map - for (auto id : gpu_index) { - cu_mask_[id] = mask; - } - } -} - -} // namespace wsl diff --git a/util/flag.h b/util/flag.h deleted file mode 100644 index f8f9cc95dd..0000000000 --- a/util/flag.h +++ /dev/null @@ -1,360 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2014-2021, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIESd OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef HSA_RUNTIME_CORE_INC_FLAG_H_ -#define HSA_RUNTIME_CORE_INC_FLAG_H_ - -#include - -#include -#include -#include - -#include "core/util/os.h" -#include "core/util/utils.h" - -namespace wsl { - -class Flag { - public: - enum SDMA_OVERRIDE { SDMA_DISABLE, SDMA_ENABLE, SDMA_DEFAULT }; - enum SRAMECC_ENABLE { SRAMECC_DISABLED, SRAMECC_ENABLED, SRAMECC_DEFAULT }; - - // The values are meaningful and chosen to satisfy the thunk API. - enum XNACK_REQUEST { XNACK_DISABLE = 0, XNACK_ENABLE = 1, XNACK_UNCHANGED = 2 }; - static_assert(XNACK_DISABLE == 0, "XNACK_REQUEST enum values improperly changed."); - static_assert(XNACK_ENABLE == 1, "XNACK_REQUEST enum values improperly changed."); - - // Lift limit for 2.10 release RCCL workaround. - const size_t DEFAULT_SCRATCH_SINGLE_LIMIT = 146800640; // small_limit >> 2; - - explicit Flag() { Refresh(); } - - virtual ~Flag() {} - - void Refresh() { - std::string var = os::GetEnvVar("HSA_CHECK_FLAT_SCRATCH"); - check_flat_scratch_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_ENABLE_VM_FAULT_MESSAGE"); - enable_vm_fault_message_ = (var == "0") ? false : true; - - var = os::GetEnvVar("HSA_ENABLE_QUEUE_FAULT_MESSAGE"); - enable_queue_fault_message_ = (var == "0") ? false : true; - - var = os::GetEnvVar("HSA_ENABLE_INTERRUPT"); - enable_interrupt_ = (var == "0") ? false : true; - - var = os::GetEnvVar("HSA_ENABLE_SDMA"); - enable_sdma_ = (var == "0") ? SDMA_DISABLE : ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); - - var = os::GetEnvVar("HSA_ENABLE_PEER_SDMA"); - enable_peer_sdma_ = (var == "0") ? SDMA_DISABLE : ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); - - var = os::GetEnvVar("HSA_ENABLE_SDMA_GANG"); - enable_sdma_gang_ = (var == "0") ? SDMA_DISABLE : - ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); - - var = os::GetEnvVar("HSA_ENABLE_SDMA_COPY_SIZE_OVERRIDE"); - enable_sdma_copy_size_override_ = (var == "0") ? SDMA_DISABLE : - ((var == "1") ? SDMA_ENABLE : SDMA_DEFAULT); - - visible_gpus_ = os::GetEnvVar("ROCR_VISIBLE_DEVICES"); - filter_visible_gpus_ = os::IsEnvVarSet("ROCR_VISIBLE_DEVICES"); - - var = os::GetEnvVar("HSA_RUNNING_UNDER_VALGRIND"); - running_valgrind_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_SDMA_WAIT_IDLE"); - sdma_wait_idle_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_MAX_QUEUES"); - max_queues_ = static_cast(atoi(var.c_str())); - - // Maximum amount of scratch mem that can be used per process per gpu - var = os::GetEnvVar("HSA_SCRATCH_MEM"); - scratch_mem_size_ = atoi(var.c_str()); - - // Scratch memory sizes > HSA_SCRATCH_SINGLE_LIMIT will trigger a use-once scheme - // We also reserve HSA_SCRATCH_SINGLE_LIMIT per process per gpu to guarrantee we - // have sufficient memory to for scratch in case user tried to allocate all device - // memory - if (os::IsEnvVarSet("HSA_SCRATCH_SINGLE_LIMIT")) { - var = os::GetEnvVar("HSA_SCRATCH_SINGLE_LIMIT"); - scratch_single_limit_ = atoi(var.c_str()); - } else { - scratch_single_limit_ = DEFAULT_SCRATCH_SINGLE_LIMIT; - } - - tools_lib_names_ = os::GetEnvVar("HSA_TOOLS_LIB"); - - var = os::GetEnvVar("HSA_TOOLS_REPORT_LOAD_FAILURE"); - - ifdebug { - report_tool_load_failures_ = (var == "1") ? true : false; - } else { - report_tool_load_failures_ = (var == "0") ? false : true; - } - - var = os::GetEnvVar("HSA_DISABLE_FRAGMENT_ALLOCATOR"); - disable_fragment_alloc_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_ENABLE_SDMA_HDP_FLUSH"); - enable_sdma_hdp_flush_ = (var == "0") ? false : true; - - var = os::GetEnvVar("HSA_REV_COPY_DIR"); - rev_copy_dir_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_FORCE_FINE_GRAIN_PCIE"); - fine_grain_pcie_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_NO_SCRATCH_RECLAIM"); - no_scratch_reclaim_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_NO_SCRATCH_THREAD_LIMITER"); - no_scratch_thread_limit_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_DISABLE_IMAGE"); - disable_image_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_DISABLE_PC_SAMPLING"); - disable_pc_sampling_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_LOADER_ENABLE_MMAP_URI"); - loader_enable_mmap_uri_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_FORCE_SDMA_SIZE"); - force_sdma_size_ = var.empty() ? 1024 * 1024 : atoi(var.c_str()); - - var = os::GetEnvVar("HSA_IGNORE_SRAMECC_MISREPORT"); - check_sramecc_validity_ = (var == "1") ? false : true; - - // Legal values are zero "0" or one "1". Any other value will - // be interpreted as not defining the env variable. - var = os::GetEnvVar("HSA_XNACK"); - xnack_ = (var == "0") ? XNACK_DISABLE : ((var == "1") ? XNACK_ENABLE : XNACK_UNCHANGED); - - var = os::GetEnvVar("HSA_ENABLE_DEBUG"); - debug_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_CU_MASK_SKIP_INIT"); - cu_mask_skip_init_ = (var == "1") ? true : false; - - // Temporary opt-in for corrected HSA_AMD_AGENT_INFO_COOPERATIVE_COMPUTE_UNIT_COUNT behavior. - // Will become opt-out and possibly removed in future releases. - var = os::GetEnvVar("HSA_COOP_CU_COUNT"); - coop_cu_count_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_DISCOVER_COPY_AGENTS"); - discover_copy_agents_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_SVM_PROFILE"); - svm_profile_ = var; - - var = os::GetEnvVar("HSA_ENABLE_SRAMECC"); - sramecc_enable_ = - (var == "0") ? SRAMECC_DISABLED : ((var == "1") ? SRAMECC_ENABLED : SRAMECC_DEFAULT); - - var = os::GetEnvVar("HSA_IMAGE_PRINT_SRD"); - image_print_srd_ = (var == "1") ? true : false; - - var = os::GetEnvVar("HSA_ENABLE_MWAITX"); - enable_mwaitx_ = (var == "1") ? true : false; - - // Temporary environment variable to disable CPU affinity override - // Will either rename to HSA_OVERRIDE_CPU_AFFINITY later or remove completely. - var = os::GetEnvVar("HSA_OVERRIDE_CPU_AFFINITY_DEBUG"); - override_cpu_affinity_ = (var == "0") ? false : true; - } - - void parse_masks(uint32_t maxGpu, uint32_t maxCU) { - std::string var = os::GetEnvVar("HSA_CU_MASK"); - parse_masks(var, maxGpu, maxCU); - } - - bool check_flat_scratch() const { return check_flat_scratch_; } - - bool enable_vm_fault_message() const { return enable_vm_fault_message_; } - - bool enable_queue_fault_message() const { return enable_queue_fault_message_; } - - bool enable_interrupt() const { return enable_interrupt_; } - - bool enable_sdma_hdp_flush() const { return enable_sdma_hdp_flush_; } - - bool running_valgrind() const { return running_valgrind_; } - - bool sdma_wait_idle() const { return sdma_wait_idle_; } - - bool report_tool_load_failures() const { return report_tool_load_failures_; } - - bool disable_fragment_alloc() const { return disable_fragment_alloc_; } - - bool rev_copy_dir() const { return rev_copy_dir_; } - - bool fine_grain_pcie() const { return fine_grain_pcie_; } - - bool no_scratch_reclaim() const { return no_scratch_reclaim_; } - - bool no_scratch_thread_limiter() const { return no_scratch_thread_limit_; } - - SDMA_OVERRIDE enable_sdma() const { return enable_sdma_; } - - SDMA_OVERRIDE enable_peer_sdma() const { return enable_peer_sdma_; } - - SDMA_OVERRIDE enable_sdma_gang() const { return enable_sdma_gang_; } - - SDMA_OVERRIDE enable_sdma_copy_size_override() const { return enable_sdma_copy_size_override_; } - - std::string visible_gpus() const { return visible_gpus_; } - - bool filter_visible_gpus() const { return filter_visible_gpus_; } - - uint32_t max_queues() const { return max_queues_; } - - size_t scratch_mem_size() const { return scratch_mem_size_; } - - size_t scratch_single_limit() const { return scratch_single_limit_; } - - std::string tools_lib_names() const { return tools_lib_names_; } - - bool disable_image() const { return disable_image_; } - - bool disable_pc_sampling() const { return disable_pc_sampling_; } - - bool loader_enable_mmap_uri() const { return loader_enable_mmap_uri_; } - - size_t force_sdma_size() const { return force_sdma_size_; } - - bool check_sramecc_validity() const { return check_sramecc_validity_; } - - bool override_cpu_affinity() const { return override_cpu_affinity_; } - - bool image_print_srd() const { return image_print_srd_; } - - bool check_mwaitx(bool mwaitx_supported) { - if (enable_mwaitx_ && !mwaitx_supported) enable_mwaitx_ = false; - - return enable_mwaitx_; - } - - XNACK_REQUEST xnack() const { return xnack_; } - - bool debug() const { return debug_; } - - const std::vector& cu_mask(uint32_t gpu_index) const { - static const std::vector empty; - auto it = cu_mask_.find(gpu_index); - if (it == cu_mask_.end()) return empty; - return it->second; - } - - bool cu_mask_skip_init() const { return cu_mask_skip_init_; } - - bool coop_cu_count() const { return coop_cu_count_; } - - bool discover_copy_agents() const { return discover_copy_agents_; } - - const std::string& svm_profile() const { return svm_profile_; } - - SRAMECC_ENABLE sramecc_enable() const { return sramecc_enable_; } - - private: - bool check_flat_scratch_; - bool enable_vm_fault_message_; - bool enable_interrupt_; - bool enable_sdma_hdp_flush_; - bool running_valgrind_; - bool sdma_wait_idle_; - bool enable_queue_fault_message_; - bool report_tool_load_failures_; - bool disable_fragment_alloc_; - bool rev_copy_dir_; - bool fine_grain_pcie_; - bool no_scratch_reclaim_; - bool no_scratch_thread_limit_; - bool disable_image_; - bool disable_pc_sampling_; - bool loader_enable_mmap_uri_; - bool check_sramecc_validity_; - bool debug_; - bool cu_mask_skip_init_; - bool coop_cu_count_; - bool discover_copy_agents_; - bool override_cpu_affinity_; - bool image_print_srd_; - bool enable_mwaitx_; - - SDMA_OVERRIDE enable_sdma_; - SDMA_OVERRIDE enable_peer_sdma_; - SDMA_OVERRIDE enable_sdma_gang_; - SDMA_OVERRIDE enable_sdma_copy_size_override_; - - bool filter_visible_gpus_; - std::string visible_gpus_; - - uint32_t max_queues_; - - size_t scratch_mem_size_; - size_t scratch_single_limit_; - - std::string tools_lib_names_; - std::string svm_profile_; - - size_t force_sdma_size_; - - // Indicates user preference for Xnack state. - XNACK_REQUEST xnack_; - - SRAMECC_ENABLE sramecc_enable_; - - // Map GPU index post RVD to its default cu mask. - std::map> cu_mask_; - - void parse_masks(std::string& args, uint32_t maxGpu, uint32_t maxCU); - - DISALLOW_COPY_AND_ASSIGN(Flag); -}; - -} // namespace wsl - -#endif // header guard From 9587e8b33d94d1cca18012d4b226cbf1b3e89fb9 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Thu, 19 Sep 2024 10:53:10 +0800 Subject: [PATCH 037/159] wsl/hsakmt: Remove redundant variable for AqlToPm4Thread Signed-off-by: Horatio Zhang Reviewed-by: lyndonli Part-of: --- wddm/queue.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 0635fb46c8..77138e52d3 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -180,19 +180,18 @@ void ComputeQueue::HandleError(hsa_status_t status) { void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { - ComputeQueue *cq = queue; // This timing system is used for sleeping this Thread // when one packet is invalid for about 2 seconds. std::chrono::steady_clock::time_point start_time, time; // Set the polling timeout value for 2 seconds const std::chrono::milliseconds kMaxElapsed(2000); - uint64_t current_position = cq->GetAqlWriteIndex(); + uint64_t current_position = queue->GetAqlWriteIndex(); bool sleep = false; start_time = std::chrono::steady_clock::now(); while (true) { - if (!cq->IsInvalidPacket()) { - hsa_status_t status = cq->Process(); + if (!queue->IsInvalidPacket()) { + hsa_status_t status = queue->Process(); if (status != HSA_STATUS_SUCCESS) { fprintf(stderr, "process compute queue fail status = %08x\n", status); queue->HandleError(status); @@ -200,28 +199,28 @@ void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { } sleep = false; } else { - if (current_position == cq->GetAqlWriteIndex()) { + if (current_position == queue->GetAqlWriteIndex()) { time = std::chrono::steady_clock::now(); if (time - start_time > kMaxElapsed) sleep = true; } else { start_time = std::chrono::steady_clock::now(); - current_position = cq->GetAqlWriteIndex(); + current_position = queue->GetAqlWriteIndex(); sleep = false; } } - if ((cq->GetRingWptr()->load() > cq->GetRingRptr()->load()) && !sleep) + if ((queue->GetRingWptr()->load() > queue->GetRingRptr()->load()) && !sleep) continue; std::unique_lock lock(queue->thread_cond_lock_); // CPU wait for valid packet - if (cq->GetRingWptr()->load() <= cq->GetRingRptr()->load() || - (sleep && cq->IsInvalidPacket())) { + if (queue->GetRingWptr()->load() <= queue->GetRingRptr()->load() || + (sleep && queue->IsInvalidPacket())) { if (queue->thread_stop_) break; debug_print("wait %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", - queue->ring, cq->GetRingWptr()->load(), cq->GetRingRptr()->load()); + queue->ring, queue->GetRingWptr()->load(), queue->GetRingRptr()->load()); queue->thread_cond_.wait(lock); } } From 84bfbf8e52f1739897c6df065a57867200de8beb Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Wed, 18 Sep 2024 19:58:39 -0700 Subject: [PATCH 038/159] wsl/hsakmt: skip vender specific packet by default Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Reviewed-by: lyndonli Part-of: --- wddm/queue.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 77138e52d3..12309e349e 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -830,10 +830,10 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac debug_print("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); } + int i = ib_size; + if (vendor_packet_support) { int major = device->Major(); - int i = ib_size; - memcpy(cpu+i, pm4_addr, pm4_size * sizeof(uint32_t)); i += pm4_size * sizeof(uint32_t); @@ -861,19 +861,19 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); } - - // The ring_rptr is used to record pm4 queue rptr value, - // dispatch readptr position, this is used to share rptr with - // aql queue. - i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); - - ib_size = i; } else { if (packet->completion_signal.handle != 0) { hsakmt_hsa_signal_store_screlease(packet->completion_signal, 0); } } + // The ring_rptr is used to record pm4 queue rptr value, + // dispatch readptr position, this is used to share rptr with + // aql queue. + i += cmd_util.BuildAtomicMem((uint64_t *)ring_rptr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i); + + ib_size = i; + cmdbuf_aql_frame_write_index++; packet->header = HSA_PACKET_TYPE_INVALID; return HSA_STATUS_SUCCESS; From a2b449a370c062a95b657480afe155f333365684 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Thu, 19 Sep 2024 03:34:33 -0700 Subject: [PATCH 039/159] wsl/hsakmt: refine the header guard Signed-off-by: Longlong Yao Part-of: --- inc/pm4_cmds.h | 4 ++-- inc/registers.h | 4 ++-- inc/thunk_proxy/wddm_types.h | 4 ++-- inc/wddm/cmd_util.h | 4 ++-- inc/wddm/device.h | 4 ++-- inc/wddm/gpu_memory.h | 4 ++-- inc/wddm/queue.h | 4 ++-- inc/wddm/status.h | 4 ++-- inc/wddm/thunks.h | 6 +++--- inc/wddm/types.h | 6 +++--- inc/wddm/va_mgr.h | 6 +++--- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/inc/pm4_cmds.h b/inc/pm4_cmds.h index d9e60fc086..44b7fb00aa 100644 --- a/inc/pm4_cmds.h +++ b/inc/pm4_cmds.h @@ -1,5 +1,5 @@ -#ifndef _ROCR_PM4_CMDS_H_ -#define _ROCR_PM4_CMDS_H_ +#ifndef _WSL_INC_PM4_CMDS_H_ +#define _WSL_INC_PM4_CMDS_H_ #include diff --git a/inc/registers.h b/inc/registers.h index 067b808b90..4d430b41e4 100644 --- a/inc/registers.h +++ b/inc/registers.h @@ -44,8 +44,8 @@ // register values in amd_aql_queue.cpp then this file won't be required. For // now we are using this file where register details are spelled out in the // structs/unions below. -#ifndef HSA_RUNTME_CORE_INC_REGISTERS_H_ -#define HSA_RUNTME_CORE_INC_REGISTERS_H_ +#ifndef _WSL_INC_REGISTERS_H_ +#define _WSL_INC_REGISTERS_H_ typedef enum SQ_RSRC_BUF_TYPE { SQ_RSRC_BUF = 0x00000000, diff --git a/inc/thunk_proxy/wddm_types.h b/inc/thunk_proxy/wddm_types.h index f2e60d907d..83422a83d3 100644 --- a/inc/thunk_proxy/wddm_types.h +++ b/inc/thunk_proxy/wddm_types.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_WDDM_TYPES_H_ -#define _ROCR_WDDM_TYPES_H_ +#ifndef _WSL_INC_THUNK_PROXY_WDDM_TYPES_H_ +#define _WSL_INC_THUNK_PROXY_WDDM_TYPES_H_ #include diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h index df92e7c233..4f60986925 100644 --- a/inc/wddm/cmd_util.h +++ b/inc/wddm/cmd_util.h @@ -1,7 +1,7 @@ /* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. */ -#ifndef _CMD_UTIL_H_ -#define _CMD_UTIL_H_ +#ifndef _WSL_INC_WDDM_CMD_UTIL_H_ +#define _WSL_INC_WDDM_CMD_UTIL_H_ #include #include "hsa-runtime/inc/hsa.h" diff --git a/inc/wddm/device.h b/inc/wddm/device.h index 1fb78798ad..6136074a14 100644 --- a/inc/wddm/device.h +++ b/inc/wddm/device.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_WDDM_H_ -#define _ROCR_WDDM_H_ +#ifndef _WSL_INC_WDDM_DEVICE_H_ +#define _WSL_INC_WDDM_DEVICE_H_ #include #include diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index adb39f4618..50a7f7d3d8 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_GPU_MEMORY_H_ -#define _ROCR_GPU_MEMORY_H_ +#ifndef _WSL_INC_WDDM_GPU_MEMORY_H_ +#define _WSL_INC_WDDM_GPU_MEMORY_H_ #include #include diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 1324aa31a7..7317d87fc8 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -39,8 +39,8 @@ // DEALINGS WITH THE SOFTWARE. // //////////////////////////////////////////////////////////////////////////////// -#ifndef _WDDM_QUEUE_H_ -#define _WDDM_QUEUE_H_ +#ifndef _WSL_INC_WDDM_QUEUE_H_ +#define _WSL_INC_WDDM_QUEUE_H_ #include #include diff --git a/inc/wddm/status.h b/inc/wddm/status.h index 96808622ef..a564ff0aac 100644 --- a/inc/wddm/status.h +++ b/inc/wddm/status.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_CORE_INC_WDDM_STATUS_H_ -#define _ROCR_CORE_INC_WDDM_STATUS_H_ +#ifndef _WSL_INC_WDDM_STATUS_H +#define _WSL_INC_WDDM_STATUS_H enum class ErrorCode { Success, diff --git a/inc/wddm/thunks.h b/inc/wddm/thunks.h index 35308d5012..6a573c1a09 100644 --- a/inc/wddm/thunks.h +++ b/inc/wddm/thunks.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_CORE_INC_WDDM_THUNKS_H_ -#define _ROCR_CORE_INC_WDDM_THUNKS_H_ +#ifndef _WSL_INC_WDDM_THUNKS_H +#define _WSL_INC_WDDM_THUNKS_H #include "inc/wddm/status.h" #include "inc/wddm/types.h" @@ -229,4 +229,4 @@ inline ErrorCode OpenResourceFromNtHandle(D3DKMT_OPENRESOURCEFROMNTHANDLE *args) } // namespace thunk } // namespace wsl -#endif // _ROCR_CORE_INC_WDDM_THUNKS_H_ +#endif diff --git a/inc/wddm/types.h b/inc/wddm/types.h index 3257902ad6..0bc922b7fd 100644 --- a/inc/wddm/types.h +++ b/inc/wddm/types.h @@ -40,8 +40,8 @@ // //////////////////////////////////////////////////////////////////////////////// -#ifndef _ROCR_CORE_INC_WDDM_TYPES_H_ -#define _ROCR_CORE_INC_WDDM_TYPES_H_ +#ifndef _WSL_INC_WDDM_TYPES_H_ +#define _WSL_INC_WDDM_TYPES_H_ #include #include @@ -98,4 +98,4 @@ typedef struct _OBJECT_ATTRIBUTES { (p)->SecurityQualityOfService = NULL; \ } -#endif // _ROCR_CORE_INC_WDDM_TYPES_H_ +#endif \ No newline at end of file diff --git a/inc/wddm/va_mgr.h b/inc/wddm/va_mgr.h index 439dd55e41..675bfc3e39 100644 --- a/inc/wddm/va_mgr.h +++ b/inc/wddm/va_mgr.h @@ -1,5 +1,5 @@ -#ifndef VA_MGR_H_ -#define VA_MGR_H_ +#ifndef _WSL_INC_WDDM_VA_MGR_H_ +#define _WSL_INC_WDDM_VA_MGR_H_ #include #include @@ -83,4 +83,4 @@ private: } // namespace thunk } // namespace wsl -#endif // VA_MGR_H_ +#endif From 55fc454b9d0fb2d6d746977769ab745d5b4be471 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Tue, 24 Sep 2024 14:25:55 +0800 Subject: [PATCH 040/159] wsl/hsakmt: move amd_queue_rocr_ above aql_to_pm4_thread_ to avoid segfault Signed-off-by: Flora Cui Reviewed-by: Longlong Yao Part-of: --- wddm/queue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 12309e349e..bd622003f7 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -269,8 +269,8 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, amd_queue_mem_ = gpu_mem->GetGpuMemoryHandle(); amd_queue_ = reinterpret_cast(gpu_mem->GpuAddress()); - aql_to_pm4_thread_ = std::thread(AqlToPm4Thread, this); amd_queue_rocr_ = (amd_queue_t*)((char*)ring_rptr - offsetof(amd_queue_t, read_dispatch_id)); + aql_to_pm4_thread_ = std::thread(AqlToPm4Thread, this); } ComputeQueue::~ComputeQueue() { From 7a67eb90e2d75518c1e2dea569b73caad3ad9014 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 26 Sep 2024 17:23:03 +0800 Subject: [PATCH 041/159] wsl/hsakmt: add lock for sdma packet processing Suggested-by: Shane Xiao Signed-off-by: Flora Cui Reviewed-by: Shane Xiao Reviewed-by: Shi.Leslie Part-of: --- inc/wddm/queue.h | 1 + wddm/queue.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 7317d87fc8..d08e654b09 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -285,6 +285,7 @@ private: uint64_t rptr_next; uint64_t doorbell_; std::queue> wptr_queue_; + std::mutex wptr_queue_lock_; uint64_t ib_size; uint64_t ib_start_addr; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index bd622003f7..4e3f02c805 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -989,9 +989,11 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { while (true) { if (!queue->wptr_queue_.empty()) { + std::unique_lock lock(queue->wptr_queue_lock_); uint64_t start = queue->wptr_queue_.front().first; uint64_t end = queue->wptr_queue_.front().second; queue->wptr_queue_.pop(); + lock.unlock(); debug_print("SDMA: wptr %lx %lx\n", start, end); SDMA_PKT_POLL_REGMEM* poll_pkt = reinterpret_cast(queue->cmdbuf_addr + queue->WrapIntoRocrRing(start)); @@ -1081,7 +1083,10 @@ SDMAQueue::~SDMAQueue() { void SDMAQueue::RingDoorbell() { debug_print("SDMA: ringdoorbell %#llx %#llx\n", wptr_pre_, wptr_next_); - wptr_queue_.emplace(wptr_pre_, wptr_next_); + { + std::lock_guard lock(wptr_queue_lock_); + wptr_queue_.emplace(wptr_pre_, wptr_next_); + } thread_cond_.notify_one(); wptr_pre_ = wptr_next_; } From c8981042286d6b53085095876b12cc07324736ca Mon Sep 17 00:00:00 2001 From: lyndonli Date: Fri, 27 Sep 2024 10:47:23 +0800 Subject: [PATCH 042/159] wsl/hsakmt: Introduce WSL_CHECK_AVAIL_SYSRAM environment variable By default, this variable is 0. Set it to 1 to compare available system memory with the requested amount before allocation. It helps identify system hangs caused by excessive memory allocation. Signed-off-by: lyndonli Reviewed-by: Flora Cui Part-of: --- globals.cpp | 2 ++ libhsakmt.h | 1 + memory.cpp | 10 ++++++++++ openclose.cpp | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/globals.cpp b/globals.cpp index a75100201f..f7ac58e59c 100644 --- a/globals.cpp +++ b/globals.cpp @@ -47,5 +47,7 @@ int zfb_support; int vendor_packet_support; /* enable vendor packet in hsa-runtime*/ int enable_vendor_packet; +/* check available system memory before allocation */ +bool check_avail_sysram = false; size_t max_single_alloc_size = 0; \ No newline at end of file diff --git a/libhsakmt.h b/libhsakmt.h index fb8e8b0a37..61e49d0105 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -45,6 +45,7 @@ extern bool is_svm_api_supported; extern int zfb_support; extern int vendor_packet_support; extern int enable_vendor_packet; +extern bool check_avail_sysram; extern size_t max_single_alloc_size; #undef HSAKMTAPI diff --git a/memory.cpp b/memory.cpp index 8c47bfb282..260d0b0a30 100644 --- a/memory.cpp +++ b/memory.cpp @@ -105,6 +105,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemory(HSAuint32 PreferredNode, #define POWER_OF_2(x) ((x && (!(x & (x - 1)))) ? 1 : 0) +bool isSystemMemoryAvailable(HSAuint64 SizeInBytes) { + struct sysinfo info; + if (sysinfo(&info) != 0) + return false; + return SizeInBytes <= info.freeram; +} + HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, HSAuint64 SizeInBytes, HSAuint64 Alignment, @@ -140,6 +147,9 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, if (SizeInBytes > max_single_alloc_size) return HSAKMT_STATUS_NO_MEMORY; + if (check_avail_sysram && !isSystemMemoryAvailable(SizeInBytes)) + return HSAKMT_STATUS_NO_MEMORY; + /* If allocate VRAM under ZFB mode */ if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; diff --git a/openclose.cpp b/openclose.cpp index 2aa917f97b..11181e10ac 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -129,6 +129,11 @@ static HSAKMT_STATUS init_vars_from_env(void) { if (envvar) enable_vendor_packet = atoi(envvar); + /* Decide whether to check available system memory before allocation */ + envvar = getenv("WSL_CHECK_AVAIL_SYSRAM"); + if (envvar) + check_avail_sysram = !strcmp(envvar, "1"); + return HSAKMT_STATUS_SUCCESS; } From 5c13bc7509e3bd88f299bd3d194a4e652bd5e004 Mon Sep 17 00:00:00 2001 From: lyndonli Date: Fri, 27 Sep 2024 11:10:37 +0800 Subject: [PATCH 043/159] wsl/hsakmt: Modify num_subdirs parameter to resolve the warning Signed-off-by: lyndonli Reviewed-by: Flora Cui Part-of: --- topology.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topology.cpp b/topology.cpp index 3d3a9e4c93..1f93340ffd 100644 --- a/topology.cpp +++ b/topology.cpp @@ -117,7 +117,7 @@ static void free_properties(node_props_t *props, int size) { * Use blank string, "", to count all. * Return - number of sub-directories */ -static int num_subdirs(char *dirpath, char *prefix) { +static int num_subdirs(char *dirpath, const char *prefix) { int count = 0; DIR *dirp; struct dirent *dir; From 954807feff2eea2bb20f00a3505910d4e94afda9 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Sun, 29 Sep 2024 14:03:35 +0800 Subject: [PATCH 044/159] wsl/hsakmt: rename vendor_packet_support to vendor_packet_process. :1 process vender specific packet (acquire_mem, handle signal, update rptr) :0 skip vender specific packet (handle signal by cpu, update rptr by gpu) Signed-off-by: Flora Cui Reviewed-by: Longlong Yao Part-of: --- globals.cpp | 4 ++-- libhsakmt.h | 2 +- openclose.cpp | 2 +- wddm/queue.cpp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/globals.cpp b/globals.cpp index f7ac58e59c..6643407ad4 100644 --- a/globals.cpp +++ b/globals.cpp @@ -43,8 +43,8 @@ int PAGE_SHIFT; bool is_svm_api_supported; /* zfb is mainly used during emulation */ int zfb_support; -/* handle vendor specific packet */ -int vendor_packet_support; +/* handle vendor specific packet. :1 process 0:skip */ +int vendor_packet_process; /* enable vendor packet in hsa-runtime*/ int enable_vendor_packet; /* check available system memory before allocation */ diff --git a/libhsakmt.h b/libhsakmt.h index 61e49d0105..dcece185f5 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -43,7 +43,7 @@ extern pthread_mutex_t hsakmt_mutex; extern bool is_dgpu; extern bool is_svm_api_supported; extern int zfb_support; -extern int vendor_packet_support; +extern int vendor_packet_process; extern int enable_vendor_packet; extern bool check_avail_sysram; extern size_t max_single_alloc_size; diff --git a/openclose.cpp b/openclose.cpp index 11181e10ac..22387e4eb9 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -122,7 +122,7 @@ static HSAKMT_STATUS init_vars_from_env(void) { /* Check whether to handle vendor specific aql packet */ envvar = getenv("WSLKMT_VENDOR_PACKET"); if (envvar) - vendor_packet_support = atoi(envvar); + vendor_packet_process = atoi(envvar); /* Decide whether hsa-runtime dispatch vendor packet */ envvar = getenv("WSL_ENABLE_VENDOR_PACKET"); diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 4e3f02c805..31fdc521cf 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -824,7 +824,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac uint32_t* pm4_addr = reinterpret_cast((static_cast(packet->ib_jump_cmd[2]) << 32) | (static_cast(packet->ib_jump_cmd[1]) & ~3ull)); uint32_t pm4_size = packet->ib_jump_cmd[3]&0xfffff; debug_print("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %" PRIx64 " cs=%" PRIx64"\n", - ring, vendor_packet_support ? "process" : "skip", pm4_addr, pm4_size, + ring, vendor_packet_process ? "process" : "skip", pm4_addr, pm4_size, packet->completion_signal.handle); for (int i = 0; i < pm4_size; i++) { debug_print("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); @@ -832,7 +832,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac int i = ib_size; - if (vendor_packet_support) { + if (vendor_packet_process) { int major = device->Major(); memcpy(cpu+i, pm4_addr, pm4_size * sizeof(uint32_t)); i += pm4_size * sizeof(uint32_t); From 09f8f15d9066287dc2d593a424a67f52724faad4 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Sun, 29 Sep 2024 14:56:08 +0800 Subject: [PATCH 045/159] wsl/hsakmt: Ensure Immediate Output of Debug and Warning Messages Added fflush(stderr) to the WARN_ONCE and debug_print macros in utils.h to ensure that warning and debug messages are immediately flushed to the standard error stream. Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Part-of: --- util/utils.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/utils.h b/util/utils.h index 1aee7762a6..d65d3b0d2f 100644 --- a/util/utils.h +++ b/util/utils.h @@ -126,6 +126,7 @@ static __forceinline unsigned long long int strtoull(const char* str, if (!(exp) && (limit == 0 || count < limit)) { \ fprintf(stderr, "Warning: " STRING(exp) " in %s, " __FILE__ ":" STRING(__LINE__) "\n", \ __PRETTY_FUNCTION__); \ + fflush(stderr); \ count++; \ } \ } while (false) @@ -140,6 +141,7 @@ static __forceinline unsigned long long int strtoull(const char* str, #define debug_print(fmt, ...) \ do { \ fprintf(stderr, fmt, ##__VA_ARGS__); \ + fflush(stderr); \ } while (false) #endif From 263623c198c93f4131f2aa68d7680c85e09cf701 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Sun, 29 Sep 2024 02:38:45 +0800 Subject: [PATCH 046/159] wsl/hsakmt: Fix the warning about debug print Signed-off-by: Horatio Zhang Reviewed-by: Shane Xiao Reviewed-by: Aaron Liu Part-of: --- wddm/gpu_memory.cpp | 4 ++-- wddm/queue.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 8f9be30567..41ab2aab51 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -391,8 +391,8 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { debug_print("%s query resource info from nt handle failed %d\n", __FUNCTION__, static_cast(ret)); return ErrorCode::InvalidateParams; } - debug_print("wsl-rocr: import from nt handle %d, get allocation number %d," - " runtime data size %" PRIx64 " total driver data size %" PRIx64 "resource data size=%" PRIx64 "\n", + debug_print("wsl-thunk: import from nt handle %d, get allocation number %d," + " runtime data size %#x total driver data size %#x resource data size=%#x\n", dmabuf_fd, query_args.NumAllocations, query_args.PrivateRuntimeDataSize, diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 31fdc521cf..ab6ebe4c06 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -165,7 +165,7 @@ void ComputeQueue::HandleError(hsa_status_t status) { for (std::size_t i = 0; i < sizeof(QueueErrors) / sizeof(QueueErrors[0]); ++i) { if (QueueErrors[i].status == status) { val = QueueErrors[i].code; - debug_print("error %d, sig_val %d\n", status, val); + debug_print("error %d, sig_val %ld\n", status, val); break; } } @@ -823,7 +823,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac assert(op == IT_INDIRECT_BUFFER); uint32_t* pm4_addr = reinterpret_cast((static_cast(packet->ib_jump_cmd[2]) << 32) | (static_cast(packet->ib_jump_cmd[1]) & ~3ull)); uint32_t pm4_size = packet->ib_jump_cmd[3]&0xfffff; - debug_print("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %" PRIx64 " cs=%" PRIx64"\n", + debug_print("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %#x cs=%" PRIx64"\n", ring, vendor_packet_process ? "process" : "skip", pm4_addr, pm4_size, packet->completion_signal.handle); for (int i = 0; i < pm4_size; i++) { @@ -1019,7 +1019,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { amd_signal_t* signal = (amd_signal_t*)((char*)poll_addr - offsetof(amd_signal_t, value)); uint64_t signal_handle = reinterpret_cast(signal); - debug_print("SDMA: poll signal %#lx addr %#lx val %d\n", signal_handle, poll_addr, poll_val); + debug_print("SDMA: poll signal %#lx addr %#lx val %ld\n", signal_handle, poll_addr, poll_val); hsa_signal_t hsa_signal = {signal_handle}; hsa_signal_value_t value = hsakmt_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); @@ -1081,7 +1081,7 @@ SDMAQueue::~SDMAQueue() { } void SDMAQueue::RingDoorbell() { - debug_print("SDMA: ringdoorbell %#llx %#llx\n", wptr_pre_, wptr_next_); + debug_print("SDMA: ringdoorbell %#lx %#lx\n", wptr_pre_, wptr_next_); { std::lock_guard lock(wptr_queue_lock_); From 5cd49fb6008d9bb2ef0cbec7d38efbf02b76bfdd Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Sun, 29 Sep 2024 17:02:18 +0800 Subject: [PATCH 047/159] wsl/hsakmt: Resolve snprintf Truncation Warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch addresses a warning encountered during the build process: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size between 0 and 544 [-Wformat-truncation=] snprintf(path, MAXPATHSIZE, "%s/%s/cache", node_dir, dir->d_name); ^~ note: ‘snprintf’ output between 8 and 807 bytes into a destination of size 545 snprintf(path, MAXPATHSIZE, "%s/%s/cache", node_dir, dir->d_name); ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Horatio Zhang Reviewed-by: Aaron Liu Part-of: --- topology.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/topology.cpp b/topology.cpp index 1f93340ffd..b62a340e2c 100644 --- a/topology.cpp +++ b/topology.cpp @@ -870,7 +870,14 @@ topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, continue; if (!isdigit(dir->d_name[3])) /* ignore files like cpulist */ continue; - snprintf(path, MAXPATHSIZE, "%s/%s/cache", node_dir, dir->d_name); + if (strlen(node_dir) + strlen(dir->d_name) + strlen("/cache") + 2 < MAXPATHSIZE) { + std::string path_str = std::string(node_dir) + "/" + dir->d_name + "/cache"; + strncpy(path, path_str.c_str(), MAXPATHSIZE); + path[MAXPATHSIZE - 1] = '\0'; + } else { + pr_err("Path is too long and was truncated.\n"); + goto exit; + } this_cpu->num_caches = num_subdirs(path, "index"); this_cpu->cache_prop = (HsaCacheProperties *)calloc( this_cpu->num_caches, sizeof(HsaCacheProperties)); From f648688c45264f19f626b07cb9eaa040590d2b43 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Wed, 9 Oct 2024 14:35:42 +0800 Subject: [PATCH 048/159] wsl/hsakmt: Refactor logging function Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- libhsakmt.h | 36 ++++++++++++++++++++++++++++-------- openclose.cpp | 5 +---- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index dcece185f5..136180ad98 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -90,15 +90,35 @@ extern int PAGE_SHIFT; /* HSA Thunk logging usage */ extern int hsakmt_debug_level; -#define hsakmt_print(level, fmt, ...) \ - do { if (level <= hsakmt_debug_level) fprintf(stderr, fmt, ##__VA_ARGS__); } while (0) -#define HSAKMT_DEBUG_LEVEL_DEFAULT -1 -#define HSAKMT_DEBUG_LEVEL_ERR 3 -#define HSAKMT_DEBUG_LEVEL_WARNING 4 -#define HSAKMT_DEBUG_LEVEL_INFO 6 -#define HSAKMT_DEBUG_LEVEL_DEBUG 7 +#define get_thread_id() \ + ([]() -> std::string { \ + std::stringstream str_thrd_id; \ + str_thrd_id << std::hex << std::this_thread::get_id(); \ + return str_thrd_id.str(); \ + })() +#define hsakmt_print_common(stream, fmt, ...) \ + do { \ + fprintf(stream, "pid:%d tid:0x%s [%s] " fmt, getpid(), get_thread_id().c_str(), __FUNCTION__, ##__VA_ARGS__); \ + fflush(stream); \ + } while (false) +#ifdef NDEBUG +#define hsakmt_print(level, fmt, ...) \ + do { } while (false) +#else +#define hsakmt_print(level, fmt, ...) \ + do { \ + if (level <= hsakmt_debug_level) { \ + hsakmt_print_common(stdout, fmt, ##__VA_ARGS__); \ + } \ + } while (false) +#endif +#define HSAKMT_DEBUG_LEVEL_ERR -1 +#define HSAKMT_DEBUG_LEVEL_DEFAULT 3 +#define HSAKMT_DEBUG_LEVEL_WARNING 4 +#define HSAKMT_DEBUG_LEVEL_INFO 6 +#define HSAKMT_DEBUG_LEVEL_DEBUG 7 #define pr_err(fmt, ...) \ - hsakmt_print(HSAKMT_DEBUG_LEVEL_ERR, fmt, ##__VA_ARGS__) + hsakmt_print_common(stderr, fmt, ##__VA_ARGS__) #define pr_warn(fmt, ...) \ hsakmt_print(HSAKMT_DEBUG_LEVEL_WARNING, fmt, ##__VA_ARGS__) #define pr_info(fmt, ...) \ diff --git a/openclose.cpp b/openclose.cpp index 22387e4eb9..8ff4abec65 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -108,10 +108,7 @@ static HSAKMT_STATUS init_vars_from_env(void) { envvar = getenv("HSAKMT_DEBUG_LEVEL"); if (envvar) { - debug_level = atoi(envvar); - if (debug_level >= HSAKMT_DEBUG_LEVEL_ERR && - debug_level <= HSAKMT_DEBUG_LEVEL_DEBUG) - hsakmt_debug_level = debug_level; + hsakmt_debug_level = atoi(envvar); } /* Check whether to support Zero frame buffer */ From c52d47b644720d2bf1660750c9b78f27411e83af Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Wed, 9 Oct 2024 15:35:44 +0800 Subject: [PATCH 049/159] wsl/hsakmt: Standardize debug logging with pr_debug Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- events.cpp | 2 +- memory.cpp | 14 +++++------ util/lnx/os_linux.cpp | 4 ++-- wddm/device.cpp | 15 ++++++------ wddm/gpu_memory.cpp | 14 +++++------ wddm/queue.cpp | 55 +++++++++++++++++++++---------------------- 6 files changed, 52 insertions(+), 52 deletions(-) diff --git a/events.cpp b/events.cpp index e28491f31c..7e4f80ce4d 100644 --- a/events.cpp +++ b/events.cpp @@ -123,7 +123,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnMultipleEvents_Ext(HsaEvent *Events[], HSAKMT_STATUS HSAKMTAPI hsaKmtOpenSMI(HSAuint32 NodeId, int *fd) { CHECK_DXG_OPEN(); - pr_debug("[%s] node %d\n", __func__, NodeId); + pr_debug("node id %d\n", NodeId); assert(false); return HSAKMT_STATUS_SUCCESS; } diff --git a/memory.cpp b/memory.cpp index 260d0b0a30..effdd2a9bb 100644 --- a/memory.cpp +++ b/memory.cpp @@ -258,7 +258,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryWithFlags( if (!MemoryAddress) return HSAKMT_STATUS_INVALID_PARAMETER; - pr_debug("[%s] address %p\n", __func__, MemoryAddress); + pr_debug("address %p\n", MemoryAddress); if (MemFlags.ui32.ExtendedCoherent && MemFlags.ui32.CoarseGrain) return HSAKMT_STATUS_INVALID_PARAMETER; @@ -297,7 +297,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodesExt(HSAuint64 Graphic uint32_t *gpu_id_array = NULL; HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - pr_debug("[%s] number of nodes %lu\n", __func__, NumberOfNodes); + pr_debug("number of nodes %lu\n", NumberOfNodes); GraphicsResourceInfo->NodeId = 1; return hsaKmtImportDMABufHandle(GraphicsResourceHandle, &GraphicsResourceInfo->MemoryAddress); @@ -412,7 +412,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDeregisterMemory(void *MemoryAddress) { if (!MemoryAddress) return HSAKMT_STATUS_INVALID_PARAMETER; - pr_debug("[%s] address %p\n", __func__, MemoryAddress); + pr_debug("address %p\n", MemoryAddress); return HSAKMT_STATUS_SUCCESS; } @@ -511,7 +511,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { return HSAKMT_STATUS_SUCCESS; } - pr_debug("[%s] address %p\n", __func__, MemoryAddress); + pr_debug("address %p\n", MemoryAddress); wsl::thunk::GpuMemoryHandle handle = nullptr; { @@ -574,7 +574,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, if (!Pointer || !PointerInfo) return HSAKMT_STATUS_INVALID_PARAMETER; - pr_debug("[%s] pointer %p\n", __func__, Pointer); + pr_debug("pointer %p\n", Pointer); memset(PointerInfo, 0, sizeof(HsaPointerInfo)); @@ -617,7 +617,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryUserData(const void *Pointer, HSAKMT_STATUS HSAKMTAPI hsaKmtReplaceAsanHeaderPage(void *addr) { assert(false); #ifdef SANITIZER_AMDGPU - pr_debug("[%s] address %p\n", __func__, addr); + pr_debug("address %p\n", addr); CHECK_DXG_OPEN(); return HSAKMT_STATUS_SUCCESS; @@ -629,7 +629,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtReplaceAsanHeaderPage(void *addr) { HSAKMT_STATUS HSAKMTAPI hsaKmtReturnAsanHeaderPage(void *addr) { assert(false); #ifdef SANITIZER_AMDGPU - pr_debug("[%s] address %p\n", __func__, addr); + pr_debug("address %p\n", addr); CHECK_DXG_OPEN(); return HSAKMT_STATUS_SUCCESS; diff --git a/util/lnx/os_linux.cpp b/util/lnx/os_linux.cpp index a686f0f216..368951c494 100644 --- a/util/lnx/os_linux.cpp +++ b/util/lnx/os_linux.cpp @@ -152,7 +152,7 @@ class os_thread { } err = pthread_create(&thread, &attrib, ThreadTrampoline, args.get()); if (err != EINVAL) break; - debug_print("pthread_create returned EINVAL, doubling stack size\n"); + pr_debug("pthread_create returned EINVAL, doubling stack size\n"); } } @@ -308,7 +308,7 @@ static int callback(struct dl_phdr_info* info, size_t size, void* data) { if (dyn_section[j].d_tag == DT_STRSZ) limit = dyn_section[j].d_un.d_val; } - if (strings == nullptr) debug_print("String table not found"); + if (strings == nullptr) pr_debug("String table not found\n"); /* * Hacky lookup, if string and symbol tables are found, diff --git a/wddm/device.cpp b/wddm/device.cpp index f2c284a379..17a378732b 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -301,8 +301,8 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { match_index = i; local_heap_space_start_ = local_va; - debug_print("%s success to reserve gpu va %lx and va cpu %p in %d time\n", - __FUNCTION__, local_va, ptr, i); + pr_debug("success to reserve gpu va %lx and va cpu %p in %d time\n", + local_va, ptr, i); break; } else { debug_print("%s fail to reserve gpu va for cpu va %p in %d time!\n", @@ -365,7 +365,7 @@ void WDDMDevice::SetPowerOptimization(bool restore) { d3dkmt_escape.Flags.HardwareAccess = true; NTSTATUS status = D3DKMTEscape(&d3dkmt_escape); - debug_print("%s status %d restore %d\n", __FUNCTION__, status, restore); + pr_debug("status %d, restore %d\n", status, restore); thunk_proxy::DestroyPrivData(priv_data); } @@ -596,9 +596,10 @@ bool WDDMDevice::CreateSyncobj(D3DKMT_HANDLE *handle, uint64_t **addr) { if (ret == STATUS_SUCCESS) { *handle = args.hSyncObject; *addr = (uint64_t *)args.Info.MonitoredFence.FenceValueCPUVirtualAddress; - debug_print("create syncobj cpu addr=%p gpu addr=%" PRIx64 "\n", - args.Info.MonitoredFence.FenceValueCPUVirtualAddress, - args.Info.MonitoredFence.FenceValueGPUVirtualAddress); + pr_debug("create syncobj cpu addr=%p gpu addr=%" PRIx64 "\n", + args.Info.MonitoredFence.FenceValueCPUVirtualAddress, + args.Info.MonitoredFence.FenceValueGPUVirtualAddress); + return true; } @@ -730,7 +731,7 @@ void WDDMDevice::GetClockCounters(uint64_t *gpu, uint64_t *cpu) { NTSTATUS status = D3DKMTEscape(&d3dkmt_escape); if (status) { - debug_print("%s status %d \n", __FUNCTION__, status); + pr_debug("status %d \n", status); } else { thunk_proxy::QueryCalibratedTimestamps(priv_data, gpu, cpu); } diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 41ab2aab51..795ced34c7 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -391,13 +391,13 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { debug_print("%s query resource info from nt handle failed %d\n", __FUNCTION__, static_cast(ret)); return ErrorCode::InvalidateParams; } - debug_print("wsl-thunk: import from nt handle %d, get allocation number %d," - " runtime data size %#x total driver data size %#x resource data size=%#x\n", - dmabuf_fd, - query_args.NumAllocations, - query_args.PrivateRuntimeDataSize, - query_args.TotalPrivateDriverDataSize, - query_args.ResourcePrivateDriverDataSize); + pr_debug("wsl-thunk: import from nt handle %d, get allocation number %d," + " runtime data size %#x total driver data size %#x resource data size=%#x\n", + dmabuf_fd, + query_args.NumAllocations, + query_args.PrivateRuntimeDataSize, + query_args.TotalPrivateDriverDataSize, + query_args.ResourcePrivateDriverDataSize); SharedHandleInfo shared_info; if(sizeof(shared_info) != query_args.PrivateRuntimeDataSize) { diff --git a/wddm/queue.cpp b/wddm/queue.cpp index ab6ebe4c06..3294f75943 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -135,7 +135,7 @@ hsa_status_t WDDMQueue::SetPriority(hsa_amd_queue_priority_t priority) { if (prio == new_prio) return HSA_STATUS_SUCCESS; - debug_print("set prio %d -> %d\n", prio, new_prio); + pr_debug("set prio %d -> %d\n", prio, new_prio); device->DestroyHwQueue(this); prio = new_prio; @@ -219,13 +219,13 @@ void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { (sleep && queue->IsInvalidPacket())) { if (queue->thread_stop_) break; - debug_print("wait %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", - queue->ring, queue->GetRingWptr()->load(), queue->GetRingRptr()->load()); + pr_debug("wait %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + queue->ring, queue->GetRingWptr()->load(), queue->GetRingRptr()->load()); queue->thread_cond_.wait(lock); } } - debug_print("aql to pm4 thread %p exit\n", queue->ring); + pr_debug("aql to pm4 thread %p exit\n", queue->ring); } ComputeQueue::ComputeQueue(WDDMDevice *device, @@ -447,8 +447,8 @@ bool ComputeQueue::UpdateScratch(uint32_t private_segment_size, bool wave32) { if (scratch_size_ >= scratch_size) return true; - debug_print("need realloc scratch buffer, size %x -> %x\n", - scratch_size_, scratch_size); + pr_debug("need realloc scratch buffer, size %x -> %x\n", + scratch_size_, scratch_size); GpuMemoryCreateInfo create_info{}; create_info.size = scratch_size; @@ -537,8 +537,8 @@ uint64_t ComputeQueue::GetKernelObjAddr(uint64_t addr) const { void ComputeQueue::RingDoorbell() { thread_cond_lock_.lock(); thread_cond_lock_.unlock(); - debug_print("notify %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", - ring, GetRingWptr()->load(), GetRingRptr()->load()); + pr_debug("notify %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, GetRingWptr()->load(), GetRingRptr()->load()); thread_cond_.notify_one(); } @@ -599,7 +599,7 @@ hsa_status_t ComputeQueue::Submit(void) { hsa_status_t ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *packet) { - debug_print("queue %p kernel dispatch head=%x setup=%x wx=%x wy=%x wz=%x " + pr_debug("queue %p kernel dispatch head=%x setup=%x wx=%x wy=%x wz=%x " "gx=%x gy=%x gz=%x ps=%x gs=%x ko=%" PRIx64 " ka=%p cs=%" PRIx64 "\n", ring, packet->header, packet->setup, packet->workgroup_size_x, packet->workgroup_size_y, @@ -625,10 +625,10 @@ ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *pa void* entry = (void*)(packet->kernel_object + kernel_object->kernel_code_entry_byte_offset); assert((size_t)entry % AMD_ISA_ALIGN_BYTES == 0); - debug_print("kernel object property=%x entry=%p lds=%x+%x\n", - kernel_object->kernel_code_properties, entry, - kernel_object->workgroup_group_segment_byte_size, - packet->group_segment_size); + pr_debug("kernel object property=%x entry=%p lds=%x+%x\n", + kernel_object->kernel_code_properties, entry, + kernel_object->workgroup_group_segment_byte_size, + packet->group_segment_size); if (packet->setup == 0 || packet->setup > 3) return HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS; @@ -704,7 +704,7 @@ ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *pa assert(signal->kind == AMD_SIGNAL_KIND_USER); uint64_t *signal_addr = (uint64_t *)&signal->value; - debug_print("signal value=%" PRIx64 "\n", signal->value); + pr_debug("signal value=%" PRIx64 "\n", signal->value); if (platform_atomic_support_) i += cmd_util.BuildAtomicMem(signal_addr, TC_OP_ATOMIC_ADD_RTN_64, cpu + i, cache_policy__mec_atomic_mem__bypass, -1); @@ -729,7 +729,7 @@ ComputeQueue::KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *pa hsa_status_t ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet, bool is_or) { - debug_print("queue %p %s head=%x dep %" PRIx64 " %" PRIx64 " %" PRIx64 + pr_debug("queue %p %s head=%x dep %" PRIx64 " %" PRIx64 " %" PRIx64 " %" PRIx64 " %" PRIx64 " cs=%" PRIx64"\n", ring, is_or ? "or" : "and", packet->header, packet->dep_signal[0].handle, @@ -776,7 +776,7 @@ ComputeQueue::BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet amd_signal_t *signal = (amd_signal_t *)packet->completion_signal.handle; assert(signal->kind == AMD_SIGNAL_KIND_USER); uint64_t *signal_addr = (uint64_t *)&signal->value; - debug_print("signal value=%" PRIx64 "\n", signal->value); + pr_debug("signal value=%" PRIx64 "\n", signal->value); // Record start timestamp when enabling profiling if (EnableProfiling()) @@ -823,11 +823,11 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac assert(op == IT_INDIRECT_BUFFER); uint32_t* pm4_addr = reinterpret_cast((static_cast(packet->ib_jump_cmd[2]) << 32) | (static_cast(packet->ib_jump_cmd[1]) & ~3ull)); uint32_t pm4_size = packet->ib_jump_cmd[3]&0xfffff; - debug_print("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %#x cs=%" PRIx64"\n", + pr_debug("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %#x cs=%" PRIx64"\n", ring, vendor_packet_process ? "process" : "skip", pm4_addr, pm4_size, packet->completion_signal.handle); for (int i = 0; i < pm4_size; i++) { - debug_print("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); + pr_debug("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); } int i = ib_size; @@ -841,7 +841,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac amd_signal_t *signal = (amd_signal_t *)packet->completion_signal.handle; assert(signal->kind == AMD_SIGNAL_KIND_USER); uint64_t *signal_addr = (uint64_t *)&signal->value; - debug_print("signal value=%" PRIx64 "\n", signal->value); + pr_debug("signal value=%" PRIx64 "\n", signal->value); // Record start timestamp when enabling profiling if (EnableProfiling()) @@ -933,8 +933,8 @@ hsa_status_t ComputeQueue::Process(void) { while (cmdbuf_aql_frame_write_index < ring_wptr->load() && !IsInvalidPacket()) { - debug_print("process %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", - ring, ring_wptr->load(), ring_rptr->load()); + pr_debug("process %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, ring_wptr->load(), ring_rptr->load()); hsa_status_t ret; @@ -970,9 +970,8 @@ hsa_status_t ComputeQueue::Process(void) { ready_to_submit = false; - debug_print("done %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", - ring, ring_wptr->load(), ring_rptr->load()); - + pr_debug("done %p wptr=%" PRIx64 " rptr=%" PRIx64 "\n", + ring, ring_wptr->load(), ring_rptr->load()); } return HSA_STATUS_SUCCESS; @@ -994,7 +993,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { uint64_t end = queue->wptr_queue_.front().second; queue->wptr_queue_.pop(); lock.unlock(); - debug_print("SDMA: wptr %lx %lx\n", start, end); + pr_debug("wptr %lx %lx\n", start, end); SDMA_PKT_POLL_REGMEM* poll_pkt = reinterpret_cast(queue->cmdbuf_addr + queue->WrapIntoRocrRing(start)); SDMA_PKT_POLL_REGMEM* poll_next_pkt = poll_pkt + 1; @@ -1019,7 +1018,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { amd_signal_t* signal = (amd_signal_t*)((char*)poll_addr - offsetof(amd_signal_t, value)); uint64_t signal_handle = reinterpret_cast(signal); - debug_print("SDMA: poll signal %#lx addr %#lx val %ld\n", signal_handle, poll_addr, poll_val); + pr_debug("poll signal %#lx addr %#lx val %ld\n", signal_handle, poll_addr, poll_val); hsa_signal_t hsa_signal = {signal_handle}; hsa_signal_value_t value = hsakmt_hsa_signal_wait_relaxed(hsa_signal, HSA_SIGNAL_CONDITION_EQ, poll_val, UINT64_MAX, HSA_WAIT_STATE_BLOCKED); @@ -1049,7 +1048,7 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { start_time = std::chrono::steady_clock::now(); } } - debug_print("sdma thread exit\n"); + pr_debug("thread exit\n"); } SDMAQueue::SDMAQueue(WDDMDevice *device, @@ -1081,7 +1080,7 @@ SDMAQueue::~SDMAQueue() { } void SDMAQueue::RingDoorbell() { - debug_print("SDMA: ringdoorbell %#lx %#lx\n", wptr_pre_, wptr_next_); + pr_debug("ringdoorbell %#lx %#lx\n", wptr_pre_, wptr_next_); { std::lock_guard lock(wptr_queue_lock_); From 6d5324c957405abb1cba5651f86c0d5d8fbd43ea Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Wed, 9 Oct 2024 16:31:52 +0800 Subject: [PATCH 050/159] wsl/hsakmt: Standardize warning logging with pr_warn_once Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- debug.cpp | 11 ++++++++++- events.cpp | 11 +++++------ memory.cpp | 30 ++++++++++++++++++------------ pc_sampling.cpp | 6 ++++++ perfctr.cpp | 9 +++++++++ queues.cpp | 5 ++--- spm.cpp | 3 +++ svm.cpp | 4 ++++ 8 files changed, 57 insertions(+), 22 deletions(-) diff --git a/debug.cpp b/debug.cpp index 5152aaf483..bc346e6a28 100644 --- a/debug.cpp +++ b/debug.cpp @@ -32,11 +32,13 @@ static uint32_t runtime_capabilities_mask = 0; HSAKMT_STATUS HSAKMTAPI hsaKmtDbgRegister(HSAuint32 NodeId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtDbgUnregister(HSAuint32 NodeId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -44,6 +46,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDbgWavefrontControl( HSAuint32 NodeId, HSA_DBG_WAVEOP Operand, HSA_DBG_WAVEMODE Mode, HSAuint32 TrapId, HsaDbgWaveMessage *DbgWaveMsgRing) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -51,11 +54,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDbgAddressWatch( HSAuint32 NodeId, HSAuint32 NumWatchPoints, HSA_DBG_WATCH_MODE WatchMode[], void *WatchAddress[], HSAuint64 WatchMask[], HsaEvent *WatchEvent[]) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtCheckRuntimeDebugSupport(void) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -88,11 +93,12 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetRuntimeCapabilities(HSAuint32 *caps_mask) { HSAKMT_STATUS HSAKMTAPI hsaKmtDbgEnable(void **runtime_info, HSAuint32 *data_size) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtDbgDisable(void) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -100,6 +106,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDbgGetDeviceData(void **data, HSAuint32 *n_entries, HSAuint32 *entry_size) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -107,6 +114,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDbgGetQueueData(void **data, HSAuint32 *n_entries, HSAuint32 *entry_size, bool suspend_queues) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -114,5 +122,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDebugTrapIoctl(struct kfd_ioctl_dbg_trap_args *args, HSA_QUEUEID *Queues, HSAuint64 *DebugReturn) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } diff --git a/events.cpp b/events.cpp index 7e4f80ce4d..e2fd3a85ca 100644 --- a/events.cpp +++ b/events.cpp @@ -33,14 +33,14 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateEvent(HsaEventDescriptor *EventDesc, bool ManualReset, bool IsSignaled, HsaEvent **Event) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyEvent(HsaEvent *Event) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); if (!Event) return HSAKMT_STATUS_INVALID_HANDLE; @@ -50,7 +50,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyEvent(HsaEvent *Event) { HSAKMT_STATUS HSAKMTAPI hsaKmtSetEvent(HsaEvent *Event) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); if (!Event) return HSAKMT_STATUS_INVALID_HANDLE; @@ -60,7 +60,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetEvent(HsaEvent *Event) { HSAKMT_STATUS HSAKMTAPI hsaKmtResetEvent(HsaEvent *Event) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); if (!Event) return HSAKMT_STATUS_INVALID_HANDLE; @@ -70,7 +70,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtResetEvent(HsaEvent *Event) { HSAKMT_STATUS HSAKMTAPI hsaKmtQueryEventState(HsaEvent *Event) { CHECK_DXG_OPEN(); - + pr_warn_once("not supported\n"); if (!Event) return HSAKMT_STATUS_INVALID_HANDLE; @@ -122,7 +122,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtWaitOnMultipleEvents_Ext(HsaEvent *Events[], HSAKMT_STATUS HSAKMTAPI hsaKmtOpenSMI(HSAuint32 NodeId, int *fd) { CHECK_DXG_OPEN(); - pr_debug("node id %d\n", NodeId); assert(false); return HSAKMT_STATUS_SUCCESS; diff --git a/memory.cpp b/memory.cpp index effdd2a9bb..9d97935031 100644 --- a/memory.cpp +++ b/memory.cpp @@ -74,7 +74,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryPolicy(HSAuint32 Node, void *MemoryAddressAlternate, HSAuint64 MemorySizeInBytes) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -236,7 +236,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAvailableMemory(HSAuint32 Node, HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemory(void *MemoryAddress, HSAuint64 MemorySizeInBytes) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -359,7 +359,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtShareMemory(void *MemoryAddress, HSAuint64 SizeInBytes, HsaSharedMemoryHandle *SharedMemoryHandle) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -368,7 +368,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterSharedHandle(const HsaSharedMemoryHandle *SharedMemoryHandle, void **MemoryAddress, HSAuint64 *SizeInBytes) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -377,7 +377,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterSharedHandleToNodes( const HsaSharedMemoryHandle *SharedMemoryHandle, void **MemoryAddress, HSAuint64 *SizeInBytes, HSAuint64 NumberOfNodes, HSAuint32 *NodeArray) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -388,8 +388,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMRead(HSAuint32 Pid, HsaMemoryRange *RemoteMemoryArray, HSAuint64 RemoteMemoryArrayCount, HSAuint64 *SizeCopied) { - pr_err("[%s] Deprecated\n", __func__); - + CHECK_DXG_OPEN(); + pr_warn_once("has been deprecated\n"); assert(false); return HSAKMT_STATUS_NOT_IMPLEMENTED; } @@ -400,8 +400,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMWrite(HSAuint32 Pid, HsaMemoryRange *RemoteMemoryArray, HSAuint64 RemoteMemoryArrayCount, HSAuint64 *SizeCopied) { - pr_err("[%s] Deprecated\n", __func__); - + CHECK_DXG_OPEN(); + pr_warn_once("has been deprecated\n"); assert(false); return HSAKMT_STATUS_NOT_IMPLEMENTED; } @@ -542,6 +542,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapGraphicHandle(HSAuint32 NodeId, HSAuint64 GraphicResourceOffset, HSAuint64 GraphicResourceSize, HSAuint64 *FlatMemoryAddress) { + CHECK_DXG_OPEN(); + pr_warn_once("not implemented\n"); /* This API was only ever implemented in KFD for Kaveri and * was never upstreamed. There are no open-source users of * this interface. It has been superseded by @@ -554,7 +556,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapGraphicHandle(HSAuint32 NodeId, HSAuint64 FlatMemoryAddress, HSAuint64 SizeInBytes) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -562,7 +564,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapGraphicHandle(HSAuint32 NodeId, HSAKMT_STATUS HSAKMTAPI hsaKmtGetTileConfig(HSAuint32 NodeId, HsaGpuTileConfig *config) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } @@ -609,12 +611,14 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryUserData(const void *Pointer, void *UserData) { CHECK_DXG_OPEN(); - + pr_warn_once("not implemented\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } HSAKMT_STATUS HSAKMTAPI hsaKmtReplaceAsanHeaderPage(void *addr) { + CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); assert(false); #ifdef SANITIZER_AMDGPU pr_debug("address %p\n", addr); @@ -627,6 +631,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtReplaceAsanHeaderPage(void *addr) { } HSAKMT_STATUS HSAKMTAPI hsaKmtReturnAsanHeaderPage(void *addr) { + CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); assert(false); #ifdef SANITIZER_AMDGPU pr_debug("address %p\n", addr); diff --git a/pc_sampling.cpp b/pc_sampling.cpp index 247726239b..e8b49c0f88 100644 --- a/pc_sampling.cpp +++ b/pc_sampling.cpp @@ -32,6 +32,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingSupport(void) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -40,6 +41,7 @@ hsaKmtPcSamplingQueryCapabilities(HSAuint32 NodeId, void *sample_info, HSAuint32 sample_info_sz, HSAuint32 *size) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -48,6 +50,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingCreate(HSAuint32 NodeId, HsaPcSamplingTraceId *traceId) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -55,6 +58,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingDestroy(HSAuint32 NodeId, HsaPcSamplingTraceId traceId) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -62,6 +66,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingStart(HSAuint32 NodeId, HsaPcSamplingTraceId traceId) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -69,5 +74,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPcSamplingStop(HSAuint32 NodeId, HsaPcSamplingTraceId traceId) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } diff --git a/perfctr.cpp b/perfctr.cpp index 9f2b755052..07cd515669 100644 --- a/perfctr.cpp +++ b/perfctr.cpp @@ -26,6 +26,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcGetCounterProperties( HSAuint32 NodeId, HsaCounterProperties **CounterProperties) { + CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -35,6 +37,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcRegisterTrace(HSAuint32 NodeId, HsaCounter *Counters, HsaPmcTraceRoot *TraceRoot) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -43,18 +46,21 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcRegisterTrace(HSAuint32 NodeId, HSAKMT_STATUS HSAKMTAPI hsaKmtPmcUnregisterTrace(HSAuint32 NodeId, HSATraceId TraceId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtPmcAcquireTraceAccess(HSAuint32 NodeId, HSATraceId TraceId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtPmcReleaseTraceAccess(HSAuint32 NodeId, HSATraceId TraceId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -64,6 +70,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcStartTrace(HSATraceId TraceId, void *TraceBuffer, HSAuint64 TraceBufferSizeBytes) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -71,6 +78,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcStartTrace(HSATraceId TraceId, * has registered */ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcQueryTrace(HSATraceId TraceId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -78,5 +86,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcQueryTrace(HSATraceId TraceId) { * counters */ HSAKMT_STATUS HSAKMTAPI hsaKmtPmcStopTrace(HSATraceId TraceId) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } diff --git a/queues.cpp b/queues.cpp index f89c81ce83..58a3ede5d3 100644 --- a/queues.cpp +++ b/queues.cpp @@ -158,7 +158,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetQueueCUMask(HSA_QUEUEID QueueId, if (CUMaskCount == 0 || !QueueCUMask || ((CUMaskCount % 32) != 0)) return HSAKMT_STATUS_INVALID_PARAMETER; - pr_debug("%s not implemented\n", __func__); + pr_warn_once("not implemented\n"); return HSAKMT_STATUS_SUCCESS; } @@ -181,8 +181,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSetTrapHandler(HSAuint32 Node, void *TrapBufferBaseAddress, HSAuint64 TrapBufferSizeInBytes) { CHECK_DXG_OPEN(); - - pr_debug("%s not implemented\n", __func__); + pr_warn_once("not implemented\n"); return HSAKMT_STATUS_SUCCESS; } diff --git a/spm.cpp b/spm.cpp index d01b3c3e2d..9efb91262e 100644 --- a/spm.cpp +++ b/spm.cpp @@ -30,6 +30,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSPMAcquire(HSAuint32 PreferredNode) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -38,11 +39,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSPMSetDestBuffer( HSAuint32 *SizeCopied, void *DestMemoryAddress, bool *isSPMDataLoss) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtSPMRelease(HSAuint32 PreferredNode) { CHECK_DXG_OPEN(); // Used for profiling tools + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } diff --git a/svm.cpp b/svm.cpp index 9a45f89de9..0bc1f84f8e 100644 --- a/svm.cpp +++ b/svm.cpp @@ -30,6 +30,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSVMSetAttr(void *start_addr, HSAuint64 size, unsigned int nattr, HSA_SVM_ATTRIBUTE *attrs) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } @@ -37,16 +38,19 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtSVMGetAttr(void *start_addr, HSAuint64 size, unsigned int nattr, HSA_SVM_ATTRIBUTE *attrs) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtSetXNACKMode(HSAint32 enable) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); return HSAKMT_STATUS_NOT_SUPPORTED; } HSAKMT_STATUS HSAKMTAPI hsaKmtGetXNACKMode(HSAint32 *enable) { CHECK_DXG_OPEN(); + pr_warn_once("not supported\n"); *enable = false; return HSAKMT_STATUS_SUCCESS; } From 1f4fdb6d1c31afd1e70c05d99ef8df405cb8c133 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Mon, 14 Oct 2024 16:04:16 +0800 Subject: [PATCH 051/159] wsl/hsakmt: Standardize error logging with pr_err Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- inc/wddm/cmd_util.h | 1 + topology.cpp | 6 ++-- util/lnx/os_linux.cpp | 42 ++++++++++++++-------------- wddm/device.cpp | 64 +++++++++++++++++++------------------------ wddm/gpu_memory.cpp | 12 ++++---- wddm/queue.cpp | 4 +-- wddm/va_mgr.cpp | 5 ++-- 7 files changed, 63 insertions(+), 71 deletions(-) diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h index 4f60986925..7ea0d80d3a 100644 --- a/inc/wddm/cmd_util.h +++ b/inc/wddm/cmd_util.h @@ -9,6 +9,7 @@ #include "hsa-runtime/inc/amd_hsa_kernel_code.h" #include "inc/pm4_cmds.h" #include "util/utils.h" +#include "libhsakmt.h" namespace wsl { namespace thunk { diff --git a/topology.cpp b/topology.cpp index b62a340e2c..906ae6f9cb 100644 --- a/topology.cpp +++ b/topology.cpp @@ -484,7 +484,7 @@ static HSAKMT_STATUS topology_parse_cpuinfo(struct proc_cpuinfo *cpuinfo, p += 2; /* remove ": " */ proc = atoi(p); if (proc >= num_procs) { - pr_warn("cpuinfo contains processor %d larger than %u\n", proc, + pr_err("cpuinfo contains processor %d larger than %u\n", proc, num_procs); ret = HSAKMT_STATUS_NO_MEMORY; goto exit; @@ -527,7 +527,7 @@ static HSAKMT_STATUS topology_parse_cpuinfo(struct proc_cpuinfo *cpuinfo, p += 2; /* remove ": " */ proc = atoi(p); if (proc >= num_procs) { - pr_warn("cpuinfo contains processor %d larger than %u\n", proc, + pr_err("cpuinfo contains processor %d larger than %u\n", proc, num_procs); ret = HSAKMT_STATUS_NO_MEMORY; goto exit; @@ -584,7 +584,7 @@ static HSAKMT_STATUS topology_get_cpu_maxfreq(uint32_t *max_freq) { if (!cpuinfo_max_freq) { std::ifstream cpuinfo("/proc/cpuinfo"); if (!cpuinfo) { - std::cerr << "Failed to open /proc/cpuinfo\n"; + pr_err("Failed to open /proc/cpuinfo\n"); return HSAKMT_STATUS_ERROR; } diff --git a/util/lnx/os_linux.cpp b/util/lnx/os_linux.cpp index 368951c494..020ca10b28 100644 --- a/util/lnx/os_linux.cpp +++ b/util/lnx/os_linux.cpp @@ -98,7 +98,7 @@ class os_thread { pthread_attr_t attrib; err = pthread_attr_init(&attrib); if (err != 0) { - fprintf(stderr, "pthread_attr_init failed: %s\n", strerror(err)); + pr_err("pthread_attr_init failed: %s\n", strerror(err)); return; } @@ -107,10 +107,10 @@ class os_thread { stackSize = AlignUp(stackSize, 4096); err = pthread_attr_setstacksize(&attrib, stackSize); if (err != 0) { - fprintf(stderr, "pthread_attr_setstacksize failed: %s\n", strerror(err)); + pr_err("pthread_attr_setstacksize failed: %s\n", strerror(err)); err = pthread_attr_destroy(&attrib); if (err != 0) { - fprintf(stderr, "pthread_attr_destroy failed: %s\n", strerror(err)); + pr_err("pthread_attr_destroy failed: %s\n", strerror(err)); return; } } @@ -123,7 +123,7 @@ class os_thread { cores = get_nprocs_conf(); cpuset = CPU_ALLOC(cores); if (cpuset == nullptr) { - fprintf(stderr, "CPU_ALLOC failed: %s\n", strerror(errno)); + pr_err("CPU_ALLOC failed: %s\n", strerror(errno)); return; } CPU_ZERO_S(CPU_ALLOC_SIZE(cores), cpuset); @@ -133,7 +133,7 @@ class os_thread { err = pthread_attr_setaffinity_np(&attrib, CPU_ALLOC_SIZE(cores), cpuset); CPU_FREE(cpuset); if (err != 0) { - fprintf(stderr, "pthread_setaffinity_np failed: %s\n", strerror(err)); + pr_err("pthread_setaffinity_np failed: %s\n", strerror(err)); return; } } @@ -147,7 +147,7 @@ class os_thread { stackSize *= 2; err = pthread_attr_setstacksize(&attrib, stackSize); if (err != 0) { - fprintf(stderr, "pthread_attr_setstacksize failed: %s\n", strerror(err)); + pr_err("pthread_attr_setstacksize failed: %s\n", strerror(err)); return; } err = pthread_create(&thread, &attrib, ThreadTrampoline, args.get()); @@ -163,7 +163,7 @@ class os_thread { err = pthread_attr_destroy(&attrib); if (err != 0) { - fprintf(stderr, "pthread_attr_destroy failed: %s\n", strerror(err)); + pr_err("pthread_attr_destroy failed: %s\n", strerror(err)); } } @@ -181,7 +181,7 @@ class os_thread { if (lock != nullptr) DestroyMutex(lock); if ((state == RUNNING) && (thread != 0)) { int err = pthread_detach(thread); - if (err != 0) fprintf(stderr, "pthread_detach failed: %s\n", strerror(err)); + if (err != 0) pr_err("pthread_detach failed: %s\n", strerror(err)); } } @@ -216,7 +216,7 @@ static_assert(sizeof(Thread) == sizeof(os_thread*), "OS abstraction size mismatc LibHandle LoadLib(std::string filename) { void* ret = dlopen(filename.c_str(), RTLD_LAZY); - if (ret == nullptr) debug_print("LoadLib(%s) failed: %s\n", filename.c_str(), dlerror()); + if (ret == nullptr) pr_err("LoadLib(%s) failed: %s\n", filename.c_str(), dlerror()); return *(LibHandle*)&ret; } @@ -231,14 +231,14 @@ void* GetExportAddress(LibHandle lib, std::string export_name) { link_map* map; int err = dlinfo(*(void**)&lib, RTLD_DI_LINKMAP, &map); if (err == -1) { - fprintf(stderr, "dlinfo failed: %s\n", dlerror()); + pr_err("dlinfo failed: %s\n", dlerror()); return nullptr; } Dl_info info; err = dladdr(ret, &info); if (err == 0) { - fprintf(stderr, "dladdr failed.\n"); + pr_err("dladdr failed.\n"); return nullptr; } @@ -601,7 +601,7 @@ uint64_t ReadAccurateClock() { timespec time; int err = clock_gettime(CLOCK_MONOTONIC_RAW, &time); if (err != 0) { - perror("clock_gettime(CLOCK_MONOTONIC_RAW,...) failed"); + pr_err("clock_gettime(CLOCK_MONOTONIC_RAW,...) failed %s\n", strerror(errno)); abort(); } return (uint64_t(time.tv_sec) * 1000000000ull + uint64_t(time.tv_nsec)) * invPeriod; @@ -633,13 +633,11 @@ uint64_t AccurateClockFrequency() { timespec time; int err = clock_getres(clock, &time); if (err != 0) { - perror("clock_getres failed"); + pr_err("clock_getres failed %s\n", strerror(errno)); abort(); } if (time.tv_sec != 0 || time.tv_nsec >= 0xFFFFFFFF) { - fprintf(stderr, - "clock_getres(CLOCK_MONOTONIC(_RAW),...) returned very low " - "frequency (<1Hz).\n"); + pr_err("clock_getres(CLOCK_MONOTONIC(_RAW),...) returned very low frequency (<1Hz).\n"); abort(); } if (invPeriod == 0.0) invPeriod = 1.0 / double(time.tv_nsec); @@ -650,20 +648,20 @@ SharedMutex CreateSharedMutex() { pthread_rwlockattr_t attrib; int err = pthread_rwlockattr_init(&attrib); if (err != 0) { - fprintf(stderr, "rw lock attribute init failed: %s\n", strerror(err)); + pr_err("rw lock attribute init failed: %s\n", strerror(err)); return nullptr; } #ifdef __GLIBC__ err = pthread_rwlockattr_setkind_np(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); if (err != 0) { - fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); + pr_err("Set rw lock attribute failure: %s\n", strerror(err)); return nullptr; } #else err = pthread_rwlockattr_setkind(&attrib, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); if (err != 0) { - fprintf(stderr, "Set rw lock attribute failure: %s\n", strerror(err)); + pr_err("Set rw lock attribute failure: %s\n", strerror(err)); return nullptr; } #endif @@ -671,7 +669,7 @@ SharedMutex CreateSharedMutex() { pthread_rwlock_t* lock = new pthread_rwlock_t; err = pthread_rwlock_init(lock, &attrib); if (err != 0) { - fprintf(stderr, "rw lock init failed: %s\n", strerror(err)); + pr_err("rw lock init failed: %s\n", strerror(err)); return nullptr; } @@ -692,7 +690,7 @@ bool AcquireSharedMutex(SharedMutex lock) { void ReleaseSharedMutex(SharedMutex lock) { int err = pthread_rwlock_unlock(*(pthread_rwlock_t**)&lock); if (err != 0) { - fprintf(stderr, "SharedMutex unlock failed: %s\n", strerror(err)); + pr_err("SharedMutex unlock failed: %s\n", strerror(err)); abort(); } } @@ -710,7 +708,7 @@ bool SharedAcquireSharedMutex(SharedMutex lock) { void SharedReleaseSharedMutex(SharedMutex lock) { int err = pthread_rwlock_unlock(*(pthread_rwlock_t**)&lock); if (err != 0) { - fprintf(stderr, "SharedMutex unlock failed: %s\n", strerror(err)); + pr_err("SharedMutex unlock failed: %s\n", strerror(err)); abort(); } } diff --git a/wddm/device.cpp b/wddm/device.cpp index 17a378732b..6e093a6434 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -138,7 +138,7 @@ bool WDDMDevice::CreateDevice(void) { return true; } - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -150,7 +150,7 @@ bool WDDMDevice::DestroyDevice(void) { if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -168,7 +168,7 @@ bool WDDMDevice::CreatePagingQueue(void) { return true; } - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -180,7 +180,7 @@ bool WDDMDevice::DestroyPagingQueue(void) { if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -192,8 +192,7 @@ bool WDDMDevice::CommitSystemHeapSpace(void* addr, int64_t size, bool lock) { mapFlags |= MAP_LOCKED; void* paddr = mmap(addr, size, protFlags, mapFlags, -1, 0); if (paddr == MAP_FAILED) { - fprintf(stderr, "%s fail to commit %s addr = %p, paddr = %p\n", - __FUNCTION__, (lock ? "locked" : ""), addr, paddr); + pr_err("fail to commit %s addr = %p, paddr = %p\n", (lock ? "locked" : ""), addr, paddr); return false; } assert(addr == paddr); @@ -212,8 +211,7 @@ bool WDDMDevice::CommitSystemHeapSpace(void* addr, int64_t size, bool lock) { * https://man7.org/linux/man-pages/man2/madvise.2.html */ if (madvise(addr, size, MADV_DONTFORK)) - fprintf(stderr, "%s fail to set MADV_DONTFORK for addr = %p\n", - __FUNCTION__, addr); + pr_err("fail to set MADV_DONTFORK for addr = %p\n", addr); return true; } @@ -224,8 +222,7 @@ bool WDDMDevice::DecommitSystemHeapSpace(void* addr, int64_t size) { MAP_NORESERVE|MAP_UNINITIALIZED; void* paddr = mmap(addr, size, protFlags, mapFlags, -1, 0); if (paddr == MAP_FAILED) { - fprintf(stderr, "%s fail to decommit addr = %p, paddr = %p\n", - __FUNCTION__, addr, paddr); + pr_err("fail to decommit addr = %p, paddr = %p\n", addr, paddr); return false; } assert(addr == paddr); @@ -245,8 +242,7 @@ bool WDDMDevice::ReserveSystemHeapSpace() { void* cpu = mmap(NULL, system_heap_space_size_, protFlags, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if (cpu == MAP_FAILED) { - fprintf(stderr, "%s fail to reserve system_heap_space_size_ = %lx \n", - __FUNCTION__, system_heap_space_size_); + pr_err("fail to reserve system_heap_space_size_ = %lx \n", system_heap_space_size_); return false; } @@ -257,7 +253,7 @@ bool WDDMDevice::ReserveSystemHeapSpace() { bool WDDMDevice::FreeSystemHeapSpace(void) { void *cpu = (void *)system_heap_space_start_; if (munmap(cpu, system_heap_space_size_ != 0)) { - fprintf(stderr, "%s fail to unmap = %p \n", __FUNCTION__, cpu); + pr_err("fail to unmap = %p \n", cpu); return false; } return true; @@ -287,8 +283,7 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { local_va = 0; ptr = mmap(NULL, sys_va_size , PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); if (ptr == MAP_FAILED) { - fprintf(stderr, "%s fail to reserve cpu va in %d time!\n", - __FUNCTION__, i); + pr_err("fail to reserve cpu va in %d time!\n", i); break; } @@ -305,7 +300,7 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { local_va, ptr, i); break; } else { - debug_print("%s fail to reserve gpu va for cpu va %p in %d time!\n", + pr_err("%s fail to reserve gpu va for cpu va %p in %d time!\n", __FUNCTION__, ptr, i); } } @@ -315,21 +310,18 @@ bool WDDMDevice::ReserveLocalHeapSpace(void) { uint64_t left_size = local_va - sys_va[match_index]; uint64_t right_size = align - left_size; if ((left_size > 0) && munmap((void*)sys_va[match_index], left_size)) - fprintf(stderr, "%s fail to unmap left %lx with size %lx\n", - __FUNCTION__, sys_va[match_index], left_size); + pr_err("fail to unmap left %lx with size %lx\n", sys_va[match_index], left_size); if ((right_size > 0) && munmap((void*)(local_va + local_heap_space_size_), right_size)) - fprintf(stderr, "%s fail to unmap right %lx with size %lx\n", - __FUNCTION__, (local_va + local_heap_space_size_), right_size); + pr_err("fail to unmap right %lx with size %lx\n", (local_va + local_heap_space_size_), right_size); } else { - fprintf(stderr, "%s fail to reserve Local Heap Space !\n", - __FUNCTION__); + pr_err("fail to reserve Local Heap Space!\n"); } /* free match fail address for cpu va */ int free = match_index >= 0 ? match_index : 16; for (int j = 0; j < free; j++) { if (sys_va[j] != 0 && munmap((void*)sys_va[j], sys_va_size)) { - fprintf(stderr, "%s fail to unmap %d %lx\n", __FUNCTION__, j, sys_va[j]); + pr_err("fail to unmap %d %lx\n", j, sys_va[j]); } } @@ -460,7 +452,7 @@ void *WDDMDevice::Lock(D3DKMT_HANDLE handle) { if (ret == STATUS_SUCCESS) return args.pData; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return NULL; } @@ -473,7 +465,7 @@ bool WDDMDevice::Unlock(D3DKMT_HANDLE handle) { if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -510,7 +502,7 @@ bool WDDMDevice::CreateContext(int engine, D3DKMT_HANDLE *handle) { thunk_proxy::DestroyPrivData(priv_data); - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -522,7 +514,7 @@ bool WDDMDevice::DestroyContext(D3DKMT_HANDLE handle) { if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -539,7 +531,7 @@ bool WDDMDevice::GpuWait(WDDMQueue *queue, const D3DKMT_HANDLE *syncobjs, if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -555,7 +547,7 @@ bool WDDMDevice::GpuSignal(D3DKMT_HANDLE context, const D3DKMT_HANDLE *syncobjs, if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -572,7 +564,7 @@ bool WDDMDevice::CpuWait(const D3DKMT_HANDLE *syncobjs, uint64_t *value, if (ret == STATUS_SUCCESS) return true; - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -603,7 +595,7 @@ bool WDDMDevice::CreateSyncobj(D3DKMT_HANDLE *handle, uint64_t **addr) { return true; } - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -613,7 +605,7 @@ void WDDMDevice::DestroySyncobj(D3DKMT_HANDLE handle) { NTSTATUS ret = D3DKMTDestroySynchronizationObject(&args); if (ret != STATUS_SUCCESS) - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); } void WDDMDevice::InitCmdbufInfo(void) { @@ -796,7 +788,7 @@ bool WDDMDevice::SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, NTSTATUS ret = D3DKMTSubmitCommand(&args); if (ret != STATUS_SUCCESS) { - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); thunk_proxy::DestroyPrivData(priv_data); return false; } @@ -825,7 +817,7 @@ bool WDDMDevice::CreateHwQueue(WDDMQueue *queue) { NTSTATUS ret = D3DKMTCreateHwQueue(&createHwQueue); if (ret != STATUS_SUCCESS) { - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); thunk_proxy::DestroyPrivData(priv_data); return false; } @@ -846,7 +838,7 @@ bool WDDMDevice::DestroyHwQueue(WDDMQueue *queue) { NTSTATUS ret = D3DKMTDestroyHwQueue(&DestroyHwQueue); if (ret != STATUS_SUCCESS) { - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); return false; } @@ -870,7 +862,7 @@ bool WDDMDevice::SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, NTSTATUS ret = D3DKMTSubmitCommandToHwQueue(&args); if (ret != STATUS_SUCCESS) { - fprintf(stderr, "%s fail %x\n", __FUNCTION__, ret); + pr_err("fail %x\n", ret); thunk_proxy::DestroyPrivData(priv_data); return false; } diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 795ced34c7..2c1433039c 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -388,7 +388,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { query_args.hNtHandle = reinterpret_cast(dmabuf_fd); auto ret = d3dthunk::QueryResourceInfoFromNtHandle(&query_args); if (ret != ErrorCode::Success) { - debug_print("%s query resource info from nt handle failed %d\n", __FUNCTION__, static_cast(ret)); + pr_err("query resource info from nt handle failed %d\n", static_cast(ret)); return ErrorCode::InvalidateParams; } pr_debug("wsl-thunk: import from nt handle %d, get allocation number %d," @@ -401,8 +401,8 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { SharedHandleInfo shared_info; if(sizeof(shared_info) != query_args.PrivateRuntimeDataSize) { - debug_print("%s shared hanle info size mismatch:%d vs %ld\n", - __FUNCTION__, query_args.PrivateRuntimeDataSize, sizeof(shared_info)); + pr_err("shared hanle info size mismatch:%d vs %ld\n", + query_args.PrivateRuntimeDataSize, sizeof(shared_info)); return ErrorCode::UnSupported; } @@ -412,8 +412,8 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { D3DDDI_OPENALLOCATIONINFO2 *open_info = reinterpret_cast (calloc(1, total_size)); if (!open_info) { - debug_print("%s alloc open_info failed, NumAllocations:%d\n", - __FUNCTION__, query_args.NumAllocations); + pr_err("alloc open_info failed, NumAllocations:%d\n", + query_args.NumAllocations); return ErrorCode::OutOfMemory; } @@ -438,7 +438,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { ret = d3dthunk::OpenResourceFromNtHandle(&open_args); if (ret != ErrorCode::Success) { ret = ErrorCode::InvalidateParams; - debug_print("%s open resource failed %d\n", __FUNCTION__, static_cast(ret)); + pr_err("open resource failed %d\n", static_cast(ret)); goto err_out; } diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 3294f75943..d427ed8970 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -165,7 +165,7 @@ void ComputeQueue::HandleError(hsa_status_t status) { for (std::size_t i = 0; i < sizeof(QueueErrors) / sizeof(QueueErrors[0]); ++i) { if (QueueErrors[i].status == status) { val = QueueErrors[i].code; - debug_print("error %d, sig_val %ld\n", status, val); + pr_err("error %d, sig_val %ld\n", status, val); break; } } @@ -193,7 +193,7 @@ void ComputeQueue::AqlToPm4Thread(ComputeQueue *queue) { if (!queue->IsInvalidPacket()) { hsa_status_t status = queue->Process(); if (status != HSA_STATUS_SUCCESS) { - fprintf(stderr, "process compute queue fail status = %08x\n", status); + pr_err("process compute queue fail status = %08x\n", status); queue->HandleError(status); break; } diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 06777bed59..9b63747280 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -2,6 +2,7 @@ #include #include #include "inc/wddm/va_mgr.h" +#include "libhsakmt.h" using namespace std; @@ -17,9 +18,9 @@ VaMgr::VaMgr(uint64_t start, uint64_t size, uint64_t min_align) { VaMgr::~VaMgr() { if (free_list_.size() != 1) - std::cerr << "Warning: free_list_ size is not 1." << std::endl; + pr_err("free_list_ size is not 1.\n"); if (frag_map_.size() != 1) - std::cerr << "Warning: frag_map_ size is not 1." << std::endl; + pr_err("frag_map_ size is not 1.\n"); free_list_.clear(); frag_map_.clear(); From f552bbc1995a3b6dff5a6076c2535dfd23229ca8 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Wed, 9 Oct 2024 17:24:09 +0800 Subject: [PATCH 052/159] wsl/hsakmt: Remove redundant debug logging functions in utils.h Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Reviewed-by: Shane Xiao Part-of: --- util/utils.h | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/util/utils.h b/util/utils.h index d65d3b0d2f..15d61a87e1 100644 --- a/util/utils.h +++ b/util/utils.h @@ -115,42 +115,6 @@ static __forceinline unsigned long long int strtoull(const char* str, #define PASTE2(x, y) x##y #define PASTE(x, y) PASTE2(x, y) -#ifdef NDEBUG -#define debug_warning_n(exp, limit) \ - do { \ - } while (false) -#else -#define debug_warning_n(exp, limit) \ - do { \ - static std::atomic count(0); \ - if (!(exp) && (limit == 0 || count < limit)) { \ - fprintf(stderr, "Warning: " STRING(exp) " in %s, " __FILE__ ":" STRING(__LINE__) "\n", \ - __PRETTY_FUNCTION__); \ - fflush(stderr); \ - count++; \ - } \ - } while (false) -#endif -#define debug_warning(exp) debug_warning_n((exp), 0) - -#ifdef NDEBUG -#define debug_print(fmt, ...) \ - do { \ - } while (false) -#else -#define debug_print(fmt, ...) \ - do { \ - fprintf(stderr, fmt, ##__VA_ARGS__); \ - fflush(stderr); \ - } while (false) -#endif - -#ifdef NDEBUG -#define ifdebug if (false) -#else -#define ifdebug if (true) -#endif - #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define LogPrint(flag, format, ...) \ @@ -159,7 +123,6 @@ static __forceinline unsigned long long int strtoull(const char* str, wsl::log_printf(__FILENAME__, __LINE__, format, ##__VA_ARGS__); \ } while (false); - // A macro to disallow the copy and move constructor and operator= functions #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&) = delete; \ From 7466852f0c1b65539c6d05e88ff92e2ec62ec02f Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Mon, 21 Oct 2024 16:42:38 +0800 Subject: [PATCH 053/159] wsl/hsakmt: Adjust the event handling warning log InterruptSignal is not used in wsl thunk. In order to avoid printing redundancy caused by calling related event interfaces, the warning log has been adjusted here. Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui --- events.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events.cpp b/events.cpp index e2fd3a85ca..e32db760b1 100644 --- a/events.cpp +++ b/events.cpp @@ -40,10 +40,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateEvent(HsaEventDescriptor *EventDesc, HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyEvent(HsaEvent *Event) { CHECK_DXG_OPEN(); - pr_warn_once("not supported\n"); if (!Event) - return HSAKMT_STATUS_INVALID_HANDLE; + return HSAKMT_STATUS_SUCCESS; + pr_warn_once("not supported\n"); assert(false); return HSAKMT_STATUS_SUCCESS; } From b062a23dfa2d16a3aadb98db8f1bf34878051102 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Wed, 16 Oct 2024 17:58:04 +0800 Subject: [PATCH 054/159] wsl/hsakmt: add mem flag to protect queue cmd buffer Signed-off-by: Flora Cui --- inc/wddm/gpu_memory.h | 4 ++++ inc/wddm/queue.h | 3 +++ libhsakmt.h | 2 ++ memory.cpp | 50 +++++++++++++++++++++++++++++++++++++++++-- queues.cpp | 5 +++++ 5 files changed, 62 insertions(+), 2 deletions(-) diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index 50a7f7d3d8..4835a718f8 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -117,6 +117,7 @@ struct GpuMemoryDesc { uint32_t is_external : 1; uint32_t is_physical_only : 1; uint32_t is_locked : 1; + uint32_t is_queue_referenced : 1; uint32_t unused : 27; }; @@ -167,6 +168,9 @@ public: return (desc_.adapter_luid.HighPart == luid.HighPart && desc_.adapter_luid.LowPart == luid.LowPart); } + inline void GetQueueReference() { desc_.flags.is_queue_referenced = 1; } + inline void PutQueueReference() { desc_.flags.is_queue_referenced = 0; } + inline bool IsQueueReferenced() const { return desc_.flags.is_queue_referenced; } WinAllocationHandle GetAllocationHandle(size_t index) const { return alloc_handles_ptr_[index]; } size_t NumChunks() const { return num_allocations_; } diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index d08e654b09..7e078eb123 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -87,6 +87,7 @@ public: virtual hsa_status_t Init(void) { return HSA_STATUS_SUCCESS; } virtual hsa_status_t Fini(void) { return HSA_STATUS_SUCCESS; } virtual void RingDoorbell() { } + virtual void* GetHsaQueueAddr(void) const { return reinterpret_cast(GetCmdbufAddr()); } hsa_status_t SwsInit(void); hsa_status_t SwsFini(void); @@ -162,6 +163,7 @@ public: uint64_t GetAqlWriteIndex(void) const { return cmdbuf_aql_frame_write_index; } uint32_t GetAqlFrameSize(void) const { return cmdbuf_aql_frame_size; } + void* GetHsaQueueAddr(void) const { return ring; } bool IsInvalidPacket(void) const { uint16_t *packet = (uint16_t *)((char *)ring + @@ -278,6 +280,7 @@ public: uint64_t * GetRingRptr(void) { return WDDMQueue::GetSyncAddr(); } uint64_t * GetDoorbellPtr() { return &doorbell_; } void RingDoorbell(); + void* GetHsaQueueAddr(void) const { return reinterpret_cast(GetCmdbufAddr()); } private: uint64_t wptr_next_; diff --git a/libhsakmt.h b/libhsakmt.h index 136180ad98..0a2627ced3 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -177,6 +177,8 @@ bool is_forked_child(void); void clear_allocation_map(void); +bool queue_acquire_buffer(void *MemoryAddress); +bool queue_release_buffer(void *MemoryAddress); /* Calculate VGPR and SGPR register file size per CU */ uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); #define SGPR_SIZE_PER_CU 0x4000 diff --git a/memory.cpp b/memory.cpp index 9d97935031..04f73ef0fd 100644 --- a/memory.cpp +++ b/memory.cpp @@ -213,11 +213,55 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, allocation_map_.erase(it); } - delete gpu_mem; + if (gpu_mem->IsQueueReferenced()) + return HSAKMT_STATUS_ERROR; + delete gpu_mem; return HSAKMT_STATUS_SUCCESS; } +bool queue_acquire_buffer(void *MemoryAddress) { + if (!MemoryAddress) + return false; + + wsl::thunk::GpuMemory *gpu_mem = nullptr; + { + std::lock_guard gard(*allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return HSAKMT_STATUS_ERROR; + } + + gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + gpu_mem->GetQueueReference(); + } + if (gpu_mem == nullptr) + return false; + + return true; +} + +bool queue_release_buffer(void *MemoryAddress) { + if (!MemoryAddress) + return false; + + wsl::thunk::GpuMemory *gpu_mem = nullptr; + { + std::lock_guard gard(*allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return HSAKMT_STATUS_ERROR; + } + + gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + gpu_mem->PutQueueReference(); + } + if (gpu_mem == nullptr) + return false; + + return true; +} + HSAKMT_STATUS HSAKMTAPI hsaKmtAvailableMemory(HSAuint32 Node, HSAuint64 *AvailableBytes) { CHECK_DXG_OPEN(); @@ -531,8 +575,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { allocation_map_.erase(it); } auto gpu_mem = wsl::thunk::GpuMemory::Convert(handle); - delete gpu_mem; + if (gpu_mem->IsQueueReferenced()) + return HSAKMT_STATUS_ERROR; + delete gpu_mem; return HSAKMT_STATUS_SUCCESS; } diff --git a/queues.cpp b/queues.cpp index 58a3ede5d3..e7b89e3529 100644 --- a/queues.cpp +++ b/queues.cpp @@ -76,6 +76,9 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtCreateQueueExt(HSAuint32 NodeId, wsl::thunk::WDDMDevice *device_ = get_wddmdev(NodeId); assert(device_); + if (queue_acquire_buffer(QueueAddress) == false) + return HSAKMT_STATUS_INVALID_PARAMETER; + switch (Type) { case HSA_QUEUE_COMPUTE_AQL: { assert(QueueResource->ErrorReason == nullptr); @@ -138,11 +141,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDestroyQueue(HSA_QUEUEID QueueId) { CHECK_DXG_OPEN(); auto queue_ = reinterpret_cast(QueueId); + void *QueueAddress = queue_->GetHsaQueueAddr(); if (!queue_) return HSAKMT_STATUS_INVALID_PARAMETER; delete queue_; + queue_release_buffer(QueueAddress); return HSAKMT_STATUS_SUCCESS; } From b4df74f1989a9fe062d57c8f21d302d243420293 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Tue, 22 Oct 2024 15:02:36 +0800 Subject: [PATCH 055/159] wsl/hsakmt: add sub-allocator Reviewed-by: Shane Xiao Reviewed-by: lyndonli Signed-off-by: tiancyin --- libhsakmt.h | 24 +++++++ memory.cpp | 151 ++++++++++++++++++++++++++++++++++++++++----- openclose.cpp | 2 + topology.cpp | 1 + util/simple_heap.h | 30 ++++++++- 5 files changed, 190 insertions(+), 18 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 0a2627ced3..aebba33d7e 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -177,6 +177,30 @@ bool is_forked_child(void); void clear_allocation_map(void); +class BlockAllocator { +private: + static const size_t block_size_ = 128 * 1024 * 1024; // 128MB blocks. + +public: + void* alloc(size_t request_size, size_t& allocated_size) const; + void free(void* ptr, size_t length) const; + size_t block_size() const { return block_size_; } +}; + +void reset_suballocator(void); +void trim_suballocator(void); + +HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, + HSAuint64 SizeInBytes, + HSAuint64 Alignment, + HsaMemFlags MemFlags, + void **MemoryAddress, + bool SkipSubAlloc = false); + +HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, + HSAuint64 SizeInBytes, + bool SkipSubAlloc = false); + bool queue_acquire_buffer(void *MemoryAddress); bool queue_release_buffer(void *MemoryAddress); /* Calculate VGPR and SGPR register file size per CU */ diff --git a/memory.cpp b/memory.cpp index 04f73ef0fd..13d10f9849 100644 --- a/memory.cpp +++ b/memory.cpp @@ -33,6 +33,7 @@ #include #include #include "inc/wddm/gpu_memory.h" +#include "util/simple_heap.h" struct Allocation { Allocation() @@ -112,11 +113,45 @@ bool isSystemMemoryAvailable(HSAuint64 SizeInBytes) { return SizeInBytes <= info.freeram; } -HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, - HSAuint64 SizeInBytes, - HSAuint64 Alignment, - HsaMemFlags MemFlags, - void **MemoryAddress) { +void* BlockAllocator::alloc(size_t request_size, size_t& allocated_size) const { + void *address; + HsaMemFlags MemFlags; + + MemFlags.Value = 0; + MemFlags.ui32.CoarseGrain = 1; + MemFlags.ui32.NoSubstitute = 1; + allocated_size = wsl::AlignUp(request_size, block_size()); + if (HSAKMT_STATUS_SUCCESS == hsaKmtAllocMemoryAlignInternal(1, allocated_size, 0, MemFlags, &address, true)) + return address; + + return nullptr; +} + +void BlockAllocator::free(void* ptr, size_t length) const { + if (HSAKMT_STATUS_SUCCESS != hsaKmtFreeMemoryInternal(ptr, length, true)) + pr_err("wsl-thunk: BlockAllocator::free() err, address %p, length:%zu\n", ptr, length); +} + +static wsl::SimpleHeap fragment_allocator_; +static std::unique_ptr fragment_allocator_lock_ = std::make_unique(); + +void reset_suballocator(void) { + fragment_allocator_lock_ = std::make_unique(); + std::lock_guard lock(*fragment_allocator_lock_); + fragment_allocator_.reset(); +} + +void trim_suballocator(void) { + std::lock_guard lock(*fragment_allocator_lock_); + fragment_allocator_.trim(); +} + +HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, + HSAuint64 SizeInBytes, + HSAuint64 Alignment, + HsaMemFlags MemFlags, + void **MemoryAddress, + bool SkipSubAlloc) { CHECK_DXG_OPEN(); if (!MemoryAddress) @@ -174,6 +209,33 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, if (create_info.flags.virtual_alloc || create_info.flags.physical_only) create_info.domain = thunk_proxy::AllocDomain::kLocal; + /* Only allow using the suballocator for ordinary VRAM.*/ + bool trim_safe = false; + if (!SkipSubAlloc && + create_info.domain == thunk_proxy::AllocDomain::kLocal && + !(create_info.flags.virtual_alloc || create_info.flags.physical_only)) { + std::lock_guard gard(*fragment_allocator_lock_); + + /* just quickly skip SA if size is bigger than SA block size.*/ + gpusize real_size; + if (create_info.size > GPU_HUGE_PAGE_SIZE) + real_size = wsl::AlignUp(create_info.size, GPU_HUGE_PAGE_SIZE); + else + real_size = wsl::AlignUp(create_info.size, getpagesize()); + + if (real_size < fragment_allocator_.default_block_size()) { + *MemoryAddress = fragment_allocator_.alloc(real_size); + if (*MemoryAddress) + return HSAKMT_STATUS_SUCCESS; + } + + /* SA might keep a lot of free blocks as *cache*. + * We can trim them if direct allocation fails at first time. + */ + trim_safe = true; + } + +after_trim: auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { std::lock_guard gard(*allocation_map_lock_); @@ -189,18 +251,41 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, create_info.size, false, nullptr, SizeInBytes, MemFlags.ui32.GTTAccess ? 0 : PreferredNode, MemFlags.Value); return HSAKMT_STATUS_SUCCESS; + } else if (trim_safe) { + /* attempt to release memory from the block allocator and retry */ + std::lock_guard gard(*fragment_allocator_lock_); + fragment_allocator_.trim(); + trim_safe = false; + goto after_trim; } return HSAKMT_STATUS_ERROR; } -HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, - HSAuint64 SizeInBytes) { +HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, + HSAuint64 SizeInBytes, + HSAuint64 Alignment, + HsaMemFlags MemFlags, + void **MemoryAddress) { + return hsaKmtAllocMemoryAlignInternal(PreferredNode, SizeInBytes, + Alignment, MemFlags, + MemoryAddress); +} + +HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, + HSAuint64 SizeInBytes, + bool SkipSubAlloc) { CHECK_DXG_OPEN(); if (!MemoryAddress) return HSAKMT_STATUS_INVALID_PARAMETER; + if (!SkipSubAlloc) { + std::lock_guard gard(*fragment_allocator_lock_); + if (fragment_allocator_.free(MemoryAddress)) + return HSAKMT_STATUS_SUCCESS; + } + wsl::thunk::GpuMemory *gpu_mem = nullptr; { std::lock_guard gard(*allocation_map_lock_); @@ -220,23 +305,28 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, return HSAKMT_STATUS_SUCCESS; } +HSAKMT_STATUS HSAKMTAPI hsaKmtFreeMemory(void *MemoryAddress, + HSAuint64 SizeInBytes) { + return hsaKmtFreeMemoryInternal(MemoryAddress, SizeInBytes); +} + bool queue_acquire_buffer(void *MemoryAddress) { if (!MemoryAddress) - return false; + return false; wsl::thunk::GpuMemory *gpu_mem = nullptr; { - std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { - return HSAKMT_STATUS_ERROR; - } + std::lock_guard gard(*allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return HSAKMT_STATUS_ERROR; + } - gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); - gpu_mem->GetQueueReference(); + gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + gpu_mem->GetQueueReference(); } if (gpu_mem == nullptr) - return false; + return false; return true; } @@ -478,6 +568,12 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, void *aligned_ptr = (void *)start; size_t aligned_size = end - start; + { + std::lock_guard gard(*fragment_allocator_lock_); + if (nullptr != fragment_allocator_.block_base(aligned_ptr)) + return HSAKMT_STATUS_SUCCESS; + } + { std::lock_guard gard(*allocation_map_lock_); // GTT mem @@ -557,6 +653,12 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { pr_debug("address %p\n", MemoryAddress); + { + std::lock_guard gard(*fragment_allocator_lock_); + if (nullptr != fragment_allocator_.block_base(MemoryAddress)) + return HSAKMT_STATUS_SUCCESS; + } + wsl::thunk::GpuMemoryHandle handle = nullptr; { std::lock_guard gard(*allocation_map_lock_); @@ -623,13 +725,21 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, return HSAKMT_STATUS_INVALID_PARAMETER; pr_debug("pointer %p\n", Pointer); + void *pointer = const_cast(Pointer); memset(PointerInfo, 0, sizeof(HsaPointerInfo)); + void* block_base = nullptr; + { + std::lock_guard gard(*fragment_allocator_lock_); + block_base = fragment_allocator_.block_base(pointer); + if (block_base != nullptr) + pointer = block_base; + } Allocation allocation_info; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(Pointer); + auto it = allocation_map_.find(pointer); if (it == allocation_map_.end()) { PointerInfo->Type = HSA_POINTER_UNKNOWN; return HSAKMT_STATUS_ERROR; @@ -649,6 +759,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, PointerInfo->MemFlags.Value = allocation_info.mem_flags_value; PointerInfo->CPUAddress = allocation_info.cpu_addr; PointerInfo->GPUAddress = allocation_info.gpu_addr; + if (block_base != nullptr) { + uint64_t offset = reinterpret_cast(Pointer) - + reinterpret_cast(block_base); + PointerInfo->CPUAddress = reinterpret_cast( + reinterpret_cast(PointerInfo->CPUAddress) + offset); + PointerInfo->GPUAddress += offset; + } PointerInfo->UserData = allocation_info.user_data; return HSAKMT_STATUS_SUCCESS; diff --git a/openclose.cpp b/openclose.cpp index 8ff4abec65..55f48c1e7e 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -80,6 +80,7 @@ static void child_fork_handler(void) { * in the child process so it is not cleared */ static void clear_after_fork(void) { + reset_suballocator(); clear_allocation_map(); if (dxg_fd) { close(dxg_fd); @@ -194,6 +195,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { result = HSAKMT_STATUS_KERNEL_ALREADY_OPENED; } + reset_suballocator(); pthread_mutex_unlock(&hsakmt_mutex); return result; topology_sysfs_failed: diff --git a/topology.cpp b/topology.cpp index 906ae6f9cb..35c45d41f4 100644 --- a/topology.cpp +++ b/topology.cpp @@ -1377,6 +1377,7 @@ void topology_drop_snapshot(void) { free(g_system); g_system = NULL; + trim_suballocator(); for (auto device : wdevices_) delete device; wdevices_.clear(); diff --git a/util/simple_heap.h b/util/simple_heap.h index eca19055d8..1181682fa0 100644 --- a/util/simple_heap.h +++ b/util/simple_heap.h @@ -51,7 +51,6 @@ #include #include -#include "core/util/utils.h" namespace wsl { @@ -233,6 +232,35 @@ template class SimpleHeap { return reinterpret_cast(base); } + /* Return block-base the ptr belongs to if the ptr is a valid ptr which is allocated + * from this simpleheap and the block-base is allocated from block_allocator_*/ + void* block_base(void* ptr) { + if (ptr == nullptr) + return nullptr; + + uintptr_t base = reinterpret_cast(ptr); + + // Find fragment and validate. + auto frag_map_it = block_list_.upper_bound(base); + if (frag_map_it == block_list_.begin()) + return nullptr; + frag_map_it--; + auto& frag_map = frag_map_it->second; + auto fragment = frag_map.find(base); + if (fragment == frag_map.end() || isFree(fragment->second)) + return nullptr; + + return reinterpret_cast(frag_map_it->first); + } + + void reset() { + free_list_.clear(); + block_list_.clear(); + block_cache_.clear(); + in_use_size_ = 0; + cache_size_ = 0; + } + bool free(void* ptr) { if (ptr == nullptr) return true; From 15a17026367251a50ab21c73c6041618b0b24829 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Tue, 15 Oct 2024 14:31:54 +0800 Subject: [PATCH 056/159] wsl/hsakmt: add handle aperture The CLR use memory handle as svm ptr, this cause problem in BLAS test, add handle aperture to align with native. Reviewed-by: Longlong Yao Reviewed-by: Shane Xiao Signed-off-by: tiancyin --- inc/wddm/device.h | 12 +++++++++ inc/wddm/gpu_memory.h | 3 +++ inc/wddm/status.h | 1 + memory.cpp | 2 +- wddm/device.cpp | 63 +++++++++++++++++++++++++++++++++++++++++-- wddm/gpu_memory.cpp | 6 ++++- 6 files changed, 83 insertions(+), 4 deletions(-) diff --git a/inc/wddm/device.h b/inc/wddm/device.h index 6136074a14..98a759adf3 100644 --- a/inc/wddm/device.h +++ b/inc/wddm/device.h @@ -66,6 +66,10 @@ class WDDMQueue; // WSL2 hyperv GPADL protocol limitation #define MAX_USERPTR_BLOCK_SIZE 0xf0000000 +#define START_NON_CANONICAL_ADDR (1ULL << 47) +#define END_NON_CANONICAL_ADDR (~0UL - (1UL << 47)) +#define IS_OVERLAPPING(start1, size1, start2, size2) \ + ((start1 < (start2 + size2)) && (start2 < (start1 + size1))) class WDDMDevice { public: @@ -192,6 +196,9 @@ public: gpusize size); ErrorCode CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem); + ErrorCode HandleApertureAlloc(gpusize size, gpusize *out_gpu_virt_addr); + void HandleApertureFree(gpusize gpu_addr); + private: bool ParseDeviceInfo(void); void DestroyDeviceInfo(void); @@ -209,10 +216,12 @@ private: bool ReserveSystemHeapSpace(void); bool FreeSystemHeapSpace(void); bool ReserveLocalHeapSpace(void); + bool InitHandleApertureSpace(void); bool CommitSystemHeapSpace(void* addr, int64_t size, bool lock=false); bool DecommitSystemHeapSpace(void* addr, int64_t size); bool FreeLocalHeapSpace(void); void InitVaMgr(); + void InitHandleApertureMgr(); D3DKMT_HANDLE adapter_; LUID adapter_luid_; @@ -223,6 +232,8 @@ private: uint64_t *page_fence_addr_; std::atomic page_fence_value_; + uint64_t handle_aperture_start_; + uint64_t handle_aperture_size_; uint64_t local_heap_space_start_; uint64_t local_heap_space_size_; uint64_t system_heap_space_start_; @@ -234,6 +245,7 @@ private: thunk_proxy::DeviceInfo device_info_; std::unique_ptr local_va_mgr_; + std::unique_ptr handle_aperture_mgr_; //CmdUtil cmd_util; }; diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index 4835a718f8..073bea0d77 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -100,6 +100,7 @@ struct GpuMemoryDesc { flags.reserved = 0; mem_flags = 0; engine_flag = 0; + handle_ape_addr = 0; } thunk_proxy::AllocDomain domain; @@ -109,6 +110,7 @@ struct GpuMemoryDesc { gpusize client_size; // user request size gpusize size; gpusize alignment; + gpusize handle_ape_addr; union { struct { @@ -151,6 +153,7 @@ public: gpusize ClientSize() const { return desc_.client_size; } uint64_t GpuAddress() const { return desc_.gpu_addr; } void *CpuAddress() const { return desc_.cpu_addr; } + uint64_t HandleApeAddress() const { return desc_.handle_ape_addr; } inline bool IsLocal() const { return desc_.domain == thunk_proxy::kLocal; } inline bool IsUserMemory() const { return desc_.domain == thunk_proxy::kUserMemory; } diff --git a/inc/wddm/status.h b/inc/wddm/status.h index a564ff0aac..528264c74e 100644 --- a/inc/wddm/status.h +++ b/inc/wddm/status.h @@ -50,6 +50,7 @@ enum class ErrorCode { NotReady, OutOfMemory, OutOfGpuMemory, + OutOfHandleApeMemory, Timeout, SyscallFail, InvalidateParams, diff --git a/memory.cpp b/memory.cpp index 13d10f9849..52fffd0c73 100644 --- a/memory.cpp +++ b/memory.cpp @@ -242,7 +242,7 @@ after_trim: /* For these physical allcations, use GpuMemory object's address as thunk handle*/ if (create_info.flags.physical_only || create_info.dmabuf_fd > 0) - *MemoryAddress = reinterpret_cast(gpu_mem); + *MemoryAddress = reinterpret_cast(gpu_mem->HandleApeAddress()); else *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); diff --git a/wddm/device.cpp b/wddm/device.cpp index 6e093a6434..03808bfb33 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -68,7 +68,9 @@ WDDMDevice::WDDMDevice(D3DKMT_HANDLE adapter, LUID adapter_luid) CreatePagingQueue(); ReserveLocalHeapSpace(); ReserveSystemHeapSpace(); + InitHandleApertureSpace(); InitVaMgr(); + InitHandleApertureMgr(); InitCmdbufInfo(); } @@ -335,8 +337,48 @@ bool WDDMDevice::FreeLocalHeapSpace(void) { } void WDDMDevice::InitVaMgr() { - uint32_t min_align = 4096; - local_va_mgr_ = std::make_unique(local_heap_space_start_, local_heap_space_size_, min_align); + local_va_mgr_ = std::make_unique(local_heap_space_start_, + local_heap_space_size_, + DEFAULT_GPU_PAGE_SIZE); +} + +void WDDMDevice::InitHandleApertureMgr() { + handle_aperture_mgr_ = std::make_unique(handle_aperture_start_, + handle_aperture_size_, + DEFAULT_GPU_PAGE_SIZE); +} + +bool WDDMDevice::InitHandleApertureSpace(void) { + handle_aperture_start_ = START_NON_CANONICAL_ADDR; + handle_aperture_size_ = 1ULL << 47; + + while (handle_aperture_start_ < END_NON_CANONICAL_ADDR - 1) { + if (device_info_.private_aperture_base && + IS_OVERLAPPING(device_info_.private_aperture_base, + device_info_.private_aperture_size, + handle_aperture_start_, + handle_aperture_size_)) { + handle_aperture_start_ += (1ULL << 47); + continue; + } + + if (device_info_.shared_aperture_base && + IS_OVERLAPPING(device_info_.shared_aperture_base, + device_info_.shared_aperture_size, + handle_aperture_start_, + handle_aperture_size_)) { + handle_aperture_start_ += (1ULL << 47); + continue; + } + + pr_debug("handle aperture start %lx, size %lx\n", handle_aperture_start_, handle_aperture_size_); + return true; + } + + handle_aperture_start_ = 0; + pr_err("fail\n"); + + return false; } void WDDMDevice::SetPowerOptimization(bool restore) { @@ -416,6 +458,23 @@ ErrorCode WDDMDevice::FreeGpuVirtualAddress(const thunk_proxy::AllocDomain domai return code; } +ErrorCode WDDMDevice::HandleApertureAlloc(gpusize size, gpusize *out_gpu_virt_addr) { + uint64_t align = DEFAULT_GPU_PAGE_SIZE; + + if (size >= GPU_HUGE_PAGE_SIZE) + align = GPU_HUGE_PAGE_SIZE; + + *out_gpu_virt_addr = handle_aperture_mgr_->Alloc(size, align); + if (*out_gpu_virt_addr == 0) + return ErrorCode::OutOfHandleApeMemory; + + return ErrorCode::Success; +} + +void WDDMDevice::HandleApertureFree(gpusize gpu_addr) { + handle_aperture_mgr_->Free(gpu_addr); +} + void WDDMDevice::UpdatePageFence(uint64_t fence_value) { uint64_t current = page_fence_value_.load(); diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 2c1433039c..24e04482a8 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -46,6 +46,8 @@ GpuMemory::GpuMemory(WDDMDevice *device) : device_(device) { GpuMemory::~GpuMemory() { FreeGpuVirtualAddress(GpuAddress(), Size()); FreePhysicalMemory(); + if (desc_.handle_ape_addr > 0) + device_->HandleApertureFree(desc_.handle_ape_addr); } ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { @@ -77,6 +79,8 @@ ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { if (IsPhysicalOnly()) { code = CreatePhysicalMemory(); + if (code == ErrorCode::Success) + code = device_->HandleApertureAlloc(desc_.size, &desc_.handle_ape_addr); return code; } @@ -454,7 +458,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { alloc_handles_ptr_[i] = open_info[i].hAllocation; free(open_info); - return ErrorCode::Success; + return device_->HandleApertureAlloc(desc_.size, &desc_.handle_ape_addr); err_out: delete[] alloc_handles_ptr_; From 820f24b4dfbc9f922c11ad596937fafd3b850b3b Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 17 Oct 2024 11:29:33 +0800 Subject: [PATCH 057/159] wsl/hsakmt: make hsaKmtImportDMABufHandle as internal interface Reviewed-by: Flora Cui Signed-off-by: tiancyin --- libhsakmt.h | 2 ++ libhsakmt.ver | 1 - memory.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index aebba33d7e..4a97a9052d 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -207,4 +207,6 @@ bool queue_release_buffer(void *MemoryAddress); uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); #define SGPR_SIZE_PER_CU 0x4000 +HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, void **MemoryAddress); + #endif diff --git a/libhsakmt.ver b/libhsakmt.ver index ca085857dd..c24c9c1155 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -78,7 +78,6 @@ hsaKmtSetXNACKMode; hsaKmtGetXNACKMode; hsaKmtOpenSMI; hsaKmtExportDMABufHandle; -hsaKmtImportDMABufHandle; hsaKmtWaitOnEvent_Ext; hsaKmtWaitOnMultipleEvents_Ext; hsaKmtReplaceAsanHeaderPage; diff --git a/memory.cpp b/memory.cpp index 52fffd0c73..92047a5eba 100644 --- a/memory.cpp +++ b/memory.cpp @@ -458,7 +458,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, } -HSAKMT_STATUS HSAKMTAPI hsaKmtImportDMABufHandle(int DMABufFd, +HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, void **MemoryAddress) { CHECK_DXG_OPEN(); From 670178cc5fcb0ad70fcf9e7b5ec172f3f6600435 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Fri, 1 Nov 2024 17:09:27 +0800 Subject: [PATCH 058/159] wsl/hsakmt: fix missing the notify_one Reviewed-by: Flora Cui Signed-off-by: Longlong Yao Part-of: --- inc/wddm/queue.h | 3 +-- wddm/queue.cpp | 51 +++++++++++++++++------------------------------- 2 files changed, 19 insertions(+), 35 deletions(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index 7e078eb123..f09965620d 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -287,8 +287,7 @@ private: uint64_t wptr_pre_; uint64_t rptr_next; uint64_t doorbell_; - std::queue> wptr_queue_; - std::mutex wptr_queue_lock_; + std::vector> wptr_queue_; uint64_t ib_size; uint64_t ib_start_addr; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index d427ed8970..edbfe05e43 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -978,21 +978,21 @@ hsa_status_t ComputeQueue::Process(void) { } void SDMAQueue::SdmaThread(SDMAQueue *queue) { - // This timing system is used for sleeping this Thread - // when one packet is invalid for about 2 seconds. - std::chrono::steady_clock::time_point start_time, time; - // Set the polling timeout value for 2 seconds - const std::chrono::milliseconds kMaxElapsed(2000); - bool sleep = false; - start_time = std::chrono::steady_clock::now(); while (true) { - if (!queue->wptr_queue_.empty()) { - std::unique_lock lock(queue->wptr_queue_lock_); - uint64_t start = queue->wptr_queue_.front().first; - uint64_t end = queue->wptr_queue_.front().second; - queue->wptr_queue_.pop(); - lock.unlock(); + decltype(queue->wptr_queue_) pendings; + { + std::unique_lock lock(queue->thread_cond_lock_); + while (queue->wptr_queue_.empty() && !queue->thread_stop_) + queue->thread_cond_.wait(lock); + + if (queue->thread_stop_) + break; + + pendings.swap(queue->wptr_queue_); + } + + for (const auto [start, end] : pendings) { pr_debug("wptr %lx %lx\n", start, end); SDMA_PKT_POLL_REGMEM* poll_pkt = reinterpret_cast(queue->cmdbuf_addr + queue->WrapIntoRocrRing(start)); @@ -1031,24 +1031,9 @@ void SDMAQueue::SdmaThread(SDMAQueue *queue) { queue->PreparePacket(queue->WrapIntoRocrRing(start), end - start); std::atomic_thread_fence(std::memory_order_release); queue->Submit(); - } else { - time = std::chrono::steady_clock::now(); - if (time - start_time > kMaxElapsed) - sleep = true; - } - - std::unique_lock lock(queue->thread_cond_lock_); - if (sleep && queue->wptr_queue_.empty()) { - while (!queue->thread_stop_ && queue->wptr_queue_.empty()) { - queue->thread_cond_.wait(lock); - } - if (queue->thread_stop_) - break; - sleep = false; - start_time = std::chrono::steady_clock::now(); } } - pr_debug("thread exit\n"); + pr_debug("sdma thread exit\n"); } SDMAQueue::SDMAQueue(WDDMDevice *device, @@ -1081,12 +1066,12 @@ SDMAQueue::~SDMAQueue() { void SDMAQueue::RingDoorbell() { pr_debug("ringdoorbell %#lx %#lx\n", wptr_pre_, wptr_next_); + thread_cond_lock_.lock(); - { - std::lock_guard lock(wptr_queue_lock_); - wptr_queue_.emplace(wptr_pre_, wptr_next_); - } + wptr_queue_.emplace_back(wptr_pre_, wptr_next_); thread_cond_.notify_one(); + + thread_cond_lock_.unlock(); wptr_pre_ = wptr_next_; } From 0e6b5e4f9eda3ec4826701810c739b3c4dbfa984 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Mon, 4 Nov 2024 16:44:42 +0800 Subject: [PATCH 059/159] wsl/hsakmt: fix missing [] Signed-off-by: Flora Cui Reviewed-by: lyndonli Part-of: --- wddm/device.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wddm/device.cpp b/wddm/device.cpp index 03808bfb33..4b74b619e0 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -737,14 +737,14 @@ NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters) } } - delete info; + delete[] info; return STATUS_SUCCESS; err_out1: - delete adapters; + delete[] adapters; adapters = NULL; err_out0: - delete info; + delete[] info; return ret; } From 31e133ae49de072a9fc19eacb5e4d721f6271dd1 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Tue, 5 Nov 2024 13:23:58 +0800 Subject: [PATCH 060/159] wsl/hsakmt: drop duplicated MIN&MAX Signed-off-by: Flora Cui Reviewed-by: lyndonli Part-of: --- libhsakmt.h | 8 -------- topology.cpp | 5 +++-- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 4a97a9052d..7f14a1ca5d 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -163,14 +163,6 @@ void topology_setup_is_dgpu_param(HsaNodeProperties *props); HSAuint32 PageSizeFromFlags(unsigned int pageSizeFlags); -#define MIN(a, b) ({ \ - typeof(a) tmp1 = (a), tmp2 = (b); \ - tmp1 < tmp2 ? tmp1 : tmp2; }) - -#define MAX(a, b) ({ \ - typeof(a) tmp1 = (a), tmp2 = (b); \ - tmp1 > tmp2 ? tmp1 : tmp2; }) - uint32_t get_num_sysfs_nodes(void); bool is_forked_child(void); diff --git a/topology.cpp b/topology.cpp index 35c45d41f4..1eaec98c03 100644 --- a/topology.cpp +++ b/topology.cpp @@ -40,6 +40,7 @@ #include "libhsakmt.h" #include "inc/wddm/types.h" #include "inc/wddm/device.h" +#include "util/utils.h" /* Number of memory banks added by thunk on top of topology * This only includes static heaps like LDS, scratch and SVM, @@ -1522,7 +1523,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, pthread_mutex_lock(&hsakmt_mutex); memset(MemoryProperties, 0, NumBanks * sizeof(HsaMemoryProperties)); - for (i = 0; i < MIN(g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { + for (i = 0; i < wsl::Min(g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { assert(g_props[NodeId].mem); MemoryProperties[i] = g_props[NodeId].mem[i]; } @@ -1576,7 +1577,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( goto out; } - for (i = 0; i < MIN(g_props[NodeId].node.NumCaches, NumCaches); i++) { + for (i = 0; i < wsl::Min(g_props[NodeId].node.NumCaches, NumCaches); i++) { assert(g_props[NodeId].cache); CacheProperties[i] = g_props[NodeId].cache[i]; } From 2f18d996fde7908f2110a9be9a4e32ab86897f3c Mon Sep 17 00:00:00 2001 From: lyndonli Date: Thu, 7 Nov 2024 17:45:15 +0800 Subject: [PATCH 061/159] wsl/hsakmt: Fix inaccurate elapsed time measurement Signed-off-by: lyndonli Reviewed-by: Shane Xiao Reviewed-by: Flora Cui Part-of: --- time.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/time.cpp b/time.cpp index f0fa66705d..edc9cb3052 100644 --- a/time.cpp +++ b/time.cpp @@ -39,12 +39,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetClockCounters(HSAuint32 NodeId, wsl::thunk::WDDMDevice *device_ = get_wddmdev(NodeId); assert(device_); - device_->GetClockCounters(&Counters->GPUClockCounter, nullptr); + device_->GetClockCounters(&Counters->GPUClockCounter, &Counters->CPUClockCounter); struct timespec ts; - if (clock_gettime(CLOCK_REALTIME, &ts) == 0) - Counters->CPUClockCounter = ts.tv_sec * 1e9 + ts.tv_nsec; - if (clock_gettime(CLOCK_BOOTTIME, &ts) == 0) + if (clock_gettime(CLOCK_MONOTONIC_RAW, &ts) == 0) Counters->SystemClockCounter = ts.tv_sec * 1e9 + ts.tv_nsec; Counters->SystemClockFrequencyHz = 1000000000; From 4b9ef909b44843dda4c49f4f9118081bcc2ca1dc Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Wed, 6 Nov 2024 11:02:47 +0800 Subject: [PATCH 062/159] wsl/hsakmt: relax the check conditions for the pointer Signed-off-by: Flora Cui Reviewed-by: Longlong Yao Reviewed-by: tiancyin Part-of: --- memory.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/memory.cpp b/memory.cpp index 92047a5eba..e0a8f7548c 100644 --- a/memory.cpp +++ b/memory.cpp @@ -725,26 +725,36 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, return HSAKMT_STATUS_INVALID_PARAMETER; pr_debug("pointer %p\n", Pointer); - void *pointer = const_cast(Pointer); + void *ptr = const_cast(Pointer); memset(PointerInfo, 0, sizeof(HsaPointerInfo)); void* block_base = nullptr; { std::lock_guard gard(*fragment_allocator_lock_); - block_base = fragment_allocator_.block_base(pointer); + block_base = fragment_allocator_.block_base(ptr); if (block_base != nullptr) - pointer = block_base; + ptr = block_base; } Allocation allocation_info; + bool found = false; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(pointer); - if (it == allocation_map_.end()) { - PointerInfo->Type = HSA_POINTER_UNKNOWN; - return HSAKMT_STATUS_ERROR; + auto it = allocation_map_.upper_bound(ptr); + if (it != allocation_map_.begin()) { + --it; + if (ptr >= it->first && + (ptr < reinterpret_cast(it->first) + it->second.size_requested)) { + allocation_info = it->second; + found = true; + } } - allocation_info = it->second; + } + + if (!found) { + pr_debug("can't found allocation for %p\n", Pointer); + PointerInfo->Type = HSA_POINTER_UNKNOWN; + return HSAKMT_STATUS_ERROR; } if (allocation_info.userptr) { From 0fae2bb2623af13d1f826879d01d12e32e06fb27 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Wed, 13 Nov 2024 07:45:39 +0800 Subject: [PATCH 063/159] wsl/hsakmt: add supporting contiguous memory allocation Reviewed-by: Longlong Yao Signed-off-by: tiancyin --- inc/wddm/gpu_memory.h | 16 +++++++++------- libdrm.cpp | 6 +++--- libhsakmt.h | 2 +- memory.cpp | 23 ++++++++++++++--------- wddm/gpu_memory.cpp | 5 +++++ 5 files changed, 32 insertions(+), 20 deletions(-) diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h index 073bea0d77..da0433c7bc 100644 --- a/inc/wddm/gpu_memory.h +++ b/inc/wddm/gpu_memory.h @@ -57,11 +57,12 @@ class WDDMDevice; union GpuMemoryCreateFlags { struct { - uint64_t virtual_alloc : 1; - uint64_t physical_only : 1; - uint64_t interprocess : 1; - uint64_t locked : 1; - uint64_t unused : 60; + uint64_t virtual_alloc : 1; // only allocate virtual address, without physical buffer + uint64_t physical_only : 1; // only allocate physical buffer, without virutal address + uint64_t interprocess : 1; // physical buffer need share info between exporter and importer + uint64_t locked : 1; // lock virtual address space into RAM, preventing that memory from being paged to the swap area + uint64_t physical_contiguous : 1; // contiguous physical pages + uint64_t unused : 59; }; uint64_t reserved; }; @@ -120,8 +121,8 @@ struct GpuMemoryDesc { uint32_t is_physical_only : 1; uint32_t is_locked : 1; uint32_t is_queue_referenced : 1; - - uint32_t unused : 27; + uint32_t is_physical_contiguous : 1; + uint32_t unused : 25; }; uint32_t reserved; @@ -160,6 +161,7 @@ public: inline bool IsSystem() const { return desc_.domain == thunk_proxy::kSystem; } inline bool IsUserQueue() const { return desc_.domain == thunk_proxy::kUserQueue; } inline bool IsPhysicalOnly() const { return desc_.flags.is_physical_only; } + inline bool IsPhysicalContiguous() const { return desc_.flags.is_physical_contiguous; } inline bool IsVirtual() const { return desc_.flags.is_virtual; } inline bool IsShared() const { return desc_.flags.is_shared; } inline bool IsExternal() const { return desc_.flags.is_external; } diff --git a/libdrm.cpp b/libdrm.cpp index 878318ae80..c9ed48d60e 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -99,11 +99,11 @@ HSAKMTAPI int amdgpu_bo_import(amdgpu_device_handle dev, enum amdgpu_bo_handle_type type, uint32_t shared_handle, struct amdgpu_bo_import_result *output) { - void *MemoryAddress = nullptr; - HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &MemoryAddress); + HsaGraphicsResourceInfo GraphicsResourceInfo; + HSAKMT_STATUS ret = hsaKmtImportDMABufHandle(shared_handle, &GraphicsResourceInfo); if (ret == HSAKMT_STATUS_SUCCESS) { //use GpuMemory object's address as drm buf handle - output->buf_handle = reinterpret_cast(MemoryAddress); + output->buf_handle = reinterpret_cast(GraphicsResourceInfo.MemoryAddress); return 0; } else { return -1; diff --git a/libhsakmt.h b/libhsakmt.h index 7f14a1ca5d..10a7bc7139 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -199,6 +199,6 @@ bool queue_release_buffer(void *MemoryAddress); uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); #define SGPR_SIZE_PER_CU 0x4000 -HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, void **MemoryAddress); +HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, HsaGraphicsResourceInfo *GraphicsResourceInfo); #endif diff --git a/memory.cpp b/memory.cpp index e0a8f7548c..b080f72082 100644 --- a/memory.cpp +++ b/memory.cpp @@ -203,17 +203,20 @@ HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, create_info.flags.physical_only = MemFlags.ui32.NoAddress; create_info.flags.interprocess = MemFlags.ui32.NoAddress; + create_info.flags.interprocess |= MemFlags.ui32.Contiguous; + create_info.flags.physical_contiguous = MemFlags.ui32.Contiguous; create_info.flags.locked = MemFlags.ui32.NoSubstitute;//AllocatePinned create_info.flags.virtual_alloc = MemFlags.ui32.OnlyAddress; /*when only alloc virtual or only physical, it's vmm allocation, force to local*/ - if (create_info.flags.virtual_alloc || create_info.flags.physical_only) + if (create_info.flags.virtual_alloc || create_info.flags.physical_only + || create_info.flags.physical_contiguous) { create_info.domain = thunk_proxy::AllocDomain::kLocal; + SkipSubAlloc = true; + } /* Only allow using the suballocator for ordinary VRAM.*/ bool trim_safe = false; - if (!SkipSubAlloc && - create_info.domain == thunk_proxy::AllocDomain::kLocal && - !(create_info.flags.virtual_alloc || create_info.flags.physical_only)) { + if (!SkipSubAlloc && create_info.domain == thunk_proxy::AllocDomain::kLocal) { std::lock_guard gard(*fragment_allocator_lock_); /* just quickly skip SA if size is bigger than SA block size.*/ @@ -434,7 +437,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodesExt(HSAuint64 Graphic pr_debug("number of nodes %lu\n", NumberOfNodes); GraphicsResourceInfo->NodeId = 1; - return hsaKmtImportDMABufHandle(GraphicsResourceHandle, &GraphicsResourceInfo->MemoryAddress); + return hsaKmtImportDMABufHandle(GraphicsResourceHandle, GraphicsResourceInfo); } @@ -459,7 +462,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, - void **MemoryAddress) { + HsaGraphicsResourceInfo *GraphicsResourceInfo) { CHECK_DXG_OPEN(); @@ -470,17 +473,19 @@ HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { - *MemoryAddress = reinterpret_cast(gpu_mem); + void *MemoryAddress = reinterpret_cast(gpu_mem->HandleApeAddress()); std::lock_guard gard(*allocation_map_lock_); /* * the gpu_mem->Flags() need convert back from GpuMemoryCreateFlags to * HsaMemFlags, reference hsaKmtAllocMemoryAlign * */ - allocation_map_[*MemoryAddress] = Allocation( - gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, + allocation_map_[MemoryAddress] = Allocation( + gpu_mem->GetGpuMemoryHandle(), MemoryAddress, (uint64_t)MemoryAddress, gpu_mem->Size(), false, nullptr, gpu_mem->ClientSize(), 1, gpu_mem->Flags()); + GraphicsResourceInfo->MemoryAddress = MemoryAddress; + GraphicsResourceInfo->SizeInBytes = gpu_mem->ClientSize(); return HSAKMT_STATUS_SUCCESS; } diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 24e04482a8..3a1a080e78 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -59,6 +59,7 @@ ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { desc_.engine_flag = create_info.engine_flag; desc_.flags.is_virtual = create_info.flags.virtual_alloc; desc_.flags.is_physical_only = create_info.flags.physical_only; + desc_.flags.is_physical_contiguous = create_info.flags.physical_contiguous; desc_.flags.is_shared = create_info.flags.interprocess; desc_.flags.is_locked = create_info.flags.locked; @@ -303,6 +304,10 @@ ErrorCode GpuMemory::CreatePhysicalMemory() { args.NumAllocations = num_allocations; args.pAllocationInfo2 = alloc_info; + /* The PhysicallyContiguous flag causes allocation failure + * args.Flags.PhysicallyContiguous = IsPhysicalContiguous(); + */ + SharedHandleInfo shared_info; if (IsShared()) { shared_info.size = desc_.size; From 9f5bda00ca5083489897f5769681def386ec51fa Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Mon, 18 Nov 2024 14:40:36 +0800 Subject: [PATCH 064/159] wsl/hsakmt: refactor topology related code Signed-off-by: Flora Cui Reviewed by: Shi.Leslie Part-of: --- libhsakmt.h | 2 +- topology.cpp | 794 +++++++++++++++++---------------------------------- 2 files changed, 270 insertions(+), 526 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 10a7bc7139..255186fe8a 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -153,7 +153,7 @@ uint16_t get_device_id_by_node_id(HSAuint32 node_id); uint16_t get_device_id_by_gpu_id(HSAuint32 gpu_id); uint32_t get_direct_link_cpu(uint32_t gpu_node); -HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props); +HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties& props); HSAKMT_STATUS topology_get_node_props(HSAuint32 NodeId, HsaNodeProperties *NodeProperties); HSAKMT_STATUS topology_get_iolink_props(HSAuint32 NodeId, diff --git a/topology.cpp b/topology.cpp index 1eaec98c03..d8657014dd 100644 --- a/topology.cpp +++ b/topology.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -53,19 +54,20 @@ typedef struct { HsaNodeProperties node; - HsaMemoryProperties *mem; /* node->NumBanks elements */ - HsaCacheProperties *cache; - HsaIoLinkProperties *link; + std::vector mem; /* node->NumBanks elements */ + std::vector cache; + std::vector link; } node_props_t; static HsaSystemProperties *g_system; -static node_props_t *g_props; +static std::vector g_props; static std::vector wdevices_; static uint32_t wdevice_num_; static uint32_t num_sysfs_nodes; static int processor_vendor = -1; +static double freq_max_ = 0; /* Supported System Vendors */ enum SUPPORTED_PROCESSOR_VENDORS { GENUINE_INTEL = 0, @@ -74,9 +76,9 @@ enum SUPPORTED_PROCESSOR_VENDORS { }; /* Adding newline to make the search easier */ static const char *supported_processor_vendor_name[] = { - "GenuineIntel\n", - "AuthenticAMD\n", - "\n" // POWER requires a different search method + "GenuineIntel", + "AuthenticAMD", + "" // POWER requires a different search method }; static HSAKMT_STATUS topology_take_snapshot(void); @@ -93,25 +95,10 @@ struct proc_cpuinfo { * info and caches connected to that CPU. */ typedef struct cpu_cacheinfo { - uint32_t len; /* length of the table = number of online procs */ int32_t proc_num; /* this cpu's processor number */ uint32_t num_caches; /* number of caches reported by this cpu */ - HsaCacheProperties *cache_prop; /* a list of cache properties */ } cpu_cacheinfo_t; -static void free_properties(node_props_t *props, int size) { - if (props) { - int i; - for (i = 0; i < size; i++) { - free(props[i].mem); - free(props[i].cache); - free(props[i].link); - } - - free(props); - } -} - /* num_subdirs - find the number of sub-directories in the specified path * @dirpath - directory path to find sub-directories underneath * @prefix - only count sub-directory names starting with prefix. @@ -232,7 +219,8 @@ static HSAKMT_STATUS fscanf_size(char *file, uint32_t *bytes) { * @cpuinfo [IN ] cpuinfo to get apicid * @this_cache [OUT] CPU cache to fill in SiblingMap */ -static void cpumap_to_cpu_ci(char *shared_cpu_map, struct proc_cpuinfo *cpuinfo, +static void cpumap_to_cpu_ci(char *shared_cpu_map, + const std::vector& cpuinfo, HsaCacheProperties *this_cache) { int num_hexs, bit; uint32_t proc, apicid, mask; @@ -271,10 +259,11 @@ static void cpumap_to_cpu_ci(char *shared_cpu_map, struct proc_cpuinfo *cpuinfo, * [OUT] cpu_ci->num_caches: reduces when shared with other cpu(s) * Return: number of cache reported from this cpu */ -static int get_cpu_cache_info(const char *prefix, struct proc_cpuinfo *cpuinfo, - cpu_cacheinfo_t *cpu_ci) { - int idx, num_idx, n; - HsaCacheProperties *this_cache; +static int get_cpu_cache_info(const char *prefix, + const std::vector& cpuinfo, + std::vector& cache, + cpu_cacheinfo_t& cpu_ci) { + int n; char path[256], str[256]; bool is_power9 = false; @@ -284,17 +273,18 @@ static int get_cpu_cache_info(const char *prefix, struct proc_cpuinfo *cpuinfo, } } - this_cache = cpu_ci->cache_prop; - num_idx = cpu_ci->num_caches; - for (idx = 0; idx < num_idx; idx++) { + HsaCacheProperties this_cache; + int num_idx = cpu_ci.num_caches; + for (int idx = 0; idx < num_idx; idx++) { + memset(&this_cache, 0, sizeof(this_cache)); /* If this cache is shared by multiple CPUs, we only need * to list it in the first CPU. */ if (is_power9) { // POWER9 has SMT4 - if (cpu_ci->proc_num & 0x3) { + if (cpu_ci.proc_num & 0x3) { /* proc is not 0,4,8,etc. Skip and reduce the cache count. */ - --cpu_ci->num_caches; + --cpu_ci.num_caches; continue; } } else { @@ -303,71 +293,72 @@ static int get_cpu_cache_info(const char *prefix, struct proc_cpuinfo *cpuinfo, * For both cases, this cache is listed to proc n1 only. */ fscanf_dec(path, (uint32_t *)&n); - if (cpu_ci->proc_num != n) { + if (cpu_ci.proc_num != n) { /* proc is not n1. Skip and reduce the cache count. */ - --cpu_ci->num_caches; + --cpu_ci.num_caches; continue; } - this_cache->ProcessorIdLow = cpuinfo[cpu_ci->proc_num].apicid; + this_cache.ProcessorIdLow = cpuinfo[cpu_ci.proc_num].apicid; } /* CacheLevel */ snprintf(path, 256, "%s/index%d/level", prefix, idx); - fscanf_dec(path, &this_cache->CacheLevel); + fscanf_dec(path, &this_cache.CacheLevel); /* CacheType */ snprintf(path, 256, "%s/index%d/type", prefix, idx); memset(str, 0, sizeof(str)); fscanf_str(path, str); if (!strcmp(str, "Data")) - this_cache->CacheType.ui32.Data = 1; + this_cache.CacheType.ui32.Data = 1; if (!strcmp(str, "Instruction")) - this_cache->CacheType.ui32.Instruction = 1; + this_cache.CacheType.ui32.Instruction = 1; if (!strcmp(str, "Unified")) { - this_cache->CacheType.ui32.Data = 1; - this_cache->CacheType.ui32.Instruction = 1; + this_cache.CacheType.ui32.Data = 1; + this_cache.CacheType.ui32.Instruction = 1; } - this_cache->CacheType.ui32.CPU = 1; + this_cache.CacheType.ui32.CPU = 1; /* CacheSize */ snprintf(path, 256, "%s/index%d/size", prefix, idx); - fscanf_size(path, &this_cache->CacheSize); + fscanf_size(path, &this_cache.CacheSize); /* CacheLineSize */ snprintf(path, 256, "%s/index%d/coherency_line_size", prefix, idx); - fscanf_dec(path, &this_cache->CacheLineSize); + fscanf_dec(path, &this_cache.CacheLineSize); /* CacheAssociativity */ snprintf(path, 256, "%s/index%d/ways_of_associativity", prefix, idx); - fscanf_dec(path, &this_cache->CacheAssociativity); + fscanf_dec(path, &this_cache.CacheAssociativity); /* CacheLinesPerTag */ snprintf(path, 256, "%s/index%d/physical_line_partition", prefix, idx); - fscanf_dec(path, &this_cache->CacheLinesPerTag); + fscanf_dec(path, &this_cache.CacheLinesPerTag); /* CacheSiblings */ snprintf(path, 256, "%s/index%d/shared_cpu_map", prefix, idx); fscanf_str(path, str); - cpumap_to_cpu_ci(str, cpuinfo, this_cache); + cpumap_to_cpu_ci(str, cpuinfo, &this_cache); - ++this_cache; + cache.push_back(this_cache); } - return cpu_ci->num_caches; + return cpu_ci.num_caches; } static HSAKMT_STATUS topology_map_node_id(uint32_t node_id, wsl::thunk::WDDMDevice *&device) { uint32_t idx = node_id; - if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) - return HSAKMT_STATUS_NOT_SUPPORTED; + if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) { + device = nullptr; + return HSAKMT_STATUS_ERROR; + } device = wdevices_[node_id - 1]; return HSAKMT_STATUS_SUCCESS; } -HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props) { +HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties& props) { HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; bool is_node_supported = true; uint32_t num_supported_nodes = 0; - assert(props); - std::memset(props, 0, sizeof(*props)); + std::memset(&props, 0, sizeof(props)); D3DKMT_ADAPTERINFO *adapters; int num_adapters; @@ -389,7 +380,7 @@ HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props) { assert(device && "Create WDDM Device fail"); wdevices_.push_back(device); } - props->NumNodes = num_sysfs_nodes; + props.NumNodes = num_sysfs_nodes; delete[] adapters; return ret; @@ -403,26 +394,19 @@ void topology_setup_is_dgpu_param(HsaNodeProperties *props) { is_dgpu = true; } -static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties *props, - struct proc_cpuinfo *cpuinfo, - int num_procs) { - int i, j; - - if (!props) { - pr_err("Invalid props to get cpu model name\n"); - return HSAKMT_STATUS_INVALID_PARAMETER; - } - - for (i = 0; i < num_procs; i++, cpuinfo++) { - if (props->CComputeIdLo == cpuinfo->apicid) { - if (!props->DeviceId) /* CPU-only node */ - strncpy((char *)props->AMDName, cpuinfo->model_name, - sizeof(props->AMDName)); +static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties& props, + const std::vector& cpuinfo) { + for (int i = 0; i < cpuinfo.size(); i++) { + if (props.CComputeIdLo == cpuinfo[i].apicid) { + if (!props.DeviceId) /* CPU-only node */ + strncpy((char *)props.AMDName, cpuinfo[i].model_name, + sizeof(props.AMDName)); /* Convert from UTF8 to UTF16 */ + int j; for (j = 0; - cpuinfo->model_name[j] != '\0' && j < HSA_PUBLIC_NAME_SIZE - 1; j++) - props->MarketingName[j] = cpuinfo->model_name[j]; - props->MarketingName[j] = '\0'; + cpuinfo[i].model_name[j] != '\0' && j < HSA_PUBLIC_NAME_SIZE - 1; j++) + props.MarketingName[j] = cpuinfo[i].model_name[j]; + props.MarketingName[j] = '\0'; return HSAKMT_STATUS_SUCCESS; } } @@ -430,13 +414,11 @@ static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties *props, return HSAKMT_STATUS_ERROR; } -static int topology_search_processor_vendor(const char *processor_name) { - unsigned int i; - - for (i = 0; i < ARRAY_LEN(supported_processor_vendor_name); i++) { - if (!strcmp(processor_name, supported_processor_vendor_name[i])) +static int topology_search_processor_vendor(const std::string& processor_name) { + for (unsigned int i = 0; i < ARRAY_LEN(supported_processor_vendor_name); i++) { + if (processor_name == supported_processor_vendor_name[i]) return i; - if (!strcmp(processor_name, "POWER9, altivec supported\n")) + if (processor_name == "POWER9, altivec supported") return IBM_POWER; } return -1; @@ -447,196 +429,91 @@ static int topology_search_processor_vendor(const char *processor_name) { * cpuinfo [OUT]: output buffer to hold cpu information * num_procs: number of processors the output buffer can hold */ -static HSAKMT_STATUS topology_parse_cpuinfo(struct proc_cpuinfo *cpuinfo, - uint32_t num_procs) { - HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - FILE *fd; - char read_buf[256]; - char *p; - uint32_t proc = 0; - size_t p_len; - const char *proc_cpuinfo_path = "/proc/cpuinfo"; - - if (!cpuinfo) { - pr_err("CPU information will be missing\n"); - return HSAKMT_STATUS_INVALID_PARAMETER; - } - - fd = fopen(proc_cpuinfo_path, "r"); - if (!fd) { - pr_err("Failed to open [%s]. Unable to get CPU information", - proc_cpuinfo_path); - return HSAKMT_STATUS_ERROR; - } - -#ifdef __PPC64__ - char *p2; - - /* Each line in /proc/cpuinfo that read_buf is constructed, the format - * is like this: - * "token : value\n" - * where token is our target like vendor_id, model name, apicid ... - * and value is the answer - */ - while (fgets(read_buf, sizeof(read_buf), fd)) { - /* processor number */ - if (!strncmp("processor ", read_buf, sizeof("processor ") - 1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - proc = atoi(p); - if (proc >= num_procs) { - pr_err("cpuinfo contains processor %d larger than %u\n", proc, - num_procs); - ret = HSAKMT_STATUS_NO_MEMORY; - goto exit; - } - continue; - } - - /* vendor name / model name */ - if (!strncmp("cpu ", read_buf, sizeof("cpu ") - 1) && - (processor_vendor == -1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - processor_vendor = topology_search_processor_vendor(p); - - p2 = strchr(p, ','); - if (p2 != NULL) { - p2++; - *p2 = 0; - } - if (strlen(p) < HSA_PUBLIC_NAME_SIZE) { - /* -1 to remove \n from p */ - strncpy(cpuinfo[proc].model_name, p, strlen(p) - 1); - cpuinfo[proc].model_name[strlen(p) - 1] = '\0'; - } else - strncpy(cpuinfo[proc].model_name, p, HSA_PUBLIC_NAME_SIZE); - continue; - } - } -#else - /* Each line in /proc/cpuinfo that read_buf is constructed, the format - * is like this: - * "token : value\n" - * where token is our target like vendor_id, model name, apicid ... - * and value is the answer - */ - while (fgets(read_buf, sizeof(read_buf), fd)) { - /* processor number */ - if (!strncmp("processor", read_buf, sizeof("processor") - 1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - proc = atoi(p); - if (proc >= num_procs) { - pr_err("cpuinfo contains processor %d larger than %u\n", proc, - num_procs); - ret = HSAKMT_STATUS_NO_MEMORY; - goto exit; - } - continue; - } - - /* vendor name */ - if (!strncmp("vendor_id", read_buf, sizeof("vendor_id") - 1) && - (processor_vendor == -1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - processor_vendor = topology_search_processor_vendor(p); - continue; - } - - /* model name */ - if (!strncmp("model name", read_buf, sizeof("model name") - 1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - p_len = strlen(p); - if (p_len > HSA_PUBLIC_NAME_SIZE) - p_len = HSA_PUBLIC_NAME_SIZE; - memcpy(cpuinfo[proc].model_name, p, p_len); - cpuinfo[proc].model_name[p_len - 1] = '\0'; - continue; - } - - /* apicid */ - if (!strncmp("apicid", read_buf, sizeof("apicid") - 1)) { - p = strchr(read_buf, ':'); - p += 2; /* remove ": " */ - cpuinfo[proc].apicid = atoi(p); - } - } -#endif - - if (processor_vendor < 0) { - pr_err("Failed to get Processor Vendor. Setting to %s", - supported_processor_vendor_name[GENUINE_INTEL]); - processor_vendor = GENUINE_INTEL; - } - -exit: - fclose(fd); - return ret; -} - -static HSAKMT_STATUS topology_get_cpu_maxfreq(uint32_t *max_freq) { +static HSAKMT_STATUS topology_parse_cpuinfo(std::vector& cpuinfo) { HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + uint32_t num_procs = cpuinfo.size(); std::ifstream cpuinfo_max_freq( "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); - if (!cpuinfo_max_freq) { - std::ifstream cpuinfo("/proc/cpuinfo"); - if (!cpuinfo) { - pr_err("Failed to open /proc/cpuinfo\n"); - return HSAKMT_STATUS_ERROR; + if (cpuinfo_max_freq) { + std::string line; + std::getline(cpuinfo_max_freq, line); + freq_max_ = static_cast(std::stod(line) / 1000); + } + + std::ifstream cpuinfo_file("/proc/cpuinfo"); + if (!cpuinfo_file) { + pr_err("Failed to open /proc/cpuinfo. Unable to get CPU information"); + return HSAKMT_STATUS_ERROR; + } + + std::string line; + uint32_t proc = 0; + while (std::getline(cpuinfo_file, line)) { + if (line.substr(0, 9) == "processor") { + proc = std::stoi(line.substr(line.find(':') + 2)); + if (proc >= num_procs) { + pr_err("cpuinfo contains processor %d larger than %u\n", proc, num_procs); + return HSAKMT_STATUS_NO_MEMORY; + } + continue; } - std::string line; - double freq_max_ = 0; - while (std::getline(cpuinfo, line)) { + if (line.substr(0, 9) == "vendor_id" && processor_vendor == -1) { + std::string vendor = line.substr(line.find(':') + 2); + processor_vendor = topology_search_processor_vendor(vendor.c_str()); + continue; + } + + if (line.substr(0, 10) == "model name") { + std::string model_name = line.substr(line.find(':') + 2); + if (model_name.size() > HSA_PUBLIC_NAME_SIZE) + model_name.resize(HSA_PUBLIC_NAME_SIZE); + std::strncpy(cpuinfo[proc].model_name, model_name.c_str(), HSA_PUBLIC_NAME_SIZE); + continue; + } + + if (line.substr(0, 6) == "apicid") { + cpuinfo[proc].apicid = std::stoi(line.substr(line.find(':') + 2)); + continue; + } + + if (!cpuinfo_max_freq) { if (line.substr(0, 7) == "cpu MHz") { double freq = std::stod(line.substr(line.find(':') + 2)); if (freq > freq_max_) { freq_max_ = freq; } + continue; } } - *max_freq = static_cast(freq_max_); - } else { - std::string line; - std::getline(cpuinfo_max_freq, line); - *max_freq = static_cast(std::stod(line) / 1000); + } + + if (processor_vendor < 0) { + pr_err("Failed to get Processor Vendor. Setting to %s", supported_processor_vendor_name[GENUINE_INTEL]); + processor_vendor = GENUINE_INTEL; } return ret; } -static int log2_int(int x) { - int result = 0; - while (x >>= 1) { - result++; - } - return result; -} - static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, - HsaNodeProperties *props, - bool *p2p_links, - uint32_t *num_p2pLinks) { + HsaNodeProperties& props, + bool& p2p_links, + uint32_t& num_p2pLinks) { HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - assert(props); - memset(props, 0, sizeof(*props)); - if (p2p_links) - *p2p_links = false; - if (num_p2pLinks) - *num_p2pLinks = 0; + memset(&props, 0, sizeof(props)); + p2p_links = false; + num_p2pLinks = 0; - topology_get_cpu_maxfreq(&props->MaxEngineClockMhzCCompute); + props.MaxEngineClockMhzCCompute = freq_max_; if (node_id == 0) { /* CPU node */ - props->NumCPUCores = sysconf(_SC_NPROCESSORS_ONLN); - props->NumMemoryBanks = 1; - props->KFDGpuID = 0; + props.NumCPUCores = sysconf(_SC_NPROCESSORS_ONLN); + props.NumMemoryBanks = 1; + props.KFDGpuID = 0; return HSAKMT_STATUS_SUCCESS; } @@ -646,55 +523,55 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, if (ret != HSAKMT_STATUS_SUCCESS) return ret; - props->NumCPUCores = 0; - props->NumFComputeCores = device->SimdPerCu() * device->ComputeUnitCount(); - props->NumMemoryBanks = 1; - props->NumCaches = 3; - props->NumIOLinks = 1; - props->CComputeIdLo = 0; - props->FComputeIdLo = 0; - props->Capability.ui32.ASICRevision = device->AsicRevision(); - props->Capability.ui32.WatchPointsTotalBits = - log2_int(device->WatchPointsNum()); - props->MaxWavesPerSIMD = device->WavePerCu() / device->SimdPerCu(); - props->LDSSizeInKB = device->LdsSize() / 1024; - props->GDSSizeInKB = 0; - props->WaveFrontSize = device->WavefrontSize(); - props->NumShaderBanks = device->NumShaderEngine(); - props->NumArrays = device->ShaderArrayPerShaderEngine(); - props->NumCUPerArray = device->ComputeUnitCount() / props->NumArrays; - props->NumSIMDPerCU = device->SimdPerCu(); - props->MaxSlotsScratchCU = device->MaxScratchSlotsPerCu(); - props->VendorId = 0x1002; - props->DeviceId = device->DeviceId(); - props->LocationId = device->PciBusAddr(); - props->LocalMemSize = 0; - props->MaxEngineClockMhzFCompute = device->MaxEngineClockMhz(); - props->DrmRenderMinor = node_id; + props.NumCPUCores = 0; + props.NumFComputeCores = device->SimdPerCu() * device->ComputeUnitCount(); + props.NumMemoryBanks = 1; + props.NumCaches = 3; + props.NumIOLinks = 1; + props.CComputeIdLo = 0; + props.FComputeIdLo = 0; + props.Capability.ui32.ASICRevision = device->AsicRevision(); + props.Capability.ui32.WatchPointsTotalBits = + std::log2(device->WatchPointsNum()); + props.MaxWavesPerSIMD = device->WavePerCu() / device->SimdPerCu(); + props.LDSSizeInKB = device->LdsSize() / 1024; + props.GDSSizeInKB = 0; + props.WaveFrontSize = device->WavefrontSize(); + props.NumShaderBanks = device->NumShaderEngine(); + props.NumArrays = device->ShaderArrayPerShaderEngine(); + props.NumCUPerArray = device->ComputeUnitCount() / props.NumArrays; + props.NumSIMDPerCU = device->SimdPerCu(); + props.MaxSlotsScratchCU = device->MaxScratchSlotsPerCu(); + props.VendorId = 0x1002; + props.DeviceId = device->DeviceId(); + props.LocationId = device->PciBusAddr(); + props.LocalMemSize = 0; + props.MaxEngineClockMhzFCompute = device->MaxEngineClockMhz(); + props.DrmRenderMinor = node_id; { int i; const char *name = device->ProductName(); for (i = 0; name[i] != 0 && i < HSA_PUBLIC_NAME_SIZE - 1; i++) - props->MarketingName[i] = name[i]; - props->MarketingName[i] = '\0'; + props.MarketingName[i] = name[i]; + props.MarketingName[i] = '\0'; } - props->uCodeEngineVersions.uCodeSDMA = device->GetSdmaFwVersion(); - props->DebugProperties.Value = 0; - props->HiveID = 0; - props->NumSdmaEngines = device->NumSdmaEngine(); - props->NumSdmaXgmiEngines = 0; - props->NumSdmaQueuesPerEngine = 6; // TODO - props->NumCpQueues = device->GetNumCpQueues(); - props->NumGws = 0; - props->Integrated = !(device->IsDgpu()); - props->Domain = device->Domain(); - props->UniqueID = atol(device->Uuid()); // TODO - props->NumXcc = 1; - props->KFDGpuID = device->DeviceId(); // TODO - props->FamilyID = device->GfxFamily(); + props.uCodeEngineVersions.uCodeSDMA = device->GetSdmaFwVersion(); + props.DebugProperties.Value = 0; + props.HiveID = 0; + props.NumSdmaEngines = device->NumSdmaEngine(); + props.NumSdmaXgmiEngines = 0; + props.NumSdmaQueuesPerEngine = 6; // TODO + props.NumCpQueues = device->GetNumCpQueues(); + props.NumGws = 0; + props.Integrated = !(device->IsDgpu()); + props.Domain = device->Domain(); + props.UniqueID = atol(device->Uuid()); // TODO + props.NumXcc = 1; + props.KFDGpuID = device->DeviceId(); // TODO + props.FamilyID = device->GfxFamily(); - props->EngineId.ui32.uCode = device->GetMecFwVersion(); + props.EngineId.ui32.uCode = device->GetMecFwVersion(); char *envvar = getenv("HSA_OVERRIDE_GFX_VERSION"); if (envvar) { char dummy = '\0'; @@ -705,28 +582,28 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, pr_err("HSA_OVERRIDE_GFX_VERSION %s is invalid\n", envvar); return HSAKMT_STATUS_ERROR; } - props->OverrideEngineId.ui32.Major = major & 0x3f; - props->OverrideEngineId.ui32.Minor = minor & 0xff; - props->OverrideEngineId.ui32.Stepping = step & 0xff; + props.OverrideEngineId.ui32.Major = major & 0x3f; + props.OverrideEngineId.ui32.Minor = minor & 0xff; + props.OverrideEngineId.ui32.Stepping = step & 0xff; } else { - props->EngineId.ui32.Major = device->Major(); - props->EngineId.ui32.Minor = device->Minor(); - props->EngineId.ui32.Stepping = device->Stepping(); + props.EngineId.ui32.Major = device->Major(); + props.EngineId.ui32.Minor = device->Minor(); + props.EngineId.ui32.Stepping = device->Stepping(); } - snprintf((char *)props->AMDName, sizeof(props->AMDName) - 1, "GFX%06x", - HSA_GET_GFX_VERSION_FULL(props->EngineId.ui32)); + snprintf((char *)props.AMDName, sizeof(props.AMDName) - 1, "GFX%06x", + HSA_GET_GFX_VERSION_FULL(props.EngineId.ui32)); if (!is_svm_api_supported) - props->Capability.ui32.SVMAPISupported = 0; - props->Capability.ui32.DoorbellType = 2; + props.Capability.ui32.SVMAPISupported = 0; + props.Capability.ui32.DoorbellType = 2; /* Get VGPR/SGPR size in byte per CU */ - props->SGPRSizePerCU = SGPR_SIZE_PER_CU; - props->VGPRSizePerCU = get_vgpr_size_per_cu(props->EngineId); + props.SGPRSizePerCU = SGPR_SIZE_PER_CU; + props.VGPRSizePerCU = get_vgpr_size_per_cu(props.EngineId); - if (props->NumFComputeCores) - assert(props->EngineId.ui32.Major && + if (props.NumFComputeCores) + assert(props.EngineId.ui32.Major && "HSA_OVERRIDE_GFX_VERSION may be needed"); return ret; @@ -734,27 +611,27 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, uint32_t mem_id, - HsaMemoryProperties *props) { + HsaMemoryProperties& props) { HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - assert(props); - std::memset(props, 0, sizeof(*props)); + std::memset(&props, 0, sizeof(props)); if (node_id == 0) { /* CPU node */ - props->HeapType = HSA_HEAPTYPE_SYSTEM; + props.HeapType = HSA_HEAPTYPE_SYSTEM; struct sysinfo info; sysinfo(&info); - props->SizeInBytes = info.totalram; + props.SizeInBytes = info.totalram; - /* props->SizeInBytes is the actual physical system + /* props.SizeInBytes is the actual physical system * memory size. Reserve 1/16th for WSL system usage. */ max_single_alloc_size = info.totalram - (info.totalram >> 4); - props->Flags.MemoryProperty = 0; - props->Width = 64; - props->MemoryClockMax = 2133; + props.Flags.MemoryProperty = 0; + /* TODO: sudo dmidecode --type memory doesn't work on wsl */ + props.Width = 64; + props.MemoryClockMax = 2133; return HSAKMT_STATUS_SUCCESS; } @@ -763,46 +640,25 @@ static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, if (ret != HSAKMT_STATUS_SUCCESS) return ret; - props->HeapType = HSA_HEAPTYPE_FRAME_BUFFER_PRIVATE; - props->SizeInBytes = device->LocalHeapSize(); - props->Width = device->MemoryBusWidth(); - props->MemoryClockMax = device->MaxMemoryClockMhz(); + props.HeapType = HSA_HEAPTYPE_FRAME_BUFFER_PRIVATE; + props.SizeInBytes = device->LocalHeapSize(); + props.Width = device->MemoryBusWidth(); + props.MemoryClockMax = device->MaxMemoryClockMhz(); return ret; } -/* topology_destroy_temp_cpu_cache_list - - * Free the memory allocated in topology_create_temp_cpu_cache_list(). - */ -static void -topology_destroy_temp_cpu_cache_list(cpu_cacheinfo_t *temp_cpu_ci_list) { - uint32_t n; - cpu_cacheinfo_t *p_temp_cpu_ci_list = temp_cpu_ci_list; - cpu_cacheinfo_t *cpu_ci = p_temp_cpu_ci_list; - - if (p_temp_cpu_ci_list) { - for (n = 0; n < p_temp_cpu_ci_list->len; n++, cpu_ci++) - free(cpu_ci->cache_prop); - free(p_temp_cpu_ci_list); - } - - p_temp_cpu_ci_list = NULL; -} - -/* topology_create_temp_cpu_cache_list - Create a temporary cpu-cache list to - * store cpu cache information. This list will be used to copy - * HsaCacheProperties in the CPU node. Two buffers are allocated - * inside this function: cpu_ci list and cache_prop under each - * cpu_ci. Must call topology_destroy_temp_cpu_cache_list to free - * the memory after the information is copied. +/* topology_get_cpu_cache_props - Read CPU cache information from sysfs * @node [IN] CPU node number * @cpuinfo [IN] /proc/cpuinfo data - * @temp_cpu_ci_list [OUT] cpu-cache-info list with data filled - * Return: total number of caches under this CPU node + * @tbl [OUT] the node table to fill up + * Return: HSAKMT_STATUS_SUCCESS in success or error number in failure */ -static int -topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, - cpu_cacheinfo_t **temp_cpu_ci_list) { +static HSAKMT_STATUS topology_get_cpu_cache_props(int node, + const std::vector& cpuinfo, + node_props_t& tbl) { + HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; + /* Get max path size from /sys/devices/system/node/node%d/%s/cache * below, which will max out according to the largest filename, * which can be present twice in the string above. 29 is for the prefix @@ -814,21 +670,13 @@ topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, #define MAXNAMLEN NAME_MAX #endif constexpr uint32_t MAXPATHSIZE = 29 + MAXNAMLEN + (MAXNAMLEN + 6); - cpu_cacheinfo_t *p_temp_cpu_ci_list; /* a list of cpu_ci */ char path[MAXPATHSIZE], node_dir[MAXPATHSIZE]; int max_cpus; - cpu_cacheinfo_t *this_cpu; /* one cpu_ci in cpu_ci_list */ int cache_cnt = 0; DIR *dirp = NULL; struct dirent *dir; char *p; - if (!temp_cpu_ci_list) { - pr_err("Invalid temp_cpu_ci_list\n"); - return cache_cnt; - } - *temp_cpu_ci_list = NULL; - /* Get info from /sys/devices/system/node/nodeX/cpuY/cache */ int node_real = node; if (processor_vendor == IBM_POWER) { @@ -845,6 +693,7 @@ topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, */ if (node) { /* CPU node must be 0 or something is wrong */ pr_err("Fail to get cpu* dirs under %s.", node_dir); + ret = HSAKMT_STATUS_ERROR; goto exit; } /* Fall back to use /sys/devices/system/cpu */ @@ -852,19 +701,11 @@ topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, max_cpus = num_subdirs(node_dir, "cpu"); if (max_cpus <= 0) { pr_err("Fail to get cpu* dirs under %s\n", node_dir); + ret = HSAKMT_STATUS_ERROR; goto exit; } } - p_temp_cpu_ci_list = - (cpu_cacheinfo_t *)calloc(max_cpus, sizeof(cpu_cacheinfo_t)); - if (!p_temp_cpu_ci_list) { - pr_err("Fail to allocate p_temp_cpu_ci_list\n"); - goto exit; - } - p_temp_cpu_ci_list->len = 0; - - this_cpu = p_temp_cpu_ci_list; dirp = opendir(node_dir); while ((dir = readdir(dirp)) != 0) { if (strncmp(dir->d_name, "cpu", 3)) @@ -879,75 +720,19 @@ topology_create_temp_cpu_cache_list(int node, struct proc_cpuinfo *cpuinfo, pr_err("Path is too long and was truncated.\n"); goto exit; } - this_cpu->num_caches = num_subdirs(path, "index"); - this_cpu->cache_prop = (HsaCacheProperties *)calloc( - this_cpu->num_caches, sizeof(HsaCacheProperties)); - if (!this_cpu->cache_prop) { - pr_err("Fail to allocate cache_info\n"); - goto exit; - } - p = &dir->d_name[3]; - this_cpu->proc_num = atoi(p); - cache_cnt += get_cpu_cache_info(path, cpuinfo, this_cpu); - ++p_temp_cpu_ci_list->len; - ++this_cpu; + + cpu_cacheinfo_t cpu_ci; + cpu_ci.num_caches = num_subdirs(path, "index"); + cpu_ci.proc_num= atoi(dir->d_name+3); + + cache_cnt += get_cpu_cache_info(path, cpuinfo, tbl.cache, cpu_ci); } - *temp_cpu_ci_list = p_temp_cpu_ci_list; + assert(cache_cnt == tbl.cache.size()); + tbl.node.NumCaches = cache_cnt; exit: if (dirp) closedir(dirp); - return cache_cnt; -} - -/* topology_get_cpu_cache_props - Read CPU cache information from sysfs - * @node [IN] CPU node number - * @cpuinfo [IN] /proc/cpuinfo data - * @tbl [OUT] the node table to fill up - * Return: HSAKMT_STATUS_SUCCESS in success or error number in failure - */ -static HSAKMT_STATUS topology_get_cpu_cache_props(int node, - struct proc_cpuinfo *cpuinfo, - node_props_t *tbl) { - HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - cpu_cacheinfo_t *cpu_ci_list = NULL; - uint32_t n, cache_cnt, i; - cpu_cacheinfo_t *cpu_ci; - HsaCacheProperties *this_cache; - - tbl->node.NumCaches = - topology_create_temp_cpu_cache_list(node, cpuinfo, &cpu_ci_list); - if (!tbl->node.NumCaches) { - /* For "Intel Meteor lake Mobile", the cache info is not in sysfs, - * That means /sys/devices/system/node/node%d/%s/cache is not exist. - * here AMD will not black this issue. - */ - pr_debug("CPU cache info is not available for node %d \n", node); - goto exit; - } - - tbl->cache = (HsaCacheProperties *)calloc(tbl->node.NumCaches, - sizeof(HsaCacheProperties)); - if (!tbl->cache) { - ret = HSAKMT_STATUS_NO_MEMORY; - goto exit; - } - - /* Now fill in the information to cache properties. */ - cache_cnt = 0; - cpu_ci = cpu_ci_list; - for (n = 0; n < cpu_ci_list->len; n++, cpu_ci++) { - this_cache = cpu_ci->cache_prop; - for (i = 0; i < cpu_ci->num_caches; i++, this_cache++) { - memcpy(&tbl->cache[cache_cnt++], this_cache, sizeof(HsaCacheProperties)); - if (cache_cnt >= tbl->node.NumCaches) - goto exit; - } - } - -exit: - topology_destroy_temp_cpu_cache_list(cpu_ci_list); - return ret; } @@ -962,22 +747,22 @@ exit: */ static HSAKMT_STATUS topology_sysfs_get_iolink_props(uint32_t node_id, uint32_t iolink_id, - HsaIoLinkProperties *props, + HsaIoLinkProperties& props, bool p2pLink) { wsl::thunk::WDDMDevice *device; topology_map_node_id(node_id, device); - std::memset(props, 0, sizeof(*props)); - props->IoLinkType = HSA_IOLINKTYPE_PCIEXPRESS; - props->VersionMajor = props->VersionMinor = 0; - props->NodeFrom = node_id; - props->NodeTo = 0; - props->Weight = 20; - props->Flags.ui32.Override = 1; - props->Flags.ui32.NonCoherent = 1; - props->Flags.ui32.NoAtomics32bit = !(device->SupportPlatformAtomic()); - props->Flags.ui32.NoAtomics64bit = !(device->SupportPlatformAtomic()); - props->RecSdmaEngIdMask = 0; + std::memset(&props, 0, sizeof(props)); + props.IoLinkType = HSA_IOLINKTYPE_PCIEXPRESS; + props.VersionMajor = props.VersionMinor = 0; + props.NodeFrom = node_id; + props.NodeTo = 0; + props.Weight = 20; + props.Flags.ui32.Override = 1; + props.Flags.ui32.NonCoherent = 1; + props.Flags.ui32.NoAtomics32bit = !(device->SupportPlatformAtomic()); + props.Flags.ui32.NoAtomics64bit = !(device->SupportPlatformAtomic()); + props.RecSdmaEngIdMask = 0; return HSAKMT_STATUS_SUCCESS; } @@ -987,22 +772,21 @@ static HSAKMT_STATUS topology_sysfs_get_iolink_props(uint32_t node_id, */ static HsaIoLinkProperties * topology_get_free_io_link_slot_for_node(uint32_t node_id, - const HsaSystemProperties *sys_props, - node_props_t *node_props) { - HsaIoLinkProperties *props; + const HsaSystemProperties& sys_props, + std::vector& node_props) { + std::vector& props = node_props[node_id].link; - if (node_id >= sys_props->NumNodes) { + if (node_id >= sys_props.NumNodes) { pr_err("Invalid node [%d]\n", node_id); return NULL; } - props = node_props[node_id].link; - if (!props) { + if (!props.size()) { pr_err("No io_link reported for Node [%d]\n", node_id); return NULL; } - if (node_props[node_id].node.NumIOLinks >= sys_props->NumNodes - 1) { + if (node_props[node_id].node.NumIOLinks >= sys_props.NumNodes - 1) { pr_err("No more space for io_link for Node [%d]\n", node_id); return NULL; } @@ -1015,8 +799,8 @@ topology_get_free_io_link_slot_for_node(uint32_t node_id, * TODO: Add other members of HsaIoLinkProperties */ static HSAKMT_STATUS topology_add_io_link_for_node( - uint32_t node_from, const HsaSystemProperties *sys_props, - node_props_t *node_props, HSA_IOLINKTYPE IoLinkType, uint32_t node_to, + uint32_t node_from, const HsaSystemProperties& sys_props, + std::vector& node_props, HSA_IOLINKTYPE IoLinkType, uint32_t node_to, uint32_t Weight) { HsaIoLinkProperties *props; @@ -1036,11 +820,11 @@ static HSAKMT_STATUS topology_add_io_link_for_node( /* Find the CPU that this GPU (gpu_node) directly connects to */ static int32_t gpu_get_direct_link_cpu(uint32_t gpu_node, - node_props_t *node_props) { - HsaIoLinkProperties *props = node_props[gpu_node].link; + const std::vector& node_props) { + const std::vector& props = node_props[gpu_node].link; uint32_t i; - if (!node_props[gpu_node].node.KFDGpuID || !props || + if (!node_props[gpu_node].node.KFDGpuID || props.empty() || node_props[gpu_node].node.NumIOLinks == 0) return -1; @@ -1056,13 +840,13 @@ static int32_t gpu_get_direct_link_cpu(uint32_t gpu_node, * been created in the kernel. */ static HSAKMT_STATUS get_direct_iolink_info(uint32_t node1, uint32_t node2, - node_props_t *node_props, + const std::vector& node_props, HSAuint32 *weight, HSA_IOLINKTYPE *type) { - HsaIoLinkProperties *props = node_props[node1].link; + const std::vector& props = node_props[node1].link; uint32_t i; - if (!props) + if (!props.size()) return HSAKMT_STATUS_INVALID_NODE_UNIT; for (i = 0; i < node_props[node1].node.NumIOLinks; i++) @@ -1078,11 +862,10 @@ static HSAKMT_STATUS get_direct_iolink_info(uint32_t node1, uint32_t node2, } static HSAKMT_STATUS get_indirect_iolink_info(uint32_t node1, uint32_t node2, - node_props_t *node_props, + const std::vector& node_props, HSAuint32 *weight, HSA_IOLINKTYPE *type) { int32_t dir_cpu1 = -1, dir_cpu2 = -1; - HSAuint32 weight1 = 0, weight2 = 0, weight3 = 0; HSAKMT_STATUS ret; uint32_t i; @@ -1122,6 +905,7 @@ static HSAKMT_STATUS get_indirect_iolink_info(uint32_t node1, uint32_t node2, * GPU --(weight1) -- CPU -- (weight2) -- CPU * CPU -- (weight2) -- CPU -- (weight3) -- GPU */ + HSAuint32 weight1 = 0, weight2 = 0, weight3 = 0; if (dir_cpu1 >= 0) { /* GPU->CPU ... */ if (dir_cpu2 >= 0) { if (dir_cpu1 == dir_cpu2) /* GPU->CPU->GPU*/ { @@ -1171,15 +955,15 @@ static HSAKMT_STATUS get_indirect_iolink_info(uint32_t node1, uint32_t node2, } static void -topology_create_indirect_gpu_links(const HsaSystemProperties *sys_props, - node_props_t *node_props) { +topology_create_indirect_gpu_links(const HsaSystemProperties& sys_props, + std::vector& node_props) { uint32_t i, j; HSAuint32 weight; HSA_IOLINKTYPE type; - for (i = 0; i < sys_props->NumNodes - 1; i++) { - for (j = i + 1; j < sys_props->NumNodes; j++) { + for (i = 0; i < sys_props.NumNodes - 1; i++) { + for (j = i + 1; j < sys_props.NumNodes; j++) { get_indirect_iolink_info(i, j, node_props, &weight, &type); if (!weight) goto try_alt_dir; @@ -1200,71 +984,49 @@ topology_create_indirect_gpu_links(const HsaSystemProperties *sys_props, HSAKMT_STATUS topology_take_snapshot(void) { uint32_t i, mem_id, cache_id; HsaSystemProperties sys_props; - node_props_t *temp_props = 0; + std::vector& temp_props = g_props; HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; - struct proc_cpuinfo *cpuinfo; const uint32_t num_procs = sysconf(_SC_NPROCESSORS_ONLN); + std::vector cpuinfo(num_procs); uint32_t num_ioLinks; bool p2p_links = false; uint32_t num_p2pLinks = 0; - cpuinfo = (proc_cpuinfo *)calloc(num_procs, sizeof(struct proc_cpuinfo)); - if (!cpuinfo) { - pr_err("Fail to allocate memory for CPU info\n"); - return HSAKMT_STATUS_NO_MEMORY; - } - topology_parse_cpuinfo(cpuinfo, num_procs); + topology_parse_cpuinfo(cpuinfo); - ret = topology_sysfs_get_system_props(&sys_props); + ret = topology_sysfs_get_system_props(sys_props); if (ret != HSAKMT_STATUS_SUCCESS) goto err; if (sys_props.NumNodes > 0) { - temp_props = - (node_props_t *)calloc(sys_props.NumNodes * sizeof(node_props_t), 1); - if (!temp_props) { - ret = HSAKMT_STATUS_NO_MEMORY; - goto err; - } + temp_props.resize(sys_props.NumNodes); + for (i = 0; i < sys_props.NumNodes; i++) { wsl::thunk::WDDMDevice *device_; topology_map_node_id(i, device_); - ret = topology_sysfs_get_node_props(i, &temp_props[i].node, &p2p_links, - &num_p2pLinks); + ret = topology_sysfs_get_node_props(i, temp_props[i].node, p2p_links, + num_p2pLinks); if (ret != HSAKMT_STATUS_SUCCESS) { - free_properties(temp_props, i); goto err; } if (temp_props[i].node.NumCPUCores) - topology_get_cpu_model_name(&temp_props[i].node, cpuinfo, num_procs); + topology_get_cpu_model_name(temp_props[i].node, cpuinfo); if (temp_props[i].node.NumMemoryBanks) { - temp_props[i].mem = (HsaMemoryProperties *)calloc( - temp_props[i].node.NumMemoryBanks * sizeof(HsaMemoryProperties), 1); - if (!temp_props[i].mem) { - ret = HSAKMT_STATUS_NO_MEMORY; - free_properties(temp_props, i + 1); - goto err; - } + temp_props[i].mem.resize(temp_props[i].node.NumMemoryBanks); + for (mem_id = 0; mem_id < temp_props[i].node.NumMemoryBanks; mem_id++) { ret = topology_sysfs_get_mem_props(i, mem_id, - &temp_props[i].mem[mem_id]); + temp_props[i].mem[mem_id]); if (ret != HSAKMT_STATUS_SUCCESS) { - free_properties(temp_props, i + 1); goto err; } } } if (temp_props[i].node.NumCaches) { - temp_props[i].cache = (HsaCacheProperties *)calloc( - temp_props[i].node.NumCaches * sizeof(HsaCacheProperties), 1); - if (!temp_props[i].cache) { - ret = HSAKMT_STATUS_NO_MEMORY; - free_properties(temp_props, i + 1); - goto err; - } + temp_props[i].cache.resize(temp_props[i].node.NumCaches); for (int j = 0; j < 3; j++) { temp_props[i].cache[j].CacheType.ui32.Data = 1; temp_props[i].cache[j].CacheType.ui32.HSACU = 1; @@ -1274,9 +1036,8 @@ HSAKMT_STATUS topology_take_snapshot(void) { temp_props[i].cache[1].CacheSize = device_->GetL2CacheSize() / 1024; temp_props[i].cache[2].CacheSize = device_->GetL3CacheSize() / 1024; } else if (!temp_props[i].node.KFDGpuID) { /* a CPU node */ - ret = topology_get_cpu_cache_props(i, cpuinfo, &temp_props[i]); + ret = topology_get_cpu_cache_props(i, cpuinfo, temp_props[i]); if (ret != HSAKMT_STATUS_SUCCESS) { - free_properties(temp_props, i + 1); goto err; } } @@ -1285,13 +1046,7 @@ HSAKMT_STATUS topology_take_snapshot(void) { * This removes the need for realloc when indirect and QPI links are added * later */ - temp_props[i].link = (HsaIoLinkProperties *)calloc( - sys_props.NumNodes - 1, sizeof(HsaIoLinkProperties)); - if (!temp_props[i].link) { - ret = HSAKMT_STATUS_NO_MEMORY; - free_properties(temp_props, i + 1); - goto err; - } + temp_props[i].link.resize(sys_props.NumNodes - 1); num_ioLinks = temp_props[i].node.NumIOLinks - num_p2pLinks; uint32_t link_id = 0; @@ -1303,12 +1058,11 @@ HSAKMT_STATUS topology_take_snapshot(void) { */ while (sys_link_id < num_ioLinks && link_id < sys_props.NumNodes - 1) { ret = topology_sysfs_get_iolink_props( - i, sys_link_id++, &temp_props[i].link[link_id], false); + i, sys_link_id++, temp_props[i].link[link_id], false); if (ret == HSAKMT_STATUS_NOT_SUPPORTED) { ret = HSAKMT_STATUS_SUCCESS; continue; } else if (ret != HSAKMT_STATUS_SUCCESS) { - free_properties(temp_props, i + 1); goto err; } link_id++; @@ -1324,12 +1078,11 @@ HSAKMT_STATUS topology_take_snapshot(void) { */ while (sys_link_id < num_p2pLinks && link_id < sys_props.NumNodes - 1) { ret = topology_sysfs_get_iolink_props( - i, sys_link_id++, &temp_props[i].link[link_id], true); + i, sys_link_id++, temp_props[i].link[link_id], true); if (ret == HSAKMT_STATUS_NOT_SUPPORTED) { ret = HSAKMT_STATUS_SUCCESS; continue; } else if (ret != HSAKMT_STATUS_SUCCESS) { - free_properties(temp_props, i + 1); goto err; } link_id++; @@ -1343,37 +1096,28 @@ HSAKMT_STATUS topology_take_snapshot(void) { /* All direct IO links are created in the kernel. Here we need to * connect GPU<->GPU or GPU<->CPU indirect IO links. */ - topology_create_indirect_gpu_links(&sys_props, temp_props); + topology_create_indirect_gpu_links(sys_props, temp_props); } if (!g_system) { g_system = (HsaSystemProperties *)malloc(sizeof(HsaSystemProperties)); if (!g_system) { - free_properties(temp_props, sys_props.NumNodes); ret = HSAKMT_STATUS_NO_MEMORY; goto err; } } *g_system = sys_props; - if (g_props) - free(g_props); - g_props = temp_props; err: - free(cpuinfo); return ret; } /* Drop the Snashot of the HSA topology information. Assume lock is held. */ void topology_drop_snapshot(void) { - if (!!g_system != !!g_props) + if (!!g_system != !!g_props.size()) pr_warn("Probably inconsistency?\n"); - if (g_props) { - /* Remove state */ - free_properties(g_props, g_system->NumNodes); - g_props = NULL; - } + g_props.clear(); free(g_system); g_system = NULL; @@ -1385,7 +1129,7 @@ void topology_drop_snapshot(void) { } HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id) { - if (!g_props || !g_system || g_system->NumNodes <= nodeid) + if (g_props.empty() || !g_system || g_system->NumNodes <= nodeid) return HSAKMT_STATUS_INVALID_NODE_UNIT; if (gpu_id) *gpu_id = g_props[nodeid].node.KFDGpuID; @@ -1467,7 +1211,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtReleaseSystemProperties(void) { HSAKMT_STATUS topology_get_node_props(HSAuint32 NodeId, HsaNodeProperties *NodeProperties) { - if (!g_system || !g_props || NodeId >= g_system->NumNodes) + if (!g_system || g_props.empty() || NodeId >= g_system->NumNodes) return HSAKMT_STATUS_ERROR; *NodeProperties = g_props[NodeId].node; @@ -1524,7 +1268,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, memset(MemoryProperties, 0, NumBanks * sizeof(HsaMemoryProperties)); for (i = 0; i < wsl::Min(g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { - assert(g_props[NodeId].mem); + assert(g_props[NodeId].mem.size()); MemoryProperties[i] = g_props[NodeId].mem[i]; } @@ -1578,7 +1322,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( } for (i = 0; i < wsl::Min(g_props[NodeId].node.NumCaches, NumCaches); i++) { - assert(g_props[NodeId].cache); + assert(g_props[NodeId].cache.size()); CacheProperties[i] = g_props[NodeId].cache[i]; } @@ -1591,10 +1335,10 @@ out: HSAKMT_STATUS topology_get_iolink_props(HSAuint32 NodeId, HSAuint32 NumIoLinks, HsaIoLinkProperties *IoLinkProperties) { - if (!g_system || !g_props || NodeId >= g_system->NumNodes) + if (!g_system || g_props.empty() || NodeId >= g_system->NumNodes) return HSAKMT_STATUS_ERROR; - memcpy(IoLinkProperties, g_props[NodeId].link, + memcpy(IoLinkProperties, g_props[NodeId].link.data(), NumIoLinks * sizeof(*IoLinkProperties)); return HSAKMT_STATUS_SUCCESS; @@ -1623,7 +1367,7 @@ hsaKmtGetNodeIoLinkProperties(HSAuint32 NodeId, HSAuint32 NumIoLinks, goto out; } - assert(g_props[NodeId].link); + assert(g_props[NodeId].link.size()); err = topology_get_iolink_props(NodeId, NumIoLinks, IoLinkProperties); out: @@ -1632,7 +1376,7 @@ out: } uint16_t get_device_id_by_node_id(HSAuint32 node_id) { - if (!g_props || !g_system || g_system->NumNodes <= node_id) + if (g_props.empty() || !g_system || g_system->NumNodes <= node_id) return 0; return g_props[node_id].node.DeviceId; @@ -1647,7 +1391,7 @@ bool prefer_ats(HSAuint32 node_id) { uint16_t get_device_id_by_gpu_id(HSAuint32 gpu_id) { unsigned int i; - if (!g_props || !g_system) + if (g_props.empty() || !g_system) return 0; for (i = 0; i < g_system->NumNodes; i++) { @@ -1667,7 +1411,7 @@ uint32_t get_direct_link_cpu(uint32_t gpu_node) { if (cpu_id == -1) return INVALID_NODEID; - assert(g_props[cpu_id].mem); + assert(g_props[cpu_id].mem.size()); for (i = 0; i < g_props[cpu_id].node.NumMemoryBanks; i++) size += g_props[cpu_id].mem[i].SizeInBytes; From ce64cf0314a5593134c7142553430f75b632f62e Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Fri, 6 Dec 2024 15:42:19 +0800 Subject: [PATCH 065/159] wsl/hsakmt: Fix conversion warnings by using 0 for Non-Pointers This patch addresses several compiler warnings related to the use of NULL with non-pointer types, such as D3DKMT_HANDLE, uint64_t, and uint32_t. Signed-off-by: Horatio Zhang Reviewed-by: tiancyin Part-of: --- inc/wddm/queue.h | 6 +++--- wddm/cmd_util.cpp | 4 ++-- wddm/queue.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h index f09965620d..fc600562f5 100644 --- a/inc/wddm/queue.h +++ b/inc/wddm/queue.h @@ -69,9 +69,9 @@ public: uint32_t engine, bool use_hws = true) : device(device), - context(NULL), - queue(NULL), - syncobj(NULL), + context(0), + queue(0), + syncobj(0), sync_addr(NULL), cmdbuf(0), cmdbuf_addr(cmdbuf_addr), diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp index d977eac731..476007b640 100644 --- a/wddm/cmd_util.cpp +++ b/wddm/cmd_util.cpp @@ -256,8 +256,8 @@ size_t CmdUtil::BuildDispatch( // This feature may be enabled as a side effect of indirect calls. // However, the compiler team confirmed that the dispatch id itself is not used, // so safe to send 0 for each dispatch. - dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = NULL; - dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = NULL; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = 0; + dispatch.compute_user_data_regs.compute_user_data[sgpr_no++] = 0; } if (AMD_HSA_BITS_GET(pInfo->pKernelObject->kernel_code_properties, AMD_KERNEL_CODE_PROPERTIES_ENABLE_SGPR_FLAT_SCRATCH_INIT)) { diff --git a/wddm/queue.cpp b/wddm/queue.cpp index edbfe05e43..99f8bebd2e 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -528,7 +528,7 @@ uint64_t ComputeQueue::GetKernelObjAddr(uint64_t addr) const { auto ret = hsakmt_hsa_ven_amd_loader_query_host_address(reinterpret_cast(addr), reinterpret_cast(&host_addr)); if (ret == HSA_STATUS_ERROR_INVALID_ARGUMENT) { - return NULL; + return 0; } return host_addr; From 7734c0baad9ef2bff61e8045f74704380a9ff3b9 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 5 Dec 2024 18:02:00 +0800 Subject: [PATCH 066/159] wsl/hsakmt: move src/inc to include/impl Signed-off-by: Flora Cui Reviewed-by: Horatio Zhang Part-of: --- inc/pm4_cmds.h | 1090 --------------------------------- inc/registers.h | 363 ----------- inc/thunk_proxy/thunk_proxy.h | 128 ---- inc/thunk_proxy/wddm_types.h | 155 ----- inc/wddm/cmd_util.h | 83 --- inc/wddm/device.h | 257 -------- inc/wddm/gpu_memory.h | 227 ------- inc/wddm/queue.h | 363 ----------- inc/wddm/status.h | 60 -- inc/wddm/thunks.h | 232 ------- inc/wddm/types.h | 101 --- inc/wddm/va_mgr.h | 86 --- libdrm.cpp | 4 +- libhsakmt.h | 4 +- memory.cpp | 2 +- queues.cpp | 4 +- thunk_proxy/libthunk_proxy.a | Bin 364120 -> 364120 bytes time.cpp | 2 +- topology.cpp | 4 +- wddm/cmd_util.cpp | 2 +- wddm/device.cpp | 8 +- wddm/gpu_memory.cpp | 4 +- wddm/queue.cpp | 4 +- wddm/va_mgr.cpp | 2 +- 24 files changed, 20 insertions(+), 3165 deletions(-) delete mode 100644 inc/pm4_cmds.h delete mode 100644 inc/registers.h delete mode 100644 inc/thunk_proxy/thunk_proxy.h delete mode 100644 inc/thunk_proxy/wddm_types.h delete mode 100644 inc/wddm/cmd_util.h delete mode 100644 inc/wddm/device.h delete mode 100644 inc/wddm/gpu_memory.h delete mode 100644 inc/wddm/queue.h delete mode 100644 inc/wddm/status.h delete mode 100644 inc/wddm/thunks.h delete mode 100644 inc/wddm/types.h delete mode 100644 inc/wddm/va_mgr.h diff --git a/inc/pm4_cmds.h b/inc/pm4_cmds.h deleted file mode 100644 index 44b7fb00aa..0000000000 --- a/inc/pm4_cmds.h +++ /dev/null @@ -1,1090 +0,0 @@ -#ifndef _WSL_INC_PM4_CMDS_H_ -#define _WSL_INC_PM4_CMDS_H_ - -#include - -#define mmCOMPUTE_NUM_THREAD_X 0x2E07 -#define mmCOMPUTE_PGM_LO 0x2E0C -#define mmCOMPUTE_DISPATCH_SCRATCH_BASE_LO 0x2E10 -#define mmCOMPUTE_PGM_RSRC1 0x2E12 -#define mmCOMPUTE_PGM_RSRC3 0x2E28 -#define mmCOMPUTE_RESOURCE_LIMITS 0x2E15 -#define mmCOMPUTE_USER_DATA_0 0x2E40 - -#define PM4_TYPE_SHIFT 30 -#define PM4_COUNT_SHIFT 16 -#define PM4_OPCODE_SHIFT 8 -#define PM4_SHADER_TYPE_SHIFT 1 - -#define PM4_GFX_SHADER 0 -#define PM4_COMPUTE_SHADER 1 - -#define PM4_TYPE3_HDR(_opc_, _count_) \ - (uint32_t)((3) << PM4_TYPE_SHIFT | \ - ((_count_) - 2) << PM4_COUNT_SHIFT | \ - (_opc_) << PM4_OPCODE_SHIFT) | \ - (PM4_COMPUTE_SHADER << PM4_SHADER_TYPE_SHIFT) - -union PM4_MEC_TYPE_3_HEADER { - struct { - uint32_t reserved1 : 8; ///< reserved - uint32_t opcode : 8; ///< IT opcode - uint32_t count : 14;///< number of DWORDs - 1 in the information body. - uint32_t type : 2; ///< packet identifier. It should be 3 for type 3 packets - }; - uint32_t u32All; -}; - -#define IT_DISPATCH_DIRECT 0x15 -#define IT_ATOMIC_MEM 0x1E -#define IT_WRITE_DATA 0x37 -#define IT_INDIRECT_BUFFER 0x3F -#define IT_COPY_DATA 0x40 -#define IT_EVENT_WRITE 0x46 -#define IT_RELEASE_MEM 0x49 -#define IT_ACQUIRE_MEM 0x58 -#define IT_SET_SH_REG 0x76 - -struct PM4_MEC_SET_SH_REG { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t reg_offset:16; - uint32_t reserved1:16; - } bitfields2; - uint32_t ordinal2; - }; -}; - -struct PM4_MEC_DISPATCH_DIRECT { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - uint32_t dim_x; - uint32_t dim_y; - uint32_t dim_z; - uint32_t dispatch_initiator; -}; - -// ------------------------------- MEC_EVENT_WRITE_event_index_enum ------------------------------- -enum MEC_EVENT_WRITE_event_index_enum { - event_index__mec_event_write__other = 0, - event_index__mec_event_write__sample_pipelinestat = 2, - event_index__mec_event_write__cs_partial_flush = 4, - event_index__mec_event_write__sample_streamoutstats__GFX11 = 8, - event_index__mec_event_write__sample_streamoutstats1__GFX11 = 9, - event_index__mec_event_write__sample_streamoutstats2__GFX11 = 10, - event_index__mec_event_write__sample_streamoutstats3__GFX11 = 11, -}; - -enum VGT_EVENT_TYPE { - Reserved_0x00 = 0x00000000, - SAMPLE_STREAMOUTSTATS1 = 0x00000001, - SAMPLE_STREAMOUTSTATS2 = 0x00000002, - SAMPLE_STREAMOUTSTATS3 = 0x00000003, - CACHE_FLUSH_TS = 0x00000004, - CONTEXT_DONE = 0x00000005, - CACHE_FLUSH = 0x00000006, - CS_PARTIAL_FLUSH = 0x00000007, - VGT_STREAMOUT_SYNC = 0x00000008, - VGT_STREAMOUT_RESET = 0x0000000a, - END_OF_PIPE_INCR_DE = 0x0000000b, - END_OF_PIPE_IB_END = 0x0000000c, - RST_PIX_CNT = 0x0000000d, - BREAK_BATCH = 0x0000000e, - VS_PARTIAL_FLUSH = 0x0000000f, - PS_PARTIAL_FLUSH = 0x00000010, - FLUSH_HS_OUTPUT = 0x00000011, - FLUSH_DFSM = 0x00000012, - RESET_TO_LOWEST_VGT = 0x00000013, - CACHE_FLUSH_AND_INV_TS_EVENT = 0x00000014, - CACHE_FLUSH_AND_INV_EVENT = 0x00000016, - PERFCOUNTER_START = 0x00000017, - PERFCOUNTER_STOP = 0x00000018, - PIPELINESTAT_START = 0x00000019, - PIPELINESTAT_STOP = 0x0000001a, - PERFCOUNTER_SAMPLE = 0x0000001b, - SAMPLE_PIPELINESTAT = 0x0000001e, - SO_VGTSTREAMOUT_FLUSH = 0x0000001f, - SAMPLE_STREAMOUTSTATS = 0x00000020, - RESET_VTX_CNT = 0x00000021, - BLOCK_CONTEXT_DONE = 0x00000022, - CS_CONTEXT_DONE = 0x00000023, - VGT_FLUSH = 0x00000024, - TGID_ROLLOVER = 0x00000025, - SQ_NON_EVENT = 0x00000026, - SC_SEND_DB_VPZ = 0x00000027, - BOTTOM_OF_PIPE_TS = 0x00000028, - FLUSH_SX_TS = 0x00000029, - DB_CACHE_FLUSH_AND_INV = 0x0000002a, - FLUSH_AND_INV_DB_DATA_TS = 0x0000002b, - FLUSH_AND_INV_DB_META = 0x0000002c, - FLUSH_AND_INV_CB_DATA_TS = 0x0000002d, - FLUSH_AND_INV_CB_META = 0x0000002e, - CS_DONE = 0x0000002f, - PS_DONE = 0x00000030, - FLUSH_AND_INV_CB_PIXEL_DATA = 0x00000031, - SX_CB_RAT_ACK_REQUEST = 0x00000032, - THREAD_TRACE_START = 0x00000033, - THREAD_TRACE_STOP = 0x00000034, - THREAD_TRACE_MARKER = 0x00000035, - THREAD_TRACE_FINISH = 0x00000037, - PIXEL_PIPE_STAT_CONTROL = 0x00000038, - PIXEL_PIPE_STAT_DUMP = 0x00000039, - PIXEL_PIPE_STAT_RESET = 0x0000003a, - CONTEXT_SUSPEND = 0x0000003b, - OFFCHIP_HS_DEALLOC = 0x0000003c, - ENABLE_NGG_PIPELINE = 0x0000003d, - SET_FE_ID__GFX09 = 0x00000009, - Available_0x1c__GFX09 = 0x0000001c, - Available_0x1d__GFX09 = 0x0000001d, - THREAD_TRACE_FLUSH__GFX09 = 0x00000036, - Reserved_0x3f__GFX09 = 0x0000003f, - ZPASS_DONE__GFX09_10 = 0x00000015, - ENABLE_LEGACY_PIPELINE__GFX09_10 = 0x0000003e, - Reserved_0x09__GFX10PLUS = 0x00000009, - FLUSH_ES_OUTPUT__GFX10PLUS = 0x0000001c, - BIN_CONF_OVERRIDE_CHECK__GFX10PLUS = 0x0000001d, - THREAD_TRACE_DRAW__GFX10PLUS = 0x00000036, - DRAW_DONE__GFX10PLUS = 0x0000003f, - WAIT_SYNC__GFX11 = 0x00000015, - ENABLE_PIPELINE_NOT_USED__GFX11 = 0x0000003e, -}; - -struct PM4_MEC_EVENT_WRITE { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t event_type:6; - uint32_t reserved1:2; - uint32_t event_index:4; - uint32_t reserved2:19; - uint32_t offload_enable:1; - } bitfields2; - uint32_t ordinal2; - }; -}; - -struct PM4_MEC_ATOMIC_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t atomic:7; - uint32_t reserved1:1; - uint32_t command:4; - uint32_t reserved2:13; - uint32_t cache_policy:2; - uint32_t reserved3:5; - } bitfields2; - uint32_t ordinal2; - }; - uint32_t addr_lo; - uint32_t addr_hi; - uint32_t src_data_lo; - uint32_t src_data_hi; - uint32_t cmp_data_lo; - uint32_t cmp_data_hi; - union { - struct { - uint32_t loop_interval:13; - uint32_t reserved4:19; - } bitfields9; - uint32_t ordinal9; - }; -}; - -struct PM4_MEC_WRITE_DATA { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t reserved1:8; - uint32_t dst_sel:4; - uint32_t reserved2:4; - uint32_t addr_incr:1; - uint32_t reserved3:2; - uint32_t resume_vf:1; - uint32_t wr_confirm:1; - uint32_t reserved4:4; - uint32_t cache_policy:2; - uint32_t reserved5:5; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t dst_mmreg_addr:18; - uint32_t reserved6:14; - } bitfields3a; - struct { - uint32_t dst_gds_addr:16; - uint32_t reserved7:16; - } bitfields3b; - struct { - uint32_t reserved8:2; - uint32_t dst_mem_addr_lo:30; - } bitfields3c; - uint32_t ordinal3; - }; - uint32_t dst_mem_addr_hi; - uint64_t write_data_value; -}; - -#define PERSISTENT_SPACE_START 0x00002c00 - -template -void GenerateSetShRegHeader(T* pm4, uint32_t reg_addr) { - pm4->cmd_set_data.header.u32All = PM4_TYPE3_HDR(IT_SET_SH_REG, - sizeof(T) / sizeof(uint32_t)); - pm4->cmd_set_data.bitfields2.reg_offset = reg_addr - PERSISTENT_SPACE_START; -} - -template -void GenerateCmdHeader(T* pm4, int op_code) { - pm4->header.u32All = PM4_TYPE3_HDR(op_code, sizeof(T) / sizeof(uint32_t)); -} - -/// @brief Defines the Gpu command to dispatch a kernel. It embeds -/// various Gpu hardware specific data structures for initialization -/// and configuration before a dispatch begins to run -struct DispatchTemplate { - - /// @brief Structure used to initialize the group dimensions - /// of a kernel dispatch and if performance counters are enabled - struct DispatchDimensionRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_num_thread_x; - uint32_t compute_num_thread_y; - uint32_t compute_num_thread_z; - } dimension_regs; - - struct DispatchProgramRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_pgm_lo; - uint32_t compute_pgm_hi; - } program_regs; - - struct DispatchProgramResourceRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_pgm_rsrc1; - uint32_t compute_pgm_rsrc2; - } program_resource_regs; - - /// @brief Structure used to initialize parameters related to - /// thread management i.e. number of waves to issue and number - /// of Compute Units to use - struct DispatchResourceRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_resource_limits; - uint32_t compute_static_thread_mgmt_se0; - uint32_t compute_static_thread_mgmt_se1; - uint32_t compute_tmpring_size; - uint32_t compute_static_thread_mgmt_se2; - uint32_t compute_static_thread_mgmt_se3; - } resource_regs; - - /// @brief Structure used to pass handles of the Aql dispatch - /// packet, Aql queue, Kernel argument address block, Scratch - /// buffer - struct DispatchComputeUserDataRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_user_data[16]; - } compute_user_data_regs; - - /// @brief Structure used to configure Cache flush policy - /// and dimensions of total work size - PM4_MEC_DISPATCH_DIRECT dispatch_direct; -}; - -struct DispatchProgramResourceRegs { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t compute_pgm_rsrc3; -}; - - -/// @brief Structure used to issue a programing scratch command for gfx11+ -struct SetScratchTemplate { - PM4_MEC_SET_SH_REG cmd_set_data; - uint32_t scratch_lo; - uint32_t scratch_hi; -}; - -/// @brief Structure used to issue a Gpu Barrier command -struct BarrierTemplate { - PM4_MEC_EVENT_WRITE event_write; -}; - -//--------------------MEC_ATOMIC_MEM-------------------- -enum MEC_ATOMIC_MEM_command_enum { - command__mec_atomic_mem__single_pass_atomic = 0, - command__mec_atomic_mem__loop_until_compare_satisfied = 1, - command__mec_atomic_mem__wait_for_write_confirmation = 2, - command__mec_atomic_mem__send_and_continue = 3, -}; - -enum MEC_ATOMIC_MEM_cache_policy_enum { - cache_policy__mec_atomic_mem__lru = 0, - cache_policy__mec_atomic_mem__stream = 1, - cache_policy__mec_atomic_mem__noa = 2, - cache_policy__mec_atomic_mem__bypass = 3, -}; - -enum TC_OP { - TC_OP_READ = 0x00000000, - TC_OP_ATOMIC_FCMPSWAP_RTN_32 = 0x00000001, - TC_OP_ATOMIC_FMIN_RTN_32 = 0x00000002, - TC_OP_ATOMIC_FMAX_RTN_32 = 0x00000003, - TC_OP_RESERVED_FOP_RTN_32_0 = 0x00000004, - TC_OP_RESERVED_FOP_RTN_32_2 = 0x00000006, - TC_OP_ATOMIC_SWAP_RTN_32 = 0x00000007, - TC_OP_ATOMIC_CMPSWAP_RTN_32 = 0x00000008, - TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_32 = 0x00000009, - TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_32 = 0x0000000a, - TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_32 = 0x0000000b, - TC_OP_PROBE_FILTER = 0x0000000c, - TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_2 = 0x0000000e, - TC_OP_ATOMIC_ADD_RTN_32 = 0x0000000f, - TC_OP_ATOMIC_SUB_RTN_32 = 0x00000010, - TC_OP_ATOMIC_SMIN_RTN_32 = 0x00000011, - TC_OP_ATOMIC_UMIN_RTN_32 = 0x00000012, - TC_OP_ATOMIC_SMAX_RTN_32 = 0x00000013, - TC_OP_ATOMIC_UMAX_RTN_32 = 0x00000014, - TC_OP_ATOMIC_AND_RTN_32 = 0x00000015, - TC_OP_ATOMIC_OR_RTN_32 = 0x00000016, - TC_OP_ATOMIC_XOR_RTN_32 = 0x00000017, - TC_OP_ATOMIC_INC_RTN_32 = 0x00000018, - TC_OP_ATOMIC_DEC_RTN_32 = 0x00000019, - TC_OP_WBINVL1_VOL = 0x0000001a, - TC_OP_WBINVL1_SD = 0x0000001b, - TC_OP_RESERVED_NON_FLOAT_RTN_32_0 = 0x0000001c, - TC_OP_RESERVED_NON_FLOAT_RTN_32_1 = 0x0000001d, - TC_OP_RESERVED_NON_FLOAT_RTN_32_2 = 0x0000001e, - TC_OP_RESERVED_NON_FLOAT_RTN_32_3 = 0x0000001f, - TC_OP_WRITE = 0x00000020, - TC_OP_ATOMIC_FCMPSWAP_RTN_64 = 0x00000021, - TC_OP_ATOMIC_FMIN_RTN_64 = 0x00000022, - TC_OP_ATOMIC_FMAX_RTN_64 = 0x00000023, - TC_OP_RESERVED_FOP_RTN_64_0 = 0x00000024, - TC_OP_RESERVED_FOP_RTN_64_1 = 0x00000025, - TC_OP_RESERVED_FOP_RTN_64_2 = 0x00000026, - TC_OP_ATOMIC_SWAP_RTN_64 = 0x00000027, - TC_OP_ATOMIC_CMPSWAP_RTN_64 = 0x00000028, - TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_RTN_64 = 0x00000029, - TC_OP_ATOMIC_FMIN_FLUSH_DENORM_RTN_64 = 0x0000002a, - TC_OP_ATOMIC_FMAX_FLUSH_DENORM_RTN_64 = 0x0000002b, - TC_OP_WBINVL2_SD = 0x0000002c, - TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_0 = 0x0000002d, - TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_64_1 = 0x0000002e, - TC_OP_ATOMIC_ADD_RTN_64 = 0x0000002f, - TC_OP_ATOMIC_SUB_RTN_64 = 0x00000030, - TC_OP_ATOMIC_SMIN_RTN_64 = 0x00000031, - TC_OP_ATOMIC_UMIN_RTN_64 = 0x00000032, - TC_OP_ATOMIC_SMAX_RTN_64 = 0x00000033, - TC_OP_ATOMIC_UMAX_RTN_64 = 0x00000034, - TC_OP_ATOMIC_AND_RTN_64 = 0x00000035, - TC_OP_ATOMIC_OR_RTN_64 = 0x00000036, - TC_OP_ATOMIC_XOR_RTN_64 = 0x00000037, - TC_OP_ATOMIC_INC_RTN_64 = 0x00000038, - TC_OP_ATOMIC_DEC_RTN_64 = 0x00000039, - TC_OP_WBL2_NC = 0x0000003a, - TC_OP_WBL2_WC = 0x0000003b, - TC_OP_RESERVED_NON_FLOAT_RTN_64_1 = 0x0000003c, - TC_OP_RESERVED_NON_FLOAT_RTN_64_2 = 0x0000003d, - TC_OP_RESERVED_NON_FLOAT_RTN_64_3 = 0x0000003e, - TC_OP_RESERVED_NON_FLOAT_RTN_64_4 = 0x0000003f, - TC_OP_WBINVL1 = 0x00000040, - TC_OP_ATOMIC_FCMPSWAP_32 = 0x00000041, - TC_OP_ATOMIC_FMIN_32 = 0x00000042, - TC_OP_ATOMIC_FMAX_32 = 0x00000043, - TC_OP_RESERVED_FOP_32_0 = 0x00000044, - TC_OP_RESERVED_FOP_32_2 = 0x00000046, - TC_OP_ATOMIC_SWAP_32 = 0x00000047, - TC_OP_ATOMIC_CMPSWAP_32 = 0x00000048, - TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_32 = 0x00000049, - TC_OP_ATOMIC_FMIN_FLUSH_DENORM_32 = 0x0000004a, - TC_OP_ATOMIC_FMAX_FLUSH_DENORM_32 = 0x0000004b, - TC_OP_INV_METADATA = 0x0000004c, - TC_OP_RESERVED_FOP_FLUSH_DENORM_32_2 = 0x0000004e, - TC_OP_ATOMIC_ADD_32 = 0x0000004f, - TC_OP_ATOMIC_SUB_32 = 0x00000050, - TC_OP_ATOMIC_SMIN_32 = 0x00000051, - TC_OP_ATOMIC_UMIN_32 = 0x00000052, - TC_OP_ATOMIC_SMAX_32 = 0x00000053, - TC_OP_ATOMIC_UMAX_32 = 0x00000054, - TC_OP_ATOMIC_AND_32 = 0x00000055, - TC_OP_ATOMIC_OR_32 = 0x00000056, - TC_OP_ATOMIC_XOR_32 = 0x00000057, - TC_OP_ATOMIC_INC_32 = 0x00000058, - TC_OP_ATOMIC_DEC_32 = 0x00000059, - TC_OP_INVL2_NC = 0x0000005a, - TC_OP_NOP_RTN0 = 0x0000005b, - TC_OP_RESERVED_NON_FLOAT_32_1 = 0x0000005c, - TC_OP_RESERVED_NON_FLOAT_32_2 = 0x0000005d, - TC_OP_RESERVED_NON_FLOAT_32_3 = 0x0000005e, - TC_OP_RESERVED_NON_FLOAT_32_4 = 0x0000005f, - TC_OP_WBINVL2 = 0x00000060, - TC_OP_ATOMIC_FCMPSWAP_64 = 0x00000061, - TC_OP_ATOMIC_FMIN_64 = 0x00000062, - TC_OP_ATOMIC_FMAX_64 = 0x00000063, - TC_OP_RESERVED_FOP_64_0 = 0x00000064, - TC_OP_RESERVED_FOP_64_1 = 0x00000065, - TC_OP_RESERVED_FOP_64_2 = 0x00000066, - TC_OP_ATOMIC_SWAP_64 = 0x00000067, - TC_OP_ATOMIC_CMPSWAP_64 = 0x00000068, - TC_OP_ATOMIC_FCMPSWAP_FLUSH_DENORM_64 = 0x00000069, - TC_OP_ATOMIC_FMIN_FLUSH_DENORM_64 = 0x0000006a, - TC_OP_ATOMIC_FMAX_FLUSH_DENORM_64 = 0x0000006b, - TC_OP_RESERVED_FOP_FLUSH_DENORM_64_0 = 0x0000006c, - TC_OP_RESERVED_FOP_FLUSH_DENORM_64_1 = 0x0000006d, - TC_OP_RESERVED_FOP_FLUSH_DENORM_64_2 = 0x0000006e, - TC_OP_ATOMIC_ADD_64 = 0x0000006f, - TC_OP_ATOMIC_SUB_64 = 0x00000070, - TC_OP_ATOMIC_SMIN_64 = 0x00000071, - TC_OP_ATOMIC_UMIN_64 = 0x00000072, - TC_OP_ATOMIC_SMAX_64 = 0x00000073, - TC_OP_ATOMIC_UMAX_64 = 0x00000074, - TC_OP_ATOMIC_AND_64 = 0x00000075, - TC_OP_ATOMIC_OR_64 = 0x00000076, - TC_OP_ATOMIC_XOR_64 = 0x00000077, - TC_OP_ATOMIC_INC_64 = 0x00000078, - TC_OP_ATOMIC_DEC_64 = 0x00000079, - TC_OP_WBINVL2_NC = 0x0000007a, - TC_OP_NOP_ACK = 0x0000007b, - TC_OP_RESERVED_NON_FLOAT_64_1 = 0x0000007c, - TC_OP_RESERVED_NON_FLOAT_64_2 = 0x0000007d, - TC_OP_RESERVED_NON_FLOAT_64_3 = 0x0000007e, - TC_OP_RESERVED_NON_FLOAT_64_4 = 0x0000007f, - TC_OP_RESERVED_FOP_RTN_32_1__GFX09_10 = 0x00000005, - TC_OP_RESERVED_FOP_FLUSH_DENORM_RTN_32_1__GFX09_10 = 0x0000000d, - TC_OP_RESERVED_FOP_32_1__GFX09_10 = 0x00000045, - TC_OP_RESERVED_FOP_FLUSH_DENORM_32_1__GFX09_10 = 0x0000004d, - TC_OP_RESERVED_FADD_RTN_32__GFX11 = 0x00000005, - TC_OP_ATOMIC_FADD_FLUSH_DENORM_RTN_32__GFX11 = 0x0000000d, - TC_OP_RESERVED_FADD_32__GFX11 = 0x00000045, - TC_OP_ATOMIC_FADD_FLUSH_DENORM_32__GFX11 = 0x0000004d, -}; - -// Desc: Strucuture used to perform various atomic -// operations - add, subtract, increment, etc -struct AtomicTemplate { - PM4_MEC_ATOMIC_MEM atomic; -}; - -/// @brief PM4 command to write a 64-bit value into a memory -/// location accessible to Gpu -struct WriteDataTemplate { - PM4_MEC_WRITE_DATA write_data; -}; - -// ---------------------------------- MEC_COPY_DATA_src_sel_enum ---------------------------------- -enum MEC_COPY_DATA_src_sel_enum { - src_sel__mec_copy_data__mem_mapped_register = 0, - src_sel__mec_copy_data__tc_l2_obsolete = 1, - src_sel__mec_copy_data__tc_l2 = 2, - src_sel__mec_copy_data__gds = 3, - src_sel__mec_copy_data__perfcounters = 4, - src_sel__mec_copy_data__immediate_data = 5, - src_sel__mec_copy_data__atomic_return_data = 6, - src_sel__mec_copy_data__gds_atomic_return_data0 = 7, - src_sel__mec_copy_data__gds_atomic_return_data1 = 8, - src_sel__mec_copy_data__gpu_clock_count = 9, - src_sel__mec_copy_data__system_clock_count = 10, - src_sel__mec_copy_data__ext32perfcntr = 11, -}; - -// ---------------------------------- MEC_COPY_DATA_dst_sel_enum ---------------------------------- -enum MEC_COPY_DATA_dst_sel_enum { - dst_sel__mec_copy_data__mem_mapped_register = 0, - dst_sel__mec_copy_data__tc_l2 = 2, - dst_sel__mec_copy_data__gds = 3, - dst_sel__mec_copy_data__perfcounters = 4, - dst_sel__mec_copy_data__tc_l2_obsolete = 5, - dst_sel__mec_copy_data__mem_mapped_reg_dc = 6, - dst_sel__mec_copy_data__ext32perfcntr = 11, -}; - -// ------------------------------ MEC_COPY_DATA_src_cache_policy_enum ------------------------------ -enum MEC_COPY_DATA_src_cache_policy_enum { - src_cache_policy__mec_copy_data__lru = 0, - src_cache_policy__mec_copy_data__stream = 1, - src_cache_policy__mec_copy_data__noa = 2, - src_cache_policy__mec_copy_data__bypass = 3, -}; - -// --------------------------------- MEC_COPY_DATA_count_sel_enum --------------------------------- -enum MEC_COPY_DATA_count_sel_enum { - count_sel__mec_copy_data__32_bits_of_data = 0, - count_sel__mec_copy_data__64_bits_of_data = 1, -}; - -// --------------------------------- MEC_COPY_DATA_wr_confirm_enum --------------------------------- -enum MEC_COPY_DATA_wr_confirm_enum { - wr_confirm__mec_copy_data__do_not_wait_for_confirmation = 0, - wr_confirm__mec_copy_data__wait_for_confirmation = 1, -}; - -// ------------------------------ MEC_COPY_DATA_dst_cache_policy_enum ------------------------------ -enum MEC_COPY_DATA_dst_cache_policy_enum { - dst_cache_policy__mec_copy_data__lru = 0, - dst_cache_policy__mec_copy_data__stream = 1, - dst_cache_policy__mec_copy_data__noa = 2, - dst_cache_policy__mec_copy_data__bypass = 3, -}; - -// ------------------------------- MEC_COPY_DATA_pq_exe_status_enum ------------------------------- -enum MEC_COPY_DATA_pq_exe_status_enum { - pq_exe_status__mec_copy_data__default = 0, - pq_exe_status__mec_copy_data__phase_update = 1, -}; - -// ------------------------------- MEC_WRITE_DATA_dst_sel_enum ------------------------------- -enum MEC_WRITE_DATA_dst_sel_enum { - dst_sel__mec_write_data__mem_mapped_register = 0, - dst_sel__mec_write_data__tc_l2 = 2, - dst_sel__mec_write_data__gds = 3, - dst_sel__mec_write_data__memory = 5, - dst_sel__mec_write_data__memory_mapped_adc_persistent_state = 6 }; - -// ------------------------------- MEC_WRITE_DATA_addr_incr_enum ------------------------------- -enum MEC_WRITE_DATA_addr_incr_enum { - addr_incr__mec_write_data__increment_address = 0, - addr_incr__mec_write_data__do_not_increment_address = 1 }; - -// ------------------------------- MEC_WRITE_DATA_wr_confirm_enum ------------------------------- -enum MEC_WRITE_DATA_wr_confirm_enum { - wr_confirm__mec_write_data__do_not_wait_for_write_confirmation = 0, - wr_confirm__mec_write_data__wait_for_write_confirmation = 1 }; - -// ------------------------------- MEC_WRITE_DATA_cache_policy_enum ------------------------------- -enum MEC_WRITE_DATA_cache_policy_enum { - cache_policy__mec_write_data__lru = 0, - cache_policy__mec_write_data__stream = 1, - cache_policy__mec_write_data__noa = 2, - cache_policy__mec_write_data__bypass = 3 }; - -typedef struct PM4_MEC_COPY_DATA { - union { - PM4_MEC_TYPE_3_HEADER header; /// header - uint32_t ordinal1; - }; - union { - struct { - uint32_t src_sel : 4; - uint32_t reserved1 : 4; - uint32_t dst_sel : 4; - uint32_t reserved2 : 1; - uint32_t src_cache_policy : 2; - uint32_t reserved3 : 1; - uint32_t count_sel : 1; - uint32_t reserved4 : 3; - uint32_t wr_confirm : 1; - uint32_t reserved5 : 4; - uint32_t dst_cache_policy : 2; - uint32_t reserved6 : 2; - uint32_t pq_exe_status : 1; - uint32_t reserved7 : 2; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t src_reg_offset : 18; - uint32_t reserved8 : 14; - } bitfields3a; - struct { - uint32_t reserved9 : 2; - uint32_t src_32b_addr_lo : 30; - } bitfields3b; - struct { - uint32_t reserved10 : 3; - uint32_t src_64b_addr_lo : 29; - } bitfields3c; - struct { - uint32_t src_gds_addr_lo : 16; - uint32_t reserved11 : 16; - } bitfields3d; - uint32_t imm_data; - uint32_t ordinal3; - }; - union { - uint32_t src_memtc_addr_hi; - uint32_t src_imm_data; - uint32_t ordinal4; - }; - union { - struct { - uint32_t dst_reg_offset : 18; - uint32_t reserved12 : 14; - } bitfields5a; - struct { - uint32_t reserved13 : 2; - uint32_t dst_32b_addr_lo : 30; - } bitfields5b; - struct { - uint32_t reserved14 : 3; - uint32_t dst_64b_addr_lo : 29; - } bitfields5c; - struct { - uint32_t dst_gds_addr_lo : 16; - uint32_t reserved15 : 16; - } bitfields5d; - uint32_t ordinal5; - }; - uint32_t dst_addr_hi; -} PM4MEC_COPY_DATA; -namespace gfx9 { - -struct PM4_MEC_ACQUIRE_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t coher_cntl:31; - uint32_t reserved1:1; - } bitfields2; - uint32_t ordinal2; - }; - uint32_t coher_size; - union { - struct { - uint32_t coher_size_hi:8; - uint32_t reserved2:24; - } bitfields4; - uint32_t ordinal4; - }; - uint32_t coher_base_lo; - union { - struct { - uint32_t coher_base_hi:24; - uint32_t reserved3:8; - } bitfields6; - uint32_t ordinal6; - }; - union { - struct { - uint32_t poll_interval:16; - uint32_t reserved4:16; - } bitfields7; - uint32_t ordinal7; - }; -}; - -struct PM4_MEC_RELEASE_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t event_type:6; - uint32_t reserved1:2; - uint32_t event_index:4; - uint32_t tcl1_vol_action_ena:1; - uint32_t tc_vol_action_ena:1; - uint32_t reserved2:1; - uint32_t tc_wb_action_ena:1; - uint32_t tcl1_action_ena:1; - uint32_t tc_action_ena:1; - uint32_t reserved3:1; - uint32_t tc_nc_action_ena:1; - uint32_t tc_wc_action_ena:1; - uint32_t tc_md_action_ena:1; - uint32_t reserved4:3; - uint32_t cache_policy:2; - uint32_t reserved5:2; - uint32_t pq_exe_status:1; - uint32_t reserved6:2; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t reserved7:16; - uint32_t dst_sel:2; - uint32_t reserved8:6; - uint32_t int_sel:3; - uint32_t reserved9:2; - uint32_t data_sel:3; - } bitfields3; - uint32_t ordinal3; - }; - union { - struct { - uint32_t reserved10:2; - uint32_t address_lo_32b:30; - } bitfields4a; - struct { - uint32_t reserved11:3; - uint32_t address_lo_64b:29; - } bitfields4b; - uint32_t reserved12; - uint32_t ordinal4; - }; - union { - uint32_t address_hi; - uint32_t reserved13; - uint32_t ordinal5; - }; - union { - uint32_t data_lo; - uint32_t cmp_data_lo; - struct { - uint32_t dw_offset:16; - uint32_t num_dwords:16; - } bitfields6c; - uint32_t reserved14; - uint32_t ordinal6; - }; - union { - uint32_t data_hi; - uint32_t cmp_data_hi; - uint32_t reserved15; - uint32_t reserved16; - uint32_t ordinal7; - }; - uint32_t int_ctxid; -}; - -struct PM4_MEC_WAIT_REG_MEM64 { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t function:3; - uint32_t reserved1:1; - uint32_t mem_space:2; - uint32_t operation:2; - uint32_t reserved2:24; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t reserved3:3; - uint32_t mem_poll_addr_lo:29; - } bitfields3a; - struct { - uint32_t reg_poll_addr:18; - uint32_t reserved4:14; - } bitfields3b; - struct { - uint32_t reg_write_addr1:18; - uint32_t reserved5:14; - } bitfields3c; - uint32_t ordinal3; - }; - union { - uint32_t mem_poll_addr_hi; - struct { - uint32_t reg_write_addr2:18; - uint32_t reserved6:14; - } bitfields4b; - uint32_t ordinal4; - }; - uint32_t reference; - uint32_t reference_hi; - uint32_t mask; - uint32_t mask_hi; - union { - struct { - uint32_t poll_interval:16; - uint32_t reserved7:16; - } bitfields9; - uint32_t ordinal9; - }; -}; - -/// @brief Structure used to configure the flushing of -/// various caches - instruction, constants, L1 and L2 -struct AcquireMemTemplate { - PM4_MEC_ACQUIRE_MEM acquire_mem; -}; - -struct EndofKernelNotifyTemplate { - PM4_MEC_RELEASE_MEM release_mem; -}; - -/// @brief PM4 command to wait for a certain event before proceeding -/// to process another command on the queue -struct WaitRegMem64Template { - PM4_MEC_WAIT_REG_MEM64 wait_reg_mem; -}; - -} // gfx9 namespace - -namespace gfx10 { - -struct PM4_MEC_ACQUIRE_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - uint32_t reserved1; - uint32_t coher_size; - union { - struct { - uint32_t coher_size_hi:8; - uint32_t reserved2:24; - } bitfields4; - uint32_t ordinal4; - }; - uint32_t coher_base_lo; - union { - struct { - uint32_t coher_base_hi:24; - uint32_t reserved3:8; - } bitfields6; - uint32_t ordinal6; - }; - union { - struct { - uint32_t poll_interval:16; - uint32_t reserved4:16; - } bitfields7; - uint32_t ordinal7; - }; - union { - struct { - uint32_t gcr_cntl:19; - uint32_t reserved4:13; - } bitfields8; - uint32_t ordinal8; - }; -}; - -struct PM4_MEC_RELEASE_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t event_type:6; - uint32_t reserved1:2; - uint32_t event_index:4; - uint32_t gcr_cntl:12; - uint32_t reserved2:1; - uint32_t cache_policy:2; - uint32_t reserved3:2; - uint32_t pq_exe_status:1; - uint32_t reserved4:2; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t reserved7:16; - uint32_t dst_sel:2; - uint32_t reserved8:2; - uint32_t mes_intr_pipe:2; - uint32_t mes_action_id:2; - uint32_t int_sel:3; - uint32_t reserved9:2; - uint32_t data_sel:3; - } bitfields3; - uint32_t ordinal3; - }; - union { - struct { - uint32_t reserved10:2; - uint32_t address_lo_32b:30; - } bitfields4a; - struct { - uint32_t reserved11:3; - uint32_t address_lo_64b:29; - } bitfields4b; - uint32_t reserved12; - uint32_t ordinal4; - }; - union { - uint32_t address_hi; - uint32_t reserved13; - uint32_t ordinal5; - }; - union { - uint32_t data_lo; - uint32_t cmp_data_lo; - struct { - uint32_t dw_offset:16; - uint32_t num_dwords:16; - } bitfields6c; - uint32_t reserved14; - uint32_t ordinal6; - }; - union { - uint32_t data_hi; - uint32_t cmp_data_hi; - uint32_t reserved15; - uint32_t reserved16; - uint32_t ordinal7; - }; - uint32_t int_ctxid; -}; - -struct PM4_MEC_WAIT_REG_MEM64 { - union { - PM4_MEC_TYPE_3_HEADER header; ///header - uint32_t ordinal1; - }; - union { - struct { - uint32_t function:3; - uint32_t reserved1:1; - uint32_t mem_space:2; - uint32_t operation:2; - uint32_t reserved2:14; - uint32_t mes_intr_pipe:2; - uint32_t mes_action:1; - uint32_t cache_policy:2; - uint32_t reserved3:5; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t reserved4:3; - uint32_t mem_poll_addr_lo:29; - } bitfields3a; - struct { - uint32_t reg_poll_addr:18; - uint32_t reserved5:14; - } bitfields3b; - struct { - uint32_t reg_write_addr1:18; - uint32_t reserved6:14; - } bitfields3c; - uint32_t ordinal3; - }; - union { - uint32_t mem_poll_addr_hi; - struct { - uint32_t reg_write_addr2:18; - uint32_t reserved7:14; - } bitfields4b; - uint32_t ordinal4; - }; - uint32_t reference; - uint32_t reference_hi; - uint32_t mask; - uint32_t mask_hi; - union { - struct { - uint32_t poll_interval:16; - uint32_t reserved8:15; - uint32_t optimize_ace_offload_mode:1; - } bitfields9; - uint32_t ordinal9; - }; -}; - -/// @brief Structure used to configure the flushing of -/// various caches - instruction, constants, L1 and L2 -struct AcquireMemTemplate { - PM4_MEC_ACQUIRE_MEM acquire_mem; -}; - -struct EndofKernelNotifyTemplate { - PM4_MEC_RELEASE_MEM release_mem; -}; - -struct WaitRegMem64Template { - PM4_MEC_WAIT_REG_MEM64 wait_reg_mem; -}; - -} // gfx10 namespace - -namespace gfx11 { - -struct PM4_MEC_RELEASE_MEM { - union { - PM4_MEC_TYPE_3_HEADER header; - uint32_t ordinal1; - }; - union { - struct { - uint32_t event_type:6; - uint32_t reserved1:2; - uint32_t event_index:4; - uint32_t gcr_cntl:13; - uint32_t cache_policy:2; - uint32_t reserved2:1; - uint32_t pq_exe_status:1; - uint32_t reserved3:1; - uint32_t glk_inv:1; - uint32_t reserved4:1; - } bitfields2; - uint32_t ordinal2; - }; - union { - struct { - uint32_t reserved5:16; - uint32_t dst_sel:2; - uint32_t reserved6:2; - uint32_t mes_intr_pipe:2; - uint32_t mes_action_id:2; - uint32_t int_sel:3; - uint32_t reserved7:2; - uint32_t data_sel:3; - } bitfields3; - uint32_t ordinal3; - }; - union { - struct { - uint32_t reserved8:2; - uint32_t address_lo_32b:30; - } bitfields4a; - struct { - uint32_t reserved9:3; - uint32_t address_lo_64b:29; - } bitfields4b; - uint32_t reserved10; - uint32_t ordinal4; - }; - union { - uint32_t address_hi; - uint32_t reserved11; - uint32_t ordinal5; - }; - union { - uint32_t data_lo; - uint32_t cmp_data_lo; - struct { - uint32_t dw_offset:16; - uint32_t num_dwords:16; - } bitfields6c; - uint32_t reserved12; - uint32_t ordinal6; - }; - union { - uint32_t data_hi; - uint32_t cmp_data_hi; - uint32_t reserved13; - uint32_t reserved14; - uint32_t ordinal7; - }; - uint32_t int_ctxid; -}; - -struct EndofKernelNotifyTemplate { - PM4_MEC_RELEASE_MEM release_mem; -}; - -} // gfx11 namespace - -#endif diff --git a/inc/registers.h b/inc/registers.h deleted file mode 100644 index 4d430b41e4..0000000000 --- a/inc/registers.h +++ /dev/null @@ -1,363 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2014-2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -// This file is used only for open source cmake builds, if we hardcode the -// register values in amd_aql_queue.cpp then this file won't be required. For -// now we are using this file where register details are spelled out in the -// structs/unions below. -#ifndef _WSL_INC_REGISTERS_H_ -#define _WSL_INC_REGISTERS_H_ - -typedef enum SQ_RSRC_BUF_TYPE { -SQ_RSRC_BUF = 0x00000000, -SQ_RSRC_BUF_RSVD_1 = 0x00000001, -SQ_RSRC_BUF_RSVD_2 = 0x00000002, -SQ_RSRC_BUF_RSVD_3 = 0x00000003, -} SQ_RSRC_BUF_TYPE; - -typedef enum BUF_DATA_FORMAT { -BUF_DATA_FORMAT_INVALID = 0x00000000, -BUF_DATA_FORMAT_8 = 0x00000001, -BUF_DATA_FORMAT_16 = 0x00000002, -BUF_DATA_FORMAT_8_8 = 0x00000003, -BUF_DATA_FORMAT_32 = 0x00000004, -BUF_DATA_FORMAT_16_16 = 0x00000005, -BUF_DATA_FORMAT_10_11_11 = 0x00000006, -BUF_DATA_FORMAT_11_11_10 = 0x00000007, -BUF_DATA_FORMAT_10_10_10_2 = 0x00000008, -BUF_DATA_FORMAT_2_10_10_10 = 0x00000009, -BUF_DATA_FORMAT_8_8_8_8 = 0x0000000a, -BUF_DATA_FORMAT_32_32 = 0x0000000b, -BUF_DATA_FORMAT_16_16_16_16 = 0x0000000c, -BUF_DATA_FORMAT_32_32_32 = 0x0000000d, -BUF_DATA_FORMAT_32_32_32_32 = 0x0000000e, -BUF_DATA_FORMAT_RESERVED_15 = 0x0000000f, -} BUF_DATA_FORMAT; - -typedef enum BUF_NUM_FORMAT { -BUF_NUM_FORMAT_UNORM = 0x00000000, -BUF_NUM_FORMAT_SNORM = 0x00000001, -BUF_NUM_FORMAT_USCALED = 0x00000002, -BUF_NUM_FORMAT_SSCALED = 0x00000003, -BUF_NUM_FORMAT_UINT = 0x00000004, -BUF_NUM_FORMAT_SINT = 0x00000005, -BUF_NUM_FORMAT_SNORM_OGL__SI__CI = 0x00000006, -BUF_NUM_FORMAT_RESERVED_6__VI = 0x00000006, -BUF_NUM_FORMAT_FLOAT = 0x00000007, -} BUF_NUM_FORMAT; - -typedef enum BUF_FORMAT { -BUF_FORMAT_32_UINT = 0x00000014, -} BUF_FORMAT; - -typedef enum SQ_SEL_XYZW01 { -SQ_SEL_0 = 0x00000000, -SQ_SEL_1 = 0x00000001, -SQ_SEL_RESERVED_0 = 0x00000002, -SQ_SEL_RESERVED_1 = 0x00000003, -SQ_SEL_X = 0x00000004, -SQ_SEL_Y = 0x00000005, -SQ_SEL_Z = 0x00000006, -SQ_SEL_W = 0x00000007, -} SQ_SEL_XYZW01; - - union COMPUTE_TMPRING_SIZE { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int WAVES : 12; - unsigned int WAVESIZE : 13; - unsigned int : 7; -#elif defined(BIGENDIAN_CPU) - unsigned int : 7; - unsigned int WAVESIZE : 13; - unsigned int WAVES : 12; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - union COMPUTE_TMPRING_SIZE_GFX11 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int WAVES : 12; - unsigned int WAVESIZE : 15; - unsigned int : 5; -#elif defined(BIGENDIAN_CPU) - unsigned int : 5; - unsigned int WAVESIZE : 15; - unsigned int WAVES : 12; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - union COMPUTE_TMPRING_SIZE_GFX12 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int WAVES : 12; - unsigned int WAVESIZE : 18; - unsigned int : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int : 2; - unsigned int WAVESIZE : 18; - unsigned int WAVES : 12; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - union SQ_BUF_RSRC_WORD0 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int BASE_ADDRESS : 32; -#elif defined(BIGENDIAN_CPU) - unsigned int BASE_ADDRESS : 32; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - - union SQ_BUF_RSRC_WORD1 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int BASE_ADDRESS_HI : 16; - unsigned int STRIDE : 14; - unsigned int CACHE_SWIZZLE : 1; - unsigned int SWIZZLE_ENABLE : 1; -#elif defined(BIGENDIAN_CPU) - unsigned int SWIZZLE_ENABLE : 1; - unsigned int CACHE_SWIZZLE : 1; - unsigned int STRIDE : 14; - unsigned int BASE_ADDRESS_HI : 16; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - union SQ_BUF_RSRC_WORD1_GFX11 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int BASE_ADDRESS_HI : 16; - unsigned int STRIDE : 14; - unsigned int SWIZZLE_ENABLE : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int SWIZZLE_ENABLE : 2; - unsigned int STRIDE : 14; - unsigned int BASE_ADDRESS_HI : 16; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - - union SQ_BUF_RSRC_WORD2 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int NUM_RECORDS : 32; -#elif defined(BIGENDIAN_CPU) - unsigned int NUM_RECORDS : 32; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - - union SQ_BUF_RSRC_WORD3 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int DST_SEL_X : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_W : 3; - unsigned int NUM_FORMAT : 3; - unsigned int DATA_FORMAT : 4; - unsigned int ELEMENT_SIZE : 2; - unsigned int INDEX_STRIDE : 2; - unsigned int ADD_TID_ENABLE : 1; - unsigned int ATC__CI__VI : 1; - unsigned int HASH_ENABLE : 1; - unsigned int HEAP : 1; - unsigned int MTYPE__CI__VI : 3; - unsigned int TYPE : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int TYPE : 2; - unsigned int MTYPE__CI__VI : 3; - unsigned int HEAP : 1; - unsigned int HASH_ENABLE : 1; - unsigned int ATC__CI__VI : 1; - unsigned int ADD_TID_ENABLE : 1; - unsigned int INDEX_STRIDE : 2; - unsigned int ELEMENT_SIZE : 2; - unsigned int DATA_FORMAT : 4; - unsigned int NUM_FORMAT : 3; - unsigned int DST_SEL_W : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_X : 3; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - union SQ_BUF_RSRC_WORD3_GFX10 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int DST_SEL_X : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_W : 3; - unsigned int FORMAT : 7; - unsigned int RESERVED1 : 2; - unsigned int INDEX_STRIDE : 2; - unsigned int ADD_TID_ENABLE : 1; - unsigned int RESOURCE_LEVEL : 1; - unsigned int RESERVED2 : 3; - unsigned int OOB_SELECT : 2; - unsigned int TYPE : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int TYPE : 2; - unsigned int OOB_SELECT : 2; - unsigned int RESERVED2 : 3; - unsigned int RESOURCE_LEVEL : 1; - unsigned int ADD_TID_ENABLE : 1; - unsigned int INDEX_STRIDE : 2; - unsigned int RESERVED1 : 2; - unsigned int FORMAT : 7; - unsigned int DST_SEL_W : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_X : 3; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - - // From V# Table - union SQ_BUF_RSRC_WORD3_GFX11 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int DST_SEL_X : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_W : 3; - unsigned int FORMAT : 6; - unsigned int RESERVED1 : 3; - unsigned int INDEX_STRIDE : 2; - unsigned int ADD_TID_ENABLE : 1; - unsigned int RESERVED2 : 4; - unsigned int OOB_SELECT : 2; - unsigned int TYPE : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int TYPE : 2; - unsigned int OOB_SELECT : 2; - unsigned int RESERVED2 : 4; - unsigned int ADD_TID_ENABLE : 1; - unsigned int INDEX_STRIDE : 2; - unsigned int RESERVED1 : 3; - unsigned int FORMAT : 6; - unsigned int DST_SEL_W : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_X : 3; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; - // From V# Table - union SQ_BUF_RSRC_WORD3_GFX12 { - struct { -#if defined(LITTLEENDIAN_CPU) - unsigned int DST_SEL_X : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_W : 3; - unsigned int FORMAT : 6; - unsigned int RESERVED1 : 3; - unsigned int INDEX_STRIDE : 2; - unsigned int ADD_TID_ENABLE : 1; - unsigned int WRITE_COMPRESS_ENABLE : 1; - unsigned int COMPRESSION_EN : 1; - unsigned int COMPRESSION_ACCESS_MODE : 2; - unsigned int OOB_SELECT : 2; - unsigned int TYPE : 2; -#elif defined(BIGENDIAN_CPU) - unsigned int TYPE : 2; - unsigned int OOB_SELECT : 2; - unsigned int COMPRESSION_ACCESS_MODE : 2; - unsigned int COMPRESSION_EN : 1; - unsigned int WRITE_COMPRESS_ENABLE : 1; - unsigned int ADD_TID_ENABLE : 1; - unsigned int INDEX_STRIDE : 2; - unsigned int RESERVED1 : 3; - unsigned int FORMAT : 6; - unsigned int DST_SEL_W : 3; - unsigned int DST_SEL_Z : 3; - unsigned int DST_SEL_Y : 3; - unsigned int DST_SEL_X : 3; -#endif - } bitfields, bits; - unsigned int u32All; - signed int i32All; - float f32All; - }; -#endif // header guard diff --git a/inc/thunk_proxy/thunk_proxy.h b/inc/thunk_proxy/thunk_proxy.h deleted file mode 100644 index fcdb5ea4de..0000000000 --- a/inc/thunk_proxy/thunk_proxy.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef _WSL_INC_THUNK_PROXY_H_ -#define _WSL_INC_THUNK_PROXY_H_ - -#include - -namespace thunk_proxy { -enum AllocDomain { - kSystem, - kLocal, - kUserMemory, - kUserQueue, - kDomainCount, -}; - -enum MemFlag { - kFineGrain = (1ULL << 0), - kKernarg = (1ULL << 1), -}; - -enum EngineFlag { - KCOMPUTE0 = (1ULL << 0), - KDRMDMA = (1ULL << 1), - KDRMDMA1 = (1ULL << 2), -}; - -enum SchedLevel { - kLow = 0, - kNormal = 1, - kHigh = 2, -}; - -enum AsicFamilyType { - kPlumBONITO, - kNavi44, - kNavi48 -}; - -struct HwsInfo { - union { - struct { - uint32_t gfxHwsEnabled : 1; - uint32_t computeHwsEnabled : 1; - uint32_t dmaHwsEnabled : 1; - uint32_t dma1HwsEnabled : 1; - uint32_t reserved : 28; - } hwsMask; - uint32_t osHwsEnableFlags; - }; - uint64_t engineOrdinalMask; // Indicates which engines (by ordinal) support MES HWS -}; - -typedef struct { - int major; - int minor; - int stepping; - bool is_dgpu; - char product_name[MAX_PATH]; - const char *uuid; - AsicFamilyType family; - uint32_t device_id; - uint32_t wavefront_size; - uint32_t compute_unit_count; - uint32_t max_engine_clock_mhz; - uint32_t watch_points_num; - uint32_t pci_bus_addr; - uint32_t memory_bus_width; - uint32_t max_memory_clock_mhz; - uint64_t gpu_counter_frequency; - uint32_t wave_per_cu; - uint32_t simd_per_cu; - uint32_t max_scratch_slots_per_cu; - uint32_t num_shader_engine; - uint32_t shader_array_per_shader_engine; - uint32_t domain; - uint32_t num_gws; - uint32_t asic_revision; - uint64_t local_visible_heap_size; - uint64_t local_invisible_heap_size; - uint64_t private_aperture_base; - uint64_t private_aperture_size; - uint64_t shared_aperture_base; - uint64_t shared_aperture_size; - uint32_t user_queue_size; - uint32_t lds_size; - uint32_t big_page_alignment_size; - uint32_t hw_big_page_min_alignment_size; - uint32_t hw_big_page_alignment_size; - bool enable_big_page_alignment; - uint32_t mec_fw_version; - uint32_t sdma_fw_version; - uint32_t l1_cache_size; - uint32_t l2_cache_size; - uint32_t l3_cache_size; - uint32_t gl2_cacheline_size; - uint32_t num_cp_queues; - HwsInfo hwsInfo; - std::vector sdma_schedid; - uint32_t compute_schedid; - bool state_shadowing_by_cpfw; - bool platform_atomic_support; - void *adapter_info; - void *adapter_ex_info; -} DeviceInfo; - -int EngineOrdinal(int engine, DeviceInfo *device_info); -bool GetHwsEnabled(int engine, DeviceInfo *device_info); -bool ShouldDisableGpuTimeout(int engine, DeviceInfo *device_info); -bool ParseAdapterInfo(D3DKMT_HANDLE adapter, DeviceInfo *device_info); -bool QueryAdapterSupported(D3DKMT_HANDLE adapter); - -uint32_t QueueEngine2EngineFlag(uint32_t queue_engine); -void SetAllocationInfo(void *data, uint64_t size, AllocDomain domain, - uint64_t addr, uint32_t mem_flags, uint32_t engine_flag, const DeviceInfo &device_info); -bool CreatePrivateAllocInfo(int num_handles, void **ppdrv_priv, void **ppalloc_priv, - int *pdrv_priv_data_size, int *palloc_priv_data_size); -void DestroyPrivateAllocInfo(void *drv_priv, void *alloc_priv); - -int CreateSubmitPrivData(void **priv_data, D3DKMT_HANDLE queue, uint64_t command_addr, - uint64_t command_size, bool is_hw_queue); -int CreateHwQueuePrivData(void **priv_data, D3DKMT_HANDLE context, - bool FwManagedGfxState, SchedLevel level = kNormal); -int CreateContextPrivData(void **priv_data, bool FwManagedGfxState); -int CreatePowerOptPrivData(void **priv_data, bool restore); -int CreateCalibratedTimestampsPrivData(void **priv_data); -void QueryCalibratedTimestamps(void* priv, uint64_t* gpu, uint64_t* cpu); -void DestroyPrivData(void *priv_data); -} -#endif diff --git a/inc/thunk_proxy/wddm_types.h b/inc/thunk_proxy/wddm_types.h deleted file mode 100644 index 83422a83d3..0000000000 --- a/inc/thunk_proxy/wddm_types.h +++ /dev/null @@ -1,155 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2014-2015, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_THUNK_PROXY_WDDM_TYPES_H_ -#define _WSL_INC_THUNK_PROXY_WDDM_TYPES_H_ - -#include - -#include - -typedef uint32_t UINT, *UINT_PTR; -typedef int32_t INT32; -typedef int32_t LONG; -typedef uint32_t ULONG, *ULONG_PTR; -typedef int64_t LONGLONG; -typedef int64_t LONG64; -typedef uint64_t ULONGLONG; -typedef uint64_t ULONG64, *ULONG64_PTR; -typedef uint8_t BYTE; -typedef uint16_t WORD; -typedef uint32_t DWORD; -typedef int32_t BOOL; -typedef int32_t NTSTATUS; -typedef uint16_t USHORT; -typedef uint16_t UINT16; -typedef uint32_t UINT32; -typedef uint64_t UINT64; -typedef int32_t INT; -typedef uint64_t SIZE_T; -typedef void VOID; -typedef float FLOAT; -typedef char CHAR; -typedef unsigned char UCHAR; -typedef UCHAR BOOLEAN; -typedef int16_t WCHAR; -typedef void *HANDLE; -typedef void *PVOID; -typedef void *LPVOID; -typedef const int16_t *PCWSTR; - -#define ULONG ULONG -#define ULONG_PTR ULONG_PTR -#define USHORT USHORT - -#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name -#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] - -DECLARE_HANDLE(HWND); -DECLARE_HANDLE(HDC); -DECLARE_HANDLE(PALETTEENTRY); - -typedef struct tagPOINT { - LONG x; - LONG y; -} POINT; - -typedef struct tagRECT { - LONG left; - LONG top; - LONG right; - LONG bottom; -} RECT; - -typedef struct tagRECTL { - LONG left; - LONG top; - LONG right; - LONG bottom; -} RECTL; - -typedef union _LARGE_INTEGER { - struct { - DWORD LowPart; - DWORD HighPart; - } u; - LONGLONG QuadPart; -} LARGE_INTEGER; - -typedef LARGE_INTEGER *PLARGE_INTEGER; - -typedef struct _LUID { - ULONG LowPart; - LONG HighPart; -} LUID, *PLUID; - -typedef enum _DEVICE_POWER_STATE { - PowerDeviceUnspecified = 0, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum -} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; - -#define _Check_return_ -#define APIENTRY -#define CONST const -#define IN -#define OUT -#define FAR -#define MAX_PATH 260 -#define __stdcall - -#ifndef GUID_DEFINED -#define GUID_DEFINED -typedef struct _GUID { - uint32_t Data1; - uint16_t Data2; - uint16_t Data3; - uint8_t Data4[ 8 ]; -} GUID; -#endif - -#include - -#endif diff --git a/inc/wddm/cmd_util.h b/inc/wddm/cmd_util.h deleted file mode 100644 index 7ea0d80d3a..0000000000 --- a/inc/wddm/cmd_util.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. */ - -#ifndef _WSL_INC_WDDM_CMD_UTIL_H_ -#define _WSL_INC_WDDM_CMD_UTIL_H_ - -#include -#include "hsa-runtime/inc/hsa.h" -#include "hsa-runtime/inc/amd_hsa_queue.h" -#include "hsa-runtime/inc/amd_hsa_kernel_code.h" -#include "inc/pm4_cmds.h" -#include "util/utils.h" -#include "libhsakmt.h" - -namespace wsl { -namespace thunk { - -struct DispatchInfo { - uint8_t major; - hsa_kernel_dispatch_packet_t *pPacket; - void *pEntry; - const amd_kernel_code_t *pKernelObject; - uint32_t ldsBlks; - amd_queue_t *pAmdQueue; - bool wave32; - uint32_t srd; - void *pScratchBase; - uint32_t scratchSizePerWave; - uint32_t scratchBaseOffset[2]; - uint32_t offsetCnt; -}; - -class CmdUtil { -public: - CmdUtil() {}; - ~CmdUtil() {}; - - size_t BuildCopyData( - uint64_t *pDstAddr, - void *pBuffer, - uint32_t dstSel = dst_sel__mec_copy_data__tc_l2, - uint32_t dstCachePolicy = dst_cache_policy__mec_copy_data__stream, - uint32_t srcSel = src_sel__mec_copy_data__gpu_clock_count, - uint32_t srcCachePolicy = src_cache_policy__mec_copy_data__lru, - uint32_t countSel = count_sel__mec_copy_data__64_bits_of_data, - uint32_t wrConfirm = wr_confirm__mec_copy_data__wait_for_confirmation); - - size_t BuildBarrier( - void *pBuffer, - uint32_t eventIndex = event_index__mec_event_write__cs_partial_flush, - uint32_t eventType = CS_PARTIAL_FLUSH); - - size_t BuildWriteData64Command( - void *pBuffer, - uint64_t* write_addr, - uint64_t write_value); - - size_t BuildAcquireMem( - uint8_t major, - void *pBuffer); - - size_t BuildScratch( - void *pScratchBase, - void *pBuffer); - - size_t BuildComputeShaderParams( - void *pBuffer); - - size_t BuildDispatch( - struct DispatchInfo *pInfo, - void *pBuffer); - - size_t BuildAtomicMem( - uint64_t *pAddr, - uint32_t atomic, - void *pBuffer, - uint32_t cachePolicy = cache_policy__mec_atomic_mem__stream, - uint64_t srcData = 1); -}; - -} // namespace thunk -} // namespace wsl - -#endif \ No newline at end of file diff --git a/inc/wddm/device.h b/inc/wddm/device.h deleted file mode 100644 index 98a759adf3..0000000000 --- a/inc/wddm/device.h +++ /dev/null @@ -1,257 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_WDDM_DEVICE_H_ -#define _WSL_INC_WDDM_DEVICE_H_ - -#include -#include - -#include -#include -#include - -#include "inc/wddm/types.h" -#include "inc/thunk_proxy/thunk_proxy.h" -#include "inc/wddm/va_mgr.h" -#include "inc/wddm/status.h" -#include "inc/wddm/types.h" -#include "inc/wddm/gpu_memory.h" -#include "inc/wddm/cmd_util.h" - -namespace wsl { -namespace thunk { - -//class Queue; -class WDDMQueue; - -// WSL2 hyperv GPADL protocol limitation -#define MAX_USERPTR_BLOCK_SIZE 0xf0000000 -#define START_NON_CANONICAL_ADDR (1ULL << 47) -#define END_NON_CANONICAL_ADDR (~0UL - (1UL << 47)) -#define IS_OVERLAPPING(start1, size1, start2, size2) \ - ((start1 < (start2 + size2)) && (start2 < (start1 + size1))) - -class WDDMDevice { -public: - static constexpr size_t GpuMemoryChunkSize = 2 * (1ULL << 30); // 2 GB - - WDDMDevice(D3DKMT_HANDLE adapter, LUID adapter_luid); - ~WDDMDevice(); - - int Major() { return device_info_.major; } - int Minor() { return device_info_.minor; } - int Stepping() { return device_info_.stepping; } - bool IsDgpu() { return device_info_.is_dgpu; } - const char *ProductName() { return device_info_.product_name; } - const char *Uuid() { return device_info_.uuid; } - thunk_proxy::AsicFamilyType GfxFamily() { return device_info_.family; } - uint32_t DeviceId() { return device_info_.device_id; } - uint32_t WavefrontSize() { return device_info_.wavefront_size; } - uint32_t ComputeUnitCount() { return device_info_.compute_unit_count; } - uint32_t MaxEngineClockMhz() { return device_info_.max_engine_clock_mhz; } - uint32_t WatchPointsNum() { return device_info_.watch_points_num; } - uint32_t PciBusAddr() { return device_info_.pci_bus_addr; } - - uint32_t MemoryBusWidth() { return device_info_.memory_bus_width; } - uint32_t MaxMemoryClockMhz() { return device_info_.max_memory_clock_mhz; } - uint32_t WavePerCu() { return device_info_.wave_per_cu; } - uint32_t SimdPerCu() { return device_info_.simd_per_cu; } - uint32_t MaxScratchSlotsPerCu() { return device_info_.max_scratch_slots_per_cu; } - uint32_t NumShaderEngine() { return device_info_.num_shader_engine; } - uint32_t ShaderArrayPerShaderEngine() { return device_info_.shader_array_per_shader_engine; } - uint32_t NumSdmaEngine() { return device_info_.sdma_schedid.size(); } - uint32_t Domain() { return device_info_.domain; } - uint32_t NumGws() { return device_info_.num_gws; } - uint32_t AsicRevision() { return device_info_.asic_revision; } - uint64_t LocalHeapSize() { return device_info_.local_visible_heap_size + device_info_.local_invisible_heap_size; } - uint64_t LocalVisibleHeapSize() { return device_info_.local_visible_heap_size; } - uint64_t LocalInvisibleHeapSize() { return device_info_.local_invisible_heap_size; } - uint64_t PrivateApertureBase() { return device_info_.private_aperture_base; } - uint64_t PrivateApertureSize() { return device_info_.private_aperture_size; } - uint64_t SharedApertureBase() { return device_info_.shared_aperture_base; } - uint64_t SharedApertureSize() { return device_info_.shared_aperture_size; } - uint32_t LdsSize() { return device_info_.lds_size; } - uint64_t GPUCounterFrequency() { return device_info_.gpu_counter_frequency; } - uint32_t GetSwsQueueSize(void) const { return device_info_.user_queue_size; } - uint32_t GetMecFwVersion() { return device_info_.mec_fw_version; } - uint32_t GetSdmaFwVersion() { return device_info_.sdma_fw_version; } - uint32_t GetL1CacheSize() { return device_info_.l1_cache_size; } - uint32_t GetL2CacheSize() { return device_info_.l2_cache_size; } - uint32_t GetL3CacheSize() { return device_info_.l3_cache_size; } - uint32_t Gl2CacheLineSize() { return device_info_.gl2_cacheline_size; } - bool SupportStateShadowingByCpFw(void) const { return device_info_.state_shadowing_by_cpfw; } - bool SupportPlatformAtomic(void) const { return device_info_.platform_atomic_support; } - uint32_t GetSdmaEngine(uint32_t idx) { - assert(idx < NumSdmaEngine()); - return device_info_.sdma_schedid[idx]; - } - uint32_t GetComputeEngine() { return device_info_.compute_schedid; } - - uint64_t VramAvail(); - - void GetClockCounters(uint64_t *gpu, uint64_t *cpu); - uint32_t GetNumCpQueues() { return device_info_.num_cp_queues; } - - bool CreateSyncobj(D3DKMT_HANDLE *handle, uint64_t **addr); - void DestroySyncobj(D3DKMT_HANDLE handle); - - bool CreateQueue(WDDMQueue *queue); - void DestroyQueue(WDDMQueue *queue); - bool CreateHwQueue(WDDMQueue *queue); - bool DestroyHwQueue(WDDMQueue *queue); - bool SubmitToSwQueue(WDDMQueue *queue, uint64_t command_addr, - uint64_t command_size, uint64_t fence_value); - bool SubmitToHwQueue(WDDMQueue *queue, uint64_t command_addr, - uint64_t command_size, uint64_t fence_value); - - bool WaitPagingFence(WDDMQueue *queue) { - uint64_t value = page_fence_value_; - - if (*page_fence_addr_ < value && - !GpuWait(queue, &page_syncobj_, &value, 1)) - return false; - - return true; - } - - bool GpuWait(WDDMQueue *queue, const D3DKMT_HANDLE *syncobjs, - uint64_t *values, int count); - bool GpuSignal(D3DKMT_HANDLE context, const D3DKMT_HANDLE *syncobjs, - uint64_t *value, int count); - bool CpuWait(const D3DKMT_HANDLE *syncobjs, uint64_t *value, - int count, bool wait_any); - bool WaitOnPagingFenceFromCpu(); - - uint32_t LdsBlocks(const hsa_kernel_dispatch_packet_t *pkt); - uint32_t GetCmdbufSize(void) const { return cmdbuf_size_; } - uint32_t GetAqlFrameSize(void) const { return cmdbuf_aql_frame_size_; } - static uint32_t GetAqlFrameNum(void) { return cmdbuf_aql_frame_num_; } - - // Both legacy HWS and stage 1 HWS use KMD to alloc use queue memory, - // return false by default - bool AllocUserQueueMemFromUMD(void) const { return false; } - - bool IsHwsEnabled(int engine) { - return thunk_proxy::GetHwsEnabled(engine, &device_info_); - } - - void UpdatePageFence(uint64_t fence_value); - - D3DKMT_HANDLE PagingQueue() const { return page_queue_; } - D3DKMT_HANDLE PagingFence() const { return page_syncobj_; } - D3DKMT_HANDLE DeviceHandle() const { return device_; } - LUID GetLuid() const { return adapter_luid_; } - - const thunk_proxy::DeviceInfo& DeviceInfo() const { return device_info_; } - - ErrorCode ReserveGpuVirtualAddress(thunk_proxy::AllocDomain domain, - gpusize hit_base_addr, - gpusize size, - gpusize *out_gpu_virtual_addr, - gpusize alignment, - bool lock=false); - - ErrorCode FreeGpuVirtualAddress(thunk_proxy::AllocDomain domain, - gpusize base_addr, - gpusize size); - - ErrorCode CreateGpuMemory(const GpuMemoryCreateInfo &create_info, GpuMemory **gpu_mem); - ErrorCode HandleApertureAlloc(gpusize size, gpusize *out_gpu_virt_addr); - void HandleApertureFree(gpusize gpu_addr); - -private: - bool ParseDeviceInfo(void); - void DestroyDeviceInfo(void); - bool CreateDevice(void); - bool DestroyDevice(void); - bool CreatePagingQueue(void); - bool DestroyPagingQueue(void); - void *Lock(D3DKMT_HANDLE handle); - bool Unlock(D3DKMT_HANDLE handle); - bool CreateContext(int engine, D3DKMT_HANDLE *handle); - bool DestroyContext(D3DKMT_HANDLE handle); - - void SetPowerOptimization(bool restore); - void InitCmdbufInfo(void); - bool ReserveSystemHeapSpace(void); - bool FreeSystemHeapSpace(void); - bool ReserveLocalHeapSpace(void); - bool InitHandleApertureSpace(void); - bool CommitSystemHeapSpace(void* addr, int64_t size, bool lock=false); - bool DecommitSystemHeapSpace(void* addr, int64_t size); - bool FreeLocalHeapSpace(void); - void InitVaMgr(); - void InitHandleApertureMgr(); - - D3DKMT_HANDLE adapter_; - LUID adapter_luid_; - D3DKMT_HANDLE device_; - - D3DKMT_HANDLE page_queue_; - D3DKMT_HANDLE page_syncobj_; - uint64_t *page_fence_addr_; - std::atomic page_fence_value_; - - uint64_t handle_aperture_start_; - uint64_t handle_aperture_size_; - uint64_t local_heap_space_start_; - uint64_t local_heap_space_size_; - uint64_t system_heap_space_start_; - uint64_t system_heap_space_size_; - uint32_t cmdbuf_size_; - uint32_t cmdbuf_aql_frame_size_; - static const uint32_t cmdbuf_aql_frame_num_; - // device info - thunk_proxy::DeviceInfo device_info_; - - std::unique_ptr local_va_mgr_; - std::unique_ptr handle_aperture_mgr_; - //CmdUtil cmd_util; -}; - -NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters); - -} // namespace thunk -} // namespace wsl - -#endif diff --git a/inc/wddm/gpu_memory.h b/inc/wddm/gpu_memory.h deleted file mode 100644 index da0433c7bc..0000000000 --- a/inc/wddm/gpu_memory.h +++ /dev/null @@ -1,227 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_WDDM_GPU_MEMORY_H_ -#define _WSL_INC_WDDM_GPU_MEMORY_H_ - -#include -#include -#include "util/utils.h" -#include "inc/wddm/types.h" -#include "inc/wddm/thunks.h" -#include "inc/thunk_proxy/thunk_proxy.h" - -namespace wsl { -namespace thunk { - -class WDDMDevice; - -union GpuMemoryCreateFlags { - struct { - uint64_t virtual_alloc : 1; // only allocate virtual address, without physical buffer - uint64_t physical_only : 1; // only allocate physical buffer, without virutal address - uint64_t interprocess : 1; // physical buffer need share info between exporter and importer - uint64_t locked : 1; // lock virtual address space into RAM, preventing that memory from being paged to the swap area - uint64_t physical_contiguous : 1; // contiguous physical pages - uint64_t unused : 59; - }; - uint64_t reserved; -}; - -struct GpuMemoryCreateInfo { - GpuMemoryCreateInfo() { - flags.reserved = 0; - domain = thunk_proxy::kLocal; - size = 0; - alignment = 0; - mem_flags = 0; - engine_flag = 0; - va_hint = 0; - user_ptr = nullptr; - dmabuf_fd = -1; - } - - GpuMemoryCreateFlags flags; - thunk_proxy::AllocDomain domain; - gpusize size; - gpusize alignment; - int mem_flags; - int engine_flag; - int dmabuf_fd; // Import from dmabuf - - void *user_ptr; - gpusize va_hint; -}; - -struct GpuMemoryDesc { - GpuMemoryDesc() { - gpu_addr = 0; - cpu_addr = nullptr; - client_size = 0; - size = alignment = 0; - flags.reserved = 0; - mem_flags = 0; - engine_flag = 0; - handle_ape_addr = 0; - } - - thunk_proxy::AllocDomain domain; - LUID adapter_luid; // Where is the backing store location - gpusize gpu_addr; - void *cpu_addr; - gpusize client_size; // user request size - gpusize size; - gpusize alignment; - gpusize handle_ape_addr; - - union { - struct { - uint32_t is_virtual : 1; - uint32_t is_shared : 1; - uint32_t is_external : 1; - uint32_t is_physical_only : 1; - uint32_t is_locked : 1; - uint32_t is_queue_referenced : 1; - uint32_t is_physical_contiguous : 1; - uint32_t unused : 25; - }; - - uint32_t reserved; - } flags; - - int mem_flags; - int engine_flag; -}; - -struct SharedHandleInfo { - thunk_proxy::AllocDomain domain; - LUID adapter_luid; - gpusize client_size; // user request size - uint64_t size; - uint32_t flags; - int mem_flags; -}; - -using GpuMemoryHandle = void *; - -class GpuMemory { -public: - static size_t CalcChunkNumbers(gpusize size); - - ErrorCode Init(const GpuMemoryCreateInfo &create_info); - - WDDMDevice *GetDevice() const { return device_; } - gpusize Size() const { return desc_.size; } - gpusize ClientSize() const { return desc_.client_size; } - uint64_t GpuAddress() const { return desc_.gpu_addr; } - void *CpuAddress() const { return desc_.cpu_addr; } - uint64_t HandleApeAddress() const { return desc_.handle_ape_addr; } - - inline bool IsLocal() const { return desc_.domain == thunk_proxy::kLocal; } - inline bool IsUserMemory() const { return desc_.domain == thunk_proxy::kUserMemory; } - inline bool IsSystem() const { return desc_.domain == thunk_proxy::kSystem; } - inline bool IsUserQueue() const { return desc_.domain == thunk_proxy::kUserQueue; } - inline bool IsPhysicalOnly() const { return desc_.flags.is_physical_only; } - inline bool IsPhysicalContiguous() const { return desc_.flags.is_physical_contiguous; } - inline bool IsVirtual() const { return desc_.flags.is_virtual; } - inline bool IsShared() const { return desc_.flags.is_shared; } - inline bool IsExternal() const { return desc_.flags.is_external; } - - inline uint32_t Flags() const { return desc_.flags.reserved; } - inline int GetAllocInfo() const { return desc_.mem_flags; } - inline bool IsFineGrain() const { return (desc_.mem_flags & thunk_proxy::kFineGrain); } - inline bool IsSameAdapter(const LUID &luid) const { - return (desc_.adapter_luid.HighPart == luid.HighPart && - desc_.adapter_luid.LowPart == luid.LowPart); - } - inline void GetQueueReference() { desc_.flags.is_queue_referenced = 1; } - inline void PutQueueReference() { desc_.flags.is_queue_referenced = 0; } - inline bool IsQueueReferenced() const { return desc_.flags.is_queue_referenced; } - - WinAllocationHandle GetAllocationHandle(size_t index) const { return alloc_handles_ptr_[index]; } - size_t NumChunks() const { return num_allocations_; } - - const GpuMemoryHandle GetGpuMemoryHandle() const { - return reinterpret_cast(const_cast(this)); - } - - static GpuMemory *Convert(GpuMemoryHandle handle) { return reinterpret_cast(handle); } - - ErrorCode ReserveGpuVirtualAddress(gpusize base_virt_addr, gpusize va_size, gpusize alignment); - ErrorCode FreeGpuVirtualAddress(gpusize va_start_address, gpusize va_size); - - ErrorCode MapGpuVirtualAddress(const gpusize map_addr, const gpusize size, gpusize offset = 0); - ErrorCode UnmapGpuVirtualAddress(const gpusize map_addr, const gpusize size, gpusize offset = 0); - - ErrorCode MakeResident(); - ErrorCode Evict(); - - ErrorCode ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags = SHARED_ALLOCATION_ALL_ACCESS); - ErrorCode ImportPhysicalHandle(int dmabuf_fd); - ~GpuMemory(); -protected: - explicit GpuMemory(WDDMDevice *device); -private: - ErrorCode CreatePhysicalMemory(); - ErrorCode FreePhysicalMemory(); - - uint64_t AdjustSize(gpusize size) const; -private: - friend class WDDMDevice; - - WDDMDevice *const device_; - - GpuMemoryDesc desc_; - - size_t num_allocations_; - WinAllocationHandle *alloc_handles_ptr_; - WinAllocationHandle alloc_handle_; // Optimization for num_allocations_ is 1 - - WinResourceHandle resource_; // Handle to a resource object that wraps the allocation. Used for shared resources - - DISALLOW_COPY_AND_ASSIGN(GpuMemory); -}; - -} // namespace thunk -} // namespace wsl - -#endif diff --git a/inc/wddm/queue.h b/inc/wddm/queue.h deleted file mode 100644 index fc600562f5..0000000000 --- a/inc/wddm/queue.h +++ /dev/null @@ -1,363 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// -#ifndef _WSL_INC_WDDM_QUEUE_H_ -#define _WSL_INC_WDDM_QUEUE_H_ - -#include -#include -#include -#include -#include -#include "inc/wddm/types.h" -#include "inc/wddm/device.h" -#include "inc/wddm/gpu_memory.h" -#include "hsa-runtime/inc/hsa_ext_amd.h" -#include "hsa-runtime/inc/amd_hsa_queue.h" -#include "hsa-runtime/inc/amd_hsa_signal.h" -#include "inc/wddm/cmd_util.h" - -namespace wsl { -namespace thunk { - -class Queue; -class WDDMDevice; - -class WDDMQueue { -public: - WDDMQueue(WDDMDevice *device, - uint64_t cmdbuf_addr, - uint32_t cmdbuf_size, - uint32_t engine, - bool use_hws = true) : - device(device), - context(0), - queue(0), - syncobj(0), - sync_addr(NULL), - cmdbuf(0), - cmdbuf_addr(cmdbuf_addr), - cmdbuf_size(cmdbuf_size), - queue_engine(engine), - use_hws(use_hws), - prio(thunk_proxy::kNormal) { - - } - - virtual ~WDDMQueue() { } - - virtual hsa_status_t Init(void) { return HSA_STATUS_SUCCESS; } - virtual hsa_status_t Fini(void) { return HSA_STATUS_SUCCESS; } - virtual void RingDoorbell() { } - virtual void* GetHsaQueueAddr(void) const { return reinterpret_cast(GetCmdbufAddr()); } - - hsa_status_t SwsInit(void); - hsa_status_t SwsFini(void); - hsa_status_t SwsSubmit(uint64_t command_addr, - uint64_t command_size, - uint64_t fence_value); - - hsa_status_t HwsInit(void); - hsa_status_t HwsFini(void); - hsa_status_t HwsSubmit(uint64_t command_addr, - uint64_t command_size, - uint64_t fence_value); - hsa_status_t SetPriority(hsa_amd_queue_priority_t priority); - - uint64_t *GetSyncAddr(void) const { return sync_addr; } - uint64_t GetCmdbufAddr(void) const { return cmdbuf_addr; } - - thunk_proxy::SchedLevel ConvertSchedLevel(hsa_amd_queue_priority_t prio) const { - switch (prio) { - case HSA_AMD_QUEUE_PRIORITY_LOW: - return thunk_proxy::kLow; - case HSA_AMD_QUEUE_PRIORITY_HIGH: - return thunk_proxy::kHigh; - case HSA_AMD_QUEUE_PRIORITY_NORMAL: - default: - return thunk_proxy::kNormal; - } - } - - WDDMDevice *device; - - D3DKMT_HANDLE context; - D3DKMT_HANDLE queue; - - D3DKMT_HANDLE syncobj; - uint64_t *sync_addr; - - GpuMemoryHandle cmdbuf; - uint64_t cmdbuf_addr; - uint32_t cmdbuf_size; - - GpuMemoryHandle queue_mem; - uint64_t queue_addr; - - uint32_t queue_engine; - - bool use_hws; - thunk_proxy::SchedLevel prio; -}; - -class ComputeQueue : public WDDMQueue { -public: - ComputeQueue(WDDMDevice *device, - void *ring, - uint64_t ring_size, - std::atomic *ring_wptr, - std::atomic *ring_rptr, - volatile int64_t *error_addr, - uint32_t cmdbuf_size, - uint32_t engine, - bool use_hws = true); - - ~ComputeQueue(); - - virtual hsa_status_t Init(void); - virtual hsa_status_t Fini(void); - virtual hsa_status_t Submit(void); - - void* GetRing(void) const { return ring; } - uint64_t GetRingSize(void) const { return ring_size; } - std::atomic* GetRingWptr(void) const { return ring_wptr; } - std::atomic* GetRingRptr(void) const { return ring_rptr; } - - uint64_t GetAqlWriteIndex(void) const { return cmdbuf_aql_frame_write_index; } - uint32_t GetAqlFrameSize(void) const { return cmdbuf_aql_frame_size; } - void* GetHsaQueueAddr(void) const { return ring; } - - bool IsInvalidPacket(void) const { - uint16_t *packet = (uint16_t *)((char *)ring + - (cmdbuf_aql_frame_write_index % ring_size) * 64); - return ((*packet >> HSA_PACKET_HEADER_TYPE) & ((1 << HSA_PACKET_HEADER_WIDTH_TYPE) - 1)) - == HSA_PACKET_TYPE_INVALID; - } - - hsa_status_t Process(void); - uint64_t * GetDoorbellPtr() const { return (uint64_t *)&doorbell_signal_value_; } - void RingDoorbell(); -private: - hsa_status_t KernelDispatchAqlToPm4(char *cpu, hsa_kernel_dispatch_packet_t *packet); - hsa_status_t BarrierGenericAqlToPm4(char *cpu, hsa_barrier_and_packet_t *packet, bool is_or = false); - struct amd_aql_pm4_ib { - uint16_t header; - uint16_t ven_hdr; - uint32_t ib_jump_cmd[4]; - uint32_t dw_cnt_remain; - uint32_t reserved[8]; - hsa_signal_t completion_signal; - }; - hsa_status_t VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *packet); - hsa_status_t SwitchAql2PM4(void); - - hsa_status_t PreSubmit(void); - hsa_status_t EndSubmit(void); - - void *ring; - uint64_t ring_size; - std::atomic *ring_wptr; - std::atomic *ring_rptr; - - // ib_start_addr is the current ib start address - uint64_t ib_start_addr; - - // ib_size is the current ib size. - uint64_t ib_size; - - // record the last submitted aql frame write index - uint64_t sync_point; - - uint64_t cmdbuf_aql_frame_write_index; - uint32_t cmdbuf_aql_frame_size; - - uint64_t *signal_addr_; - bool platform_atomic_support_; - bool needs_barrier; - bool ready_to_submit; - - CmdUtil cmd_util; - -private: - bool EnableProfiling() { - return AMD_HSA_BITS_GET(amd_queue_rocr_->queue_properties, AMD_QUEUE_PROPERTIES_ENABLE_PROFILING); - } - void HandleError(hsa_status_t status); - bool UpdateScratch(uint32_t private_segment_size, bool wave32); - - uint32_t UpdateIndexStride(uint32_t srd, bool wave32); - - void *ScratchBase() { return scratch_base_; } - - void AppendCmdbufSratchBaseOffset(int offset) { - scratch_base_offset_array_.push_back(offset); - } - - bool RelocateCmdbufScratchBase(uint64_t addr); - - uint32_t ScratchSizePerWave() { return scratch_size_per_wave_; } - uint64_t GetKernelObjAddr(uint64_t addr) const; - void InitScratchSRD(); - GpuMemoryHandle amd_queue_mem_; - amd_queue_t *amd_queue_; - amd_queue_t *amd_queue_rocr_; - uint64_t doorbell_signal_value_; - volatile std::atomic *error_code_; - std::thread aql_to_pm4_thread_; - bool thread_stop_; - std::mutex thread_cond_lock_; - std::condition_variable thread_cond_; - static void AqlToPm4Thread(ComputeQueue *queue); - - uint32_t scratch_waves_; - uint32_t scratch_size_per_wave_; - uint32_t scratch_size_; - void *scratch_base_; - GpuMemoryHandle scratch_mem_; - - std::vector scratch_base_offset_array_; -}; - -class SDMAQueue : public WDDMQueue { -public: - SDMAQueue(WDDMDevice *device, - void *ring, - uint64_t cmdbuf_size, - uint32_t engine, - bool use_hws = true); - - virtual ~SDMAQueue(); - - hsa_status_t Init(void); - hsa_status_t Fini(void); - hsa_status_t Submit(void); - - int PreparePacket(uint32_t offset, uint64_t size); - - void WaitQueue(void) { - device->CpuWait(&syncobj, &rptr_next, 1, false); - } - - uint64_t * GetRingWptr(void) { return &wptr_next_; } - uint64_t * GetRingRptr(void) { return WDDMQueue::GetSyncAddr(); } - uint64_t * GetDoorbellPtr() { return &doorbell_; } - void RingDoorbell(); - void* GetHsaQueueAddr(void) const { return reinterpret_cast(GetCmdbufAddr()); } - -private: - uint64_t wptr_next_; - uint64_t wptr_pre_; - uint64_t rptr_next; - uint64_t doorbell_; - std::vector> wptr_queue_; - uint64_t ib_size; - uint64_t ib_start_addr; - - std::thread thread_; - bool thread_stop_; - std::mutex thread_cond_lock_; - std::condition_variable thread_cond_; - static void SdmaThread(SDMAQueue *queue); - - struct SDMA_PKT_POLL_REGMEM { - union { - struct { - unsigned int op : 8; - unsigned int sub_op : 8; - unsigned int reserved_0 : 10; - unsigned int hdp_flush : 1; - unsigned int reserved_1 : 1; - unsigned int func : 3; - unsigned int mem_poll : 1; - }; - unsigned int DW_0_DATA; - } HEADER_UNION; - - union { - struct { - unsigned int addr_31_0 : 32; - }; - unsigned int DW_1_DATA; - } ADDR_LO_UNION; - - union { - struct { - unsigned int addr_63_32 : 32; - }; - unsigned int DW_2_DATA; - } ADDR_HI_UNION; - - union { - struct { - unsigned int value : 32; - }; - unsigned int DW_3_DATA; - } VALUE_UNION; - - union { - struct { - unsigned int mask : 32; - }; - unsigned int DW_4_DATA; - } MASK_UNION; - - union { - struct { - unsigned int interval : 16; - unsigned int retry_count : 12; - unsigned int reserved_0 : 4; - }; - unsigned int DW_5_DATA; - } DW5_UNION; - }; - const unsigned int SDMA_OP_POLL_REGMEM = 8; - bool IsPollPacket(SDMA_PKT_POLL_REGMEM* pkt) { - return pkt->HEADER_UNION.op == SDMA_OP_POLL_REGMEM && - pkt->HEADER_UNION.mem_poll == 1 && - pkt->HEADER_UNION.func == 3; - } - uint32_t WrapIntoRocrRing(uint64_t idx) { return (idx & (cmdbuf_size - 1)); } -}; - -} // namespace thunk -} // namespace wsl - -#endif diff --git a/inc/wddm/status.h b/inc/wddm/status.h deleted file mode 100644 index 528264c74e..0000000000 --- a/inc/wddm/status.h +++ /dev/null @@ -1,60 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_WDDM_STATUS_H -#define _WSL_INC_WDDM_STATUS_H - -enum class ErrorCode { - Success, - DeviceLost, - UnSupported, - NotReady, - OutOfMemory, - OutOfGpuMemory, - OutOfHandleApeMemory, - Timeout, - SyscallFail, - InvalidateParams, - Unknown, -}; - -#endif diff --git a/inc/wddm/thunks.h b/inc/wddm/thunks.h deleted file mode 100644 index 6a573c1a09..0000000000 --- a/inc/wddm/thunks.h +++ /dev/null @@ -1,232 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_WDDM_THUNKS_H -#define _WSL_INC_WDDM_THUNKS_H - -#include "inc/wddm/status.h" -#include "inc/wddm/types.h" - -namespace wsl { -namespace thunk { - -inline ErrorCode TranslateNtStatus(NTSTATUS status) { - switch (status) { - case STATUS_SUCCESS: - return ErrorCode::Success; - case STATUS_PENDING: - return ErrorCode::NotReady; - case STATUS_NO_MEMORY: - return ErrorCode::OutOfMemory; - case STATUS_DEVICE_REMOVED: - return ErrorCode::DeviceLost; - case STATUS_GRAPHICS_NO_VIDEO_MEMORY: - return ErrorCode::OutOfGpuMemory; - case STATUS_TIMEOUT: - return ErrorCode::Timeout; - case STATUS_INVALID_PARAMETER: - return ErrorCode::InvalidateParams; - default: - break; - } - return ErrorCode::Unknown; -} - -namespace d3dthunk { - -typedef D3DKMT_CREATEALLOCATION CreateAllocationArgs; -typedef D3DKMT_CREATECONTEXT CreateContextArgs; -typedef D3DKMT_CREATECONTEXTVIRTUAL CreateContextVirtualArgs; -typedef D3DKMT_CREATEPAGINGQUEUE CreatePagingQueueArgs; -typedef D3DKMT_CREATESYNCHRONIZATIONOBJECT CreateSynchronizationObjectArgs; -typedef D3DKMT_CREATESYNCHRONIZATIONOBJECT2 CreateSynchronizationObject2Args; -typedef D3DKMT_ESCAPE EscapeArgs; -typedef D3DKMT_EVICT EvictArgs; -typedef D3DKMT_FREEGPUVIRTUALADDRESS FreeGpuVirtualAddressArgs; -typedef D3DKMT_LOCK LockArgs; -typedef D3DKMT_LOCK2 Lock2Args; -typedef D3DKMT_OPENRESOURCE OpenResourceArgs; -typedef D3DKMT_OPENRESOURCEFROMNTHANDLE OpenResourceFromNtHandleArgs; -typedef D3DKMT_QUERYADAPTERINFO QueryAdapterInfoArgs; -typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECT SignalSynchronizationObjectArgs; -typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECT2 SignalSynchronizationObject2Args; -typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMCPU SignalSynchronizationObjectFromCpuArgs; -typedef D3DKMT_SIGNALSYNCHRONIZATIONOBJECTFROMGPU2 SignalSynchronizationObjectFromGpuArgs; -typedef D3DKMT_SUBMITCOMMAND SubmitCommandArgs; -typedef D3DKMT_UNLOCK UnlockArgs; -typedef D3DKMT_UNLOCK2 Unlock2Args; -typedef D3DKMT_UPDATEGPUVIRTUALADDRESS UpdateGpuVirtualAddressArgs; -typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECT WaitForSynchronizationObjectArgs; -typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECT2 WaitForSynchronizationObject2Args; -typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMCPU WaitForSynchronizationObjectFromCpuArgs; -typedef D3DKMT_WAITFORSYNCHRONIZATIONOBJECTFROMGPU WaitForSynchronizationObjectFromGpuArgs; -typedef D3DKMT_ACQUIREKEYEDMUTEX AcquireKeyedMutexArgs; -typedef D3DKMT_RELEASEKEYEDMUTEX ReleaseKeyedMutexArgs; -typedef D3DKMT_OPENKEYEDMUTEX OpenKeyedMutexArgs; -typedef D3DKMT_DESTROYKEYEDMUTEX DestroyKeyedMutexArgs; -typedef D3DKMT_QUERYVIDEOMEMORYINFO QueryVideoMemoryInfoArgs; -typedef D3DKMT_CREATEHWQUEUE CreateHwQueueArgs; -typedef D3DKMT_DESTROYHWQUEUE DestroyHwQueueArgs; -typedef D3DKMT_SUBMITCOMMANDTOHWQUEUE SubmitCommandToHwQueueArgs; -typedef D3DKMT_SUBMITPRESENTTOHWQUEUE SubmitPresentToHwQueueArgs; -typedef D3DKMT_SUBMITSIGNALSYNCOBJECTSTOHWQUEUE SubmitSignalSyncObjectsToHwQueueArgs; -typedef D3DKMT_SUBMITWAITFORSYNCOBJECTSTOHWQUEUE SubmitWaitForSyncObjectsToHwQueueArgs; -typedef D3DKMT_CREATESYNCFILE CreateSyncFileArgs; - -inline ErrorCode MapGpuVirtualAddress(D3DDDI_MAPGPUVIRTUALADDRESS *args) { - return TranslateNtStatus(D3DKMTMapGpuVirtualAddress(args)); -} - -inline ErrorCode CreateAllocation(CreateAllocationArgs *args) { - return TranslateNtStatus(D3DKMTCreateAllocation2(args)); -} - -inline ErrorCode DestroyAllocation( - WinDeviceHandle device, - WinResourceHandle resource, - size_t num_allocations, - const WinAllocationHandle *alloc_handles) { - - D3DKMT_DESTROYALLOCATION2 args{}; - - memset(&args, 0, sizeof(args)); - args.hDevice = device; - if (resource) { - args.hResource = resource; - } else { - args.phAllocationList = alloc_handles; - args.AllocationCount = num_allocations; - } - - return TranslateNtStatus(D3DKMTDestroyAllocation2(&args)); -} - -inline ErrorCode ReserveGpuVirtualAddress(D3DDDI_RESERVEGPUVIRTUALADDRESS *args) { - return TranslateNtStatus(D3DKMTReserveGpuVirtualAddress(args)); -} - -inline ErrorCode ReserveGpuVirtualAddress(WinAdapterHandle handle, - gpusize size, - gpusize base_address, - gpusize *out_addr) { - D3DDDI_RESERVEGPUVIRTUALADDRESS args{}; - args.hPagingQueue = handle; - args.Size = size; - args.BaseAddress = base_address; - - auto code = ReserveGpuVirtualAddress(&args); - if (code == ErrorCode::Success) - *out_addr = args.VirtualAddress; - return code; -} - -inline ErrorCode ReserveGpuVirtualAddress(WinAdapterHandle handle, - gpusize size, - gpusize minimum_address, - gpusize maximum_address, - gpusize *out_addr) { - D3DDDI_RESERVEGPUVIRTUALADDRESS args{}; - args.hPagingQueue = handle; - args.Size = size; - args.MinimumAddress = minimum_address; - args.MaximumAddress = maximum_address; - - auto code = ReserveGpuVirtualAddress(&args); - if (code == ErrorCode::Success) - *out_addr = args.VirtualAddress; - return code; -} - -inline ErrorCode FreeGpuVirtualAddress(FreeGpuVirtualAddressArgs *args) { - return TranslateNtStatus(D3DKMTFreeGpuVirtualAddress(args)); -} - -inline ErrorCode FreeGpuVirtualAddress(WinAdapterHandle handle, - gpusize base_address, - gpusize size) { - FreeGpuVirtualAddressArgs args{}; - args.hAdapter = handle; - args.Size = size; - args.BaseAddress = base_address; - return FreeGpuVirtualAddress(&args); -} - -inline ErrorCode MakeResident(D3DDDI_MAKERESIDENT *args) { - return TranslateNtStatus(D3DKMTMakeResident(args)); -} - -inline ErrorCode Evict(EvictArgs *args) { - return TranslateNtStatus(D3DKMTEvict(args)); -} - -inline ErrorCode ShareObjects(size_t num_allocations, - WinResourceHandle resource, - uint32_t flags, - int* dmabuf_fd) { - OBJECT_ATTRIBUTES obj_attr; - HANDLE nt_handle; - ErrorCode ret; - - InitializeObjectAttributes(&obj_attr, nullptr, OBJ_INHERIT, nullptr, nullptr); - ret = TranslateNtStatus(D3DKMTShareObjects(num_allocations, - &resource, &obj_attr, flags, &nt_handle)); - if (ret == ErrorCode::Success) - *dmabuf_fd = *(reinterpret_cast(&nt_handle)); - else - *dmabuf_fd = -1; - - return ret; -} - -inline ErrorCode QueryResourceInfoFromNtHandle(D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE *args) { - return TranslateNtStatus(D3DKMTQueryResourceInfoFromNtHandle(args)); -} - -inline ErrorCode OpenResourceFromNtHandle(D3DKMT_OPENRESOURCEFROMNTHANDLE *args) { - return TranslateNtStatus(D3DKMTOpenResourceFromNtHandle(args)); -} - -} // namespace d3dthunk -} // namespace thunk -} // namespace wsl - -#endif diff --git a/inc/wddm/types.h b/inc/wddm/types.h deleted file mode 100644 index 0bc922b7fd..0000000000 --- a/inc/wddm/types.h +++ /dev/null @@ -1,101 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// The University of Illinois/NCSA -// Open Source License (NCSA) -// -// Copyright (c) 2020, Advanced Micro Devices, Inc. All rights reserved. -// -// Developed by: -// -// AMD Research and AMD HSA Software Development -// -// Advanced Micro Devices, Inc. -// -// www.amd.com -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal with 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: -// -// - Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimers. -// - Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimers in -// the documentation and/or other materials provided with the distribution. -// - Neither the names of Advanced Micro Devices, Inc, -// nor the names of its contributors may be used to endorse or promote -// products derived from this Software without specific prior written -// permission. -// -// 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 CONTRIBUTORS 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 WITH THE SOFTWARE. -// -//////////////////////////////////////////////////////////////////////////////// - -#ifndef _WSL_INC_WDDM_TYPES_H_ -#define _WSL_INC_WDDM_TYPES_H_ - -#include -#include -#include "inc/thunk_proxy/wddm_types.h" -// windows wchar is 16bit, but linux is 32bit -// seems libdxcore (not dxgkrnl.ko) convert thunk windows wchar to linux one -// so only accept 32bit wchar args. note driver private data structure still -// use 16bit wchar -#define WCHAR wchar_t -#define PCWSTR const wchar_t * -#include -#undef WCHAR -#undef PCWSTR - -using gpusize = uint64_t; // Used to specify GPU addresses and sizes of GPU allocations -using WinAllocationHandle = D3DKMT_HANDLE; -using WinResourceHandle = D3DKMT_HANDLE; -using WinContextHandle = D3DKMT_HANDLE; -using WinDeviceHandle = D3DKMT_HANDLE; -using WinAdapterHandle = D3DKMT_HANDLE; - -//reference dk/winnt.h -#define STANDARD_RIGHTS_REQUIRED (0x000F0000L) - -//reference dk/ntdef.h -#define OBJ_INHERIT (0x00000002L) -typedef WCHAR *PWCHAR, *LPWCH, *PWCH; -typedef struct _UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; -#ifdef MIDL_PASS - [size_is(MaximumLength / 2), length_is((Length) / 2) ] USHORT * Buffer; -#else // MIDL_PASS - _Field_size_bytes_part_opt_(MaximumLength, Length) PWCH Buffer; -#endif // MIDL_PASS -} UNICODE_STRING; -typedef UNICODE_STRING *PUNICODE_STRING; -typedef const UNICODE_STRING *PCUNICODE_STRING; - -typedef struct _OBJECT_ATTRIBUTES { - ULONG Length; - HANDLE RootDirectory; - PUNICODE_STRING ObjectName; - ULONG Attributes; - PVOID SecurityDescriptor; - PVOID SecurityQualityOfService; -} OBJECT_ATTRIBUTES; -#define InitializeObjectAttributes( p, n, a, r, s ) { \ - (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ - (p)->RootDirectory = r; \ - (p)->Attributes = a; \ - (p)->ObjectName = n; \ - (p)->SecurityDescriptor = s; \ - (p)->SecurityQualityOfService = NULL; \ - } - -#endif \ No newline at end of file diff --git a/inc/wddm/va_mgr.h b/inc/wddm/va_mgr.h deleted file mode 100644 index 675bfc3e39..0000000000 --- a/inc/wddm/va_mgr.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef _WSL_INC_WDDM_VA_MGR_H_ -#define _WSL_INC_WDDM_VA_MGR_H_ - -#include -#include -#include "util/utils.h" - -namespace wsl { -namespace thunk { - -class VaMgr { -public: - VaMgr(uint64_t start, uint64_t size, uint64_t min_align); - ~VaMgr(); - - /* Allocate `bytes` VA, if `align` is not zero, the returned address is aligned by `align`. - * If `addr` parameter is not zero, try best to allocate VA from fixed address `addr`. - */ - uint64_t Alloc(uint64_t bytes, uint64_t align, uint64_t addr = 0); - - void Free(uint64_t addr); - -private: - uint64_t AllocImpl(uint64_t bytes, uint64_t align); - - struct Fragment { - using ptr = std::multimap::iterator; - ptr free_list_entry_; - - struct { - uint64_t size : 63; - bool is_free : 1; - }; - - Fragment() : size(0), is_free(false) {} - Fragment(ptr iterator, uint64_t len, bool is_free) - : free_list_entry_(iterator), size(len), is_free(is_free) {} - }; - - static inline Fragment make_fragment(typename Fragment::ptr iter, uint64_t len) { - return {iter, len, true}; - } - - inline Fragment make_fragment(uint64_t len) { return {free_list_.end(), len, false}; } - - static inline bool is_free(const Fragment& f) { return f.is_free; } - void set_used(Fragment& f) { - f.is_free = false; - f.free_list_entry_ = free_list_.end(); - } - static void set_free(Fragment& f, typename Fragment::ptr iter) { - f.free_list_entry_ = iter; - f.is_free = true; - } - - inline void remove_free_list_entry(Fragment& frag) { - if (frag.free_list_entry_ != free_list_.end()) { - free_list_.erase(frag.free_list_entry_); - frag.free_list_entry_ = free_list_.end(); - } - } - - inline void add_free_fragment(uint64_t size, uint64_t base) { - auto it = free_list_.insert(std::make_pair(size, base)); - frag_map_[base] = make_fragment(it, size); - } - - inline void add_used_fragment(uint64_t size, uint64_t base) { - frag_map_[base] = make_fragment(size); - } - // Indexed by size - std::multimap free_list_; - // Indexed by VA, each fragment has no overlap - std::map frag_map_; - - uint64_t min_align_; - - std::mutex lock_; // Mutex protecting allocation and free of va - - - DISALLOW_COPY_AND_ASSIGN(VaMgr); -}; - -} // namespace thunk -} // namespace wsl -#endif diff --git a/libdrm.cpp b/libdrm.cpp index c9ed48d60e..d85ca9aa1e 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -41,8 +41,8 @@ //////////////////////////////////////////////////////////////////////////////// #include -#include "inc/wddm/types.h" -#include "inc/wddm/device.h" +#include "impl/wddm/types.h" +#include "impl/wddm/device.h" #include "libhsakmt.h" HSAKMT_STATUS HSAKMTAPI hsaKmtGetAMDGPUDeviceHandle( diff --git a/libhsakmt.h b/libhsakmt.h index 255186fe8a..e34d4e10c9 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -32,8 +32,8 @@ #include "hsakmt/hsakmt.h" #include "hsakmt/hsakmt_drm.h" -#include "inc/wddm/types.h" -#include "inc/wddm/device.h" +#include "impl/wddm/types.h" +#include "impl/wddm/device.h" wsl::thunk::WDDMDevice* get_wddmdev(uint32_t node_id); diff --git a/memory.cpp b/memory.cpp index b080f72082..add31df673 100644 --- a/memory.cpp +++ b/memory.cpp @@ -32,7 +32,7 @@ #include #include #include -#include "inc/wddm/gpu_memory.h" +#include "impl/wddm/gpu_memory.h" #include "util/simple_heap.h" struct Allocation { diff --git a/queues.cpp b/queues.cpp index e7b89e3529..d8fefacff8 100644 --- a/queues.cpp +++ b/queues.cpp @@ -24,8 +24,8 @@ */ #include #include "libhsakmt.h" -#include "inc/wddm/device.h" -#include "inc/wddm/queue.h" +#include "impl/wddm/device.h" +#include "impl/wddm/queue.h" #include "hsa-runtime/inc/amd_hsa_signal.h" uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id) { diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index c4fae89f539ea917f54c80ff67593e04e6087d72..8991622e0daa899b081532d64b3ec0fb465597a0 100644 GIT binary patch delta 1163 zcmZ9}KS*0~5C`!5Ox_}*xcGL>yjHz9e2nv+#!U z74cv63m+=q5FaBce4*?!uK)jc9vR_(%B94&C}6G zSBMMuDYpnhpUxmi0jZS+^9TH+=71Lpz?R(5R$?@%0G#RkP)6x{zLo;1z}rx egZN9@-)&U}%nDjDc5DJpi#S)bWQII$oq=OdCB34b?OhO^15M7E%5h4_6YcU8< zl7RSuwqijLR0_dJgg_u7Xa|R6DpH3oLcqZ|Nge9{c<1sR93R||Tkf{k!rN=%rB$;! z)Nqz!!wbdSsax~8rWbQQIYWU!c{1+U4mKy_?uBC}jM^19a_F)ZsX0FaA)6`NchM1k zs60>n2m|5A$|d6Gh+eh4sk}nmLR$EvvPb+C%fdU#Pl$h_F8o*d1#t+w!iODy{+jqW zMy^>tt=u3U$As`jsY3c|C>Ux@SA5Wb__BVI&T_`dQEaRnxA`I+($;x|YLzf=B2 z+(A}&OL>pDi<}H@;`f*kZY$3ce?~#Lr+kz68#aXd%0=Se z=nC&EFA|4fW-K3c{i8l09z#Mnrd%aXAS*ns{FFF_ns7$>CGib(gl{Wv65qo>xUBqv dxY~?n+(^=_ #include #include "libhsakmt.h" -#include "inc/wddm/device.h" +#include "impl/wddm/device.h" HSAKMT_STATUS HSAKMTAPI hsaKmtGetClockCounters(HSAuint32 NodeId, HsaClockCounters *Counters) { diff --git a/topology.cpp b/topology.cpp index d8657014dd..e53e1094a7 100644 --- a/topology.cpp +++ b/topology.cpp @@ -39,8 +39,8 @@ #include #include "libhsakmt.h" -#include "inc/wddm/types.h" -#include "inc/wddm/device.h" +#include "impl/wddm/types.h" +#include "impl/wddm/device.h" #include "util/utils.h" /* Number of memory banks added by thunk on top of topology diff --git a/wddm/cmd_util.cpp b/wddm/cmd_util.cpp index 476007b640..d650651e31 100644 --- a/wddm/cmd_util.cpp +++ b/wddm/cmd_util.cpp @@ -1,6 +1,6 @@ /* Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. */ -#include "inc/wddm/cmd_util.h" +#include "impl/wddm/cmd_util.h" namespace wsl { namespace thunk { diff --git a/wddm/device.cpp b/wddm/device.cpp index 4b74b619e0..7905ed93e3 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -48,10 +48,10 @@ #include #include #include -#include "inc/wddm/status.h" -#include "inc/wddm/types.h" -#include "inc/wddm/device.h" -#include "inc/wddm/queue.h" +#include "impl/wddm/status.h" +#include "impl/wddm/types.h" +#include "impl/wddm/device.h" +#include "impl/wddm/queue.h" namespace wsl { namespace thunk { diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 3a1a080e78..ae89abb642 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -1,7 +1,7 @@ #include #include -#include "inc/wddm/gpu_memory.h" -#include "inc/wddm/device.h" +#include "impl/wddm/gpu_memory.h" +#include "impl/wddm/device.h" #include "util/utils.h" using namespace std; diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 99f8bebd2e..68b5f25967 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -44,8 +44,8 @@ #include #include -#include "inc/wddm/queue.h" -#include "inc/registers.h" +#include "impl/wddm/queue.h" +#include "impl/registers.h" #include "libhsakmt.h" #include "hsa-runtime/inc/hsa.h" diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 9b63747280..40f912b0d1 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "inc/wddm/va_mgr.h" +#include "impl/wddm/va_mgr.h" #include "libhsakmt.h" using namespace std; From 3c3af5c586401ab60ec88f60cec07db58a9cf63c Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Thu, 12 Dec 2024 00:00:29 -0800 Subject: [PATCH 067/159] wsl/hsakmt: check hsakmt_is_dgpu for hsakmt To align with Native Linux, use NumCPUCores in GPU and NumFComputeCores in CPU to determine if the asic is dGPU. This value is only for libhsakmt internal use. Reviewed-by: Flora Cui Signed-off-by: Longlong Yao Part-of: --- globals.cpp | 2 +- libhsakmt.h | 2 +- memory.cpp | 2 +- topology.cpp | 7 ++++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/globals.cpp b/globals.cpp index 6643407ad4..25fabb5ead 100644 --- a/globals.cpp +++ b/globals.cpp @@ -31,7 +31,7 @@ int kfd_fd = -1; unsigned long dxg_open_count; unsigned long system_properties_count; pthread_mutex_t hsakmt_mutex = PTHREAD_MUTEX_INITIALIZER; -bool is_dgpu; +bool hsakmt_is_dgpu; #ifndef PAGE_SIZE int PAGE_SIZE; diff --git a/libhsakmt.h b/libhsakmt.h index e34d4e10c9..9995026591 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -40,7 +40,7 @@ wsl::thunk::WDDMDevice* get_wddmdev(uint32_t node_id); extern unsigned long dxg_open_count; extern bool hsakmt_forked; extern pthread_mutex_t hsakmt_mutex; -extern bool is_dgpu; +extern bool hsakmt_is_dgpu; extern bool is_svm_api_supported; extern int zfb_support; extern int vendor_packet_process; diff --git a/memory.cpp b/memory.cpp index add31df673..950a5dedba 100644 --- a/memory.cpp +++ b/memory.cpp @@ -404,7 +404,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryWithFlags( if ((MemFlags.ui32.HostAccess != 1) || (MemFlags.ui32.NonPaged == 1)) return HSAKMT_STATUS_NOT_SUPPORTED; - if (!is_dgpu) + if (!hsakmt_is_dgpu) /* TODO: support mixed APU and dGPU configurations */ return HSAKMT_STATUS_NOT_SUPPORTED; diff --git a/topology.cpp b/topology.cpp index e53e1094a7..fa7d08a98a 100644 --- a/topology.cpp +++ b/topology.cpp @@ -390,8 +390,9 @@ err: void topology_setup_is_dgpu_param(HsaNodeProperties *props) { /* if we found a dGPU node, then treat the whole system as dGPU */ + /* noted that some APUs are also treated as dGPU in runtime */ if (!props->NumCPUCores && props->NumFComputeCores) - is_dgpu = true; + hsakmt_is_dgpu = true; } static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties& props, @@ -1010,6 +1011,8 @@ HSAKMT_STATUS topology_take_snapshot(void) { goto err; } + topology_setup_is_dgpu_param(&temp_props[i].node); + if (temp_props[i].node.NumCPUCores) topology_get_cpu_model_name(temp_props[i].node, cpuinfo); @@ -1176,8 +1179,6 @@ hsaKmtAcquireSystemProperties(HsaSystemProperties *SystemProperties) { assert(g_system); // err = fmm_init_process_apertures(g_system->NumNodes); - // TODO: Determine if it is a dGPU - is_dgpu = true; if (err != HSAKMT_STATUS_SUCCESS) goto init_process_apertures_failed; From 255069da959fa52d30d71015ef3e3a1b63736036 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Thu, 12 Dec 2024 02:59:35 -0800 Subject: [PATCH 068/159] wsl/hsakmt: Add is_dgpu check for wddm device Reviewed-by: Flora Cui Signed-off-by: Longlong Yao Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 364120 -> 366616 bytes topology.cpp | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 8991622e0daa899b081532d64b3ec0fb465597a0..3cf68cb730f3329a1889051985de6c9212d4b393 100644 GIT binary patch literal 366616 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%0A)$A7WDWIMaCstc@Wk2Pwd3b^Sn%V>K)Q2+@m1Et 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

a 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

hEl_b#*ePz_yg#C()#R?Wl1tf;~o^e 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 b?Exzd`=l>wLQ*xz39^lJ}J3R4}=} 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 diff --git a/topology.cpp b/topology.cpp index fa7d08a98a..87d00bca37 100644 --- a/topology.cpp +++ b/topology.cpp @@ -565,7 +565,13 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, props.NumSdmaQueuesPerEngine = 6; // TODO props.NumCpQueues = device->GetNumCpQueues(); props.NumGws = 0; - props.Integrated = !(device->IsDgpu()); + /* + * In Native Linux, if the asic is APU, this value will be set to 1, + * if the asic is dGPU, this value will be set to 0. clr use this info + * to set hostUnifiedMemory_, but for now wsl does not support this feature. + * Therefore, fore vaule to 0 temporarily. + */ + props.Integrated = 0; props.Domain = device->Domain(); props.UniqueID = atol(device->Uuid()); // TODO props.NumXcc = 1; From 73a64175a135da8b306ef9a21784d742726cc3da Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Fri, 3 Jan 2025 17:11:09 +0800 Subject: [PATCH 069/159] wsl/hsakmt: fix pci bdf Signed-off-by: Flora Cui Reviewed-by: lyndonli Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 366616 -> 366704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 3cf68cb730f3329a1889051985de6c9212d4b393..a2cbf6ee12d4ec5c68369326dd92ea0dc1a55492 100644 GIT binary patch delta 4439 zcmZWs4Nz5O8b0rLI0`C1SL9!mpQ~b`a#+D1Oa!xlT+}o{Nd>h0Da-3b5!G^45i|*;|yA2WFTRq0h?d+;`< z`$~GV5GQQAyV>0U;s>e4WF@rcjsH-@2s4O^Uhgn>J=8*;aq3j9T65%V6_5fr^dv4Iq zlY^-20f_BPcMNh9Q&!PxUI(|_8?~C(v1t`dYCHw$az_`)Y^NYkcB8VNf)cjx%zqj( zQe&71j(ZwrOX3|h?%!ajOsTf>OwfKvj{jNEu1?qD_|ZKdB-ToY%Q$Z}EJ zyagr?8oUJxe;LZ1990Y73TfZnSlz9=;M{?+k12v(N?bl~wXQ#1Ba+ zJz)I)bE9;*u_%0`v82E#%`uk!YNVDLxgFLc+hKlK#Mx)t!VClS&gR3-U>$B2e|%e~ zqE`7-y+=e3&^>Go&*&}6J^{TrM1Wl%8YZ=Mb0|ol$deU3= zv!ZFsltTukWQW^UQK7zCzyNj>=}$lpx{CFLq(drQH>KgLk`AMhCHG%j4cn&gxa`L9aO#H}nhgvjTW z+#;jfL*(JSM|8a=qo?p|LRYZ1Tgi8$pOfDgBKwuR5HFJqAEB$7U_insEMn^k3C~LC zMh}rm$KwarIjRz!#}1Y+hRCtJjC6gA=UDzl$;|ST5nS9u2sI@4sGa?72o-%CO_tAu z$id`aU=7RtN)AolfIgPrOyoxB*O)$!&?i{i!akNyC^=YrE&I}S76U9_a70%S9gH5p z^jeau)I%4Vd=oBa`8g$rCf|WuS>EG_b|!xl{Vdlf+nxMh=dE~|K`3LLV8hv0W+-~lBRJZyb z4Lk5L+{T(5V=BC5`ErbP!=M>|nnh+lPAo9)gIe?y7*C6gWc*iwaWApvY~yY4;+G5? zaqHd20KM*>IRs0vrjQ~ktal5Ip#X<0|6F4sLvSOtCRRB&Vo% z_@{C5h~RIY$Q@(-w&+u}R`yBENhkO{JmL~n) zA5}Rk@*IcUjy{s%r1fsCF;vj6pnolS2OsGh{H)T& zz@I~SndJ&~hUcgwHz+Sb*TW=lQ)lbu5P2gOvFud`SZ9cwj~{V zIefs;6|CKCoqO2$;?B>#H)61U+v?k3SaJ0C2{tqu`LG%NjYgqJ9fKbF>jb?s^)MXa zHQW)Y>V*OH%+zCX0defrTOah=O$)2Qa{J3C*np_2^-^gnot}F~G1B&20p) zqlcjv{S0)LGh9S-JHa*d5Qx}unD$Jt%IWP?B@6vc#so}kG7`nCaX6RNk|rZdBv#^< zCSwkK!w!Y;9}FEKSLUNb{Vl4)?#GC z4m4YcT7-cXqMDfc5dBQ8XNns(TRHnA%(2^O<(bH6;8JAJ0URI)T3>S)!G6wN2uIP+ z@F@luPNKP+;79Zjh_Tt|OGWf?n><1LxWNZGNBsHmk4Nk8Fr$d;cE;qTtl;s;2!ial%VP3^lg;u84NH* z!9D^+55o!cGhDy`Lp_==6U;>qLmT=TsxiPoo7qmV9z6{7+z^O~tMFz!HTDNIU$I?1 z46D%3upa{i5fe7^*`R6v#F=}I>2L%+dwHq1V%J`Z+=2lz^-&o*`WoopI(xkq>@(bY rF;Vm`C~7xRq9g;m_E8Y++CD091Wlw=S~hM$Vy~f}OlmEF#)SU?n|{9V delta 4591 zcmZ8jdr(x@8Qkr3V7O}#Jnvwc9kt!ei z(-K+|$-y{jPmK<#92T>dtTCE7yQ)FZL0-lS22 z*4Q!vVG;^uxK2wFBI`PI#?81B%GgpXR(x8rW)cl z5zb>jxy2cNlJrLOyTA@h@EaG5u$79KxiMt;dlKE|uq%mg`Xo#$fplI6rE$Arl&L;%q1!_7+&V!K>^vI+doCzWuYo8D`xfU>H>| zyqiWClkV_cn+r(;U>n|D2I<)w#Tc$zc$a3ctKMeOH;O6y-)1~7dzHj9B`$Ut;hQk8 z9CEBnL{>d_<6SE0GOR0yrPflBYc%OyFDEO-Z^~(sNg_qLB|S+@!gV~!A{m_{;@=y^ z+15)u1!paXrP&UV{8E@hOnfOUMGSG;O<_*_9fd6pmtmUsa*doWT;!G0anQUM6%iql zIFaVuknLJ?r5pZ z=7$_vjmqwaV#Y7}zYWQWaZCi;y$#bOaZa`S2}H=0YCC@u#LH#-y+Q1DSmOEUei|fJ zOT%4ksDPZBMo5wstHv846@1(e!p1L}ArfS48dZ6Z45QLRa@*@Y;yfp@xiQnRMtO-@T)0?ulpfoOj4;Fs&1zdL0d0e9A(*rRuUBXZu60W08qGQShZs4YhdDKgqxc6#S7^Gy=y22W zj!<%Fy2Ci1WZG{YYyp#N6(tK6o`-epdczoOHEO>(*IJXyi}yH5yOKjI`4Fv@BzKyk z&5il7kmc$G%1Bpe@_O9DvRBEW$=}1%ET1t&o0ETxy)4gCXONSdH+~C370C@s4kq8j zKDv%zHp}ma$b*%97AslqHYHy|QNhJaMK8;_HY3;b4Z5nLi}5w3A(K19js${qwz(MYi{25HoU;{Nt65&Q)55J zdnCh0h6}Esbv2>uzOk#d#}RO=(Y8tR**1lpx&gQF$^<R{F(=Y|UcwK)CbI?DXhEaGWpCVFxP@qQuRQsX| z^|>IPSaDgAz8&g)y+wMe7=C}C?C$Ak`P$_>FHGM+-=LZLtl_pF8~?jmEG(#XH6l*p zmI^(=cGV=S)(!b9Jk9bmlbmP>@-`fMSuPtOAtxVYlD8qaNp3UA4wKxC*(^_eG;TtTlY~B(s0v~h}(g#2I5XSah~C0t_A(f{oaXg zBi|mH_iHCsGjKELcgmUC8C)yF+k2?wpN*Cd`(7e1j>dMwP5|biXD{XZ=V+0$6KZjh+K!xSWn1%mvtRHyy7TSq~D39gjVRn*eRF=ODSKjh96R*l>9{MjxWew~og? z!+40up5@rgIFUE(Wh=-~A?? zi-xHCoB4HRvHTjn$MmV-MnAEls}`f%C~_3K+Vp(wxoe+=hZF-vam=OIs<1s); i^f@pZ$x4R-DXkklG>CKQc$?W4j5<#2dUPGvQ~wWXRn~j} From 33ea72a99397d3006636cad9048c116361777595 Mon Sep 17 00:00:00 2001 From: lyndonli Date: Mon, 6 Jan 2025 16:44:41 +0800 Subject: [PATCH 070/159] wsl/hsakmt: Implement fetching of UUID Signed-off-by: lyndonli Reviewed-by: Shi.Leslie Reviewed-by: Flora Cui Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 366704 -> 366680 bytes topology.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index a2cbf6ee12d4ec5c68369326dd92ea0dc1a55492..82a2ef4e3dbc5cae9cd0736514d99daa064b25f7 100644 GIT binary patch delta 2835 zcmZ{me^69a6vy9v&nqm7vQDrpB0?qLSS;8W2I2-}LH0wYQ4AXerEN0Os7BM&Wd&gu zLir&abt-lIqeYv7S@IFhWKPZK+K*u;4V!cZ`X_Uo(wL@ktg&eS5P%>2iNk|JrzU$-~`M@i}a1C=h=qjx~k$C4U=}dabOj?sHFgqwZq1=8srnJOwq9iuaJyLB>KwLXERJo4QR1d6${ghZ zB?!I}j9v$aOEj0WGReR$;q|5PYKC#dYzx>+HHWh)*}$iTS8a@us{o1#dr}PjqQGBI z;(ElaO%If6uDL7^BI|KkWthgO@eYbMr(x`By#BsxjOlZXWGb3?ymrw9N1{cqHDqPJ zMGp!8ETL2WO1#Ycdko#Hm<7HO0qvGVW&yD1nr2i!`acC0CmP($pDO%|r|5->Vis6A z1t?0N2zXBD)^BhQDynfiCk&GeK3ctD7;n^gb#Zqo)FXZQu+Yuk21TjM7Ts*^XNx|A z65_Zn<(D^?IieUwYc#tzXe<06~+;>U!q>@7T9ZXbz5Ipt39hSm%hWJ9p!i+wWQQ(dP?22_rJmg z4CnG3c2fT}m%kLp+MuG4yI2AE3i%Vv1K~ox!Ff~k{%0DVt~ltEzE>s`FGH^a2rT0V zoI}EEc>YwcCdez|2N>>Z5qIFp^`@-W zSWveW^L&QB#U)5{;rSA5W`ru^aNj?*%rHa{vj#n{lxL+nyWYxHOL&`v7fSdOxJCGqgcnJ80y1h4+h-XXC4W%D`A|W) zR>J0+iM;lLkMIcz=Sk7$V1V#%5`IX+vtXQX&TK=Y+Djz-4A?g!-YMaH2_J%D!lxzt zh=hNKdcp|_hDOQpY@Zy9;W*({5-ysAin1LdgnK0Hmhc6gZQ?QNS4*v*olx`Ai23^uZ~+-++}Gj{E1i1_$+HU{N;xtIANOlAnm8_|qF zxRKvw3WS^Rfark0J`}$ITQm2nH`hXIGv9;#*jl0yffjy7y;cQJ`cb_MVLz&|P#!?D z6vAlWe1P8rFSPO-P}WMbHeQEkP`C|q_e0mYVN&fdit%Ldy4 z^mq+y9hh+h0%UT*)`|YHo#fStiT%-87e@NKC`UKt=q8FY76jWtELH~LgBaWZ>*#(cDy!a1kokm629(0pTKw z{0JY+l~Kqt|GDpI_toVlrk1OfQf$y{C2MoKsocBO%q6qux#zrfe9!j2&pFTMIp62G z=RNOv??_-qC@>?iK2BTg?tC>aldbA+j{7H;)%Nd8`XM^0ZNZAlDG%d)l= z&EMYmx_?K?j!FI3p4y{DFJHBG{`&Qf`VE=phD;Wlq{rXZ%<|{i_)IotmX)xMM3!LQ zt!BS!tjiqQ%la9+YWm+}+oPirhIw90TGMy~GshdWlV6y9S$a^5AB(|^%ce|i)QaMw z^y}su3-re(vJ7a?(Gyvkc_K$2)>$9;^7TaRezN&tzP?FgV{orP-{}fEsa%I+w=j;_ zD2HR3Bg4@PzCxT`3`Yv}EZ3SD0%ysn^D?RqMiH|La2Dx_uG%DlgEFctT4-fM0pZe_ z!apSO_y1upV%B6f7wK8at~*l&*U-e_wVOKF=ELA73|l8mjW7XVn^9VuCSt5P4RVeX zJcN^N_$!I$KndYJHasM8vzXm!!;^H8?5LQX8F}Cihm|{B;yehG_;MRIBwh)rTkz+c zht*`pgqaRL8toKjuQ2^!pwo3xJ_9Sy87VXbqlAC6;YTKjDzAgH1o61U~GJU1S7MUgG`Z12@N|RQpn_A_Bk1yZ=K6Ud<)@Kg7 z`L$89y)8mmB$ac{BjwJ zQt&LrMt54G3OJX?&$4;oTY|E6U@YOot^xTzTuyyBcn$RAV}fGyWAi&+L=D zb|Mx2f9d$2L#yDy1eO4&Yj{4Zf_pXi3eE;kEskb`R~UoLLI{(21w1}9*T9QrVzqot z*1~BYe;ZE@PaUsepMZe|0`)uw7T5D?b_0xh{(vQc(SWDJ=iuFkQ6msWqs451U5)&G z%pGn-?-lSi@w1v^BP{TvHw1nMn(62J{>MJ^Ga~HVDGv8{1yaSC`$`w=?0?( zEns|r8r|UO!qe<`c&7`O@DvzbxJ*$HCbJ7X ZhtW(2FPTCx4&%I2-~}`T;OXXb{{>)rFM9w0 diff --git a/topology.cpp b/topology.cpp index 87d00bca37..11a52d0feb 100644 --- a/topology.cpp +++ b/topology.cpp @@ -573,7 +573,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, */ props.Integrated = 0; props.Domain = device->Domain(); - props.UniqueID = atol(device->Uuid()); // TODO + props.UniqueID = device->Uuid(); props.NumXcc = 1; props.KFDGpuID = device->DeviceId(); // TODO props.FamilyID = device->GfxFamily(); From f7d2df7486e0c6cec6f76bf42293b5aeeb147e4d Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 9 Jan 2025 08:34:43 +0800 Subject: [PATCH 071/159] wsl/hsakmt: add more gfx1100 asic to kGfxipTable Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 366680 -> 366776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 82a2ef4e3dbc5cae9cd0736514d99daa064b25f7..96066be42362c116d5a5a90c7ccc44cfbe3c4683 100644 GIT binary patch delta 3259 zcmY*aeNa@_6@TY0FM^7KprEp=i-4<$`b_x{Yh1M&f<#F)x{C5`0AuPd#rQ>8gdiY@ z``nmAoBV;*>1gYutaP%p<4m2@HnbfzcKU(+Cz+V0ZL|$*GA(H*PS3gbfv_{Xzk7c7 zoZmU;-t*oL_sF~A3&Sr zK1_5&r{vbo4g*Rqeoj8TCAqpeVYo!AHz8(VFsTU$a_6oE_zQ84U~t|gxX%#-JLac8 zCA<)H&YmBfmKqn#a?S{boNGm!qz0y?q7XxB{fo5YApWCVAG=b5^%;X=mXMLpF8)Mh zs^w!>Qn1X`BGyXt;$s(xeY{K=NLl*!6z~Su8%faAdcg=^FyPaq4Le2j{pq0DH2Ubf z#O!PxG|Tdcv_Je$(~7iQxp_=H#rR+H78iM?=tKCM=U^f1!Oxz9`E!d!?6z2Pc;KL) zt?cFCA3YZxg^&s9SjaFHUn_)c7{RNBkZ*qgQurG)EMcXt;%=dB3oM5&T(t$(Cm(_M zsya=(&Yrxm#4E9D3(SKs{%{L8{8ywJ)@WMXO!6x^OnwzyL|^)tEjrVvOG))m&%-|;zEOY_G!M>~`;Fln+rTjmj^T%U zAk#P`GWeQ==`m`&hc*3>$mybDg;{J=DSMN$3!F0Ci)%_CJARK?(ZZK!dK6uPCriK+ zUo2M3J2h)nvSR$Kgp%ZnMV7asbH&qq^1|GqqF0OAZ!KW8T4m?s=DpxC(nac|uynC% zQrKdVn6_|2m<#Vv*h^DYn9UsYt8`Pv8opnf`BRISCLAneGy5%Kx=1@1P4jJD^{WbI zh{TVjbg{B$V>o1WDMp5B5}yfOAq|BaqJts2`PZ1Pb|rgjt~M2&5|8J!WUCMlAI& zAfewmp^-1Kq?Atc0i>zBu}<>=-YkVo|1EH;8!b|5w;)?pW2xVQ0=A#@e;ZQmaZHT0 zdmFx~h|5;HcVLQ=w662+n7voE|Hm=A+^NmxDf`nHQLP;AV`~{?`@6uQDz+N$f~-l6 zcfq=^r*I|Lt%L7|h3xR8v~F0z&+L=pyJ4duu8xOP{x+2lOH--OjFqy(nIT6s0Q0Ub zVh5`k6YODWQ}JAT5cicsW&9B^SXh`=k4N!?a@ZbU2}>u@RZQFQg$hXbgwxd=b^Ehe zDV)zwq|I#hyV!g$fuDF`x~28YS^QF<5s=o+Bz|wuQzfn6$2r zQi4tR=SnD9aAm3L;^A@W^P^es|Clp0pOEG|_(B!f;U{>g3Nn}XWmz4U$&ULrSRI#1 z-wTdck8x;U*@pW44cbK?QgA6Pc2p#z)vo~?#n!Pb{4&%p@|y*icV=t9VZiU)9(&?#9Gg zSTb{avU1rgWwv7xk@n3il&6~1XQ!(tR!wRFo?{pH;)&AkH4~-R<1oAABu$jg$y6>% zh5py;AO-SpO&yKa>hSJ5h)RNiaA`CAU`ovG6M-mQ2ivvwm<|ZXbcj3GU^sj)-}d8|zPzc@RTnqPLygM^BOa@6l+d1j!icpbB1Z*O!UJB{;&uL+w;r z4n}BS6qMkq4k|liDaIY=vO6ege&cXc*6W}EBMd`mbP=?mj{v=AC}OaSA|7Id2qBhX9~V*3 z&7Jqq?$K^NPq>z0Khr}*!#0d`lSC65X9(Qr>*4m!P?=XT#FR%-Q9VR`j7AS78ac~S zJtUQwh0Ri`hom|%Lc1(=mLPyWhRYZtKyN@##Havi#G-MIy72_`WE=^wP=G3Kz)(O2 zMHsH2Vaiw^!}}Ow_%}ufMDz-DpWvp>QOXk%tjxFQM@!!DjR^P`wOCF~ZP` i26DtstVfDii6J(V*We>Er$+D7<+yiF#h?3i$NvF8`xV&$ delta 3227 zcmY*a3s98T75>j%egOsL7kLC(aCy0i=wQSLMkJ^yL4vMTq=Gy}mZ*s}kSJO}kjEn8 z{;u(mX~tO7X_%>6_g+MaXo55msC_n+^6 z=R4=zd;i^$Ytdsv(L;N}ZL6}^`1XdcfOW&3@P|5l)8~kZ_g#q0gC=^i`yNG(LWku3 zx+o92CATrk4{u7&h|YnxB-aq_hb#1S5rT(DVp@P;?K2wz#)wPs`Qp9{pK!+TuEj}n z#4F%)L@oBsON#JiI_CSXIW~$8Ne$0SLLoj-&p%6P2Jvqted3Jw9Zee%5kh8uZRxm3 zSC3DeF}_M?yVxMZcb_;xl<{NyaQw2jgF7a&{1aJlHzt3V2>CP&G@C{reYc3p)mypA>xAhkc`a?A^5#Q$cBgbr$WfFKLBaGdcI|>+*RIfe0CeG01wt|gXd$Lz^HA|w41Et z2g|$)f3gkY;0FGF8zi*8C*81K(;^m-uB?f4)!f9T)Tvl_QfNv^_T@~IX=zhr^Y&@d zF-^MnPm}RX9%aw+A2(`R_w+*j2@PK>f`w3mT}6;k?3(W7m#m4UG*w$BZ+Vqw_#-dK zek7O6+@smzc1oi?TuqQ;;kw!aLDvm@L(Ba8>M1pJ0G4|s_1XvwK6C*ip6?) zrlwmJE5^8TDv~XdEw!Sv#k0Kg!rY~@*NUibC$gJc#q03(awyG87D=?oYnnx9U2!(t=!Yokn=a8i0ys0=_4Pv?f3nGUc zGX{BtXDVnnA3%ya8*4Wo;NuF&XuS;%b)rSe?KWhqZY=lPP{8ri`9Fjtdju0x<9-Ow zDPqtX_YMRrOY1oAPQ~SF{NGK*RSqqRZ`sFF#C|3C1cxgjyVU~;s$*+#4`j|7+yk5b z8_b>Dv^KsMmayPyYrU|N-`S_l_rhjHT%As-`E3$!mZnOdnQCR1BTZh>eu%rC%mQne zb71$&n40I_O*~r#HAWL;v9U0%8DGCx4PQ5^VA(9TnpiuYs)p3k8>#9R^|fZQ&y5^@ zA8lq^tCPc9k^H_3Gfzf8U&vnxbOB`aehhzW&^slg-^jh@+bF|7;FD_lYWxZlYrp|_ z@c9}@h5J}v1NKdy&gWyXnS-rGT!TMu1zP^g+IWOoz4~;u&{~zwf5TtYKoaER-)pGA zW(=-{vc&h6sVP2dmYTtZzxqB`XgeXpt9Ysw?C=A8rxr3+T*|a2u9OpB%C{!2l-hR^ z4j<>#%a!>@>l(H1;AAcAwD)CMIc}NLSInc6zq|3)yt7!pAC5cwWA6mfSWVT94cfUy zTwjxhUj5)w)?Ri?Lm!6Jfg=J#-=;4ln>pZ?q5)iA2g?$hS8$mi^RvkoS*Q60-tZvv z-egN-)#ek}UPpyaT7~M4Y2S)$dOTI9MelO5w(ZLnS?CldAAlsIQx*y`CnsBEr7kQv z0C{%z@>v79xAHk#12y3A0jl%zjDZf$80e7hPoFW+tGKJ426}DwK#ka051VqzWf@@> z$#KeGq8|yqKQh{vtlp|T6=kYpzp3s|1wN^VbbCpXdV^Jd$r?VYsoS^*x40pFfh$%? z%B779PZDY0vQjD4P2C!%-dA-~U%>ZSlDl-Kb?%0l)|)V-fh4PAW?HY#P!i=rzv>MT z4{PvX16{4Peoq4g#lSUxe;Zs04jnz=4bpY64Rx>Y0ss0QarZh5`a?I^K2Hw~vu^W1 zcUGN^{(}5jb$a4rIO2D;>8$|2#=t4P8-H{hBGBEgJ45f4*ksBezSXX;g&qvF>zfFS z4uV_gA`l~c@O+1!EB=y#ZO0)RCpvT|jItyWQ%>v4Arf7uN$y0GAqN8t8XBDh_nBOZ z$2#>`@i-Mn*%_Pdmo$^DvxjWwpsR;^p4f}$d#L9x(lL+MCU|WO1Kr%Shl=E*%R^=% zXfkwRfB+*r Date: Mon, 13 Jan 2025 22:06:51 +0800 Subject: [PATCH 072/159] wsl/hsakmt: add get_gpu_mem() Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- libhsakmt.h | 1 + memory.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/libhsakmt.h b/libhsakmt.h index 9995026591..088e4baf2f 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -36,6 +36,7 @@ #include "impl/wddm/device.h" wsl::thunk::WDDMDevice* get_wddmdev(uint32_t node_id); +wsl::thunk::GpuMemory *get_gpu_mem(void *MemoryAddress); extern unsigned long dxg_open_count; extern bool hsakmt_forked; diff --git a/memory.cpp b/memory.cpp index 950a5dedba..f044ef6aac 100644 --- a/memory.cpp +++ b/memory.cpp @@ -355,6 +355,16 @@ bool queue_release_buffer(void *MemoryAddress) { return true; } +wsl::thunk::GpuMemory *get_gpu_mem(void *MemoryAddress) { + std::lock_guard gard(*allocation_map_lock_); + auto it = allocation_map_.find(MemoryAddress); + if (it == allocation_map_.end()) { + return nullptr; + } + + return wsl::thunk::GpuMemory::Convert(it->second.handle); +} + HSAKMT_STATUS HSAKMTAPI hsaKmtAvailableMemory(HSAuint32 Node, HSAuint64 *AvailableBytes) { CHECK_DXG_OPEN(); From f342af52c575e8d88decfb94e001bf4d7df9e7f5 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Mon, 13 Jan 2025 22:07:37 +0800 Subject: [PATCH 073/159] wsl/hsakmt: fix gpu_mem handle Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- libdrm.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libdrm.cpp b/libdrm.cpp index d85ca9aa1e..7d366916bd 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -110,7 +110,6 @@ HSAKMTAPI int amdgpu_bo_import(amdgpu_device_handle dev, } } - HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, uint64_t offset, uint64_t size, @@ -120,7 +119,7 @@ HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, switch(ops) { case AMDGPU_VA_OP_MAP: { - wsl::thunk::GpuMemory *gpu_mem = reinterpret_cast(bo); + wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); assert(gpu_mem != nullptr); auto code = gpu_mem->MapGpuVirtualAddress(reinterpret_cast(addr), size, offset); if (code != ErrorCode::Success) @@ -133,7 +132,7 @@ HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, break; case AMDGPU_VA_OP_UNMAP: { - wsl::thunk::GpuMemory *gpu_mem = reinterpret_cast(bo); + wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); assert(gpu_mem != nullptr); auto code = gpu_mem->UnmapGpuVirtualAddress(reinterpret_cast(addr), size, offset); if (code != ErrorCode::Success) From c83aca9878c3e818c87ece4bfbbbdd3bbef11cef Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 13 Feb 2025 10:52:15 +0800 Subject: [PATCH 074/159] wsl/hsakmt: fix a typo in FreeSystemHeapSpace Reviewed-by: Flora Cui Signed-off-by: tiancyin --- wddm/device.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wddm/device.cpp b/wddm/device.cpp index 7905ed93e3..5373e5b9aa 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -254,7 +254,7 @@ bool WDDMDevice::ReserveSystemHeapSpace() { bool WDDMDevice::FreeSystemHeapSpace(void) { void *cpu = (void *)system_heap_space_start_; - if (munmap(cpu, system_heap_space_size_ != 0)) { + if (munmap(cpu, system_heap_space_size_) != 0) { pr_err("fail to unmap = %p \n", cpu); return false; } From ee73fc046e4a614a233349739b774470da965997 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 13 Feb 2025 10:57:42 +0800 Subject: [PATCH 075/159] wsl/hsakmt: set to system domain when cpu want to access the buffer Reviewed-by: Flora Cui Signed-off-by: tiancyin --- memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory.cpp b/memory.cpp index f044ef6aac..79e8f1276a 100644 --- a/memory.cpp +++ b/memory.cpp @@ -177,7 +177,7 @@ HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, create_info.alignment = Alignment; create_info.va_hint = reinterpret_cast(*MemoryAddress); - if ((PreferredNode == 0 && !MemFlags.ui32.NonPaged) + if ((PreferredNode == 0 && MemFlags.ui32.HostAccess) || zfb_support || MemFlags.ui32.GTTAccess) { if (SizeInBytes > max_single_alloc_size) return HSAKMT_STATUS_NO_MEMORY; From 914a8ecbc0236dedc11eed51033bb1b19f4521a9 Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Mon, 17 Feb 2025 18:26:32 +0800 Subject: [PATCH 076/159] wsl/hsakmt: Configure Capability Info to Disable Fine-Grained VRAM Management This fix is for Unit_cache_coherency_cpu_gpu. Regardless of whether the HSA_FORCE_FINE_GRAIN_PCIE variable is set in the environment, set the user_visible of the region to false. This applies to the functionality of exposing VRAM as uncached/fine grain over PCIe or XGMI. Signed-off-by: Horatio Zhang Reviewed-by: Flora Cui Part-of: --- version.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/version.cpp b/version.cpp index 98b4ad7c34..12c3e861e9 100644 --- a/version.cpp +++ b/version.cpp @@ -49,7 +49,8 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->ui64.Image = 0; VersionCapInfo->ui64.EventAge = 0; VersionCapInfo->ui64.Scratch = 0; - VersionCapInfo->ui64.XNack = 0;*/ + VersionCapInfo->ui64.XNack = 0; + VersionCapInfo->ui64.FineGrainPcie = 0;*/ VersionCapInfo->ui64.VendorPacket = enable_vendor_packet; From 390708c594b00ae0abb57ec67c83ecb5f8b0ee44 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Tue, 21 Jan 2025 10:13:33 +0800 Subject: [PATCH 077/159] wsl/hsakmt: implement ipc mem of rocr non-legacy mode The legacy mode means buffer sharing through KFD, KFD provide a buffer id to exporter, exporter pass it to importer, importer pass buffer id to KFD to query and import this buffer. The non-legcay mode relys on socket to pass dmabuf fd between processes. In hsa-runtime, the legcay mode is the default mode, setting environment variable HSA_ENABLE_IPC_MODE_LEGACY to 0 can force hsa-runtime to new mode code path. Reviewed-by: Flora Cui Reviewed-by: Longlong Yao Signed-off-by: tiancyin --- libhsakmt.h | 4 +- memory.cpp | 113 ++++++++++++++++++++++++++++++++++++++------ wddm/device.cpp | 2 +- wddm/gpu_memory.cpp | 34 +++++++++---- 4 files changed, 127 insertions(+), 26 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 088e4baf2f..202a5f4752 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -200,6 +200,8 @@ bool queue_release_buffer(void *MemoryAddress); uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); #define SGPR_SIZE_PER_CU 0x4000 -HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, HsaGraphicsResourceInfo *GraphicsResourceInfo); +HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, + HsaGraphicsResourceInfo *GraphicsResourceInfo, + bool requiresVAddr = false); #endif diff --git a/memory.cpp b/memory.cpp index 79e8f1276a..6300439567 100644 --- a/memory.cpp +++ b/memory.cpp @@ -38,7 +38,8 @@ struct Allocation { Allocation() : handle(0), cpu_addr(0), gpu_addr(0), size(0), userptr(false), - user_data(nullptr), size_requested(0), node_id(0), mem_flags_value(0) {} + user_data(nullptr), size_requested(0), node_id(0), mem_flags_value(0), + dmabuf_fd(-1) {} Allocation(wsl::thunk::GpuMemoryHandle handle_arg, void *cpu_addr_arg, uint64_t gpu_addr_arg, size_t size_arg, bool userptr_arg = false, void *user_data_arg = nullptr, size_t user_size_arg = 0, @@ -46,7 +47,7 @@ struct Allocation { : handle(handle_arg), cpu_addr(cpu_addr_arg), gpu_addr(gpu_addr_arg), size(size_arg), userptr(userptr_arg), user_data(user_data_arg), size_requested(user_size_arg), node_id(node_id_arg), - mem_flags_value(mem_flags_value_arg) {} + mem_flags_value(mem_flags_value_arg), dmabuf_fd(-1) {} wsl::thunk::GpuMemoryHandle handle; void *cpu_addr; @@ -57,6 +58,7 @@ struct Allocation { size_t size_requested; /* size requested by user */ HSAuint32 node_id; HSAuint32 mem_flags_value; + int dmabuf_fd; }; static std::map allocation_map_; @@ -298,6 +300,10 @@ HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, } gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + if (it->second.dmabuf_fd >= 0) { + close(it->second.dmabuf_fd); + it->second.dmabuf_fd = -1; + } allocation_map_.erase(it); } @@ -447,10 +453,11 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodesExt(HSAuint64 Graphic pr_debug("number of nodes %lu\n", NumberOfNodes); GraphicsResourceInfo->NodeId = 1; - return hsaKmtImportDMABufHandle(GraphicsResourceHandle, GraphicsResourceInfo); + return hsaKmtImportDMABufHandle(GraphicsResourceHandle, + GraphicsResourceInfo, + !!RegisterFlags.ui32.requiresVAddr); } - HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, HSAuint64 MemorySizeInBytes, int *DMABufFd, @@ -458,21 +465,31 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, CHECK_DXG_OPEN(); std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) - return HSAKMT_STATUS_ERROR; - auto gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); - auto code = gpu_mem->ExportPhysicalHandle(DMABufFd); - if (code != ErrorCode::Success) - return HSAKMT_STATUS_ERROR; + auto it = allocation_map_.upper_bound(MemoryAddress); + if (it != allocation_map_.begin()) { + --it; + if (it->second.dmabuf_fd == -1) { + auto gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); + auto code = gpu_mem->ExportPhysicalHandle(DMABufFd); + if (code != ErrorCode::Success) + return HSAKMT_STATUS_ERROR; + it->second.dmabuf_fd = *DMABufFd; + } + *DMABufFd = dup(it->second.dmabuf_fd); - return HSAKMT_STATUS_SUCCESS; + *Offset = reinterpret_cast(MemoryAddress) - it->second.gpu_addr; + return HSAKMT_STATUS_SUCCESS; + } + + return HSAKMT_STATUS_ERROR; } HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, - HsaGraphicsResourceInfo *GraphicsResourceInfo) { + HsaGraphicsResourceInfo *GraphicsResourceInfo, + bool requiresVAddr) { + CHECK_DXG_OPEN(); @@ -480,10 +497,16 @@ HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, wsl::thunk::GpuMemory *gpu_mem = nullptr; wsl::thunk::GpuMemoryCreateInfo create_info{}; create_info.dmabuf_fd = DMABufFd; + create_info.flags.imported_vram_alloc_va = requiresVAddr; auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { - void *MemoryAddress = reinterpret_cast(gpu_mem->HandleApeAddress()); + void *MemoryAddress; + if (requiresVAddr) + MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); + else + MemoryAddress = reinterpret_cast(gpu_mem->HandleApeAddress()); + std::lock_guard gard(*allocation_map_lock_); /* * the gpu_mem->Flags() need convert back from GpuMemoryCreateFlags to @@ -563,9 +586,27 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDeregisterMemory(void *MemoryAddress) { pr_debug("address %p\n", MemoryAddress); + { + std::lock_guard gard(*allocation_map_lock_); + + // IPC mem + auto it_ipc = allocation_map_.find(MemoryAddress); + if (it_ipc != allocation_map_.end()) { + wsl::thunk::GpuMemoryDescFlags flags; + flags.reserved = it_ipc->second.mem_flags_value; + if (flags.is_imported_vram_alloc_va) { + wsl::thunk::GpuMemory *gpu_mem; + gpu_mem = wsl::thunk::GpuMemory::Convert(it_ipc->second.handle); + allocation_map_.erase(it_ipc); + delete gpu_mem; + return HSAKMT_STATUS_SUCCESS; + } + } + } return HSAKMT_STATUS_SUCCESS; } + HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, HSAuint64 MemorySizeInBytes, HSAuint64 *AlternateVAGPU) { @@ -591,6 +632,31 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, { std::lock_guard gard(*allocation_map_lock_); + // IPC mem + auto it_ipc = allocation_map_.find(aligned_ptr); + if (it_ipc != allocation_map_.end()) { + wsl::thunk::GpuMemoryDescFlags flags; + flags.reserved = it_ipc->second.mem_flags_value; + if (flags.is_imported_vram_alloc_va) { + wsl::thunk::GpuMemory *gpu_mem; + gpu_mem = wsl::thunk::GpuMemory::Convert(it_ipc->second.handle); + + auto code = gpu_mem->MapGpuVirtualAddress(gpu_mem->GpuAddress(), gpu_mem->Size()); + if (code != ErrorCode::Success) + return HSAKMT_STATUS_ERROR; + + code = gpu_mem->MakeResident(); + if (code != ErrorCode::Success) + return HSAKMT_STATUS_ERROR; + + wsl::thunk::WDDMDevice *dev = get_wddmdev(1); + if (!dev->WaitOnPagingFenceFromCpu()) + return HSAKMT_STATUS_ERROR; + + return HSAKMT_STATUS_SUCCESS; + } + } + // GTT mem auto it_gtt = allocation_map_.find(aligned_ptr); if (it_gtt != allocation_map_.end()) { @@ -677,6 +743,25 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { wsl::thunk::GpuMemoryHandle handle = nullptr; { std::lock_guard gard(*allocation_map_lock_); + + // IPC mem + auto it_ipc = allocation_map_.find(MemoryAddress); + if (it_ipc != allocation_map_.end()) { + wsl::thunk::GpuMemoryDescFlags flags; + flags.reserved = it_ipc->second.mem_flags_value; + if (flags.is_imported_vram_alloc_va) { + wsl::thunk::GpuMemory *gpu_mem; + gpu_mem = wsl::thunk::GpuMemory::Convert(it_ipc->second.handle); + + auto code = gpu_mem->UnmapGpuVirtualAddress(gpu_mem->GpuAddress(), gpu_mem->Size()); + if (code != ErrorCode::Success) + return HSAKMT_STATUS_ERROR; + gpu_mem->Evict(); + + return HSAKMT_STATUS_SUCCESS; + } + } + auto it = allocation_map_.find(MemoryAddress); if (it == allocation_map_.end()) { return HSAKMT_STATUS_ERROR; diff --git a/wddm/device.cpp b/wddm/device.cpp index 5373e5b9aa..c7c97793e7 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -491,7 +491,7 @@ ErrorCode WDDMDevice::CreateGpuMemory(const GpuMemoryCreateInfo &create_info, Gp *gpu_mem = nullptr; auto mem = new GpuMemory(this); if (create_info.dmabuf_fd > 0) - ret = mem->ImportPhysicalHandle(create_info.dmabuf_fd); + ret = mem->ImportPhysicalHandle(create_info); else ret = mem->Init(create_info); if (ret == ErrorCode::Success) diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index ae89abb642..3d3b41a39d 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -60,7 +60,14 @@ ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { desc_.flags.is_virtual = create_info.flags.virtual_alloc; desc_.flags.is_physical_only = create_info.flags.physical_only; desc_.flags.is_physical_contiguous = create_info.flags.physical_contiguous; - desc_.flags.is_shared = create_info.flags.interprocess; + + /* we can't tell the allocation is regular vmm or ipc mem at creation stage, + they share same creation parameters, so forcing all vram allocations to + sharable to support IPC mem */ + if (create_info.flags.interprocess || + desc_.domain == thunk_proxy::AllocDomain::kLocal) + desc_.flags.is_shared = true; + desc_.flags.is_locked = create_info.flags.locked; desc_.size = AdjustSize(desc_.client_size); @@ -386,8 +393,9 @@ ErrorCode GpuMemory::ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags) { } -ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { +ErrorCode GpuMemory::ImportPhysicalHandle(const GpuMemoryCreateInfo &create_info) { D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE query_args; + int dmabuf_fd = create_info.dmabuf_fd; if (dmabuf_fd <= 0) return ErrorCode::InvalidateParams; @@ -426,6 +434,8 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { return ErrorCode::OutOfMemory; } + auto guard = MakeScopeGuard([&open_info]() { free(open_info); }); + alloc_handles_ptr_ = new WinAllocationHandle[query_args.NumAllocations]; D3DKMT_OPENRESOURCEFROMNTHANDLE open_args; @@ -448,7 +458,7 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { if (ret != ErrorCode::Success) { ret = ErrorCode::InvalidateParams; pr_err("open resource failed %d\n", static_cast(ret)); - goto err_out; + return ret; } desc_.size = shared_info.size; @@ -462,14 +472,18 @@ ErrorCode GpuMemory::ImportPhysicalHandle(int dmabuf_fd) { for (int i = 0; i < num_allocations_; i++) alloc_handles_ptr_[i] = open_info[i].hAllocation; - free(open_info); - return device_->HandleApertureAlloc(desc_.size, &desc_.handle_ape_addr); -err_out: - delete[] alloc_handles_ptr_; - alloc_handles_ptr_ = nullptr; - free(open_info); - return ret; + if (create_info.flags.imported_vram_alloc_va) { + desc_.flags.is_imported_vram_alloc_va = true; + + ret = ReserveGpuVirtualAddress(create_info.va_hint, desc_.size, create_info.alignment); + if (ret != ErrorCode::Success) + pr_err("failed to allocate svm range, error:%d\n", static_cast(ret)); + + return ret; + } else { + return device_->HandleApertureAlloc(desc_.size, &desc_.handle_ape_addr); + } } } // namespace thunk From 29ed03ab0a8ac878fffa3c22bedb5940845a057a Mon Sep 17 00:00:00 2001 From: tiancyin Date: Mon, 24 Feb 2025 16:02:12 +0800 Subject: [PATCH 078/159] wsl/hsakmt: forcing enable_ipc_mode_legacy_ to false to support ipc mem Reviewed-by: Flora Cui Signed-off-by: tiancyin --- version.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/version.cpp b/version.cpp index 12c3e861e9..0cbf188cf4 100644 --- a/version.cpp +++ b/version.cpp @@ -42,6 +42,7 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->Value = 0; VersionCapInfo->ui64.Sdma = 1; + VersionCapInfo->ui64.IPCLegacyMode = 0; // Force to 0 to support IPC mem /*VersionCapInfo->ui64.InterruptSignal = 0; VersionCapInfo->ui64.SdmaUserQueue = 0; VersionCapInfo->ui64.SdmaPeer = 0; From f4390637fb280f9e95c3c335668e1f992148ab21 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Mon, 24 Feb 2025 16:17:58 +0800 Subject: [PATCH 079/159] wsl/hsakmt: implement ipc signal IPC Signal only support sys ram backend and CPU&GPU both accessible, IPC Memory only support vram backend and only GPU accessible. Reviewed-by: Flora Cui Signed-off-by: tiancyin --- libdrm.cpp | 12 ++++--- libhsakmt.h | 2 +- memory.cpp | 39 +++++++++++++++------ wddm/device.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++ wddm/gpu_memory.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 202 insertions(+), 18 deletions(-) diff --git a/libdrm.cpp b/libdrm.cpp index 7d366916bd..4bdbe21699 100644 --- a/libdrm.cpp +++ b/libdrm.cpp @@ -82,6 +82,9 @@ HSAKMTAPI int amdgpu_device_get_fd(amdgpu_device_handle dev) { } HSAKMTAPI int amdgpu_bo_cpu_map(amdgpu_bo_handle bo, void **cpu) { + wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); + if (gpu_mem->IsSysMemFd()) + *cpu = gpu_mem->CpuAddress(); return 0; } @@ -116,11 +119,14 @@ HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, uint64_t addr, uint64_t flags, uint32_t ops) { + wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); + assert(gpu_mem != nullptr); + if (gpu_mem->IsSysMemFd()) + return 0; + switch(ops) { case AMDGPU_VA_OP_MAP: { - wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); - assert(gpu_mem != nullptr); auto code = gpu_mem->MapGpuVirtualAddress(reinterpret_cast(addr), size, offset); if (code != ErrorCode::Success) return -1; @@ -132,8 +138,6 @@ HSAKMTAPI int amdgpu_bo_va_op(amdgpu_bo_handle bo, break; case AMDGPU_VA_OP_UNMAP: { - wsl::thunk::GpuMemory *gpu_mem = get_gpu_mem(bo); - assert(gpu_mem != nullptr); auto code = gpu_mem->UnmapGpuVirtualAddress(reinterpret_cast(addr), size, offset); if (code != ErrorCode::Success) return -1; diff --git a/libhsakmt.h b/libhsakmt.h index 202a5f4752..392db59afa 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -202,6 +202,6 @@ uint32_t get_vgpr_size_per_cu(HSA_ENGINE_ID id); HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, HsaGraphicsResourceInfo *GraphicsResourceInfo, - bool requiresVAddr = false); + HSA_REGISTER_MEM_FLAGS RegisterFlags = {0}); #endif diff --git a/memory.cpp b/memory.cpp index 6300439567..dfc5a1f2f1 100644 --- a/memory.cpp +++ b/memory.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "impl/wddm/gpu_memory.h" #include "util/simple_heap.h" @@ -191,6 +192,9 @@ HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, if (zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; + // AllocateNonPaged == AllocateIPC + create_info.flags.imported_sys_memfd = !!(MemFlags.ui32.NonPaged && !MemFlags.ui32.GTTAccess); + create_info.domain = thunk_proxy::AllocDomain::kSystem; } else { create_info.domain = thunk_proxy::AllocDomain::kLocal; @@ -454,8 +458,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterGraphicsHandleToNodesExt(HSAuint64 Graphic GraphicsResourceInfo->NodeId = 1; return hsaKmtImportDMABufHandle(GraphicsResourceHandle, - GraphicsResourceInfo, - !!RegisterFlags.ui32.requiresVAddr); + GraphicsResourceInfo, + RegisterFlags); } HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, @@ -477,7 +481,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, it->second.dmabuf_fd = *DMABufFd; } *DMABufFd = dup(it->second.dmabuf_fd); - *Offset = reinterpret_cast(MemoryAddress) - it->second.gpu_addr; return HSAKMT_STATUS_SUCCESS; } @@ -488,21 +491,37 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, HsaGraphicsResourceInfo *GraphicsResourceInfo, - bool requiresVAddr) { - - + HSA_REGISTER_MEM_FLAGS RegisterFlags) { CHECK_DXG_OPEN(); wsl::thunk::WDDMDevice* dev = get_wddmdev(1); wsl::thunk::GpuMemory *gpu_mem = nullptr; wsl::thunk::GpuMemoryCreateInfo create_info{}; create_info.dmabuf_fd = DMABufFd; - create_info.flags.imported_vram_alloc_va = requiresVAddr; + create_info.flags.imported_vram_alloc_va = RegisterFlags.ui32.requiresVAddr; + + std::string fdPath = "/proc/self/fd/" + std::to_string(DMABufFd); + char linkTarget[256]; + ssize_t bytes = readlink(fdPath.c_str(), linkTarget, sizeof(linkTarget) - 1); + if (bytes == -1) + pr_err("Error reading link\n"); + linkTarget[bytes] = '\0'; + if (strstr(linkTarget, "rocr4wsl_gtt") != nullptr) { + struct stat st; + fstat(DMABufFd, &st); + uint64_t sz = st.st_size; + if (4096 <= sz && sz < dev->SystemHeapSize() && (sz & 0xfff) == 0) { + pr_debug("DMABufFd %d is sys mem fd(IPC signal), get size:%ld from it\n", DMABufFd, st.st_size); + create_info.flags.imported_sys_memfd = 1; // set to 1 when backend is system memory + create_info.flags.imported_vram_alloc_va = 0; // set to 1 when backend is vram + create_info.size = st.st_size; + } + } auto code = dev->CreateGpuMemory(create_info, &gpu_mem); if (code == ErrorCode::Success) { void *MemoryAddress; - if (requiresVAddr) + if (create_info.flags.imported_sys_memfd || create_info.flags.imported_vram_alloc_va) MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); else MemoryAddress = reinterpret_cast(gpu_mem->HandleApeAddress()); @@ -589,12 +608,12 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDeregisterMemory(void *MemoryAddress) { { std::lock_guard gard(*allocation_map_lock_); - // IPC mem + // IPC mem(vram) and IPC signal(sys mem) auto it_ipc = allocation_map_.find(MemoryAddress); if (it_ipc != allocation_map_.end()) { wsl::thunk::GpuMemoryDescFlags flags; flags.reserved = it_ipc->second.mem_flags_value; - if (flags.is_imported_vram_alloc_va) { + if (flags.is_imported_vram_alloc_va || flags.is_imported_sys_memfd) { wsl::thunk::GpuMemory *gpu_mem; gpu_mem = wsl::thunk::GpuMemory::Convert(it_ipc->second.handle); allocation_map_.erase(it_ipc); diff --git a/wddm/device.cpp b/wddm/device.cpp index c7c97793e7..0a0de0f7d9 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include #include @@ -231,6 +232,52 @@ bool WDDMDevice::DecommitSystemHeapSpace(void* addr, int64_t size) { return true; } +bool WDDMDevice::CommitSystemHeapSpaceIPC(void* addr, int64_t size, int &memfd, bool lock) { + int fd = -1; + + if (memfd == -1) { + fd = memfd_create("rocr4wsl_gtt", MFD_CLOEXEC); + if (fd < 0) { + pr_err("memfd_create failed\n"); + return false; + } + + ftruncate(fd, size); + } else { + fd = memfd; + } + + int32_t protFlags = PROT_READ | PROT_WRITE; + int32_t mapFlags = MAP_SHARED | MAP_FIXED | MAP_NORESERVE | + MAP_UNINITIALIZED | (lock ? MAP_LOCKED : 0); + + void* paddr = mmap(addr, size, protFlags, mapFlags, fd, 0); + if (paddr == MAP_FAILED) { + pr_err("fail to commit %s addr = %p, paddr = %p\n", (lock ? "locked" : ""), addr, paddr); + if (memfd == -1) + close(fd); + return false; + } + assert(addr == paddr); + + memfd = fd; + + if (madvise(addr, size, MADV_DONTFORK)) + pr_err("fail to set MADV_DONTFORK for addr = %p\n", addr); + + return true; +} + +bool WDDMDevice::DecommitSystemHeapSpaceIPC(void* addr, int64_t size, int &memfd) { + if (munmap(addr, size) != 0) { + pr_err("fail to unmap = %p \n", addr); + return false; + } + close(memfd); + memfd = -1; + return true; +} + bool WDDMDevice::ReserveSystemHeapSpace() { struct sysinfo info; int ret = sysinfo(&info); @@ -458,6 +505,43 @@ ErrorCode WDDMDevice::FreeGpuVirtualAddress(const thunk_proxy::AllocDomain domai return code; } +ErrorCode WDDMDevice::ReserveIPCSysMem(gpusize size, + gpusize *out_gpu_virt_addr, gpusize alignment, + int &memfd, bool lock) { + gpusize gpu_addr = 0; + ErrorCode code = ErrorCode::Success; + + code = d3dthunk::ReserveGpuVirtualAddress(adapter_, size, + system_heap_space_start_, + system_heap_space_start_ + system_heap_space_size_, + &gpu_addr); + if (code != ErrorCode::Success) + return code; + + if (!CommitSystemHeapSpaceIPC((void*)gpu_addr, size, memfd, lock)) { + d3dthunk::FreeGpuVirtualAddress(adapter_, gpu_addr, size); + code = ErrorCode::SyscallFail; + } + + *out_gpu_virt_addr = (code == ErrorCode::Success) ? gpu_addr : 0; + return code; +} + +ErrorCode WDDMDevice::FreeIPCSysMem(gpusize gpu_addr, gpusize size, int &memfd) { + auto code = ErrorCode::Success; + + DecommitSystemHeapSpaceIPC((void *)gpu_addr, size, memfd); + + d3dthunk::FreeGpuVirtualAddressArgs free_args{}; + free_args.hAdapter = adapter_; + free_args.BaseAddress = gpu_addr; + free_args.Size = size; + + code = d3dthunk::FreeGpuVirtualAddress(&free_args); + + return code; +} + ErrorCode WDDMDevice::HandleApertureAlloc(gpusize size, gpusize *out_gpu_virt_addr) { uint64_t align = DEFAULT_GPU_PAGE_SIZE; diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 3d3b41a39d..6677ea1fda 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -1,3 +1,4 @@ +#include #include #include #include "impl/wddm/gpu_memory.h" @@ -41,6 +42,7 @@ GpuMemory::GpuMemory(WDDMDevice *device) : device_(device) { alloc_handles_ptr_ = nullptr; alloc_handle_ = 0; resource_ = 0; + mem_fd_ = -1; } GpuMemory::~GpuMemory() { @@ -60,6 +62,7 @@ ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { desc_.flags.is_virtual = create_info.flags.virtual_alloc; desc_.flags.is_physical_only = create_info.flags.physical_only; desc_.flags.is_physical_contiguous = create_info.flags.physical_contiguous; + desc_.flags.is_imported_sys_memfd = create_info.flags.imported_sys_memfd; /* we can't tell the allocation is regular vmm or ipc mem at creation stage, they share same creation parameters, so forcing all vram allocations to @@ -69,7 +72,6 @@ ErrorCode GpuMemory::Init(const GpuMemoryCreateInfo &create_info) { desc_.flags.is_shared = true; desc_.flags.is_locked = create_info.flags.locked; - desc_.size = AdjustSize(desc_.client_size); if (IsUserMemory() || IsSystem()) @@ -243,9 +245,18 @@ ErrorCode GpuMemory::MapGpuVirtualAddress(const gpusize addr, const gpusize size } ErrorCode GpuMemory::ReserveGpuVirtualAddress(gpusize base_virt_addr, gpusize size, gpusize alignment) { + ErrorCode status; gpusize gpu_virt_addr = 0; - auto status = device_->ReserveGpuVirtualAddress(desc_.domain, base_virt_addr, size, &gpu_virt_addr, alignment, - desc_.flags.is_locked); + if (desc_.flags.is_imported_sys_memfd && desc_.domain == thunk_proxy::AllocDomain::kSystem) { + int mfd = (mem_fd_ > -1)? mem_fd_ : -1; + status = device_->ReserveIPCSysMem(Size(), &gpu_virt_addr, desc_.alignment, mfd, desc_.flags.is_locked); + if (status == ErrorCode::Success) + mem_fd_ = mfd; + } else { + status = device_->ReserveGpuVirtualAddress(desc_.domain, base_virt_addr, size, &gpu_virt_addr, alignment, + desc_.flags.is_locked); + } + if (status == ErrorCode::Success) { desc_.gpu_addr = gpu_virt_addr; @@ -256,6 +267,9 @@ ErrorCode GpuMemory::ReserveGpuVirtualAddress(gpusize base_virt_addr, gpusize si } ErrorCode GpuMemory::FreeGpuVirtualAddress(gpusize base_addr, gpusize size) { + if (mem_fd_ > -1) + return device_->FreeIPCSysMem(GpuAddress(), Size(), mem_fd_); + return base_addr != 0 ? device_->FreeGpuVirtualAddress(desc_.domain, base_addr, size) : ErrorCode::Success; @@ -386,6 +400,11 @@ ErrorCode GpuMemory::Evict() { } ErrorCode GpuMemory::ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags) { + if (mem_fd_ > -1) { + *dmabuf_fd = mem_fd_; + return ErrorCode::Success; + } + if (IsShared()) return d3dthunk::ShareObjects(num_allocations_, resource_, flags, dmabuf_fd); else @@ -400,6 +419,64 @@ ErrorCode GpuMemory::ImportPhysicalHandle(const GpuMemoryCreateInfo &create_info if (dmabuf_fd <= 0) return ErrorCode::InvalidateParams; + if(create_info.flags.imported_sys_memfd) { + // the ipc signal sys mem fd will be closed in Runtime::IPCClientImport, dup to hold a reference + mem_fd_ = dup(dmabuf_fd); + desc_.client_size = create_info.size; + desc_.size = AdjustSize(desc_.client_size); + desc_.domain = thunk_proxy::AllocDomain::kSystem; + desc_.adapter_luid = device_->GetLuid(); + desc_.alignment = 0x1000; + desc_.mem_flags = create_info.mem_flags; + desc_.engine_flag = create_info.engine_flag; + desc_.flags.is_imported_sys_memfd = create_info.flags.imported_sys_memfd; + desc_.flags.is_virtual = create_info.flags.virtual_alloc; + desc_.flags.is_physical_only = create_info.flags.physical_only; + desc_.flags.is_physical_contiguous = create_info.flags.physical_contiguous; + desc_.flags.is_locked = create_info.flags.locked; + + auto code = ReserveGpuVirtualAddress(create_info.va_hint, Size(), create_info.alignment); + if (code != ErrorCode::Success) + return code; + + bool physical_created = false; + auto guard = MakeScopeGuard([this, &physical_created, &code]() { + if (code != ErrorCode::Success) { + if (physical_created) + FreePhysicalMemory(); + FreeGpuVirtualAddress(GpuAddress(), Size()); + } + }); + (void)guard; + + num_allocations_ = CalcChunkNumbers(Size()); + if (num_allocations_ == 1) + alloc_handles_ptr_ = &alloc_handle_; + else + alloc_handles_ptr_ = new WinAllocationHandle[num_allocations_]; + + memset(alloc_handles_ptr_, 0, num_allocations_ * sizeof(WinAllocationHandle)); + + code = CreatePhysicalMemory(); + if (code != ErrorCode::Success) + return code; + + physical_created = true; + + code = MapGpuVirtualAddress(GpuAddress(), Size()); + if (code != ErrorCode::Success) + return code; + + code = MakeResident(); + if (code != ErrorCode::Success) + return code; + + if (!GetDevice()->WaitOnPagingFenceFromCpu()) + code = ErrorCode::Unknown; + + return code; + } + memset(&query_args, 0, sizeof(query_args)); query_args.hDevice = device_->DeviceHandle(); query_args.hNtHandle = reinterpret_cast(dmabuf_fd); From fb429237acbb4452269592a239606cd719f94d3a Mon Sep 17 00:00:00 2001 From: tiancyin Date: Mon, 24 Feb 2025 09:13:28 +0800 Subject: [PATCH 080/159] wsl/hsakmt: fix incorrect addr info of hsaKmtQueryPointerInfo rocr runtime will take care of the block offset(ref Runtime::IPCCreate), just returning the block base is enough in suballocator case. Reviewed-by: Flora Cui Signed-off-by: tiancyin --- memory.cpp | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/memory.cpp b/memory.cpp index dfc5a1f2f1..2b65def00b 100644 --- a/memory.cpp +++ b/memory.cpp @@ -844,26 +844,18 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, return HSAKMT_STATUS_INVALID_PARAMETER; pr_debug("pointer %p\n", Pointer); - void *ptr = const_cast(Pointer); memset(PointerInfo, 0, sizeof(HsaPointerInfo)); - void* block_base = nullptr; - { - std::lock_guard gard(*fragment_allocator_lock_); - block_base = fragment_allocator_.block_base(ptr); - if (block_base != nullptr) - ptr = block_base; - } Allocation allocation_info; bool found = false; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.upper_bound(ptr); + auto it = allocation_map_.upper_bound(Pointer); if (it != allocation_map_.begin()) { --it; - if (ptr >= it->first && - (ptr < reinterpret_cast(it->first) + it->second.size_requested)) { + if (Pointer >= it->first && + (Pointer < reinterpret_cast(it->first) + it->second.size_requested)) { allocation_info = it->second; found = true; } @@ -888,13 +880,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, PointerInfo->MemFlags.Value = allocation_info.mem_flags_value; PointerInfo->CPUAddress = allocation_info.cpu_addr; PointerInfo->GPUAddress = allocation_info.gpu_addr; - if (block_base != nullptr) { - uint64_t offset = reinterpret_cast(Pointer) - - reinterpret_cast(block_base); - PointerInfo->CPUAddress = reinterpret_cast( - reinterpret_cast(PointerInfo->CPUAddress) + offset); - PointerInfo->GPUAddress += offset; - } PointerInfo->UserData = allocation_info.user_data; return HSAKMT_STATUS_SUCCESS; From f44abf508ee50a7f48a9ef415b7622f9612ffc4b Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Fri, 28 Feb 2025 11:21:15 +0800 Subject: [PATCH 081/159] wsl/libhsakmt: change device id Reviewed-by: lyndonli Signed-off-by: Longlong Yao Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 366776 -> 366776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 96066be42362c116d5a5a90c7ccc44cfbe3c4683..0a86f0055adbab1bf547664883f20c3513c59f9b 100644 GIT binary patch delta 61 xcmdn7QEbOXu?;T_r6!c}Fdzd)C?}w_naQY~$%qk%nShuXh*`EX8L@6l0|2KV3~~Sf delta 61 xcmdn7QEbOXu?;T_rTR;F7?1%Yl#^f5%w*KgWW)%>OhC*G#4OvHj99m&0RXAx42}Q* From b5a9a5c36b63ade022f6edd7713684d902b211b3 Mon Sep 17 00:00:00 2001 From: lyndonli Date: Mon, 10 Mar 2025 17:38:46 +0800 Subject: [PATCH 082/159] wsl/hsakmt: Improve error handling in allocation This change ensures consistent error handling across build configurations. Signed-off-by: lyndonli Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- util/simple_heap.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/util/simple_heap.h b/util/simple_heap.h index 1181682fa0..1fb992eb63 100644 --- a/util/simple_heap.h +++ b/util/simple_heap.h @@ -208,8 +208,11 @@ template class SimpleHeap { cache_size_ -= size; } else { // Alloc new block - new block may be larger than default. void* ptr = block_allocator_.alloc(bytes, size); + if (ptr == nullptr) { + fprintf(stderr, "Block allocation failed, Allocator is expected to throw.\n"); + return nullptr; + } base = reinterpret_cast(ptr); - assert(ptr != nullptr && "Block allocation failed, Allocator is expected to throw."); } in_use_size_ += size; From 65b42fb70a48b021dee6b319bff3f0defad5ebf9 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Mon, 17 Mar 2025 17:42:16 +0800 Subject: [PATCH 083/159] libhsakmt: add support to get driver version number Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 366776 -> 3770836 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 0a86f0055adbab1bf547664883f20c3513c59f9b..e9a96855da5452eb0f842501d8df4921294ea201 100644 GIT binary patch literal 3770836 zcmeFa>v9`Ok}f!A`)kir%)Y=`0=!5vTU)b|lvM>uC2>eiZ`=8k3xY`zE!-LaDQTW^ zpJe~+3+(3}H;>H7TVy5x^-){RR5t-cczC#b_}%}v|6{tHJ^r8n?SKDw|37Eqf2#j3 z|Np=L`}p$Z%NJMlrT_cC{oB9&umA7A{V)ID|MTnre&OI34g8{kUo`NG27b}NFB=2qJdvD@QVh1(ZDYn_(cQ1Xy6wO{Gx$h zH1LZCe$l`$8uzi8kW4g8{kUo`NG27b}NVQ3)zA0OY}?qBVHY_fE|dRS-wOm5!a zrvH}ykJY#3^)vo`zqo$pKiuv|uQu~+mVKM=vUIjy?e^QJ*&bi{_$p1mte(=@_wSc! zy58(YS7|!mXWMj{tbFZ)OO5`Dql zU4FaV7eObZ7juGj%NW7^PgncN-G{qTlFXj(6b5hiI2j0GG`igF*G~%o{P8v&jqj$r z`78y=%vWC~v*Ouqr#N7eTrcN7P@p8NGo37#vv+fR;qzH~{rl(i`u*oodVPI+p1$3D z9;bZb%k+AA`-*UL3&^m=c{*9|(%+Z+hsE^EP80EZTlUFpUHF98THo9hKG2IzKbCw1 zyuX}da~wOn*k${Nq`1VH0`>ec`;JxY*LlzL^=zN}BQfgbj5rmTdI8*SHsB1t!`vr} z^|#7Tu4nr0n^65x@N@NxI@o1F(mENzxc~7goA+1;GZ>t~a{d7Nlg-@rm8N`eF46BrXh#fA{ z-=9{q{d~RRD|tJ{&))uD|9zW1{CCK%@8474a<^Vh7xVp(^!ZGKo&VLyZkAv0CE&@H zoBa>|#_j%mIbThdApXxO*i~^XW8zhMyGfVRuUWbSZ)f-Ee){Dyy-oM?|7g99_>tb}ayi}49#i7ywAnT- zelc4!V1-|loMZYixuMe+zF%?lo7$g@6pAzO99M$zo&r*3+GM9-w$Uthe8$+j~5ZpFXGH&HdcWE|TP7O_4y!c-Qbp#o+>?R}|dC=qe`YU~yukO=qH=9CSo5#ImV}6YR zBUpPrQ$UsQN?P1V~Zfds-2UJ>o`Mw8p$QmC~;C>j37 zO&e8Oe7y-gu%Ma)#30?i0T50unthLk3@g(tBqJt0^+Zh+&ed~ets^L$BeDZpa){mG zNEfdqK7`d+9cY(PN!|p1$eDj^A~F5M62^IvFz{%@d{X}b>gXEJz*VN zfYOpTi#HIyXTFiyGtkaL^me~ll$*^$ROC3H?@Qmo?aLIxM!jklk=~t@@YP$*j-FH= zkN)E++y40Ne!77$yoEKo-tHlt|3Mpg-yB_CPq({Ff0JeWKY~*Kc7NsU$1CP%HXwm* z|AR}$vN?9Q}gZf3kBF4SmbwjYO{NKz@Zl| zH#-Ss@kEzQmZ9Gz*UxYejhF*Gq>U~Gk`=yk?#jF<9G!-ZOITa; z7SuuOP6eQ`#;KT^%rJAvaZ=RXnrCb+vlt78(an~$)U6h7XbSMEXu>+xvLF- z4nH$om6={2-uI>P!v#-kUQ;}3zKLJE4;fZpvVHn_;|`;>gO{lmVH510Jj3faN^kHU zlD0-NvbdQ%wDCo5_S*?mHRpV}AWs4e7N>X>wZr6tv`NP4hxH7$-g+^g{Yb{rs({gH zHsbetQuD)uLFhI*(@xnqL&nhS>DUZ`*;Wful_ohav- zBAS95N4||^qQcU3&Ui1?(%>9mk#JFTB*KKh2>NhvZGVtc9G~W-8F^yZse`8nAPx1v-4gq!Wh{3~S3P;_T<0}})c zABgsRHo=}x+PUKNVC^j$jS;qAOlK6foPC{ej>*mZ?FKO*r8gV=H04d0Vb`-~B&wvh zFVYT{7-Z^SD$-6_R#-D((fcA6tWf|gi$EbRo1Qaifb*9OtWcH;hM3TBVCJ5MGpx3bjIbP(p^(uX%EKa62_X-rEV*wg&{@V`ws%Yo!6+JTh zEAnkEGGMrkS=|1x%-Q6FT0Pig1&;*VyN{CTZSo0kCCk+Vnt4VrmOmZ9rnz^i9U=aM zKL?HeQ5$6qEMj0_y)C$zfUa!QmU|j{6)WeS<>Ak5U~mXNmS&6_a83s6kuAZ1Kv~&k zL|Xb1j0U?{QfaQOl`2;UKdbW=c&T}L5C5^@vZC3+%c{@e;mXGs;BW{>7!D4aev>^t z`Cve3SCrDn?NdgwS-sKI#TV3Ez`ARc#1+9($_aDn+1sy4^MMoQGT?;yfQUM(LT)I{ zHu;{-o{&LytpX)yFm(}$OzvPdPRLDz-{;*l6X&MEr`_E&M{|r^x=eXW>Ny%5!cQa~ zqNd^2Q3JAqKMiI(I|E)zXTT_Eh*I*3t*e^M*%$H5*63%Hxww>6gD~yFIL}u1#>&cl z1ZJT0eztm1-?huOd*$MIuJb(25kQ0r@BARSl`lBKCLbwih&y&i*^{Qzr|-hQK`zuZ zeV8s#PC|*g#NXmcgb}NbqZ9w2I?a+N}pRL57O8qk*x(elM(YuabWd)K%Ue z6V`8O%6o6Ww4>W=>ov{>`)FEu+}IX^3WV6@q3s#u-jKU-j-sM0?By<2c?cgb&zL{H*$2m6V@Q7z!$1VLgzs|Vegr7aGXks)4#<{i6$>oh(;D6 zcm=2o#YNwBaaa5ESJEfFvHZ?%Ty?=g_q{K=!x}qTKv=lYR8avZ>F6?1ONLDdWK7DW zdI=~DkbU2vZYD!UzIj3HYK;NoT09gZ;uXq6)R_6XAmM(#`-iU53qaG*9m6ZB9RB_K zD=Hc(jnON9c#(dl4?gR}7;)f+TTn1%v)%+?Z0Ii&7z4XrXqUbPq|rT6ePr$)g&xpq zEq;#mT2xeNxTB?$6>%CAK`!PfeS|Pg@1K@SRSpS@pdSyQ^GJ`7J{!>f*s1w{-fmuk4S!qJiQf z?S^XL%Midezo=3dS&4^?oM5()e2#KZs)H*{+;=pNG(lvg$(ZBl>}fUsCz>NrycpHc zSm)wCdzhlC6Ytz2+pAh&k?m(Z9FW&s6uf{07l)P-tN|gl3N^&6-G<- zqbeoku$SCUDq#Je90lPqg)Rm|jcm2TV@XA;`9RVP$-r&0eLc(j6wgnWtt#q&h6@AB z|4)5kIDhfN%!?bZi?vkhNf)Ds*LSlV4GiZ#dS9b=mS6~xE7ho^txjq~vm`=*6b^11 zANDE0ve8ah2g@p(ptpb(=u&C#FKdwLKM9gVw8m4;73+(yRUTf?xnA%S3ipdpInM2KQc4qxi1aJQJF zU&aGExFNZl11E`Y69UEPXxAcy-VvdYFMuNuDC5_pCL8)Vs*w3BPfrbr6?H20@~13+ z#hkpUBM6RBSx+Ar4wpM2ZQCLaz_Lc z*peYS%wvW!ceK(?mdILAIcSDi^!LKVvz$-R>cuja*^l)%Owb zA?rXm`(2&+8W+JF^qUfxuaepo>@D!IPU#372FXFL@FRy6^6tU>;$94> z=BBPU_=mEb6cS6|%jZDORUfAIce|XcD0RfKjOGI*2EEQmC-Sm;ICX2rfC@NsL6_)K?3v~9U`n^{z}f6?&?+hWvflovUhYNV`^0aY+(iBgwbdc+5Y0-N3>9N6r^Nx5CWCa%$-s|!Od)W}GRB4DzUI-H;Y{|yaHhn@$CijCT$sLzkw+Qd|$z}=L&zlH7&X_S7 zSOh%*F5t?sjQhlh6Q=~0oQ#AaHD53$s&_pNbJaK<4&Ab|Et0b4&z60nkLsm$wOd7` z9#a4A#e%y8dZ%ibKt~FCE*Da#9`?^77t~J@={$;vAQJ7NJ)uSx4k^$o>Cj}gR(}_X z$4}YoOHPonat-=ezje6hdzY)&KYGq>CM3Ndy#t@C73oEw$~7GmYB}W3&hjqfdKFNVIEt1&h8a+4#Yf;b*(BsVuapXuh0QnJH~X z9hiZ%I)nXlA6t+{YLY}(80@e^XIThFHFXDM*z0CgyW}imxF$DhH&gp)&fCMm+>>0) zd6nGN{8nt5tnwwPPAFvDx*CU=h(0y>%%ztS+K0{c%x(Gs8Y3DzvdO0#@C*(@gTz>(?$sDVXp9LWn; z)7@_V1@3=%N#2Bg*CoUzs57L^b>L6ucyOF*UdO{?$L+5rg}yHL_v65I0)*o($*AXt zrxVLQLf<^a>@DDmQcs4;UOTv`G{zU{>^jT5J{Bs-qiHY*b{?7u7-GjU1*zF9cUB*# z8k48V>xf`}Gd!e(4oaZ`z$8v>%irO5HW{|SvBk^3UR4C}y3khB;V;!CTjzxT@V9H| ziX#re=r&!uF437>9{?awd4mSZ2LMEKoV%PnVH~;o#RXjbd(b0{g>(j6)FKkVOWxIJ-_Qv z+;p$eh(wC2CEF@{gcOQ=l^Ja@TTHMI9+_7e4>3&V50k&|w)AaGN<=4|XLRP7V^ZPd z`Zvs2yM}?DTyk^(-GfwcpZsjOkkV;BROoPJQts1-Es`)E=G&bPVmB~-tV^T0u45d_ zr~QUgZvU|A?8%=W?qLq_p>ai3WhXG@q`Rr?6gtc)YifYK0|N+EUwZWVP2dM6tIj`wppE;-RcOnjTB;`QK=?qnci8g zgV2*AaAif-64XH;3esQG2QJVpub!MZbK4|PE9Y}*OTCa6GLY4a*9&r^EGzmYro^Se z!5cco*z+xf6KLVHcxh4y5%xGUZBC7CVv?0F)If+}7BS8m?iT>btn{bSy}d+SPTu7# zV?3)aAGKAIET=YeoQyp3g``(%dI<6xUD{7{PeV$%4d=*?Ne9GFyd2qzRSJ3ID&4w1 zMb>9zD5WaVD9-U z(rc&RzM5c}B?m8a?SkwzjO5UzG1XtD9&h~R`6|U=-r3ih{A7N-JqH;+FUxBv#s1*onn_@y>OkTK?9YM(d7CBTNJzS0u+Z_POn@QBa?yAFDt4( z%$9dg4+xFCe9(O$C%@m}AxQ}L)BAhvWhs2_ke2(QlOOpHESdxGieFI+Ui1WBxWjNl zEjfPFFf9v`(NQG3yI)p*e++2$tKtCw6=k6sKidRf^^ zbnRtDKRuS3*5CpIT_oc$Z!_v(bQ0M~RWfA3VC1*qNiFA+rnP^8pWeH7D_HvnDf~ib zMv{y+0+|363Q-77i47?*Ec7yaSDCh|V{9D)S}iOrQ~_^=M%jX8tUUGA$~G%laowxd zK+25BFr|#v#Q52Xa(h%C*eR%VV9U=zyTNRwYqV8Y%F2}6W7r3$ z#i~Q*$g*d_$W6SkM!jw_C!8K5ohQlGF`?7fzw6N8EI(Y}FNk#Je6lxffp;MUt`=`w!OBeI68QD5y2#xSpQcA>( z1PWeJ5(j?u(tN5?Z6>EJ(L$_}>la{V|$>Z-KmMX|Pewf4eb%Obx1(H?z zI2;`ZNG{WKP_8XlAS$w}Esr;KhQk=7%r?C_8Rx?v)#xurIjY&*X|uzhn9$1kcw?E5 z=M>VxQEmX>sXnUJ3b|fXzZJ;GlA?qEi7+#!-Y%w}v2#mVm((d|OzsP#BhlGM_V1?$vz6MUpvz*R6UMA_EuJ#W4oaga zIg}o=iMhM+6NAh0i?y6iGnuYo#uOU;3jIL$!UytA)_2pCMp(AjcL)(bBU{micf-6| z=hlkM)DeBp9m9F=M49k7I6#($9H5@eJpe%Yu4vHOOib!nx2D}h6nj2kV!fCJE41{$ ztjH1rvcg1ZsYoQGIm2;si>TJO>5pBCIaSkziIkL(%4w(+1#0@UhMG?(pgDu6oO z9wC6+J^3;wAC_myJIL2?j(9@hs{QC(dD}3dWSOn@lfT2`hQ2EN$H}|58}2NuQ^Idh zh_3>0l&&m;pA?os+{s&0`{Mp7U`C#*d>}4u>jGccw$Q; znjzPH&sps3pjVFa8hA>3HTT*VAL_R7Oc?|;^=m>g=+GgVa??tByz-?yhA+-pHw=3&GI`M#e$T^mQs}BxcJZq>;Lz^nJ0{*O0 zjK!tq!q9U+z^TQ@z##HkEjoTcWe0E zM|Htn@-(YcAF0scKnJn+?`297k5XpkY=K}Bw1#OkW}PR|X%lvZUQ-$Hgt$gy zUQ7@K&?hozLV+m<0P_x#ZwbvAa(9bc%@FktbTli>z?IUWdHRISUSdhKL;j%7HhG~k z`dv?GBy?6Zdq$TA+w57s!#Rn!3}%V8X^S7ofl|pwg#r+hManN&MO%FRJ=qM=$xCXB zAJ~!-M-c?lsmZp4LXTJ}_9e&51dc6fi*Eoew#BbYr3yeM5~kd1>2{Dk?w6|QLiD)5 zNPpJ}u4pH@%LJe1Ke0}xTmq~6iSevTx|DfjkeJlkV>HeXZ9$`FZeWQ#5BejDY{uLj zTicPvO-!07!u`1qZNn+?S~kugWpxKal**phq1p2d+uM>lKHaZvCaRU&%^@ML2V69( z{rq9>OyXV=B1Q5h2(#Dh&BAr!d8g}yxN^DJ5N=vh!`KI!wqE5#gz#EwL=TbH32R=Z zFO+1%N&0RMx=70;4TusmuTopO)XOdN6Jk2Urqd@qWy#65{KS%_pDL=M5#J98JTDhe zvbT%Mizcs-4j?#{CMwp=Jra=^6^dyv6*h8NU#aJ7!i}*zyXRcY^0pl`0Kvm_3qqr; zzza|q5I?0nIdP?U1i zNWJ9P0#6|!)1miZC{<7^FJNDxq=ar`IIv#Mrkm+(zW-q!m!m-f?OFATgn%f?Upj?L zW6g{*i`lY+M)A8cP%bD5vUX%x$qB$yG!f_{w9Qt$

8+HM0FFD-E%3{EK=SO)#Pa zo+B1AV+8vU0l~84!^PCT=+hGFLH?-JRn5YGtNo>jGyBJMOLl$N$p^@O}~^)?>ii#^y|gA zL9_vnxG!u?Dk{s{;lUz7>x3F9+$cjYPd^jl}YzlzJInkKnMwkzbhemf8yt%l#r{*LtW^=<|}q7m!`>S52WAHGt-f&iIs3H^>P( zGU6BcK8=V)k}VfVfDC#$j9igU__Aw?)J*aok+-PhlnH)1zm8l^6TTQwjHy9BKr>r7 z)1c@6p|tyUZ}mT@nG36kH`rSDRbL=L?YoPgvefwaM50Z{J|y<^g_{ME=I*A+4H+W%bd-MPLQZ;mIIrv-{8h*(qXr&qo9HC9(NIZh z_VM%5WP8DDENPgB86xNtTI2q78U*$6c>fcC4fWCCH*a_xx79RX{Y2yN#6Tmg8PKff z^k1)1f%-7uaem5@1?*E*5H6gC?h!d=EsLBQNCAn48ilQ5hA+$be(sicWV}EiYZnoV zU)$!VNQ6jKi}zu5m5mMB44E4KBII2FkJWBTsMD({GYy0%QTthrD|K8uuDaXu&fw3?iUb6v1C_bpcxsHj)cQz}5tQ9wjO-OKy@j|=^h=C=T-Jn$F6HfkIMvCW^%Hss_%Z`2#49ABn7ODVa% zW}0viXa7{ukQlp=*AAZHGd(8=ju;9weBf|%RAD?@WYeFb;)Jr~J2a}d4FY#-YM8q_ zdf*Xa30jq*ic^+Lz6x9&QCQ#&rXtt}ANJo?Toai#&wTpt@ zK*!yD|80(Ns{REx-1?k8n|52*lyqvwLq3sA6*&f9O&at*0Y_>q+) zjZ%3?sf6WjsZ*4N|rvulm}nzD*R^~M%#oQtr_6SYaXa{;v26>NSr?xf#b zS-8ARK5L&v5yj#Qw@*-7#ij|00xoJHY5EHEdlpgP!SxUZV|`x+1l(MyEL|ATUBE`RH3Jsth0i!?nb! zeiIpyx>(Q?<07lLssiQQyd_#T1&L0wqg+>(rQlW4RR~DRKBuH?*GAvDYf4t4=Y+zI zPzZ{>%lVV!Ij1+Q*4yQDVU-IQjhN3t8M`85-q=hvyL!EoTfKwa2X?-q!UuHJT%j5x z`+~}LP4}&q8j;&nE=8$SF$+nUzOA?S>D~GXOX)yvJD8}Z)WEb}f1N&N)B9wRU#f9+ z1`~eirEv==S_?dXrf4YtflDMS|EV=lEXYkf2Fx>>KDXHh723%nph)mQ z(OY=bff6Y3v+v(WqtRG774$eYnjk~E(rmF_Wwj@zIxcj;!;7ytwDeqNMhOQ@fEW1H zW?v^o)Sd6wo7%acMenaRU9P?EL#7#2HYPd|vhs5QsrkGRO4gHjK(p$cH+C6fyG$+`(O^vxwVn($%S4Exw zRa+~o#kP5L9s!wpOM^=AZkS+bilAu$;U+=~yFKSf!Vp3Gb=`JGT7kK5`%<)_B#{-x zxTWM-yXne-irgkwP1${d2lY=O1_%4t3e|F`WBo>Ok+9_Ke`WL5l&>t_fT4;#y%G`O zE--J8+*be^@-KC$wgi$3#e_!#20oZu7$w>4EA+|wF6||kG&r(MUC;6GL`n$ffVnb7 zeT~-7FH2Vrj;KHlFPDSP)|(%?9Q3`Z2Zb)jM?rI6O6a)0ex!oXV^jV@6Nu^o5r-+$2V>J?skU1?EJ}!}7x22~k_R*l1GqrWN!_%u zI^g=yUAQY+c*A*Q%Ovf61S%y0?`eHMkZ^%YfzZpPt7QNQgD60CTK|7=dLFL2 zMXftKmiHKr2+4H8PvRn&?sGC+YRU?isrF6;z_?lRz6o zDnAj*B1;B>e^RhZnv9bFq!K`#_1Mcj#Os)BVE*Z{Ql+=5Ij=eZ?S zIEGY$)|RQ2t^uI=NqVoig93>6L}B=Z3j>4Ak4q$T4YE5p!MW0gJ45Q(yi|P$5m1%; z2q0|~`d_b*nuq&5&v$rJkab7)vrt6j(M3)sNhivroPQ7Gk|f`=*%LPoZg7n;UL)*I zrE=maNB3@MQ}oAT7@rg6I5FT61tS1NkOc@#aD7&XS%JR?&p+D`3 z$f1-w5#^=+tmiqWaasC2E?<|1f$P@gKkLE96pWGw!!7+Q97}MN%VnN!fBdu*$SKe{ zj#}8%>YtVTU@}?qoIYuevOsF>qb81+QuPCA5_ND3x(3~# z^l+`(spYLg)$cmH8SYWkS^F77N~|3)H3wi3VG78&QeSsBhEP3aixveBojRwGt>t+y zPXD+H z@kP){#Qpr#z6d&tcv^pEUj(s@c!;L;z6fXG(^S;hROAwyUv&u#PELgd!I|D4W#loJ zi-)=1w)K_CH*DEFYD|WvRb!i!f+l3H9jbX0w%S7%y4}DOd|DxpMl%CY*uuk8<3LBT zVs#59WN-3-ZdsZIBOOSxw&|Cr>GnRm=Ly(-!-q1q8u%!a%eV~S@nM|M6uujmSY7y- zF6{`A+J?(C%&|44=^068R_mb&0dx@EAq|5~Wj*Do+y~lEzFn#MrbA;>CR>3LiWGb# z616GC18_*atTDU0XC^b&6w`Fnc84QrNw$-fZuEJy4!(<+S-A(zH{8P z^(u8)<4%m1)O6|zpZ}!r8>dgFhoHNI!l%8_Cb}-0aJub@?sf*{D+gt6-6$wwmkf>x>=DL9YlwB< zo#S2 zWwK(NzCoY5R)U@oJVSuFp_Gr=p#;6Hmr}SL5?Jie2e6KGhXS^ma9d$kQ`CTDP^4Mu zHVehq<9Z6*XR44CYI3Q9bE$d?&bX;yjoK9lMR@E=+*)crN`>B?Xs=SuNdo2d}s2@s{n|$s*S~&scC($|`dBZ>S~yU(?-Jc6^edVr+I{#pue`*^IwL zLmZ1=^7d)i#DZ)M>aJE?ZHAA~=E8ko729ac*rN5$OM%ld8pjEI8il%_&KI$uakEhr z5_7jz(Hj#kT1vQSJYzoJ`ZyLI3XyKnO!)^(1LVutlDE#NYf_2!(lEor(`rV8879Bq zffn-SQY43zJWnyJ;jt_7o2lrE;sroJkbs51Y}R7uhfVBNFVE+6zKz=p-3M~ zADQ$Cf}p3MwUp4RlOz3j0yRtZK%jc5-ej|0?_>y6!!rbd>ZOlJpaz2e2o&Vr7lG1J zJrO9D>XksT-boQC;2DZQvGkD%lpqKaXyZQUXm@4%pqqBv+VLt|;^+0a9@pnH479#w z;sMw9;lH^rHWWs7XKAMN%W%)rMBH0eQiaU0z@PxX&eo>7lz z89B3@%zzfQM-y}NC7KvyyXep^;;Tq782}I=apG4u4RR@z5xod;6B4R zd$X{kr-}SL*FqmF9 zMzZtH$a&*(4_oB6RJ7`UDO>dmmt`(m8*SJt-jd?q7n)H zsqO&YG2IR#F1hEq9*2hN{c^VW>d zMFCZg%WQ9L4Ea{=tzdhoB4j9S57Vc`K3yHA?>05wW*#H$SzKEQMb-Br4Chud*+=wJ z;^vkH1_B-|o=2t9)d9o6d6yKxG@*o%N`=TAf?)g*K3 z8+?7ol+49wH2?L+n$55%Jmini?>F2d7-N?3#On^joW=tk!;CG)`)Z%Kc-#;D(?aSUN7*WI)OxQ<%}YGgWLM@(H_6qvcGJnJ1!*U1!at}oes zQrGvKJqV+79tDuXp}ovj`w2BJhrP^yoVV~- z>%HZkzv?1M4m7?haiB6W6f1y92>@Du)<(pmC>2{@LbBwK=!o43Zx}YW>mR{}Q073LB zL1c)o%yq{cy)5>|>=FiQscth&+}qTE1Sw&q^9kx?$XsJ(p^*kHpUM+G3rl!}*?$`S z5*P53>6eCNemeb<01xPw!>E_br49j+JL=Fqg^=!8Xw@a(+=BD2X8=)#^nv2Zp~54Q5@oopI(P?K$dUYmHZ^>LN9IP6?#i#~& z?D-r@E@VWN8u#Ix} z%#*c!+Ah-x(pen!A8G%iogeRPU#$?~dve`8Ip@2&-KBm>KmV=wccS*zmGC{zUE>Wv zW~&ze!FRJgcX|l}mz=-6zd`_hy2v;k;&My94&cQ=lJj)6-;G}GeysM>@9BC&Rpu!t zQ$V?Srrvp8dV!ElSJWqU{$+)}q<2pb$g7ADBVMma8L`f3F|paa$b2EM=l66s|1a$x z6(`7TBJtcJW7w$}%j@^rD;-vV(B97_Wakln583sSJQ!RegU`?w z*fkbJb{o`ooaD_$)ZN8&{jzk=L`U?8XJ}0`f2{o0| z@pNQqsDId3hkzOpEX-$YBTc2_&PG<=z*u)fe$AF6pESm>Nsi15{n^aT16w-)sy(Np8e0b|D5dyFA|NjFC+ zvlq&_sxGX_5B0B_$|JEQjL|dEk&w@Ax)KVX5hyyYfgo#0wzZV)G;*aHw|w4CSG&cO zr>45R`0y~(1`XHzcG-lPp=-zU( z|B>3pAzVFyh80YSB1uk?ar~|od3I2py*#^vU;!2$l^4(V3IXdamGSUoWL zQY47yAH(lR15kL$^}j?Wz$cqiYJI@)wsPmBb_@vD)tku}E)~oI%l({~f*QpVm$I3W z5Z(%mU-CoTnaPSMV}9DZPhrAm8Fe{J6yp_-VVPZZ3F<+HVUNSgFxv3&GK_aUAsNQ- zoQMo#SdJ&d6e?8mLX-@PR}^#?hk7|>+CB6rr_A1c$tknmq)tv%o~5;%GTZvc=vPh| zh-E{PL3J&&;bG;J-StG|l!fO6pV~hkeKFt|!7{ z7M>G$$1E(z;W4}YQQk4y9UMOBJEr$IERP-j9W%!~1$#`vqJugo!ee|R$K$d7-mzAb zdMLDZ#ti1h3dw4SxTqdh@-F%Bz7V%8(Qs-)jk zy{d7{s#hJJS@lK-Vpg-;0bf?TO{L4yP_y4l$RS(0ghkIG| zu@3pN+AU9oSx@3+wOBb4vvzw~Wr;_qaa7!BQ`b%q*`MG%-I$nbj`a9U_g89H?CQJR z-z&attFgl0hL_4zH8j}UwbCtF&F*IE8}t#}Hu(?iFLEn-xv)6je1^8|+xhCtWClEq zW|;46dY$q-Q;e46iVYe{;Fj_b=5=~&-Z;7x;XQ&l1Qs059X^;)`h&Za9=dGd7B#fe zX*EmWy{uMtQKrkK7_RHEo})tXT{o#J&->y_RNzh1dUFf50Hu@^YIkv$;dW;t3jET2 z*PuG|rNVuLzEpNLj}lZNApCXn{SIS>p@nfazBdNhL7lsV#w(RyQR5}(0;vWn2TX5= zEWO^25V{L>kQXILlWTA*8PaGCnmc6t5*FjG0wiW)urib71l`iI4M~(h!v0ZJr(B_W zamT%b$Cp=dWm~|^+05i@%PqMZFscD*Qq<_QFbc}6mxENIf;u!01}RdjVO={EeDd9U zXMpkUs^wekR?D5B%cA8Iu)JeOZ2<*>aD|a!Rk(^;8e)Ld6NeIm;D88pU&`Sv@ZE;! zkiW!xLZ`%N#Hv%uU+723!DWE=P|-vfxFvE&YrRs#gEwCnQku|0)wLCj(tJHF_|1tC zrD`N8vVSJ1K2=QG=m!vvO0-n&fHL~^*C#YKSWI`j)pVIrZ^Q&O)@Z9OA5UQ5D%ImZ z8*RV7aqvcyg*Oh)*36mZw7`=C?Q$Q9iFTmd-Fmy9$f{)=WVPNdrwcc{@EWE>ZV__# zGxr1e_)zs{j$4P9(d|n_^>hf1_W?lOVEz*>hq}j~rKoJD7EYrSjc>hTc-&h$-D0E_ z-R3PS|1nz*J3LPpPZ`bTOVH^+cSO)H&od^fqNY^i^AbgqJ9KHT2aq&SkcC>M^ZSVc zV(Ja>HA`pH*&{%$tz^#?bfVb@*swDk@&4jS#i64YDtgy}98uBm4B$A9hNT~ORP^@X zVd90D3c=h1YTj$_foiI-p|Amu9t2jwP%%mQD4vZdH@bvbDiiQet z=j|XQNKJZGttWThMvEhdw$2xP5_(6c&{xbe!-0=Z6$sJ0o{-+5!ax0Imqg>{czTCI zMZDe-&xaHPEc(wnuXl95*5^8$Jz+NNmV(ljcI~bw!q*m_6R;;NEXUz%yL|_Hq8lGV zsz4u>3RLIyPJ*vVT1F><#&8&m=Yzi2L_ECf3Gp?FgXj0?mujwA%OLXWvPidm(-_;mT@{!7dl;#lmNM}Kg zR;QHg5}I}vca=04(IoxY%Pbzr^CaZLI;_Jnmf(`ch^hN~1!I0TSM!6HUj>nVx2x#t zCI$q<9@D(s$2+EmVEAJm_crw_S8~joJ7kn)*#rZ#)u_n#ivhm zbm3Zap)S`h82CpQD(+hC$$9q;^l(#o8B6s*Sb3YPCFH5ZY9UOMUQRcY1yP?MFONt@ zqs96gO_y6gVg4m`DF%$U`|O_p2LUvL3>V?_Xbj;%{W8_>^wN-?eRm8{vjq;nu;FPl z!Ww_0JQlp4MwQeE;*R)+pt);%33zZlmmWjhM*M}3Y2FZ83ooV^PWw1t?Nc4z<*5PV z(Po~_GVUqPU~Zpg`xM%bJs}Q+5a`=<@(xcD{#zL10JZYS_}os4XC)#2KrR^GaiNQc zIn$GF#IEQGBL$jVo2II6yeMM#&^x+twZln(sUk5M1kZ1_3{+g2KH>&{`FiX`%r4PhZ?Dt`~aRyUCyl z_rS+}ys~^gSwIHhFElmc%%2(o0dP+@38GM!$a5c_c8|DPjMJJveW$4-{9D7x z2eU#Wx#SCGUKvUClCRunhHOiZ_rf&u2XN+GYTw+6$R)m6Z|s41<=g#o&hoeb0COnr zc|V;mn$McJfuOjij1)UCN<$I19I0LuPzF)mf@t)V3;=9WRQg$+7-XAG7d&G^GluGmTju6*@bqEoke)uw7mIX??4g5!LL+fMLLXTi7*`Xg-E z9R|2ex14-x^OK%!b`oNV7^VCE_7A1d&~IQ=l3~7npgf-gp%k+&Zt%c^NdWg5TqT$> zLu$a`Kp<5F*yM2;Bu;9_tQZZC+!DZ2A;s-|Tv<{w*G8{pty+si*-Qh#Q5aIAh{_R& z#ep!0dd5X5WemSJv`reG;;4a-|M_V{GjYh;{IDD)@9@Wq`|M%*wAe#5FS30$`7OP} zi)M^PrszMjDJC9GF{I$b@+`T&GqE^rdV=q~bVKA5pE=#gi zyyt@gBJW`8yxm|hd_vwdUp>9M^U}_J-LZ}42zSAI?32UrNj)XXx24g0v0OiA6RI#N zdCcnQ1f<#8Sonm!MpxU6_6GlJ0SlR{CtQ6}x;MU+msho98?9jygOIX2|88WZ)*%}p zz?uXtSahCX3>0YPHPZ_F%&Zxke9vZ2Jb`VX&H1`7Q(+VW4hRQ&`ohzm5}IxW+ZG|l zbP2s~zL>8vZJS>pYWZASmlCV|(@@6Os5pW5!FX0ou{{A@e4>f>P9L9~Q2|?&@R-75 zw4ATVX`~{^rw_gf2Y*{{?@iR(Fzdl2iQ!o#(Gtr^eqaMZf_y9(T^V1)VFuBoNSZPb z24b}^OPSmxw(rTs>4M)!2aOngy4fs#B;YUmPxA5oe=bnFi-NsmM)+iy;f$OvE(Sv$ z+;hnt^FLm7Jr*3iVLUJeQFR4P0p2k!mw?mZ;j6nm9D!3e#`&~`MBw?i6kk*SBnr!X z>_5o}fmR8fg@hVCnp&Y>+lC{DeYu_cgM3qZX8cQpuB_i4*%#~0k9vwI5fX@NDSfxC z`QucDH>~W^Tb{tCz`ub+(9j2R>oMKJCQaqs-x5$72!xiJkI-iXkW@~2&Ne6j)w*dO zL=;|Hsu!bUPA3?(fcn^6 zLzv^Y9r7O%;UXQt3+xBnmr{HX=tuo^KoqOoxO4NFlFuE$ zY%7_6hfq@@*l_8otLKztS7z?~1hD_irUjv%Qj1|3InzRLa>0{=%#d4jkw6mCKD$qm zL4h0s&Z;4YhSjPs(vQFYCS4o_)e*`9nG+}`{6Jx&ar$8mpY>+Fn9qJBV|;4z4Nd|W zlXh?tz&NFFdHvo*Z!Qrv)y`+WmI+~Z-}7yur1yh-DvP&9hSm*?m}_X)O8N7`xkmzu zBY1CEsXvJu9G$tW7wF8tv1Tt3n`67ytfjMHURXOuGOdaM%IymGXqc~e3PRdOH3cCS zgt#WC$R=|@34z4P?$*{PJwGGa(H^>0lh@!fY+dd(CGrJZpy7wYJ!apf&>Hz9B2KK8 z+);rWv0hRT%X}IeZ%e0~l@kO7Zz`lUvO~4vhGo%)%DEx(#tVvQK^ew)A>A^xtTHFs zP`W%$PDY(886|d#9<`$4O$yDx(M9_E(`v>{K$3}yZtyQS3b`qYN971I{kHmH3U6@i zQqPpFQekbJ(1ox#lDUu?0q*4JA@ZfLSb9I*Pf_>=Kwcm%IQz0imng%f6C_DML((SX zK>)ScC91V`_8-t&sMaaoeeF z`mDnAI;cnOrY<;0{|U_?kfNfVd_d#CCA3dxGpd-lh9mJ6eH}|atkK-+b4t3)=YB3& zT~T=BUhrc9#%hNlS=P(rS_9?!WnJvPA-VU)CgodU5jWR?W-x&(R21M~Y>XX$4mM^$ zkHN;Yac^wg178w6gYqR~+6a?lt?I^Km${r7-xSEYmiSY;#gEAgt`cN;P z!LafW$7!O2sme+!`~=pW2k0SRC%N${Fo}d`5GIiu9OQNKHtg^^4bCJd|B@I?9{eSd z8=n%B4EB=910R%0)YZn@PJ=Ru!pey|7zjuU=%HT{v+=1giGgRZm&9yvFeb4Zp6W|N z0R9v&i3Ri+OhOnsB_ibqbtil=+7}jV#DxkMDOJ3zd{zugR+s?^(0;)1I#dNWL7`SD`aj|~7K4J}SmJOmi#bdD%L110^C8XXSNm6L0)%`zlLc=7&N;s3 z+b_&ydHOadyw(1MM)b)X<(X;97u><5#~0v5Qie;>158aC@lYxxcXzW}d582mCp53R zDm`&05X&(uGIxvlqpfk`nnXq(f0!G}Qwi=ZOebBCTnf5rnNm7;-QGEsLa6o<_^#}V zWl4L9^Jw9H10?-j(Ev zrSXQ}WM8uH730(eZX2&uj`_w*(6M-&dd$5v-bLP8iyxKUY2zjA=?XV))30+6LhGd+ zJ>=(*%U6UmuHv!oyXc5Svl~qBlo=H*K=@!njt8=bAMS$2 z9g~nPZ98_CgDTi`x-w&!E6q{y3-puGoxGd=0_{@tFL1iL)(C})KToK@Md}*xf}^Qk zhWMJ=dR^q3@QO-~M!4Ym5L!((gpOVWPk`+Mi`?~HhT+l0I z?+2$rQxSmXGn4^EkGH1QQK%DKZ+7S`JV9{*dIau};!kA;%pR|(xSvTFDdHXGUyF@i zsg1ZXNV;F^%^){WR%EuT!%1*N_IQ91*|JzEbeVz6xggC!*HgKgBdvK~&BVk4r!PHpMza1?|A97vIITGZt1i+A25t=`4KMSe$D`r+Ot2J{$j6K#A-Zxg{Y=-b4Yjt$txyiMwA zW3zxd@gzC+LBprRlNz8dc}IugNek$qdD3irDm-c68H^{*1_#p@?S|3%VrQO&NH{H? zWEmA-!FM>GRKm1l1z%e!P835MpAt_JJcIHiWBO31lsGi+s8y-kaUNMzN#s* z>WPe7Iz{N7lQU}BtON2^?{AJfe+)F*M$w#W>S}$Nen$5cO`Ue(SVtQV#N^@4>jh7Bzp)PIEv>O&BzmAW{c@=7Xy%dNn$b2^IXsXM*)$) z&semhyAieZr_Mdo)fXfK>Q?C{I-woMuQq1LVDgE+(L1G+7>XY`Jv1No09^?mM%^30 zIVE->aC&8z9{dwQy6%-~jedEWRNE7DeNn9j=TxZHfO9fbs{uL;)%GCG^c;x3Ujjly z576~VwI?KNHFi!%)@p!)R4ZfXxr9S_>fJbR8qI98;odK3cCih5P;{W?t2V`n8tL32 zxh2a|GcJC*<(2gS`$i3%t9NsuhAvaVU((RK`IpB%I_>V!XWW2InBaMsMupWML`(pG zfh`u3I5=hL(*1ce$rot9r`!n=xi? z7@4Uz1W9?5?`XCvvV*`^II8^)`fwYvb*=gw`I>+ktEp*i1CEUfkjQ(&?!#v&2$u4~jffZ7g!})$# z+@eiv3Bna7g4D0mw-uL+sw8hi22Z{keU6R7yY71YH}3Q5dmp*Nb>qJPPRh%EBU`L@{v} zhBxLdJYz~FE zlX;2$LO+3qtE4KxH)lZxv?;X;=05{0_}bk*ELyLTcB{%_&;s5=UCGIm8ZcIwxc0rL zXS(8%md|{JF|d${*9)boU?3k;o}BqM!Tk+;4QJ%0czM!=ZhB84aB$ts6O0RAKDv_-@EpD z@HbzR=HIAUP58}Ab>X9Pp7KUmVm+_FwLeN_KF8l8he{5-3nwJ=%(E6j0@kv8N)d{z zR}mpM7xx{?#-<6kEvM~OF%afvNxgLFal~&%6KFzn<$y6lKxxjq zPuygLpB8*Vgo8AKQqdvO!XA&$wnOWHMm+=3jZwM507qR;dRoYYrE{C!ukC0Tm?M9r zx9{km8ybySR=5D)COu1nU2;OW`4v>i<@4sjTawE}!3y>E3B?(_M>Hp1;NZBvD-|&0 z0D6QFBR|iDR$-?1&(qZ`tDO!SJF^_|_8Tse0eby>+gIsH4tFQj(vI9qFe{P@2T5ue z@l~jvdokb5c-RUaJqRmN$EPy_42#6`Y|FQl2#2QrDs5E_#T2BC(V?uunF2_By#%xh zT5c(p69NeSgWGh6$8xq$F<6U~DWXLl{SEb$E71m{L_Fzkf;R5-5F2`7*1)KBz|?Id zwjM+!E;lE)hQC<%D!7@4Fwh#$UzI{Ps7sa|q2CF=*DPw4#{V(B{Yz{7{+M0zG9P`i zvu7)WFjj`JGd&WyCF=@>=`~M7drj(}E>Wb%#v6XEQB(qhAk+}#5q1L)lrBsnK1<)M zSG)c8X|^wuZT*At?uMl<*|_AO=6cx;-)x*D=@j^GP}|1`76du=PgpX5R{7wn z-3GyBiU5%DX?FwflIMMoAa55;s zdY&P9r28Cc2wLK|LodJHKW1AJnj|`{!?;Z;cl1pn^AI}!YQ9e&Xx!y`J7H-6L+eIT z5Rj(X_ApS9C8AxYa8?Ua2HwKu_sWWesY+7?5ruZtk2Ga(faGqAR~=@+>K>6+{;#X` zKBXiRbfLggz_ImoG5?xjup}%|L~ild9)t$mI zpbC9ZI-CnC6#o^?=w|>ub z@2!0dx|aYPo$e(trz7uus7{aWnI8v`_vYNZ{y=okYaf&D34oKKd&b7e$b0Yp*%ck* z^ypu|C%6=B!|3_*8BnIU!l@Ksq5= zPCyMN%kAPrQ2Fs>xjEKpQ2B|;a)X=>vK(m%erx%PQFprFsXWgRNeM3PzF|9hS7Pg> zwKr~?C#tM+Cy9ZEQt^3YUZA`DFvl15zh&u#?Qsf%@JeT|&?rDplqGf#=F!ay7@}^Yrp_19KcO7e2sF<)SHGTaikMP)9KT9ZV!{->a??gM-rfx%*FBhUeWt�rq|1jLInklcN0Yp7hL4Pd#UVhJMJw|$W^EY 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

r$7)zf9#?hyP@$>}H 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ɟ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�Ea{>!0{zah< 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

HdMWo^)LtD0nQFOQEwUa6m*T{J|PtlR4JFGL4| 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 z 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 z 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%0DRq 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

*nNNN%ZjVEIhG2*wmeTY)K6_utxOo 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

ISMmAyYJ35H1b+iB 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 literal 366776 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 M$64(&U)=xy2YnktF8}}l From be242bfc46e1ace704271a3650ef0ea4bef4fb88 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Mon, 17 Mar 2025 18:23:01 +0800 Subject: [PATCH 084/159] libhsakmt: change the unit of clock according to kmd version Windows KMD driver(25.10) has changed the unit of clock from MHz to KHz. Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3770836 -> 3770940 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index e9a96855da5452eb0f842501d8df4921294ea201..4aa9bc4ecc3217443aad7f884d6fb4ae90460b4d 100644 GIT binary patch delta 57677 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ǓM!PXYOW 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 kv-VN>NK|G;6EZ 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%0AyT0q@JVg#+n-W;ojEs7|;B{ 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 Date: Wed, 19 Mar 2025 16:56:29 +0800 Subject: [PATCH 085/159] libhsakmt: filter AMD asics before QueryAdapterInfo Signed-off-by: Flora Cui Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- wddm/device.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wddm/device.cpp b/wddm/device.cpp index 0a0de0f7d9..9b32914fd5 100644 --- a/wddm/device.cpp +++ b/wddm/device.cpp @@ -814,9 +814,12 @@ NTSTATUS WDDMGetAdapters(D3DKMT_ADAPTERINFO *&adapters, int &num_adapters) if (ret != STATUS_SUCCESS) goto err_out1; + if (!std::wcsstr(query.ChipType, L"AMD")) + continue; + supported = thunk_proxy::QueryAdapterSupported(info[i].hAdapter); - if (std::wcsstr(query.ChipType, L"AMD") && supported) { + if (supported) { adapters[num_adapters++] = info[i]; } } From 5b6f63917a54385286169625a4bd69e162b40493 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Tue, 25 Mar 2025 17:40:51 +0800 Subject: [PATCH 086/159] libhsakmt: add a check for Windows driver version Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3770940 -> 3771124 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 4aa9bc4ecc3217443aad7f884d6fb4ae90460b4d..cdf945ead09a6be7e6c4e9c0970b727f0fdd54d5 100644 GIT binary patch delta 86336 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 Date: Mon, 31 Mar 2025 18:02:14 +0800 Subject: [PATCH 087/159] libhsakmt: add new asic support It would be changed to correct device id if there is available release IFWI for Navi48 XTW. Signed-off-by: Longlong Yao Reviewed-by: lyndonli Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3771124 -> 3771164 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index cdf945ead09a6be7e6c4e9c0970b727f0fdd54d5..1b6dabdd006108d8a06d139658161e3c3b330e4b 100644 GIT binary patch delta 289947 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 delta 313449 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%0A2eLb!gVnK}F&F_`OKPJe-`Ucp3$mtG+7x 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ðrhaHpYmLp${#CdnML6^hW9dni!`7_CIV}Bw$FGr&;cM2HZ|V0?p63KIbQ=dC!Bv&I7*(^5Zh4l zvue^@$+gt4t)3635M%SLLu-XG`wm=gwXx$;udneX_t=M0sK)CUPj#jSucJVcjj6b7 z6?P=~UWe%yjJ**zDx66{#`}y1vjYm>PZ7rDjA^t&g>%U^0QjSyC0R+|Sd(>-Tmz8! zOXP(r={?HAFME#BZ+BMWQxs-f+sBBFVG19j7~`qWNSEVRcnvuRB95xmav5yss>U6Tb@@wdjI3NI;)uecaD zdsbY_RJc3^7{9kp;$EOIMmUU3&-W;tLNUg7ua$e^DTV8ib1-n@Zc=0ZQn)dB7@H5_ z6^~idy`B7w&6{@}g?Cd3IB5+P3`WWH&zJNKQmPZ=7y={5je{QMEBqz78P_vr{P!qa zlYEKzM}_?q9D>TRog%C<9j#tqO$R=I9SYS^at(#5lkpaz;&H1A#{x1wU)|_56fQ-9 zp=qP-Z}*X8_Eh*hIfo%L?9_4?qI!igak1}SD$VC@CH|d45En(2qi_$3vXKmO49BG{ zxral%XtDTpPKnQx4;UYMWwZEa%E!gtz}SAb?g?ueF|{)Sw#phG3iMWZ6}cGSYaDJc zQ{nmKW!%OisoJgZQxpKk`|;cnaAA)zBCLAS>cV7-jX*vwDU{^Y`__uflYb;0)o1Uo zRr=1pioHr9FniK|iGP;D*s?GYue}93G7<6VucWDzIc1IbGzBwZ+{CqR!4bxJWu=)u zt8gCKMkV0aZow|bCyjG_9p|la&m}M8oXzs@`U-zZ0mcRQNY!hu@T(MN+{akJ;#RmG z#elJ?e9CAPOOMAT`EMxIO!AC|kuf9WZazcd5#(q5jj<%|U4@%ah;ixJ5_-MDwJ6Fs z*hof1`xLHEjxkuoiaE3~P~Cl(+z;;l!J0|cD9HE@Ey9y!t8}qA24* z)1;s#Dm;c9`;YTURxK0aczJDlul_HGq z9wHUAe4#br9O#xQzq+F=Vy|YFhf)*DR zr}q1C$Ycp0My8{TGi$b~urPo#9OLXU zlK(Xn#E?wm~%)0!CQgtKO1Q>ayp)|8{7p%#ApS%;$qT5rLRqIL$?Wt51D8~49V^5Pe z6uym|6M<*%lB`^=FpeK%d?P5iut(uzJfHVhxC!|f=NZp~QxyJzf{ee(m)f>PVH~0WoD`v}laS$?DoXEH?xNKN z9BVllMpo>RLQPe;9(ft>JRzZ8ajF&|uE!%FvVPI^+ zSD3|h{(gz$ic&pD&S@~RdzsXz^8Z;~z&<{V=U)^2kiuAC!MJ^83H6l1Nfctde})vz zNQG-tlyR+kl7J-&-$jn;$g&dTo{k6lp2o(RHzJHaII2hP+$f!@C(YFfmc)W%1N*AaFW&5 zE99J+cEWzpn0u;M%!;wf=Pi_UY07vj!N@tK!dK;Q!J)%sn+1o4KL9`R*P*!87KW;f z+k7f*E=S?M6rKem^(n>|oTN7!nQMw2#)29p$ z`hTy&bJA90cdX30sI%*hJxL!cWwpGMLUUo#MUHtext`qf;Ob7wn1_F!qI~?bC|%1- zTZ6VC+x&RCQs<}bhHr)QVWBOhyp1wSA<)x_FE7dx3 zX2)X;Wy983<9LzZl*&a>#%6UWWen%csQQv)5prTDxfdbEb(FCPCS7zD|12toBx4Us zGt5qM5po>sxd;ug?^Du>XWdR`W~X7D5TS~kq8P#KbL3nMd#F^4xLqxdZ|US$tWA!6xC1%`7gP zqD{uw$WC&uNLy_m@Pt%}D@s*?qAQ?kLymXi&Ng@lzfM!eJE%>lRQP965ud)t8i9*! z? z+LXL9ZEjH`h$%6aV6RNDm15jZO^5nYWFV(j#3M1QAqZOu50bfwRKa~3YA#RJCo|Xc+pu%jX zAXG&T-R7{yi0up*cQAGetETV?vaJDbXe`uju5f>Ht$`<}C`&G3z7VCX#l=k?zHFeJ zwWu~Jl)MhVuocj{xX&5qG$)_iX7fzZzmN5<2{Re0}^9a=9Sg0W?kfCY*vhq6-NEs5VsZC5RbsMF&;tZ zjq!hGZHz|{!#|56s9i%x;M|lD!BYxju(By`%fBh1>q<|x8o|l2o1sc2-{yphf{M|WT5iR2cxz+Gj87G0 z%(QSTinooir24LhtiI2u5CXyX=+*?^yDAl0&9=Dj4YtLj&De%$-=h3&@n~(iaSN{8 z1PhaES>wSy6u78&c()dP;!LkZIk{;SxNhab-aC}CJ#NplJ#NpxJ;C1k+S*7p-ht|}m%=+>VK1fZ#6M?HOTM(F z%$?{g%sWB%hpmRjQgkQcF)Qf^g)zeUC?0{EF9XQ;5n`=C*&o5A8OGzZn#3sJV~FdM zi!UkU{WxLxU2uyy3|#EL2;H+QtreCXd3M2_&Bp$z)9YAGw;?|;RtMzlLj60@Oh$nF zl?rd|*ofJ~{iN`>(x9lb^D*n_Il zn|yoX;^3Zyvhx{7x&6Q8$ey&(WzAmi@}u$vF;XfeH-n8GjbN?)!(u~g_-$~h@p&H`ZWgmXECD%SY zm2{%QeaI8^qxra$q)fhGOq(AMSCG%)@{&JKE0u)*+V;o)o4P-4t@Hl4wJ`r`OR@d1 zc9n9zh+B((fl@K^^wGxFQt3;+191z%15lY&|8J#2H+3)}`|M4$5%0l-8+Sj2aobM} zJwxHXd9j0>rq-1FC6~U@gZ<>PMlzq=z})+O30KTJiLvf`tanw1ogLs$^~$*%zT$7!PuoApR;LOm=e}CJKx&$%hdJ2QeOwhp~N~ z5ay~e|7}(rjH7@Nrt{YbGmZjZ;|XRvIloCefqIdABwmsYa49O4OHW&4#i;HGA~1{g z_GhdZcg-V6?q0GT#bpzDkHTaM1&$_!>DN++2_H>sU9NRsd3e~_vIJFViaFl;$B=)I zlIIwT*?gq0(aIVYHT76LK?TQ<1PrYT5+W+o+A7BIr2y_=Bk|)A|?*|p84LMK1r1`j*Y;4wVW;?#suvyGS|dgW3R^`@a+ne3*y*&N(bt6{h%TC!d?u}Z zQqern?Dpo6^(>w$wo}$w-1u(xqOZ>4CC&!po28@<)_Aaw{T|Bv8S|TFU);Q#HSBx}aM-6PH!KMK7k^pMv77Cw z)g=sr4wL^9EN!RgCBU)dh~k2qZ4`@<%xd~{55uvkQ8;!7Wk=KI7WHwzn(&$5;(eU= zHyB8zz;B3o6XpJfnA=c{fAyu5-@)#smblnU#-z`>x2M(V`^o=1#JwqpRc2>7LaFfh z&MMq7{($#2DFc_HF0Dc@t4Va0e;}L82hDm4KT5XCuvLdrFDHyO=PDI46Bzw+4C10H z6um{|{2y?=XJjtW*4yd{de8qMLpD>+|Bw?6sQ?%I#3yBNc|eJ0k>d(fbI5%K?k%K@ zE2#XNDS}@`@sH|bjQ}I!KOt^Nsei`f@#0sJ_?QxJqyS^HnEzB5-$21g(e3m3zSgM5 zlJhD;o0Fp+h1-w^7$uZ>6^YnMIahI4!?6A@{Ifz{_Fvpz{TGqPctD@y_eks9fY_Z1x^I6h;NP9#3f)D%__EucH%5q0AeI0Nv<~cxDvb zK+1YkgPRF;+cnS{PaE>xWN}{h&9o#qB&(Gr|&K*tH>xVc9n#;Ysp&@5iR{hUXR^7 zx&)m)h~e4?CDUv1Gj2&(+C|P%>AR8B(NgL04ySZ_UHjUq(!P(5vD#fq?$UT%zjUxx zX&O{Iy(>08$uEsUxSPCX;9PggEtCGLeMWr=5n@Td`z8UHHn=-?nK0xCBHK+ zwpC0J-!|1Mo}GP@oshJP3S%V4 z_)%l&WZ7xf(D-;282wK6-N?MM6yaYR>FV8x(Y(#iRblWjk^&VTMp6)FF9lNIB`OeK zuv!wVD5JYiw?@~OocE-!F1mM}Q5f~^o`h`rS7Gc6TnUwQGx;hd#4%)sjw1++yFz{? zxQF{)WwcRq=A-ybs~A&Il@nroP+{x`R5>1Fj8$g!nXFVB$!Sk8vQlB(2kkI|ZV@VE zTY()JwUd&opw=G93sy<*U&{XbTQXyCbfMM1JaSe~|2^sVJja8m5=FBAjE|Mf2bJOE zs=+dHrXmUlwM<3QUF1(iOgQS3|B1;}?jc_yUrpqP`2xB35^H>wDUygcD%_4-4<&@Y zsqk(J0Am-H7QaXVcL={4HwLT zr6I!`8Mny=%dJ7NHwWW~_DR3BRblMS!A9CrI1SEjqLg%8@Qx`RVa(g%@_^MO@{+OX zY_7uSkJDii@0illPZYgQJ7}DkWR_9|iaZPzo|iDqS!ApFJJzW1YRrjzF$aU=6vh)0 zLZcexI@5o*w;C@4_N;fUMlc6a2c7-!X9cf%w*<{C_HYXQStq@Dl}}RT7VxtQ^zSZe zS2w*54_xXZ3d~2=O&^UBitQ2nI!CFGq}MHb$(ZeFu#(!1Mem>aNO}eAVUq=hb@926 zq^~aa-(~7iFTGXL!MvP$+>h1G3qFc#Ide#QU{wifzYznVg2xc{bt-%;{RH2v>%+v; zdC~gm?UVQp`#6dn2dq7gtZLibct5$;no1mz`$T%{avx^Pn6k$@^WOPH!oBm2b=E*A zt0!P{_p8$4-cfihMPak7X)}2}-98xU?A$ONk2uD&RQ2`Rq_1Iu$)^=wOF_n-7UE`4 zg*Q>8A^HdGh};OOQ^rSE+mvbsc^jqIEq3iTTG1%I2kx~osF6=8Pp1F>v!rK(b}aNH zRNJZGNyM<78Z;IY{TiqDun#j%>>9e!8VK*Z8{^i6uCWQi_NA;Q>2o>Wdt3>DUf8Sy z`CX_i7b&@ELermREKxRF0H!yZq7$k~sm)N>ZK-p!cp;}WPq@L|x6Nu9W9#N|KQf!6 zoz9^UF6>Up776YQH4Zv6Bf^PxE#S@$y4nIssY6*$rQ_R}Za513*i-4vakol&8V>BG zmQTmsiSnX8nlvaoz_lZ{V^cJ*=cYN8c7?BUB;^794BYMYQ@rS@12eM?bblvJ`CrHqZ9+zIK-P-0XgVBF%fS$v)% zEH-cPyObEy-|ZmoOR4SPMnme%m(7&b4nb>Dn15jwTz<7|AODrv9;v`!qC+Jzif6F8&u1l29+-nqKrmqKdu%3&p8H zCs=4n*`3gVqH;HVG2X@lFT#UUl>4Hzz*e0Ts{B(2tQOIOb{1K?F7d#@F7d$mUF5%A zUP=gD|4SV>{F2Cebd3iNb&Uru=qms1*DWD%&BHoyq?^bFzZ?%7emNev@MZb$sO|}Y zD<9E;quoXJ<}2~Qkyqk@uf8Jxo#sghT(&?5j(J2jr$;<+v`0K}@~ikSUVbflHN6#I z&luO5J@FgaJGiI#*;D-Ni9X^0W%fcz;Ktbt#b%BJDt>2;5G$7$n+-5sVZ7Jt9j`3z z-mr|7OTAG`UL#u{6z)9o_Q5~*P*xwrbB4lvsX!@xahXS+zF=J_Q+|c`*B&b1U#G~C z0h=l0&Pa&)*)vwh&?GX_M;DD6PAiN?&<`fj2>QV!9yIW)D3MQ|wc5fEL&UlL5HTL^ z`ymxLy|+Is45ys_=oZZ>h{orvLGjTwR7Fz|-4(_=!q;H3KDl3m${fEfRVr+Az}OtW zeWdW$6nqW&xtnaS!=bg5`g+2{ivN47LwJ?(I`YLVuvgDpF_w`aG+MWF0Mb~N3I-s1 zYLH_fF7+v6V8Ubd^&fRm*Pw*{vumNofkEi8TT!MLwd)im4@UPfk9-(RB$c7;!RXtU zQ|BSLS&nWhvpt7?wpv(6;UO5^%x^4rpvNy7qnr9eF}g7a@a~J&K$plf6uzhA7 z?8u#zKMW5BIOu*jvaEnoMj*oNOJr17FKP{oEfq%~Gb&SvFF0|QFQ|SaF=#*|YBw@{ zl>Mc*W$gIfZ`QDV^CBbD`zIxx$ZI(&{qH2C)HMbv&CBaNCcRlP>=>Rs4(T68w(%(0 z1!Kj?pI5C$FzOo*=aVRFJiMJih2s$hr%JzpFoTTIQ#WG`xOu0qOMb?uQ^nLMg%42( z7>`5+Zy+(_DcOg+S*>~!f7O3<{6QbYGbrB&H)@gXO;|PuWFwS#2D#o8XWxvcEXHCp zWeu)r%gzaLapnZ1?0YJh5KozVBEnQol>%OR-5RDY`52oi%TxFe1%a_Ub^gS7%C1gK zNSWt`)z&ErOp2#0cTzlMG5jh@*)}DfLC(qI?BsaLqLUL+HtMFf?3fZ4XG}rLJe1GB zdXjA_E}g0K)Ob3>Q(@t|+hzRg``2orF2xv|>0GMtA#!HHb&S=r;_1xHN=Rq(|E#u9 zTc^d-*vDT zcsgR3Kq)f-lPGhBWYr8&`%tt zLjKi+oU?FgO__Yb)_}9nh?`JwHr%aCk=Y5^RlKA%l0#(kBL_B9sz07xo&5>fwML1t zB$mZ9C}j@fsYRYS3E6d9DXV2{voZ%J=TT@5(u#+Pxwzm};9OY13MTw2SF^WNG%0qoBhhX^gA$G^3Frr#!_q^!ebhDK4LLP&MnGVWBHam^N~B7Da0zXP~KH4yd(oI zdZavDCRyGl)p#56-AfJLMsn~B@HXPxPC@)Cn*R-!wZ^xBYzq*PIsY40xR6{6;11f) z0+@V>3gzNl82^>I5Vsz4hO>onu%21mIG1c8vZg;3K!r?5&W6|=SS(gzOnGL<^D!e) z_1!J1ps4Z_RrlGfNy5#3QQTJQqJ$WG-Jrx3i72nU0ob!-X&mnQ`Qpv^8kgH;6CRg|I&CPi7v&h*nI5l zVVn+OX4eApEkn>#l)Vf=lPIzbbtZ|t%M-#Jzss7^1r%Ez50eszhw%jBVWNSAFzt+w zxDw)7A@Qt`cviqg%v`;Lf3Bt6cjEtyy^~;}mvLt9|6B0C8@G`2Zd@FFHy*3+y@W8| zR@R={R>s4mu8fEAu8fC?txO2hv5F4ke_!HxU*dUR;`tyU%z=A#7+a3SlOyruNIW?S zVOkiwZX~2(qp@s&7$f5i z3ByQxs#P_XyigUr|4UaGBWB>Dw)A{zGM$}`?(f(JbVoa>a05ny11Pi+5mlgqjp=iX zUg7^&(`a^6H{mr5)_rV(rXVkWQ##&;b*I>7G@Sb6*@7%G=i_%6TVI&PhqZ=V61vK- z6~;5kR`fsX$h{T0(VMdItLQmlc$zhxZ78xeo*P%UqHM-e);5UEx7SamTgCTNcpJpM z>Hp|D7x*0O|NpZ)5@t@rb~i(a+}m<0h201_Z6n9jHbkUYCsfQt3Ynqwrp%OMhgtER zA={h@GeVBDoJuj1h@AF+e(vkOT%Y^u|MPg*^}61#*Zc4}T*v#mulu}GnKvxw+EncC zGd&?YWzrTt)G!uh)>2IaiCRnP=GeUE@=d^pgV2o4ytTBTyKGlJEyO&5_ zh%3z3^-&px>i&gDw2h9CR2AfyWD-O@I+MlDi+)~*k9k>g$L7P!Ulna$medaS&A4B( zp*cJsUgrr}W_^?R3cb8{470<{VP4OS;QW8RXJ_fZfnIJQsT(-FbD!i#!kb6Du1$Tz zbHe~S*nBwi6&ua@`Q;xuFWD(AHxin|@S>*cyKHk47>tnr&T*&M6Qhe-09 zQ`$~f4QZLv#LcdLOb(s=nPjU4mo2$$Z+wp_m$i4rf0I_>%ij0%oAZzx*U;(#tW8{G zn0KbH*i;Q94^?^d&UBS0WtJbwAK0wjnC|WUK8hKc8`E){JvXM4HomY%6;V`X|R>~Hby78|A0HX1TclDE+joXKn>+;Tar zjPH9+Z$h^xQh{YX*CD@bw)bQG3WWLK2l~?HuFkWYK?A>59JY{gzy& zjcy|air)3M;eEhH&lLZ?(0_ev(3frW9%;LmddJJuy=+xxp&g#_E%cz|sUYoV7-!wD z+2|2+7jN1TmWQhPmqt&m|BotG(GOKNE(iA8=r)q9=(ofu^pcI9DcOoP+wo9G-wJup zA~cuQW%kjI@&6b>B5kU5619&Y2Ui-Wt1sGUZb0D8JL}W;apW*nH9PsHS|_9O2{OX_ zwt**XG{*#;e$htHkvyHAVxxD-T}8L?e$D=K8_fsW`=Mt(sWy>Pr8e2;&PKP9C`Ettr7;&jvC%UnQPJjv z{@zA&nGekg>h?pPHeP3Ozl{%c^{tl|@Ej(VxqXJ)=n*nX(QV@muRi~wQxzR}#d{I= zA39IbA%Vv2s<}40joelA4{MAs1h2BuGbQX7XtSAnZ1f(9h35ABm|wK*wp2IY_N|j_ z6~vsXwQclHDZ;yS#jKDc>eF&l*0j4lO53C48X6rbk^)7W?JO7NTlov(f5J0++nzvW zZlPUls)I5Lnk{sy5?7SW6P&bgu78r_DL>nDl9Qy;l33tbD=6@+<(=}Zg%$F#yLlEl z#rv&e^X!2qb$%u6P-*!q=OyNi)4MiRV@dy&+XN=vt+#Ir_KE*#j*o+-?`bmfEA?v8 zO9IdEA-s9YHleSt4`<$IX|DNTY^sg!Em6=FoPQYG)AqjRDdJg95gW<8vvh(}wzCMj zu-w>pwC(4cfs2=Oo~AW8M{#^&YphK@$Mr^ki9JsQetu9b`1tL-M|qgF`yYN^>hBxx z8wvRhah^o|M)Mj;`ft>4-T-}dfUkI(6euxgg}uDCdSfoT`hV^-+#H^*us0H9R8Yb{e$K1zaDYyEsr?+mM2iuZ30!3VYgW$ z&}}2o9oAaO`8#a1=BC~Ab>DbA8*mp_p1Zw^%AA6yY$_(iT_);!3Asn#nyQU&_{QQZ zF!xZM%qqCYwRd^*s$#-hlEV$cc`aQ5r8m#(AUMn++7-! zaakAf)BYnKRmNrA;8^*N_Xfw(GOpL}XQ=wFJwsSoPlirqwa_E}qe?bZ%gVY^?%(9N zYE!){Q4i7>bMUIa=bMU;KOc0Zu$S{MN5*#2pd1+&S2Mcl51W`LVNu;bjylHs#u_B4 zI^Ebt&y+l!?rEdBC8=ohI6B-$cbBk-pd(&1uAq`_^g@YMw0Rs|Y@-KC@b-Th6l+XUa%HJ8Nl^wd%DuizRN6z=`~^H&jl%=5j+jWdXk zY^vUpu7a4`%-1%WZ;GfON91}n2FiQ~Nc#_cQw7MV>YhGHtxj)umb=xNJ-nJK(8ZH} z1@c4<*K#(yf*M3(S5m{3d;fU2Zn|$I9+Rnw@9eDDTCN+VgL(`y==Wy&%FfHEV202< zeCONf?yJ%5%J1b@e)~%0V;yjhiM7=lGV&6R~w%HT`b)lYVtv;l!U>$8)5~ ztK-Rbw~i-%a$P#s?3%4}eM9g&2z3$9kdS(`!#skQ|HN07C{gu1ArtG7V7zQM)~?s{ zB$)b$rvZ77Xbt$^r``rUP@e{v!@B2F-?)b)tUkq=?W;M@m*#ui^_hNb9jKUZEgP`l zX^I96z*U*oz*Ew8W&BwD8+z8-HuRK~*HCNo$Ko6IPYHVzF{AP*ZJv{1oOSKDsUDEz zM@imaij;V^gft>+u(WJs)S%Wn$UI}MK&`zk*NwHdjadtjzKv1NkW|+0cWn9s-%_5G zJf(V20v}@$A+ap(_tvMM`-)$aY^7=~Wty-MiDGeI{OT9J;z&tXs(87s7MG;0OA~kS zzQ)p=r!Gl_<_z<^T2z&=Fijkk>KplENe-iv8%jtx9n&K#D%=&SzPB(cLaj<_1R*lz zd<2_Ero=wZwq#DLJ!!s?BBbbXd@?1ZDLyaAu%@21c};QUhJQ0ppuTERT2h;NxV&as zyq#bA#^W85%{{8*=J@R8QDe_qnHHXSi7glwo*r!BF>Y^x-jCnP zBS~%Lk=$*CWUB-|9SM)JM1d>ZbiBtGp?rmM9sa@|;K(3)Mi z*|}e?^z96~tTkeOZL+n;HLwk9d_lX7XDzvnCrMEol4MJnws0Ip+q&Y_?tN8TR}DsG zyRt@!f27BwZKTH|H4={$$&BR0l!qSOOm6c~^Y(YX74W_tH=||JjnnOPNIN3)!moCW z4_{DIYdz$;T01VI+A{^s55M-V@^$5X0qsd_elhQqjpo~!&>WcpJ9rXw>flnJ#DzSA zF(9kuGcM1^2yHt;a#pAo-2PXK*^<{0O?^4vk*4!;cqg@ctstE{xjOTdb8;t|WA4l9 ztnsaBj)Zh}JzL&9^_j6oMw3sbc6J5a_xaN1!#hJellGDnsKo~Hf7Y|s_E}GdWU93u za{gIr;n|QbRJKDpb%Eo(z+LDb^PDUz)3=lz64I6KS+&$S-8^Qa`F2oOm*?TGiCsBt zl$Z3bTCj<0?ZN!JY4q{`(4%zvi7dN!o=(sG4;|KB3x4@Obh1uIt+NL&>P|a{>@g0S zqil4rg!IsY@3PT5B(aC){hN&rmUP|Qz22VNKZ*^4hbp58VxBdwx2gCz0GgSY8O0zn zFO9XpXx7+zqH#4hkK_%$3D|m~8Gp_kQ4!&=;S&<$F-FCBjKg9GG+feI3##7IIFM!h z=o^S%T8(k#^3hgmPYULSZBNfc3hd>XNXfmlE?S-K>$*dVdJ);2NQZ1Rx4ND)CQ|fs zo{5zBoEGfe9DA?=oj&{@x@~XGyJ@c7J5{HX|3lx^=|BEM$M(^JciChQp52FbniFY+ zjpl8(ec1BN&FzkjW+L^~yn{FU24^Dm)pEaOqj!jZKjW-=Z9i9B>A4cvpE2z$vHe{u zg1WXa&S-z%>KpTngbX01Id_7#`O-%uY5>#3DTxC-dy?yFt%o#t-eo<5@XB`Y8QP)e zUG2F28aR-&KS}IBq_ZV?Ad`ew0}W(1|B*z!fN{Jes>Mf=t`>Wx;00P`PW%UV`BuP> zjJ~K9*wjYzX7(3}94UdZ9Ky_2zVwqlNOG(eWS)&aBH6K2;*=t_;NmF`v3c=SWw&oE zE}oz{at({);>o;DoAe)5x(Z@mr!BV8{0LE;Yg`5M51BsLvpHp*8tf`tI@mnYIQIKC<#u1W zH-znNfrP!pDR<8VV>jPrzc<*>m#AiojCqNMF6d?K6eikY^ptF94*f+hQFDKZ8p;}P z&Kb&DBPke4CzyAD=N|A)KTZ6HArG zF)uU9=3R#t2Yur`B1Ncz%`22XHk$L1+QT{gM$53_Oy+e`Fx->Ye*~cyNrMrbi>{N* z5j589u$)7_8G_`lp-O(me`zC!&x z<9^3`h2|_DL+_dAK>sWBjnC{KON@aMr55~t_*eq(mU(LJQ`yeqzUv3S+Fkv}vAZ#M zctcP7(!2(596?S>>NxHLn5vh~*j35zpmIvKT4YJlJG8Hjw0zg)`QFHmcU?K0hfaMD zvWH~8=OOQ^#p}{(Jcm$Tx-`MVwVdE8zQ3or{+n+WzA2qZyLcidkzE{*k|g5OK*A;x zXs3*sNGr{~=JX48*X)U&zCNtP?9q}~@axoS!Dj_Ya2;j4TI01ylUUr8zG}heER(c- z-_bwqVe=+2Yd1^S`-u7ardsf1+WW-g$+Y*W$lPrvT(Y}{O!hRUa>Nus6_u)ZX!#igwDsjlJHD}o-pT1Emcs7IVWawXiq0kY((Z_Rwz{}I*v z)73c8{`4QZNYTHIH#WvA|Di*sL4UEtpdb9(H#iRgD0;&gWvZ$p{rR{VEkr(TzwVjeTo&Go}=cgOJ6h4Dqnj^6@u=bZRGYo6a46fuJ zk;5}w5%*t3^4)dswp#yVZBMuLx^L+&iTc=eYS&9_vgbtPuv+7x=vizT?IeAcb}St7ueYq~DXsxL$}=j3){c|B6dJ_0ky04% zITAJ-|BoehHftwk*=&LimykIe1)=`)Aco!M;MB;9)3x31ojIEP5=&he!Y z+vjMXLTtL@E9NoKxs0NDwfVD+<{Tedo#W5-H1+&k&(&u3Cm7kfK2aw)vBnnB{hn`R z-dOi3s&z8#Q?^0#YFBJ39_v#op0@v#X15XldCV5`WVCIGZ^-L1Y93|yOR8FQl)QPA zZXSA4Y+}9%09~4I0(?eK?v-S<;Qb<^?W2lH8C_`JE8;{-Jk<;nT4wIaCX}|T3JleC zR9t2EoloiMlFH)#Vfv(>uMe+{SE^akX#r*MFyaDSx$*Wn={}d1pEGBgNx|pF6-T8n znD3lreu0Mf(tLsAPC3s)?J~j_y5iJw)iZc1G=2w)t zQOYb~F;1eE5V^7>E@6-Mm5f@7af@Uw<*;ggiFah>vc@+YS}fzk9rLhypt5gv?#nMD z5}!OTqo*E{!>rvGx2j?nhb%|Tp4J9PyTr)07S%IaxM zuzOW~1Mw~W6?BQY8=qRum*#yBD+$6wXDeMR?!Sumz3Scu_4%5u)7&iPRrmFsBZ*(r zU;Ki{*9_1fGW8qI@!Ck>w*>q^I(^Ib#b=`5QTSRJ_8nWUISXsl@(sihC*9Ma2Ii62*-{$m<&Nus^xh2@?2Nt^}`3J_MnMAE-(Odl25TU<}T0;j+ zkyO_FZa0v7YdHUFEuH=cIY*YM#W*RG>B$+DNm>15SSE9;q4ZsgV~?zm}p z;{%(~LyaTe%13-FnIi@3*rS_g>rd48rTHnR_1f8bKO4MFh67{3jDMM`Z8A(@ky7%|HR@>;5`?G2K7KzQqcuEdu zGvwwb^LHcP#K$EnhwkE>Du*ilWP1*-bHzVbtES&$zCOofR4&~(MpARNBi=(zd{s=7 zO{km_yNLwcz1hT^GGF)pwN1=Jm`cpsBR6X^?~+Y5G%ISeI_KsL-Sm_B+{KO-zOjNNeYa;&{r3>k zEe-Zi9M`96ElQ@UwW^ZG+Wqmk(9$=nt7CYFI~GymhHvoEh*Yd@+3*j!}zXT z&%?MTtL;8+Bj4X!G~qam&pjFG z9kc3(7_-sR;1JDNAgPD6dk2N4=8)2SCg%?^8s@!&K(}vvei->Mz0^`-53{+LBRj*U z;(g+WX~hURe3*H}jQoYP#d7@@+QcQm5gNgVMMnt4mjjMy)BkpR-*kLiTdAIvu%j$^ z_~$5L=g63&1ZpqYM+wA*qg?GZ&r%I7S}xD81W8^Bll2Ppr1b z=^686Y*I&W@4bCo+jc(d=vyOaiZBAB;%ezZm4)iVY7@F*NAHk`}?e0UU2t$infr#x%1r&wDiW7OKalFi!vE#k_v zz7_F2)+xI89f>MLyi(?=1WWE=_TeNp*Tb$E|_T^~b z5L{E8^Gu6uwP+?G=Q*UF6aU{xYaU*D_4M@#mbSmK|221Kn|pc_E&YwtIP+vBpqH-` zpAHa{-Fx8g+R4gvo5~@{ziS7nqc(bi6hZUhUCRqB*xy_rWRT2LYn(h^(2iWs_4dur zh4&xEfd7Hd!;<-jC&FE|_L>C#=~;{YleITxjIoyeCtbom?jpwLrR7BNF?^_Yub1@YykxbopCcgPi$XezKSs#+HEA-bN5_^Smxfy+h8s7K5)?wMevJx{0 z>GdlvchC{4kt`lgALsK2zq?EQi-T`1{)k>NQh_=~=5CR496G0fe@oELq?gXHd2 zN**qOf78`H1{r7VTWzYf5(~{)Qu5#Ij=M;iYl!=|H7-x*#`=c*pF~~LX8BSZ%@c>$ zwCW#@^YtDe1-!S+k49(N=psq}huiS} z-d`~6H>j-S_NK2J+;F)oB$hWCvl*-Bi(yl5XrI6y9pszovZUY8GBp_NOY;=MO^trj zM*GVsXkO%#d6VAc^WuM*0$W}(Vk{oworXjI<#9=Kr&is|ng^v0QuME9s|&fsEMl79 zV#i@#|6P2^8{*t8_E2UBzoEWG?iK&rY}Y28YomFg`)#ca6^HqH?~uE!PIlVs`LEjg@n;S}2aHBWdR40Xs`7u5#47rU5TnpU zTab;Ctmt>@7|l$x(VSvIbL051pVp4kHdP}DaS)`Aw;k7Q^md6-bo9eU2|c~GJ9d2w1wtzq`nWRb}Tdc zD*QF0VsolJBB?4!y?VyQRbMY{7W%v7sUWB2ybAKG_pErnO?6tr$`Itm3EnN=M*k?W z(0raarVK$|uVwT}CGU?!nW=_JwhCfSoNybxO^Os^EAY)aM0m|>;H zcva>o*O5Fu$U<9?@8zzdKPWKVf40%zNLU5vZ>kz4RC&|4gl{Aknp4s-6}0gi;Z>Q_ z_^4#7AT_5OyMp&^L2{)?(T9x#aH(_~y;wpjDsPvO`lyZO{-&bM3ah?luP{-kpS96T zB)y`i4-1rPw$aK`^K7b`;_nZgyW1%7fR{GAc!{)Cv^h>UZQk=_l%mZp4u9KTVXC6d z28{X-od-=9pZ5=oxWA{^=2e+pT+2_wE3v0A`?$asC0AlA(ayz^T!~zhKQ>0Y_ZZ(& zctx3_%}Qt5XkJLGXtUBi|Di(ypvN9H_BWSobQOsT2#a{g+@Ej;i29lEu~rGK*;iCF zwzE>rHM{z4;+u7i9Z7GS{gco5{!c(ypj50JR_>X%HC9FQo-&k5)a)wSv2n&oCfn@i z`}&Eya# vL(h;SfvS6z-Hd^)<|;Yu$tAjYP5=bA-kNU;s3~-!^T`cYZH9yyHnbY9>v!>C8#^sm=b$aKnFz%|7e{ zqoJ#9cJpw!#bz(}l~M06hF#8939I5)G*0eSW%k{%iOs!#1<9+*91i8>@+_W^yDSEG zddIirruccU-Q2o%D!{+j{||kV&3?jr=W>=OY0y`;aBq6Ut@l(Bw9DpgR&m7R9emN| zUCZn3_pYbK!ByV<|2Lw}yRuL9NQ9R+8}o$MKT5Kzh1Comr_qBvtu+43dRG>m;U4X~ zWyQ^4J2n8+-2-R7<`Abj{N@!nZUX|8OV#(dr|`vNHT+nHraTtt=nhaZy7zg{w`TK> z&@h|*lQHT@Q>xS`uU(b?qQ_$V$@B&cDzG`;>19lQ-dGmM4&m|fMn2^~Q1j;<0ML%4 z@kU)dZIi0jzctr4@gjfLkFf53u}KX-uRW;Z1mF6vWwYJzuR5>vN8fD%*VsFn)Cji8 zM)WY6GYCGWF+DU3pgJUIp-uVILSvg)D%mRFA+N4kflX&_s~2tda~+NL|2;u!*9@!S zbS7FI@SN5G%@WH>#$;N?QWes)pI2xe;mr@3hTH6`M;g1>1WB(MR`IyHXoBdu5W4bPskYMuVk}r*X{BmNH zS`T^OTW~8td<9pHX7BsfYtFhDn|<_8hOWN~paOm%1uEbd-hkYH^>?zq*SkLWxGlge z@3-X6d+n-$YD2i_ZR8!B{`4kenpc|aTi`A4dpUz7m3&p(+31lIWR)|lM%}gV7)PYB zHa@nNvGu(#cX3aeZ=(-vFoxk9o4s|g(XE+YyIFl_Z}od^`qJB#qEx9x!e%$m5W7rar@JmZ&=C(%_k{gedN%PXHV^aXQ0Cd}_mYe< zQYDIeGLAg_i?axL&Kt;4^8@zp4cU!_13bI2ZXfs-IpwSo;w>pqA!c}Wd`RnGoAv$P z^`<9ne))He0k~wdA9&A*S4KuD|A(g<^HWmQ+5py66@227$9mB0slLS=?qH1eGP$eh zjsFK-C}E*Q`^OutiQk95Vcx%BtXH+!`HrF_goXuH2>#2s7H8vL1ZQCO2>KUz;ZT>W0;*R$;nteT0+3x}1nls2f%;sI`|>DFXO!o;MHS zS7gFCubD2ZO1L@Rv0hkZd97YpIme>uWhFw52alPcaNJ*f_XX{@Az7x3WU&hZS!sJzxCKvmtnI-IQu>Brl~pOl^LB zv)Y~y3pnWLT&0u*IBEA#Kw)rLpx@*wGWyZ58jcJMG0KovMHXQQzUIA!p+e{frm9tC zpK|D0wUnd;5o#nL0^ppd?ym4pdFaQ^H3&*-AvmB3^kZ)^f_x?LujUEhiJ%|5n^Y?$ zX-d#b6X?hOaR?HW;0sNlpS)~BkWmxCX-%M?JvFReNdUKkGdbD3u11^;hjN2hEe%X()h?AnsA-AJP(Kf_$38Nw2KnH#1L=|!Sm_!T8a?R(8*spj!lh)h&`joOA$MO?1&t!v9Fc;|SHU#am6 zYSRJdXhfDK_(l_4Lr{E{lB$PNk^(IODS+Uf-di&&=PJ$R^-vl8INd!LVg4CB)&Me2 z1G?3rmjQk~>dHPPd800|eueoA5D#$X)HNchplh|D#}JehqPzx31Nc?vb!Sa!db4_# z#|F(~Ks}iS?|82sNl)SV2_RH~ZvnXlfUSU-6M)P|pcFU(C_WA-RUZw&uR(o@Zbq8U z^{q79v^1~Qmx=Js-!*=R#``xQ{ZYCrtbr9^mnMjAAg5GQHg6o$mWe`{?CMb1rVdar+`oeb^(eHkmR>U zR+3X%k|vF*LJ8s;TY_ITLF>n;Vn3n!0Nen-Nsmc%OPap;G0Wqe=CSE9nF#MZrSZRM z{J#V$-bc!sO{@SHG(npt%-DVGTv)~<^!uoZRC2y49#eG0+-`;=qA7_f}pps62;_ZO90J#dx2c!V}vLBaI z#CBZ3khTp&xu#O-DGZM{r4yAQx~W8BaBggBgjESDX<1Gq4Bbl1ip|Kf1&{8{`1Lc| z^J+88qpIdHy_t-@Lyu~7b&bwzCij&4Esd|C@wJ*u_|x!DH@Cu@_a2ocwzR$(9%x;2>|C0nnyj&BOgJ4 zQeFWRW&#jPX~-mx2p!VNh1Jtd=+q0UoGb7koNlq|yFKf!xOtDKuj-KET=Lv6w;JN=%v zBDc^YcY2y_a2>Ub1SBYs0&pvk4hT?S4!9(?+DJ6Kqh}i`%Ov8ffQ8-&YH(A z1Tji*TN8BA1g^Few+2Bs?`gZ@x@m&(2qF*!f2|36Xo8>GN~D{jFKK+V##e}x(eRGO zk#yc_itY+1`~ff$kOA;ZiIjaxvI;|tGVG0%dl;O*M_L`xPm5X6&5rYXLNoxBWZ)6$ zmbi9==#L=*gChkHpukE%#wvbk^5n{hanal! zKfkNRf2i@uyyrTjQs8XKJL;<|Tj_fZz7+vQK$j)I2`bJR0<1Fc#s_8IYpDTYz|g zb50K{$$ZV_2LusHnGeWMB}q{a34bWOre750v+f831OS3#qO1^$v=AesQYX-uY zg+%xvN@_n#nfaQ-SDM2;gvDPFv9|Z3UU5q`L5FCWNC3y6Xa@UpB5sbBRmyM@gBye6 z2B2^OAs&mdiuy(i5gj9yy5RA43`HUI`y@spF*sLg4y!bWT?pgn6Z!(6L;#g~l3jtv z0SOB90|Y4W4xsQez-NFAfHSM7RmWN_>;VKZN^nsVtkVRmdeQHn66zcvL4gOKBlst@ z?fvJhnBF_j9z*(blGBx@?9uofE#w~rD4t8Cdc7H31)c$v%mEAom3-J4`pX^f}kMy@Z4rv}8`%}cn zcvKod_bc$h^H`?Q{YRd+T#jlkSDu%+9)$e!1&cqf@r_=jhz|)c{6$M}QWJdiqU5Lm zn>GHF#upMGo&b&#K!gHM$1;9X3E4N+3VB9z851kfQS9wL(fD&3zdBYX!aMQ^l<@)m zQXDI*FgVM{SphF-4iRze_z^n#08*ylF)>amMH6BXhP25rIRLi;e*p^LM-mt>qm`t6 zJbNx>7#uH)Fa*CJZ)LfvWmyw1`;@~$9O5V8@K?OtQ-;7n3_=pI9|t4=f(Hz;Lfq6s zyfaARV(|C`Vc|qP)&PJMg)B;wH#kfOjyKs=!Nw82)g(tZY3 zf4|f0ewuwZj`kkj;?_Gv4FLJj4^-%fFyw5rI%&a za|}+k;RJgdra2%N5Zr&bRhIWLS&w1NaJh_!^D~XFrs*6nF}d^d=w+5Tif=AXI^BuTa(-fUbZPK=8Cztg>8M*q>gJN`2_fS|cq!T;qq2 z+1tiBA_>;$&HR|xqvAQTY%`0JKO zJI$l(>vCCn?0=nM8G*+ifP~?Ay#9ve(NXjG{SArkhewk)8J3sv=m-b}IAhTNltVm$XYFiBF4xfVmRY8zK_NyjbY1D0S;+`ewyIw7`dm4s5X`X8AMeh#!C1A2K|e%R>pyv z!`iVD2k$tBLvcI~*T%{$Wq5QP%}|E!<0J=z^Nn##6q`X9eN_ z5rE(+?^#L5YA&nZlY0Yc=g%7dj>Z=eps+tVYmB!7yr&6TjHhZP=%Wd|&!c-hW+Mni z;8+F7?ML749WOaAFahpr9+R|?k4})witjPON;z5M7x7rpi}1%Z-uo1v$AQO=q7~mX z(enRL^B3s>0gFmG4pKE-;WQkLJ)MP8Z_o*?SKRm_q zU##&Xr^sb^N8JzDS9PJs{HC(CKTD4dn`(J1)jVcTmFRdPuG0AB8lN{+Cc--|5Xjw` zY4*^EvPv16f5;5&grV1m{Q5YCH!#FtaLfP{cVzA^`OwO_N{hJ#>la~X=jjUe~~P4GWW@cl=!ZxCDDK8;_i@s|h?(}7eCrm;1*r|!~yP!jarCK)7faS%NbV6ZJOX!1PN^s{GbVTXo5Wm0+iqnO|VN7gnrCmv_|mM$5x8nnxH>| zlBW?QYl6L+UdY}N#a zG{Fr7xh)X{CR-_f(FEO-nLsTVn>PW4%^91O$r3)4zR%Y@j%yxeX0b16hKCD~&=ij$ zvt*X?m_EzOaZ2;ZRUQ#|{0S%t2UJR7{sNq?6wBp|<}wFCVHnDdfDC}&uPG8ej3obR z9=~ZGRcA9^E+%@D*;dF4nxNxsSw#RxEW(l|L>xO?PN|3~n!_c{VI{%B zb>GyoB+g~KYe*TZHNh=Suz#+^4JT{aPsq`L(4hb~z}e~(E95=RqZfjV`Us|If>I7c zto|-Tkn#wEi<-bs6V&;XAw}Sb1mxGF8E=0o(IaTa@=vXtWi^jW2xIEfjJoqIK{-v} zo+qma;21NH&Z|S{6@au*iYU@NDrz3}KBJuo9PI#wwbhV*CXufYBLzcB2!^LcMk~X4 zLHaO;+4E(QGPGX6j^2skg$1$?L-5!IR#`Q)B=Z)?J>_r!hms(Yb^4qZD=-<5roduA z0w6f&b1TNfT8zTaW!6Y?l>WlvYioSHFC+)v*+Jv$X#7iGP;4zer(_vgi=xxMklL?O z)E*4+H7VgDAVPr(3n{Y(pfMm#fsTL#1ttUBfZ*i|tuh|d((GL*r&QFksZ5VR($r6t zO0Q9O_f*RvTyscBl}LEUY#ef{JO>MY2yx)?!Gi z3iAsf2H?E5$jZ`6%Thg!=v5F5NV5b_Yl3kI;+0^YCTODx)*y&L5PU!rL~4TKG|3r7 zLn|+~GPKk99~aAIc*p6*^h^LnmjGfE2>FsB0r<84QldvAc>zO8C77{*2nFT?^8Eo> zfHXkx$uF%m-Ly2LzmikL2%i0w#rM$oQcI*#0{k;eEIwM}dn}bmcxUEPi|?uN2bWSw zc`CUMNCWrbQvBG;;{mdroeB20D!aXa?53a=2Cw-T~iiiCqQu- zk_=xiaj(-gQ!zv+!}8@aOBwcHD0Co=T|vJpkOxRopz=zb{QyB0Qzcz=o2V>pW- z<1R|aceGuBdVo-Xv*UM`i}&elk6|c+;yVbEG{JjX<*5i#5IBAW!~^_Jd?&Ns;`8rx zE8;}WAu?TZ-lFVR(<%EljvoO60Kv;NkI9LN3%i<|7DD%C&&PYZURz50XO+=WWenvF7pAYRX0! z+<&zd@+(a+X0_BFM-lT7ruSAzQAoLax*Vz1PSp74j{F zZiJ5cfWp5B`HSZ9o#t^HK@x)Cp#NDRS80ML|0j{}5VHUO==>{$oB&7xI5%h>t2K{8 z1Q7^=?`neoX#!`a>{B6IXVUw{gd7BL1DuO8ts>TG9$OI#gKmq=665>Ah>Lnm3502v~HHvevc9Es`1-2enb`{ ze33{~0J(nxz6Hbsf_G~!yEK>cS+a_d!T#&4l)E*)$vQcu_^ukiSL0tr4AVq-> z0TBv(3&=kU*bhhp_+8x~aT5p={3EmL42F?E$}DA=h9L%nV>uuc5WM3@tCC-}N-q8= zmz783jdba0LUh?EwG$bQmo{1s=QM|p5xRdR^w)sGLOg!jC=>B;1Z7i&GCY|rt5k@- z*;a@@wGd+v7M~)-=YSM|-_dNTG?5UEa%ihEbk31T49=lBR){NFhz}5^6{sozZh+tK zIkHHFcrur=PGabrEBjQ4w{ooz-ru_R7(PK5gV3=KP<#UL4xDZlTM50Sp6#9t2Fej_a`Pjh7mtW9K7S>pEyg}P6^)u z@)gJjq$zL}kf1>2-Ap2Y-@x5+SvkFnp>P|9Pj^f0DHtBz!%W?ZA%2fUE5ipEA}~0z z0QpoX(TL2{+$x`}&m8G4QrS1XBK;UQ( za0C2CACTG~($<-pM@P+LE5eu`@i+|#RiMnzq~8E=0df@>2#8l83lIVDJN~nrBC4bE zLE66_!_b3L=_BUPCkL&lHHXEm1rnoH?lsC^BBy1!T{2WkR0f{fLKdLNLaKn5Tb z5M1$y@=$Frr$Yl)9EX`qv=5QQg{`Z8w1#m0iI?6;*pc|kt zgBT-@%EamP?Waerq$9K#tB=Ymc*lMmidW%T{utR6XadMj2MhwFDKG_)0PtIROd@CC z^b>}R?_e$gk`yR^oEf1&BS7)DfHwiT3VaPn0XXxITcwQEO1Xj{{~MImPLNQ6rU17B z;{gExzb{Wn+{a|zf+6N>nDc;81so^Ivl0*mNC7zCI%(yZq~-Y(LH-JqS%5SJ4g=f@ zgcgto;McK0qGyt47>1bTFw+2`3M>cYE(2TvqyU^XPFZ&r6&#?7)!w8FgI&L?}@8 zHwI-Mpamd7fqsAh1>ON9eM)n`@P09%G_BsE)qV&;@h3Fyh9=mi2_FAlqUW+v_xj!H zuN@jc_IH^G@3{Iq{Wh1Bl`oKT4iViKERWrq$ASxT3J+(N#_!emlLRP9A<~0?&@Kg9 z01^}!4{!tg7W^TjKOyUS4282`4gn&P$=dj$mGzJoHRhu1Qy!mOq-$mpBK@M=Q-+-w zl0L?8`l5t?is3ef;u#nMFG-v-L|kIFDnr*xGD{g=!jM0mtP=qV3akLQ0e-tK$z>$L z7cW_5oYBg7s7PwhBSh~a=E^i2-YAl2WtfK{eG2p6;nHxb56Wk}yD zwgi7_f(6Bt`vHPAn&6Tq$U~4ng{m(A5)`O%h4KNx&8}E6uV^lPugK`nDC#YZzpC-s z1jwI6&Z<|f0M|4@tE&uD5~+Fvk`$N#hyetrYA!c5mrYkCT*!G!<8NtvqrV9`ft*XO zSvkGm_4gQly2e0`C)GJXiUR)E=^8+A_;t&rR2c)SzrC)@WpV~5XuO}sufHy}=QCPI z2~_wlqZRs(L}Lhk^B*fMQ*D$o^>qQG!KyaH1J5eh5^l)O#aZMP)ubJCu>Wu<*sOY3)= z*@!T>&TUIjTN6aymK+sen8w%9_*r+@rrx6N)px7_^)x|+yOjGTH8lprEAT8JLV;m` zk~gR_?XFDxg5Ju;kdMJ}0+670fi&6oB$*#a0d{hKpj6UO4AOI`wEspfE0i;$^Y+hL^Ei25K(PB1m}&M zV)|zpAYllWt$mW4`##kr}hmHK5Z^{)t$ zl*>IpgmQWK!O~I^Pqk4GS}r3smsb%KDwodzX(%1*00|2G4sa__rX1iaH1z-h%F+&y zfWE$jyf(v;vUP4KoR*n}W7j=~Bw!B|aj8$oU?xk4YJ_Y`mg;uVMmL?|#` zS(Z@Pd_c*ISk?kkusDxDWED113wsMet`gKLZwV%8f+xz;MnXAzYl6v|;0**BFOX{< zAW4BtK#T$h0ig=~rKqJ8R;dDGHxP>pkb%Y7vx1d(h8Fg91cgd4OB2l01m7Vjd7i?4 z(gd?K!S4vt5I8DSWONj00&pwP6%e4na6sBJ3i|+1H~`C6fP5^@9Tly@KGVYfhM+_V z9`LsW^EE*|f7;le!rYqRb4?J7AO(TreL%bdUjiZ&$OV-20~7#qms8j+K)$lnszg{U z&NkjJPpa%+X<=VP5V``vdzxUWCYX<)urGyWYJ%mO;2?q|1dbbk7zJtu5L1DcfZ{%Y z-he`~I9>{>1CMg%2F@Rug={-&>I2UxKRz4|pV9|aWmB4#H*yt2FsNKuyQ3Se>G zsA6Tw(Xu>Tl~Q}6d=}tV;6p&Ma#`;EPO5U;qPc8CkQ75dpVI`}G(kW$l1B4xGL~sk zgnSPW0C4_L&8out3#y)`+(uB`9c9Dn^tuAw01*J^nCh0xUM+ryWx@# zNKl|iQ3_NF#PThN>Od>T&svOE;6uA2oCPTE0$2mcS5eE=AiuIa3MhFN&;yXKz#EGC zjt*Mr{no7t?)_0qPirrgeveNAXf!hTGOiSSFN_~2#S^9 ziY7Rt2?A>oDxEA(12Uc=<}g5#0@DF83an5X1-1iAD9CDYFjRqG?%dm+z1?tm9iBs^+T!T zNwT~aYPnR^T&5#PQ!d*9DNo??CmTw*0r+K)&%b%$W?;*nxKv*Sc{;zIdz`U1obq*EA{BNH8kxb zKmg2yz$Xat2S>BoSKrX*di zT>gh84-l#>MF6+5RH#oA9>>xIkgGsfK#Bq*01*J^l=@aBEwn_-5Tr#QxTXo7&;)fF zFia{-m4?iLaAGzEgaVu~4Xv0@Yc8V@#D^i6r3u<-f(!&{E<&9EBq;DNzzuNLeAJ5B zPIKw`C~eH7j5h$GO>jw3U@e{egXYpvb2)$@27%)$AgwVjA&p3Lj4B0pJ!OO}W&4 z%!=7Zb9w18hO$1&_W>yiEC<9Zunmy^2%u~e26r7n>Nl~14Ag>jLlCb7BQ(K_nqUKh zjCzDR3P@7m9w0`6hg}p<7cd%7tb)vRSy_f?K~^IOT~Ckg2b9#oLKG z3D3T+c^K)GOD}+1xx4|$P%bH&%SbItCW1oca!~n(;_^2jU;{2y!mTW$HJ2yD368+g z7m!;Umob0@TN6CgoT_Uec(l2d zVy-6Wf*>uMu6h{|A4pZx043D{-vSD&0d6P@8fU#0R*?BxkajKTJf(~Sbt0L16u z^10@+P;=RWAgv0@(|`m8%Cy867soSzq{>)c1{4PXrYlN;6@buO!ftPARkBnIdlo?i zN@wXOEWvV3(Dn&tXe9(MXo8iRU_62ZCCJhQ-)Mrv2m+Mgx+eHe6EuC2`u!2aJZaUi zN)sd?2vve_HNp3qU=MJhvJ3zuDDWvD z<3T_XAan~F|JF=DWoe=S7UyfNt%7%G1+PSqq+Ck3q2MyO)CFWHiyM%jERz5M3Ty-v zJ^(nUEL#a%rmYorpBDD9wrn5>9ESiUez;r(Bq*1NNXzAC&824~1t`G|O>jsPTtX02 zn$aomwj%tZ3Bui_=M}^E(D5XMu}P7LwN@H>VG3=g)W+7jLu-ngBW z;*=KRSp@kA90`B~1(E@727aj`Au^ff*?r= zrfPx1fq(OA~y6AnhLnn>4{4O>hZ8%1&BQzLOQjoJK#T&1 z0ig<90pwmLNaZe8kV;yRC%Q21Khc~QG(lxekc1$uhzMz#psFS~gCOG)xk_~rB^8kI2bRA8Daz8RJIzs+1%TWO z6qD24YEB)km}3aszazM(3F>Kr=XwzQHw5E)SP|-Lf`tf*&m$<*1PwL8T?8pg@K}@; z!TW1mp26u7MPtuV?OH&-0w(~4d+6k{(Uyx#i`glfs?MSu21rt13c$UWwl4w1D9dI* zr~+pI#b*Ey#*pYVU@{uBsTIy5;Nx!1}5fG!mNkFIq zrF$_(h5WJs%aT(VmH_e<$N{7&a2k-HKnb8YkIYX!M?z)k4G7(bWd6p zrNB8wDUDxm2LB|MM*tbh(h-nw0?W&QLM+Z{y{#7X&|0t@LFjRmd4QB-)XUPHPmG#< zXuvU;mVg9h=?%y~iscPJ8W!i;K33E|TGVoVspuD!%>fCA0dE4_0Ox0YEtdhBOE!X} zLnu!HiVp(H_9MuC@-_lQC`&g$in5FZEGWH4ABHl z`zryVdI543NC3nfz~vLoxf4T2;Djw67yd|Yk<5&+H`1FS3~HJ7IcFb*o_Kuz$P zCYXpIW*?!_0HF$G1KdC3a$0kFU2`e@Jl&E<(t6KZN#E22oe`uF!SOPna1Sv*1Y`i5 z-)JslHJ3dIN|ehVfEeZCKTz#Q0AYZVp8!#Se1LQGKr8PAEyyecZlzoW2v8sokb97@ ze*-dhVX5+h8f99S^nw*+vKC}1f|Q*o^8xV+RCuaj+=m_?O3YDLLJ7^3Q)WaOFw`ci*sA7m1wq>=nn+>TTxbzBclSn z6;Lj3#aS+&YA$mS6mCKJ10X|zQ-CCZ^N!{+UvmkLXMBI5u%`hfn{XKbh*y?(0B&XZ z43MHMYXPCTSc(9-$`UpRDhEq6{;N`Eju2vQl$7fgpba%CbY~3I)Odg-595c|gW`EE54q3M>SKDo_A$A4O9FNLh!a z(Mwbda1MOQO0-%_l!PEnxugLSvT(@-1OS|WX)bFuml{K9xN>;{5V{tZet_IeT&4}R zvTV>?(hK;D`bgeh+vRkaV1wOJBCi*rmB_N05QQ@f#o|1DCSH@l`Gjhg&Xt zHJA1X0!|lwp%Lp3&0DVQq41BUgAP$zf+(hnAkSR9ZiW z7E7$dEYBo4Y@1Zllab2*{e7;_HF~`MUN5hE`o6#4@AbXT*L^+rb>IAP(D%Rn*<|gm zCSxc?Q#f|a&kE~yQJ8?j#<{q9j6YtoKVCMIRfMr~7n2RUm~^_DL?6ayzpH=txoH=L z(I`AK2Uj!sV~YK;fIl8Kpa0v%WXmolrDLfF6k1l;A8AZ}!yiAHV_*B@D*pI%Hh=tqKc?`_dBwH zLdzcf@y`AD9Kj!-n&dkExW*(i`D5SDkbJ}+Q)VH_@y7s@>_46scps9H{Bey*YWd@* zdy(A79}k;kr6H4S;E#7qvhTGdIuprJ{PB}X&g73yCK2*#0=+Iy~DS$MVNZ=p1z6bw8Iw=UuWn0fn>fp`ae#ML{1f&6n0v6gJ+C z!Y8{ZblJtjk0|s&q2+-o!nlh+j^mFhpA*=H{IRb|rt-%#CYfW1FMPCI&L5weWDS4Z za|e>WYf=7!P%CPG4zSAp!=48|DyxB|zRB2ufBXLfw_{QdK2f`u7f<~KKE)k1 z85};Dx%?OSBUcUXaC3Wa-9lc1^QQLh?#VscHGj=@;4k>0ZmD_ilu+Woz_6uw{*|S&V27a*}iCiS4wP5mK6>4f5-OsdG_~!Xp~Ia_%ySiXuM>H zd0Ao;GAG&LUKX2dnPjhcSsEE1tI2G_?ah;Y8T6NnZ$V8i`7LO<(Eh%7(x9k8vb)^U zZ3L!-Yosc;hXg#V)l4^ny@#?=Wkq%;i8uU%6zCOHY^L z61Dl0ci-Fl$mWQ8aG@-*HCa}AgJk_$xSj7*b#m2P345`G7rRO4_wDTJkQEJanXUNk zFw^^;?foXc$8UH`$nlETWE-T{(aX{%Yo#}P&_S)4W|0+*a=Gtu+f#@}F@wUZZX$|7 z&9c0Dx(OGz--a{Q!5z#^io3@dH}-ODmy(O!ll~J$%Wfkrl0VnIA~J zNoYS+{x;AAm)r)5?(^9_N>-q#QnDjlzj;+u{x(WyhRd1yD4_vL_(#+qmMpX%lVu8J zS(Ck4C`)Wd_F17UHre-*ssE%+7R@SbOvsArU2Z!e9ao6r9iZhdwS%TI#%1i%z_;j8 z%t-MnxAZdFboEZMRpL@RlLLx7-OpKg8*ywj$nGS;?)Uoy>73R=%73E1hD#Qj!B5FD zx8}c17=-USurb7Syr@SRRy4$fIWn5lV z+1`3{5$FWxlRm(gak{9oEILQBc3ze>SxuoVQH=A+E?JC=8A5~Q!cc3M0hN9zG`FQ& zwu4bQ(GoV$C0oL3AMz=m)q)e`^p(1nmF=U~Bs@whQ7pHc6WTvcDdav2ecX~)SEfU z75$!<-7jg{y~O=`kIDn1JN3Q_4Y27wD4=I0yIPSWqn2`e5JTtrK9wUqiuVMqcBwrp z2Na#|GInY0a$KV8rKkxcE~zXloi171B0sUE5mJPi67=W%wIKXN1S)gM2((OSsw%}$ zPnR*&|4DD9zMCi|`l}^VH;7F(RWgO0Mnoab zE!wNHf7DU0q8Q>?q7`PHU9uHsqlGk@r47}%jG^g5o!pL9)_V7*cBi`J-k|wHbClTL zSj~1BLqqgRieuf5E6r*jtY~@rfF=qtAlvX*XK0+u7+NJ1BHR~;D_wG5P}gUCvBes^ z43)Wzp__$=F4+dOMkwj}b+ml7$rn_{P}$#nT2mC^{#Y$=$^Ai2D2#xH=DQ4tIXh<>Z%Ct; zH;&uVIJQg1QpIMUw8>gM>l5kgWm#ktd9E!k1`9Ern|gcz>LVpPS_O)%Xr#*=fckAh zp?$RjjdRI%peLHG`i-(owj-0%T*lD*LWlW8678{?>yqt3+k`^%GPKxb40U|YM;+2C z15xE=p#Fs@ZD_5_7`jO40yWA538RHe9tc`2^tp=WK&(c&jG>1X`m{Q_9Vupo@(z{l zi#N@6l^y6D;e8p3Bi#YB5|`SGssbv5C{!Jr8)c`#_M5S@3emEggY;0%{Bv`I*fJaGt#{M76zzxt1n z*$Utg)Q{0yGrIW(oi)UAz)&o7v=1#l)JDZeUG1Tj{Y$5d^(pd`WEM!x=MH6(eE9_* z_qt-w;x4c%m+FGgCzpD5ulJcX#EfHT;4+W2u!|1^4Roo)K$C@zla--yE@x=5kg^+h zwW=?arA^i#SvR>rW{d5vxG2_3D>^8jhohd5Ov6GNnf1NHQ9nL^@3E7nV?9hHweXXp!|^Hlgp zgGRa3(V)I7yvL-h49##kLt}-Gay!nV4yt>Q77e-wDBW!3Z!vmcMT0i~0##J6u*}rH%mpX>JUEwlZqBq{~ zVTZ}C7XeIj$zGJvTA|%2zk~X+eC$Qsb6o}&t$)*-h4J!O%;@dMf?B=h(Rfw6A$q%^ z$wFcJ=nblO$=;yHgw$!$pwd;69T2*$=`VLV)8FzhpURo4i6m%+OR-2V8ssu|S?zLM zqG#Xniq}f962&1dRSD|4(xX@dYAL_KseyDf-&?l@h zFwq}0&?Wm@!b0kyX+x}Q4BafG1%6@xG0l=pHxn^32ISNL)L#(l==%M|Hbw?e7}H$N zP=k<$uXrF|%D0@Ra^~#GrZql=iC*^06S<3z_&=o?JvN{W^Q7&U>j!+v_`Y@_x zL7^-**~^mkb^Q*v9x)8>6I^B(F18C@DHmtsou$XwpwVCWoP<3WP&84pus}9-s?XH_ zBBZ%HJ_p2Te-6E5mCz|+4l-8aaTp9`E z3YX|AX&mgsj)&urab-B@PNC4k3@vs!Lra7-55(tz*1FVr_|3YEU0S#tm*__+YEX_x z5Y*oP^?@R@k+*IH4WW}{BYp5$^r+F?2wY4M(hL`$4`P*bKInd-xw0}u&jFQIuJwtW zy_*)&BVnCgY9wshde7#EQZzydSwl@b~!`aggU85{F>UC=2E`~b=c$`_ETEF#%iw185$`R(uzTpeGK|Y zNTrbUvUxFPB`$L@X5)lL`~F;h31M@ieF^A8 zA%&g31gohoW2o&`ABX0g#HFCwE_o?vl#mA0w4oI)V`zcU0KY?AeiM!9xf*nRLkY0d6C#@YDVa@T*w)kFBDdy zqd_BGYBZ>0lTZ0^=ru3IG4Kyv*ki+4)HiVPIIYopf)?aN6njAP}D^- zZ5}0lhdM3gcc`Buw6A7hP;`l8p|P3zN|!VBg@xYZ@u{ifT2Q@9)q+kCVi)@-5^1c>H^-czaY6^X9ldP* zbUoANOvzOK>FY`Ou|iqaWQ&?@{aR`QvW7yv*ktP@JJ0p|jx_2fXy8Wi0n+0pDx#+C+JhAA!feQN8W$ePN z$|X9q$S0}a{^A?)+gCEJa?&O{RWepN_5*#^WS2-58pA{qnd*`gaXVFLU)3=vno%gr znmY3>>Nc`Z!fK~9!Xj=GLvPz+AK+#d5?59-SxzFCbT;%$_t?#|t9RD|WHK%nyVPXZ zb&+R#>u0j8vDq$X?B-UU^$a_JQ@q_2Vt7{XbkHv}SwqWR4ph2IXtmZf@l-nZrmU-- zO6OkI+WQPURxrEUpNh-vLg5bJCeTQix(S!3>um|)mMm**n#;kWJ@gI(HN5y{%CJl_ z?Rln6Hdr$KR+vRryy;W7^=6{FQ|u58N4Maf0rM8zKP{B>C~K&*%NhDyNUO){Tj>T{ zB}=PDZ$*8W%iN0k%(g!3BRop{0Yp3a18A*~hJmyp=4wN2^sWR=X^Gp&N*Bo#Q;dwd zPTfWmxzJ_o(%R*?L@!8jtXq1XZE5_GM!^mKA3+uEd^BCvQvZnGGbIZ*4%6_JnL0|pC%21WdfQmY~oLz>wb+m#CJnbf_#i=1(GP;= z3Tg03KZsRlmofCAP`F`wh(tC>cAL+6jLcS*50Sm=y7)wfkiGM4&U%Pcn0sJFOI$L| zrNX7SMA^f<=1}h>o5smNmowB=uSy6j$vO~2Tpehc(4Bd!;^*qzMVl+zyPUD1hkK8s z{OY-S4oS~&sX3teLX5aWY~cfnmPp1n&;C}V52If1k`Gr7a1Ys&g?JTXQ@Tk2OoLh6*v zBbfb1NGq7^Bfew|wbmOF!o)a_+BihA@H-_k+aR8Y`Wr$l>hjMzJW3*KUGh;XYQ50T z(6S%JjIqPmI=yz_4_aI#9)k^W$;WUx?pR+ElYB{}4b{7hp$$S|BzYXfSob&{_v!7e zjxW*vt1(&_EE;-(XV-a;i6=lSUGfRgGND;Y%n&geI=7#su#u?R9WUr3KC#(%-nQpv(Rgv|2w z7t}Wisjd?9Q7_h!VgKMj%jceG;W|yKYUfh(G3Y87CQdUTANe^;Ju~rF{4);z74S;(C7&iA54e)4%e} zxa2dSp@Y1SFjPN-k0CB&=sF>~#-DBfbpckRTyg1?omu1SNUwvzR7{jzq){~S@X6gBn1Lj7F7=P04-g&;=Rg`iu6c<|$BhVn*3 z+|?L*q#5}|PKNZSx>N=f&L%5ESwjrXhBnJ8{Qk2Dw7{hnfi6777oKi)vW8fS8k!(9 z#LvX>^B~5s=PfNE2HgBj6DWF5vh&n77Nb7SB^RS!G1w;(erGYX(q#-?Clr2X`8$Y) z@^{cHLg9B7Lp@!_&~B%Chv9dY7f8QCGK~Z=vX=c$EppG#tLp0NUZATClg0_^{Akd; zaxc(T?i6|?+yT7^V|ICwhx>Z|$|u&FuDZ*^eV@Eod7u>)Dn*yMoZJ~BPgm@`|e<2wg8+%#PURv3{bcj%~)>uc3iM9V%bnEJ6 zw2uicwTxI>ob~^Yby?+s#Z9f<)@961y`>W#9DIowPL(X&8Jp}p$&OGZBcuFtFOiMO zLbMut4!3$a5s>-iptMkE8q4wYv}CMJthprqfhYR)KgdkGVLsqLtKiedCb$eN;y`hJ zbkq=-co|pkNk$jVPpmIfuWKah?+Z0;dY#Ylw%SO_BD3|!%hb}DF8P04xKZU2O_X9= z*Kdh+(f=bW+@~6vA*5Z4_!WH2b*WcCi-fdmkp)GKg-Iq}MV*=MRn+%7*GHo{KW%8O z%NROQNadAy4NvDv#(w1qR=lqfQwx`Rjq;iyv?^?|8>3cW(O4Zp9<9dpI;qTdsn~ES`|65?y|H>D1 z>R;r2)hN&2a7!0bKaGZ}Tn#-@(;tVbw_m9SARwGy`A3eUa?1!#=OV9}f_Jv&Pk_AZD% z`z~f1gtEcRSiQ@^qBnFZFqpjuqU*eeSqB~NYc?~s*yUi+Rvpp{X8#7&xYWNf8$8wr z(rjjIh0DRBLv+?Hn7t2TXnP;C@j_-c+A8aPO18n}jGZ~&yWBIB$p_fchChIfxYn~h zLgtJy?8Bm1C&sish(81kbEywO6AMw+P>stON*AK|BhXZr`Ute75M>R`b~zBgZ6+JI zFz<4S>VNN}Qp(u|6sNhIp%p^oRZ;%|&2_2&fR4MtTivT)5dK3EP~e8%7GhbI-#Gdh zMD>0QY7%0!{?VGNAqv1yyBobjP5<#Hq(ymu0_rUkA~eJd1S&e$C9`N;E)8~9o@VH* z%i@=t1w*TZv}u@V#F%wbBPcP^C;6_=UfNKV%NY7bD2#=x7z=-r3{RyjhN@SQ2;F`a z>L*Mp@RUW}I*FluCVLca+dc)Axzwki3xzbRWI@qb$@BwJVm0baP^(dYQfOa=3yNNp z?2rC=w#L=OG{NOeeb5x2u

~&+t^@QlC{0Xjwmn#mJ82VJ>Sz+7iNOv-I`ML%as} z$4>P=dim)xjf_T=S%doJLRyd!EEzYs`RBBe6*u*BwO=x+WW-pM&#+taFZ0!w`;ykP z#wEWZmCe!!YxA!Npu%MgwYk~H*4sNy{1-IPCI1T=T!_+!M!Jll8-zmZSxbm_N_ME* zk+W6yTEZCTQfmq08JDpOosLWNwiH8g{13l$y8nUJ7ow~oI-Q}?TYRAJs07x5R=U(W z(8oe*fmuUzA46Sl^;Tiq{AOjpKeq_Akz-JX3Xvz*0vimT1Bt{Q%iXB_>>FDJ4<8)S0W)y(kh zGTCjljyl-YZY6JTiM3JL!J<`?wby$6dt_TB3%@%ev%A6Xao_1r-o0)pvZmfkvU%QZ zq6u}na1-k93!SCm%@Er@h7O(SJ!#dR_yIJ;C4T^&EflN_jp7g?Xs%Eg6t{uuIYbEh zP^i5RBMstwq)&v^n{Bo>ZlfVB=MW+4i|_SF4JrN+PgO4UBWT=x9{oq^s-L-Sc9bD$R6qo4E`@N6QSazVe*5wSfavm-7 zDaSiOJvkjnV|hcUxv>~)a5-bIJmAg#9o9rY!3Mh2Pq5h!dDgr_H^%4$iylaO#t_6t z@~moJxZQbHst-?*3i!3ctZW|!h*>$nR)ItP-b{57CN(Zq1nN-dorOh25k^y84ph{a z1A$y-yA+q`1}P3u@fM>_EzLi>bL+Z{%!?T*>-hrLGyk_APz&9eOSk>z`kcQz{bKz+6l zd+VcZd;_&y@Nkj)eia)MjiyM6o8kd;y1w7{hz&^)2=z>lHUE@x~O6+50KHOFALzyoU zQ>#kDm}oQmV76N5ez){C=HT*usYNE$eftb(S^GFI*09q}Z|&fyZhBvgR&e4EquM8Y z81k2B4Qj!OKhWGllr~hxi9gUALL_DNn%EE2lM{cSQGYIQm^Q?=rlIN0sGmI&U*3iQ z8#wU?S|}uk={A<-^WCC0WO-t;v@NLj zUkZGr4GnY|Ll+4Js{=qIUGf0XmS0#ITFb#cP{;Y+VX$fkqTJen77B$bGQ@VUp;f=I zY7b&IXb-yXuOY&I|7SNW?en#lF*HXgq*aF1Fb?*CdOzu{hNy!XTFt>e&_tnNbs(rU z2m2UE+B_vIo~&!I&G!RIY%VAJFuPDJn03HxrAu}IZ3<>e%+M$f_JOLNE-a3NKr=Yl z2YOp5glMQU2m3(no+-3SfXG+^^rTSOU^PU>46PUH;-AAWFQ*T-Uf?~24c2nhyK=CP z#?jhkxJ2*&&1>M$9?mWANS5h}9YJlM^(Z{$)R9rDO0qCHAS>Q9%5CjPgB)4N;!Y%1 z;!>S(HQ{Gu<7#6kQt8Y=KhW%-QT~pkGgi#sok5EWQPvPcqM?RD6dw#?{yLaiYzj!V z*my9BF@eFNvgdr36n=aNX3S=XfT{{n*3beD_kl(hqWDnI3YR(*G@%e>4Xx&AA82+V zin~x$O&7b`E)>;bu?4=#WMMXJcfqV?p%0Nm81}14^Ob)}U1xNcp zO@%1#3L4^4T|omg%?|CywQOWb(ti&ac#Ow_riZ*R#M^X|C zTn1Fy<^^vRa+~OGwRMH7?2gOCiy^z-t~+)uT&6oNTP*P?+`t}1cH2m%?8eAw?5U$r ze_JTjyCIqjsC4qu!U*D{VbeI>huO4cApl?ThNwbAV_qrAV@zx?9=XlgrL#*O!=-^UeE3@TviGHYW{*LCpvxJ0 z;{QBqrv}oC2DL=8k>U4kgjS5bNW1N8UO%wJu`p(vV_{=fG_(Hm>^&04`s^5c<&9?M zpXTX}9ktz?7!v>T?06qT+R!MMF*H(0tuB!SG2bLX6NI#_lr}_zG_*+QUuwpcKCMdP zxb)5AHJDWNBfGSpcq^-PkAFO)1jG@7WC{YC( z;*wRM%Y^uiquiclsbZj?E?IYfbgK~=na!E{BBAhR@y(ScX#5xhw!lh0Gtrr@ta~CJ#u&2uzI_CqQ z{sk)0L0B;b3?Z8Gf(0@uYmk<_x_mbiTiV zh)>3fA?{>Q;v?^{m+mbL4Rbj|XA05W?V0oHQ*c=0Qm25%2ysV{e;mlrRF^aKpwJyk zYcLLHyVPJ%*9MMf5L%3JWhPaY86 z+br*Qvu$M$A+E<=Y6$Irn#r@7>5pp%8P0h|U!BPFZyEh1~`b2-w7 z`V65%Rj8+fR&u0|)xbhSyQ~JX#%P(a(l2CoZn)Jx14h$41D92+d~n(U&VowENcJn~ zC(cBlk@igV7k%pWZ&z0`#N8LDbl_@_-VJ7F!3J`w57uUlXK#j~*4PA&_2F{W=bmY~ zn;2%rDVf5Gk=f#H80r;Ycy%psv!;H!WO}GMaW=9WBpacgg{-*g4p)0NW5r6boXQwx z`x0l*opK>AMhfYsH~uwf6i5DO7dN|% zT^NVCL=935V`EH_F6WdVXseKRi?T6E?z72P^EtdPUCOL2{mbG zj*#Bc6OY1*zBmf>525gwyP?%CXXtC8Uc7wJ?uagCwcm7~tG$@+*Ku<}b!0ClN5?eF z{G%(EAUj#IP?aVdAz6564w;SBmyqNgLMQs(m$($f_;V@fEuksun1+}N44wX+4~EwX z*pIg5myz=pE_oT~HKDN5y9}!@T*lD%LZMPFC$wmb_mp%?Z?Kv2ay-#fE=Rq;kV4C% zZr$0?6d{Eck7k_Obib<|-KT%iPL~;tN+K7^%a_d+B-TT+P&OtzQL<1r$f)|v6}YGs z3T0CRn(dM`py!1`*%(^wGKMO*`h=O)>@-vPm5g!2C8IBWV&k64u8>T@q^~5H-%G}O zudcwh5k1?HzY@1k3n`fRDpH*0QdiNjHge#P%SxBy5{>=7Amj0G@q3eGAuW^LD_Iz( zky&5gUIEDz9bKnm&O(;CNbv21RBw0wie@Yc)7cEo6AB4mLn0Z;Lc++3UU!*mD5nYz|6#RV z8X>K5XpH3WAE@89kXHWLfyQy9HP__~EfET7{f@NWk*tk>?@ZnAsNK&b3zT5~l8_5V}C1p})vKHID zcV#?#EdjQXOu;0s!)*!20&#n)kV+wKh%waAG$93(NP(tuED%((!zaR(q(4J47NJ)Wb|dQ1Jjp`Y{2uRRoc_bbM?%Duf5*V@^A(jb zRQ8ikn3&FBwOoD!h?U6=pxHvwH^r{dsy<$VdjilcoStzF)iF2J~p`4Jh zTFKmqi%$9XD7R=4%4s5K7^nYe*UYwdne8%MqSaE=f;%w@zndk~T||tG@=r}dykD-BwSbgciHh6i{igPb=Ka zOu=fc%NeQ^lEZi^sLZ9Nf<_1p^S^F1PQ_tQj{1R~D0CR#gcYT66X?A{hgn1PC_|ft zcm^TAAA2*X-lc8^o!rt#81iMP!R0{qH0>>D)Jj9kg7hsm1I=@bZegl^Oe_@rtrY#D zLj4#Sts-?RuD&Q#&zkzyLiNNSQ18s)KGeJH=3|rhG$^W+EG!63ogo!<>#?_SVWGpN zblmRVxUIIPvbUkRnA3eYzI9K}E>U^>5j2(4eW0&|81=2FvW6IZ4UI1GR^ef$X?Dx- zgsYuKK|Cu)mF3M~Hu_G(tT^&!J#<@kJBZQucF-|GJ~PG7&31Fn>ccr3W23~>x#H=V z(W<6{?iPAQi5Xhya)!<+^@(XOFunsc!=>&374PMdhKVdFIzTe+QtX6p`JHsr!zELf zjPJxnXP3GY7qO7KWY*9ymoro+lpnen>hGe>&UUH0K#5j9;m`^0!m72)85$zg$>leF ztMA5YpiA8isu5C~&EAdGNS8D8f{@xpd=EK!OR~^Pk=f9B59-^5p7X_(m;sv0AwAm4 zQykJmWBJ}b!Z4Gd5xpl_7%l&VRZmXrp}yxnUR}kIHpDKZp&>$HCYcH1-gqWxg^X-g}r;3{`NH z4|Km!D4JOyie?t*SNj#jlmg6qyi)Dj;i|LC8QLOrsb7Xy&&HS@JDZL^a({1?;4LxxbLZM< zY_-e5IQHsU2k$X{zzS9}?PI4+_LyX0Qxlop#65tE)@21j#Sem(yVQfA8-x^8fVYV&dJ%+>{!ebeS_duh|3lmF&Msbo4v{Hz~@*|9)<(%XrvECiM zl_h5H-HPjAojJ;f*|0+j6EnmpXlRL$iaVYIYQaf9P}f7f)usL+uf{nq8(_9Yiq1mg#YwG?#JC{lrR47Y4g6tg0u2Kae zvr+I70$C!|QSVG?e1sq=M_BZ+Sa?=t9%emVY9462&{CD7A#Mf?y>NsNN?Yggqadcq zM?s$pg+t$AYLg9CDP;_ClEPuDu_!!|fxSXlqDipT!A7`8G z3CRYtvyy*T;^X#%*lTXl<4iZ}kMv1@;4_hUf~5IrsH!BBdW_6k+@DdOR*15OX1JW82BA>C^`PY(?W0<@34Ng74jSuyK4G?@`WG$> zT#8Gy{b(OfSbF>gC-hrTX`+Wm;f;3je4A_EaJBQv{Fa^`o~9avk;B}4Tn;?OqifY% z{tDuTijTtzfFHn5-LN|lc*08de?hOKZ&OX&g_BqKh|5REhL`8 z({Yk%k2pqV*?bE1xkB2&%$j;evasFvH0mojz=!&3p_^PkdtS8eX<}N5q;TiyX&68Y9y!mD9g!0hiV~|Sb!OW`~u7#>Eq49zLFt^Yf#IV z`V_m?KkVLC9~Jl;WCEx8F#1VGng!CJXum4&=sX`<*3@Y$raoGTtu8w)S^X?)jLDLP z1Juu=zMP|dsDCab?}_I?Iga+xZaTXZm*|kbKCRGhOk)_Q`9On&!g#-s&|=9#xF#Db z**$tw&O(Z-hNFGB*eSG8FZ9aT4c|&vo1x`>bDU3^qsDeG)CjZXdv06k> zWt{B;T_F^nu`)z^HB=|WIFa8IdLDuSWg^E#;4 zuY&tLN`s=4C1aelhu#}s&zC~Z)Graz@38R-Jgw%~9_Xz?Pgzj3O0tmGf11*>oYZ}vB&NSY1$v3#H<(M9dC8v2sJ=TzY14Y(9hE5SW!B=SfCW!UV zo1mM7!VR>c37pXbJtK6Y-Vgm2xuneB0&Nn~UU&8_>wT--*0<;Y`<(9M5R3nX#}b$N z7iQgs=DQvDGWIwAD_;XSLmvw12l@DItX6P94^(-EcQ{nd(Gcy*&{QEsAHM?{$zeUv z(?a3q)DYzcD&BO4TePt1a96#O^jC655A}V{^oh(@A}dj6EH|`RNa@G#f*4=l1r?v= ztwQM;Vi9Mkr;yT*-vdz$?}5e(h0-&`jAdwskiv-n4XWXQ9@TuD%h-jSbBS&p)|~P& zHjTbdR>=ALpl5|b&fmueIXARLDAdgdAPV3EP@A(03&0QsU}%X@Xg(i;D1Z+^O+ujn z3{e1vx}M`5h64BqL;-vRsu2nWV2A=Rbeqt8eRQXRd{F=mpq}S?htz{T$Jl6y(lB&` z5I^bWe?R(V-mS{D-tC4MXdM_`$+9QL8`3iqiNPR5HA^xbc9tnq&chtJt-6lzz_vsXoFB_4xfT3fKNfK&MzzgLll6aMM9wfR)Z*j z)qMuIvrgq5E}<=$oT5M;9X+zJC_V#G6rX{{35B9CL{S*JTZqn(Z{urxQLF(~UEm$+ z8S?BJtSAaYTj@p5mgeb54f&R6i*)F*jG%qd)BW;KRF!a4pD1iTgD1iTg4y!IK z07Ddjq0vH2fzGyX)=@VUz&g;aLWGe&fNF@+Fm&`q-eE7zvtQ$IluLe1d2zqUC3;XA zVKr|WG$KPUG#mS)X6vcg^^)!Dc66Xi)R}C%WT9=Wx5;Uf+q#~~sq!~I0CpJdbX)Z| z#70B>2KOU`6kGNirsrvrXSrq&RM=Lm&%E3tPN?TUIhi#!+vQ-XdP&akbYlC8!F>yoh5RGPh_Jy#1Eh$ z9IXQluJLGpkJ6y%Ldke&AiwKp>NGG@pCP2i6mMhGXs%?Z>3t<>gtVs2HuTs3*1K0w zi65<({NO5oq?epI#xtIBuw>FOTPgpD*$N?TWhJ)fJtnt; zbdb%7?|>H~&KT*lClRPgAFeh)liwFhW?AxayfB^pW# zHK`Bm3950)Jwf-?dWU)lHEoD$HuSa7!Rl`%pbF03fm&VftxohWajGjJLMA&yX9|Ui zh_IT*=k`Ejgy!>zo{c{dR&)8>9>vjaf_F$in(TPVMR_S~h)b4YcFB#Nh0a}yM{3>B zD?%Y-dx6UM#9o!XmM>+O2`p8WpH`)9!9jE80M<7@4uR z?v(FMR228#nB6B7TGifoq_{z){U`gxs9XO){XV#C+Ji%OxLk8nVQyen;QQe6oR=L8ZZ^+Q2sdL6K@tDQk?CBP<&FN6*4` z;r{fW%Oul}t7&AmHMu|P71O-B2IE9q5bd@tsazx!B1ju!R5Nzn?S&B}4uGxX*c~q4 zn(mpV__U#^9J|A8yU?X!Gprqq(XbtC)Scd}IXPo3ICuxEz3UgrwTID4+LPSdcY78x zXNa~7DxG;xq02-WYz9Z~VD&Q!U8arEN{qFb=~;7_2f`+B_>SZ*yVo;~Piatetz_DN z%9`xD&!>2nA6nvrtj!+eY7e5# zju2z%Xm@{&2UWF?MoSiEw*;vS!k=aK>`Zw%ZeNp(-#Tsj zt43ybXXTXF;8{MxdV1q+_H(7Nm3)7X=DdMJdR%(){XGI0^nlk~=a;UH9Z{U%a)!D; z=#hF$+=)1bO4iPQFt)A}ag1t~<;Ul&>D5ZMM5AwKvfSAvJL9(3L&2?|APgBXZE<^YdAI973e3IHv&UQhuf#Z6h zVRJkRd-;di5PYbsJ&Z;)O{_}(VU%9(FwB+KrQ<}QtZAznyuUF?v%D>97UkhCDUQt7#TB4>L}FT6H-ZK4GrPQ9;iv^aDRVUeKZMoniopQ zcZ;J@XCglu^)rO@+fJefh(WUl=vJXaRf&e`T?W+h&-2LFrR1x;Cz)N&Sv~Y$m41J} zzDf5)zk#EApxqwz0bK80C5{1=aBdHDqtGx}85+ii_-N>Fa&C{yRKC53;&v(4OR*P< zOi-Yr$6U@dmOSQD(evl=v1nAd)Ulv$k9%~Z|9P?TSi+v>a)urk(oYR>Z>(ClRBzCS zLf5FT7%Jmqd!SRE@D77j5=6(em3XaC_$kp4KYW4Q!pf=&7gr*f!T0tM^zMToYl3>0 zGr>X=#C;Gf=i7RwQDqt?pmQULPXDt{IrP#h>)c1U+A6xj7_q-AU>N0`tHSKCdT$n* zeP0k`U0={iLg5D(P;{PTDJ@oyL!GhiIMm-LR8NDVtYn?Mde+n{IE#n+cA+rT9}l9x z9S`d87avnd7!-9clqF6;)?c#0-g}J9W}_3R`deMbE^|4Ghr_>1QDMaWP+aL!{Xh+c zezTxxon(JfCi|nlmZNy6-#EV@v@|HXOESF$K5ObjT+Y<@_-lcBJOK4F$-+zHky-y4 zfci|Kuvi=jqCX4-EhzMq21PFy%CaVVUow?R;zV3@cF7ZQ(cwuSOwwm7ZK#GX?Sak` zqVd=pA}%3=uVF1p)p4qs;>AX!dM`g!bl^tG5aLcw+bnY z#L1x6d}t4JaE){yE>*<1&L&dMFk@<0B*t zdy`4|P=c@L`+A_xLZN7el4P$!S=MAHOBRaeG}2nmDLq_F7YfbAP>IVJdPzwADRDZ8 zmH6qPRYIX?3^8sS+Ab7|<_yx`XMxWG4{GL;tP;+sYQI-!$p*J*;r6cWy{EfvW3rt~ zqi)Uh3_OjNMkt{(K`a)|1U)3A(9(uhb5alVf{;Q>oMnrJp04sNM#u)SP+qWTU7;+C zj2}jFXHfyP*I{@Z^fw=UD57C#jO3GhpzDR$pS7Ft^0TR%X?$`IbiYt2qO-A@>oSHG z3WXv%hcI3%l*J}%kSw$wWY%oY!9~Ys3t~!~3u@t#=Yq}^3T0!cC+GA)<()prH|sAjt-o96|A($@x6`{H9)R(TJ-4{1B1jpV4F)sBq%*DTo=8g@Qn4jr4rf zKNJd$WF%;qOO9lnve!Z$1zAh@bt8#qs>>jZx-Inagd(^Aea65GKtqH=>i|U;7Rs_F z8zWihO&8*Vc6lK#o)rpB1ytO0tXp&;jqkr=p(K8dS%pjf8nZnzKB#aj0E!Nftd}NL zQy<95JPWi?J&sX7zga#1UF*7-EYnD1)TcMA=U-S;UQJ~_(5&u%fkeh&nW{$pO(DLs zJjhnGhF0EU*^ke(yVf}$5B+o-kUDAd>TEk4xeKkuW^1MO);4Sb6av{gtSRY+V6Dsjn+LB}oj zR=PV%8>-?{e4yV6h1KvSAez!8pn4&0bMiaPAYK&WJ$3W%6m7hOa;kATQ~yF}fR-$m z;%TZ&T?#t%@7_u%YiNPX8M;Jhv8*lwt#+x)KpkH2Rx{KX3~_H_Xui-h{&05n<%F@8 zgL$9}UMx)Oa;#X38k#NC#b+oUO@@|8Hb|L7W^>SJ)OQN;6kvW1x`M6U{g=4PD`?kU zm-tjvZRsm;HAFI%SJq?~N~Zg(L=Enlgla4gLVB7aZHWF2YFWBe&vPZNM9B1WCHljc z`Xocu8)DJ`*;>#pbm^;5+$6<^-O}f2%XL>#I4d}X2b!_W`)IG0^;<%$mrQcx)%Xhs-P*g7&Wto3?=V}sOCRzBA z&SXuJg-jx|?Z&Gu#pOOl1(O&HV)P%&2F-m!=V{+9ZH(a`7X9xZ-b@chB(4FicFAi% zhrJx~;BOKQwdNQe=rSS2kr)RW=#t|=3xtTnUY}4mj+~Ek8AC1pFF4Ha8I=DnUnt4n zfd&duDE4--I#6_(WC!?zYKRryzl0p<;2P$!?>p*Q@^$sJ=_o3tB1^_M2;MG8y0&)zay9itVe9TwG6i?fse$ zs+Zf5|GY6WYrWUg9R_d=j|)QvmzEP>EA}s$JAFb`1%rBO0;x@W-CI-5*2NnqU`;_7 zS|Jpkvi?2cH@MXAL1invRT$0;mGF^0&`6;$#N0qZOq5J*KW(y^l8yA0lSM{9&)tBF zbwaAr>Klov#-(lq4g6=Qf&35pjfPgZoS}<^LJdqLk#Uky1Nr66MATU@PDFi?kml^f zB+{>N$w{EEg+dJ&Vp28K{SBXf7(OPG$jOpvcP&O{1Hoj}CkllIV`wo4@IVg=5w1NZ zQ$2;Md{VN|V5Xo>-=Bi|W}y)7R8W~qP6ZwQrjIFvYiNkefLhkPsVdLES1@rCWQI%L zgi*~~-YBgvyxl~}EN~e^yZx)VjBTg7{AN&Vm%JHth>*%SeKXnbEt!JOBC~A(Q@=q- zLC3d%SZ>@xo8%43c46G+(z3kbZ z+p{p<#eaY;aH&6#>i!>irXaJRsHQ#%({1Ew6i4q+e_Uw1A6wG5;i;bQ>Ve8W z^q!I$v;PQULGee>nL_m*r46y5Ftk8Fj9 zxeO#4ob_oOBBOgiJ^45us76T1r$N!=W?6pP$(roGW?B9PSLHM4qw^)x8YiBC-V({e zLLOPsTYN*0q)Hoo6nu`#v#(HGKS=XWh#y4vNtNXmiESyK>d)?wU&GkKsTLZSL*QyyE;c@`peygC7E2FQmyg{Scweb{Rv9gf#gk(&Xf0$u#-K zCfg|4Rcd<3Y=NA{#RXsbgoP4ypw%u}2l_vuP$!`1L&?H9S!Bgcyoa-nIxPOmy9&G3 zb8uC`Sv_1GBBbXLvW5n7Ru6QmQ1}VtVGxtX!=Sec9cB$Nof=v%bh3ZauX--!#R_pQ zsONuu7-15gixsWG(3wKN_T>;i0xILA9s|o?{#)z@=3mKsLe+k*@ewvg79bjDvs9~j z%u)+navrU50w?sioWN)G%;8#}R#^=p+@{=iA%F~(IB z<DXghRxQG;kNhxJW{139;Z?UOEy&5LT2l|$5Edl6bi%8N|yt* zeENU8MiDbVWYMsx|aP^8b|d=zx8^Llzu!PL~EH3I$G!my})oj?#ZN~^MzE@@n6a0m6B26_TWg} zUr}%2GJi$=iNZt@Pm%~j|C69sniKIG3x*i_K}FxVoN4?djZlS8p+Qr73N-Yag5a}; zmb;vx8li9)^l4B7AJ+r@Nl3wGLD8dfvvAVior{&;lX7H8X2y1&8xMUl%44 zKT9GzniKKU3^JQ$o<)7g#)9%nJO`@aa2{y1PqqS7_NW-`C?Zl>>TM*KhOI;WJXNqPT!h>Y?!!XY$Z!l1A8hMkDI*qqkCy60afa z-YoOo-emnH8{@-Hn{58idbX+4_!>E1B3XD=>vf`FIrTcpfAtF&py-_KA$eb2Cc8|s z;9`X>vBtZ~74)9F#X=acXxlG*n5@+f?>G4PCtf(vMN3-Si$3Ab#I{0IQj9HqMt!nm;lUnc6jA1F)a!-D_=kha-=Q6}E%s4_nfV>m z*`<32^?pKOY%ny8Gk`SIkuJHC%N$Psabei!61CgSyZX*Iy~Mld*SqAqpwit7Qb`-C zaT!C$3WXAV&pMN2XR0&B2<;b(_t3v@5AW)Ff8*NtUcO3mhFa}e5J3EItXMt$8`PpC z1dxB?z46~z&EPB`=m??EaNZ|?6C?`(q!E&r%=_q1k3s8LM4fC5obsrMkVwVAxcHhf;JT1I$;3Le|y5vWg zUB9=$){*MCXKM$@hQd)E@S9pA-2==-+5n6&i~h(mhbDUZLM;Pt6fb=?b+7H5uO!< z*;-{au15TfZ0xW8j5vmIb`bQ0khT}HpHY3wB-8dnVhx_CzBQ;HdO)a-d;n=sl$1_tV`z&| zFSYakl1SI~KH;#Zg^br4rv6Kvvth_3dS4pjWwjQK8JsZ$4KDM>LTN)Z2SbYsQR07~ z&YUp>bvrOv`4fEqqZk-i4W)&&FP2z`73++3pglTxt1!)gqB6-7PXUr=w@# z_uq~9B*={<_l;0iW`)f^}U6(8cQ!d^5eDw9m(UDjlkk|_g; z9Mk8?lFir6NQ}_-%5wPKaH#jITb?W^D(+GsOKe5fu22@6tea%qYS>ADx~*2%_qat{ ztNNG5V$H8R`JObXn(t{O6A$zL14|pDu^LNvZD#q88<#gxg7q9dge^I|neFUlU)F#X zH{I(NHBqeD3J*D!aJcQD|A5^P4j+=o_y~`}ZQT#VK2EaU{_8`Hrp`(b_0q?LLU{2u z!fSA;ZMb@+n|GzPXx0!bUPDcVDE<*NkPrJY+;r!-As6odxI~{E>3xJ1&UV7tAX&=S zd>R?+ip+M@FYE5r!wuCA)Nhk)qgRiS*-W8}#EN!nsGpGTm*by6EBMAA=sF<{TvtgU_fM=g5zc*2j$MYyTpdw+cglnxVG5LQRVC|X$5 z;uvohR!7C4<$V1Qv(Z9>!YkE^`{v(h2aD>(LUFdlj9IxQXm+nqFq6(_8PnJjD<(EW z?+8`u?GC$vxG~-hwEMB%DlElz>suDJmn^I}cPEi?oI*r>xKLPe?vAIqoI)h*$Aq2_ zH?n(RwvuCrusEsQDob^HU{}RCL|ncsrZ%70lL$VPEF3#RX8RR;qTaUBy9$dBQ|~UB zo|#XSpw5g{(sw}7gDzzk)(TvrSETr+hOG$23eF*d?&(ud5NS{}uUVGg)y$e~p=27$ z5~a9k!I?x7d5>=Z;^_-%jP)b)|EucUW3#T#IF4@__AM8=w57mXET~u%N>y6=a;@Af zAW-h5zQrQ9mTM8;S_T6I#e&Pm7MIh^mxOp5`iCL9DlVCJncGO_1)0m(_BQDfOfYkU zC2Q@rknQul=X<)e|2*mQdCob{xu5s^e&=`6W>LT$fS}bCJ`thBV9*)PB!W7Gm<8;~ ze&=9Hh^3gJfBYY1cIk!?s>mgWfF{O$gkfMcRN=Y}RSNMaAoDzaC=t?BhJs!as+NaC z2}K_=^tDh}iVP#m|B;T@UhSKaXNS=thRzHLXI_QvL}$C1!-(R3p)hLPK@@YOW7U

HbAcnJzJ~9x-_Wj%!_3)Dx@$_Z7H%i|Nyh*q}oo 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

J@TYpx-VZ3pNZVzsr1Wpnrmj2K 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∋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

>cQU8}Y zkRGDW4%EB-ASwz5VwyULyTX=%+!e@#DK=nqI@2I_=Qu_N2hrw7d=DPm+O#e6E+Ws~ zrT5≻aT{@-Di9(_QrQM#c~CB4#U6J~1=yPVb?D!L+}XkHgdXB`Eqt;4%a{D~TbF zA}FXf21Vb;4<-JdG3gVfU?}m(vRXNRjPGRTFgBOf@xut;#`ob#_9fyz(T5TDU8NaL z&I`vP?o&&+q8W?0@6e1OghOuxgm5~-g;=fR^LHbC){#V<$9UjKe2{zjgL-2@{SD=}C!1|NoP z$GFO9jJD4BpO$ULiy7-Ogk!;e<0Ych;q$RLZ%5IGxEYV5wGxc~QBrHE4Qettcn{^^ z2`rU&)e)#u>y@}Jk9Qfu@l?{^@!DU;1t~S}1R`5ZMAFAfe>~ zAJ_93G}N-qBouwDJ5cn&ev|m>J2CWkl5;kbA^JO6`#YJ1@y^#$8`NYpaSG*NMjWTO z>Il^SD$(DmWcZYI@l?{^sbuIr1t}lnrzrW(HIabUu^`^LTCL=Z5upzZNnV#>$Pk~M z2>IF;gOv9=4DZDkt@>VkKSRgI*e@Yw8ph8goCbyoBz%V!jJ=#lpEc7tAQ`Wl?gFFf zE=|glnL%955CxyO&m~f99I^(UvP~#vrmGHTg8f2?C}Z;&+WoKIb@8m6+60I)Y zcy`*+qX_)u`|yoo h#+UGcdF?Xesag)cf-lTdjxNWv0j=jT?SY)S{|{}Q`!@gp From 875539a4f8ecaf8438c0fa9498017a3a4d8e7cac Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Thu, 17 Apr 2025 10:18:33 +0800 Subject: [PATCH 090/159] libhsakmt: change to device id for R9700 Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3770788 -> 3770788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 584e1a7666cdde43f1fe4c205318304573080a5f..b3932d9dd2ca7e431a0608806ae0cba324e04824 100644 GIT binary patch delta 236 zcmWN=IZgrr006)MD@H-{3Ly6r0#?LTjjaf(bw34|L2VbKIX}M|WW? zjE9N;;4g}Aw!eoc@W!Mm)83l#&aC%7m@{v|M~jv$`((wcHS0e6;;Rjtwrtz6>znU> d*z?oA1BZ?r`{l%Mf1EmV?!u+3(;-?XFIQCLYS{n) delta 236 zcmWN=IZgrr006)MD@HzoOv*6r0#?LTjjaf(bw34|L2VbKIX}M|WW? zjE9N;;4g}Aw!eoc@W!Mm)83l#&aC%7m@{v|M~jv$`((wcHS0e6;;Rjtwrtz6>znU> d*z?oA1BZ?r`{l%Mf1EmV?!u+3(;-?XFIR0{YW4sC From a343839e3cd2c128450821c14dabfc5f8efa9643 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 8 May 2025 15:38:55 +0800 Subject: [PATCH 091/159] libhsakmt: work around VaMgr free_list_ size is not 1 In some cases, the upper modules of rocr-runtime did not free all of the memories at the end of the application's life time, it causes below error logs: pid:13066 tid:0x7f08718c4080 [~VaMgr] free_list_ size is not 1. pid:13066 tid:0x7f08718c4080 [~VaMgr] frag_map_ size is not 1. Change the log level from debug to info to work around this problem. Signed-off-by: tiancyin --- wddm/va_mgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wddm/va_mgr.cpp b/wddm/va_mgr.cpp index 40f912b0d1..cc81727d87 100644 --- a/wddm/va_mgr.cpp +++ b/wddm/va_mgr.cpp @@ -18,9 +18,9 @@ VaMgr::VaMgr(uint64_t start, uint64_t size, uint64_t min_align) { VaMgr::~VaMgr() { if (free_list_.size() != 1) - pr_err("free_list_ size is not 1.\n"); + pr_warn("free_list_ size:%ld which should be 1.\n", free_list_.size()); if (frag_map_.size() != 1) - pr_err("frag_map_ size is not 1.\n"); + pr_warn("frag_map_ size:%ld which should be 1.\n", frag_map_.size()); free_list_.clear(); frag_map_.clear(); From c3e8645230aa3d47dadc9fe8b7a4fbafbc8ebe46 Mon Sep 17 00:00:00 2001 From: "Shi.Leslie" Date: Fri, 16 May 2025 02:55:31 -0100 Subject: [PATCH 092/159] wsl/hsakmt: Disable thunk sub-allocator by default Signed-off-by: Shi.Leslie Reviewed-by: Longlong Yao Longlong.Yao@amd.com --- globals.cpp | 4 +++- libhsakmt.h | 1 + memory.cpp | 3 ++- openclose.cpp | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/globals.cpp b/globals.cpp index 25fabb5ead..312f8d0d59 100644 --- a/globals.cpp +++ b/globals.cpp @@ -49,5 +49,7 @@ int vendor_packet_process; int enable_vendor_packet; /* check available system memory before allocation */ bool check_avail_sysram = false; +/* enable 128MB sub-allocator in libhsakmt, default: disable */ +int enable_thunk_sub_allocator = 0; -size_t max_single_alloc_size = 0; \ No newline at end of file +size_t max_single_alloc_size = 0; diff --git a/libhsakmt.h b/libhsakmt.h index 392db59afa..c6c4ffe565 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -48,6 +48,7 @@ extern int vendor_packet_process; extern int enable_vendor_packet; extern bool check_avail_sysram; extern size_t max_single_alloc_size; +extern int enable_thunk_sub_allocator; #undef HSAKMTAPI #define HSAKMTAPI __attribute__((visibility ("default"))) diff --git a/memory.cpp b/memory.cpp index 2b65def00b..57b7710fc7 100644 --- a/memory.cpp +++ b/memory.cpp @@ -278,7 +278,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, void **MemoryAddress) { return hsaKmtAllocMemoryAlignInternal(PreferredNode, SizeInBytes, Alignment, MemFlags, - MemoryAddress); + MemoryAddress, + !enable_thunk_sub_allocator); } HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, diff --git a/openclose.cpp b/openclose.cpp index 55f48c1e7e..6bf3ded56f 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -132,6 +132,10 @@ static HSAKMT_STATUS init_vars_from_env(void) { if (envvar) check_avail_sysram = !strcmp(envvar, "1"); + envvar = getenv("WSL_ENABLE_THUNK_SUB_ALLOCATOR"); + if (envvar) + enable_thunk_sub_allocator = atoi(envvar); + return HSAKMT_STATUS_SUCCESS; } From 053ea9d2fe8a5c5a386e4b7c0deb91999c7907ea Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 22 May 2025 10:40:01 +0800 Subject: [PATCH 093/159] wsl/libhsakmt: add more exported symbols Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- libhsakmt.ver | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libhsakmt.ver b/libhsakmt.ver index c24c9c1155..87ce7b313d 100644 --- a/libhsakmt.ver +++ b/libhsakmt.ver @@ -18,6 +18,7 @@ hsaKmtQueryEventState; hsaKmtWaitOnEvent; hsaKmtWaitOnMultipleEvents; hsaKmtCreateQueue; +hsaKmtCreateQueueExt; hsaKmtUpdateQueue; hsaKmtDestroyQueue; hsaKmtSetQueueCUMask; @@ -30,6 +31,7 @@ hsaKmtRegisterMemory; hsaKmtRegisterMemoryToNodes; hsaKmtRegisterMemoryWithFlags; hsaKmtRegisterGraphicsHandleToNodes; +hsaKmtRegisterGraphicsHandleToNodesExt; hsaKmtShareMemory; hsaKmtRegisterSharedHandle; hsaKmtRegisterSharedHandleToNodes; From 95ec7d5c27929ac7cd0c2c79e8e91cd268899306 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Fri, 9 May 2025 14:50:34 +0800 Subject: [PATCH 094/159] wsl/libhsakmt: remove suballocator's lock Signed-off-by: tiancyin Reviewed-by: Flora Cui Part-of: --- memory.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/memory.cpp b/memory.cpp index 57b7710fc7..2436776ee0 100644 --- a/memory.cpp +++ b/memory.cpp @@ -136,16 +136,12 @@ void BlockAllocator::free(void* ptr, size_t length) const { } static wsl::SimpleHeap fragment_allocator_; -static std::unique_ptr fragment_allocator_lock_ = std::make_unique(); void reset_suballocator(void) { - fragment_allocator_lock_ = std::make_unique(); - std::lock_guard lock(*fragment_allocator_lock_); fragment_allocator_.reset(); } void trim_suballocator(void) { - std::lock_guard lock(*fragment_allocator_lock_); fragment_allocator_.trim(); } @@ -223,8 +219,6 @@ HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, /* Only allow using the suballocator for ordinary VRAM.*/ bool trim_safe = false; if (!SkipSubAlloc && create_info.domain == thunk_proxy::AllocDomain::kLocal) { - std::lock_guard gard(*fragment_allocator_lock_); - /* just quickly skip SA if size is bigger than SA block size.*/ gpusize real_size; if (create_info.size > GPU_HUGE_PAGE_SIZE) @@ -262,7 +256,6 @@ after_trim: return HSAKMT_STATUS_SUCCESS; } else if (trim_safe) { /* attempt to release memory from the block allocator and retry */ - std::lock_guard gard(*fragment_allocator_lock_); fragment_allocator_.trim(); trim_safe = false; goto after_trim; @@ -291,7 +284,6 @@ HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, return HSAKMT_STATUS_INVALID_PARAMETER; if (!SkipSubAlloc) { - std::lock_guard gard(*fragment_allocator_lock_); if (fragment_allocator_.free(MemoryAddress)) return HSAKMT_STATUS_SUCCESS; } @@ -645,7 +637,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, size_t aligned_size = end - start; { - std::lock_guard gard(*fragment_allocator_lock_); if (nullptr != fragment_allocator_.block_base(aligned_ptr)) return HSAKMT_STATUS_SUCCESS; } @@ -755,7 +746,6 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { pr_debug("address %p\n", MemoryAddress); { - std::lock_guard gard(*fragment_allocator_lock_); if (nullptr != fragment_allocator_.block_base(MemoryAddress)) return HSAKMT_STATUS_SUCCESS; } From 56553974d00a18e45f179e1cfb7cf627bd06662f Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 22 May 2025 14:31:39 +0800 Subject: [PATCH 095/159] wsl/libhsakmt/memory: Dynamically allocate static global memory Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- memory.cpp | 74 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/memory.cpp b/memory.cpp index 2436776ee0..bbaba448e3 100644 --- a/memory.cpp +++ b/memory.cpp @@ -62,14 +62,16 @@ struct Allocation { int dmabuf_fd; }; -static std::map allocation_map_; -static std::unique_ptr allocation_map_lock_ = std::make_unique(); +static std::map* allocation_map_ = new std::map(); +static std::mutex* allocation_map_lock_ = new std::mutex(); void clear_allocation_map(void) { - allocation_map_lock_ = std::make_unique(); + //delete allocation_map_lock_; + allocation_map_lock_ = new std::mutex(); std::lock_guard lock(*allocation_map_lock_); - allocation_map_.clear(); + delete allocation_map_; + allocation_map_ = new std::map(); } HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryPolicy(HSAuint32 Node, @@ -249,7 +251,7 @@ after_trim: else *MemoryAddress = reinterpret_cast(gpu_mem->GpuAddress()); - allocation_map_[*MemoryAddress] = Allocation( + (*allocation_map_)[*MemoryAddress] = Allocation( gpu_mem->GetGpuMemoryHandle(), *MemoryAddress, (uint64_t)*MemoryAddress, create_info.size, false, nullptr, SizeInBytes, MemFlags.ui32.GTTAccess ? 0 : PreferredNode, MemFlags.Value); @@ -291,8 +293,8 @@ HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, wsl::thunk::GpuMemory *gpu_mem = nullptr; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it == allocation_map_->end()) { return HSAKMT_STATUS_ERROR; } @@ -301,7 +303,7 @@ HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, close(it->second.dmabuf_fd); it->second.dmabuf_fd = -1; } - allocation_map_.erase(it); + allocation_map_->erase(it); } if (gpu_mem->IsQueueReferenced()) @@ -323,8 +325,8 @@ bool queue_acquire_buffer(void *MemoryAddress) { wsl::thunk::GpuMemory *gpu_mem = nullptr; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it == allocation_map_->end()) { return HSAKMT_STATUS_ERROR; } @@ -344,8 +346,8 @@ bool queue_release_buffer(void *MemoryAddress) { wsl::thunk::GpuMemory *gpu_mem = nullptr; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it == allocation_map_->end()) { return HSAKMT_STATUS_ERROR; } @@ -360,8 +362,8 @@ bool queue_release_buffer(void *MemoryAddress) { wsl::thunk::GpuMemory *get_gpu_mem(void *MemoryAddress) { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it == allocation_map_->end()) { return nullptr; } @@ -463,8 +465,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtExportDMABufHandle(void *MemoryAddress, std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.upper_bound(MemoryAddress); - if (it != allocation_map_.begin()) { + auto it = allocation_map_->upper_bound(MemoryAddress); + if (it != allocation_map_->begin()) { --it; if (it->second.dmabuf_fd == -1) { auto gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); @@ -524,7 +526,7 @@ HSAKMT_STATUS hsaKmtImportDMABufHandle(int DMABufFd, * the gpu_mem->Flags() need convert back from GpuMemoryCreateFlags to * HsaMemFlags, reference hsaKmtAllocMemoryAlign * */ - allocation_map_[MemoryAddress] = Allocation( + (*allocation_map_)[MemoryAddress] = Allocation( gpu_mem->GetGpuMemoryHandle(), MemoryAddress, (uint64_t)MemoryAddress, gpu_mem->Size(), false, nullptr, gpu_mem->ClientSize(), 1, gpu_mem->Flags()); @@ -602,14 +604,14 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtDeregisterMemory(void *MemoryAddress) { std::lock_guard gard(*allocation_map_lock_); // IPC mem(vram) and IPC signal(sys mem) - auto it_ipc = allocation_map_.find(MemoryAddress); - if (it_ipc != allocation_map_.end()) { + auto it_ipc = allocation_map_->find(MemoryAddress); + if (it_ipc != allocation_map_->end()) { wsl::thunk::GpuMemoryDescFlags flags; flags.reserved = it_ipc->second.mem_flags_value; if (flags.is_imported_vram_alloc_va || flags.is_imported_sys_memfd) { wsl::thunk::GpuMemory *gpu_mem; gpu_mem = wsl::thunk::GpuMemory::Convert(it_ipc->second.handle); - allocation_map_.erase(it_ipc); + allocation_map_->erase(it_ipc); delete gpu_mem; return HSAKMT_STATUS_SUCCESS; } @@ -644,8 +646,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, { std::lock_guard gard(*allocation_map_lock_); // IPC mem - auto it_ipc = allocation_map_.find(aligned_ptr); - if (it_ipc != allocation_map_.end()) { + auto it_ipc = allocation_map_->find(aligned_ptr); + if (it_ipc != allocation_map_->end()) { wsl::thunk::GpuMemoryDescFlags flags; flags.reserved = it_ipc->second.mem_flags_value; if (flags.is_imported_vram_alloc_va) { @@ -669,8 +671,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, } // GTT mem - auto it_gtt = allocation_map_.find(aligned_ptr); - if (it_gtt != allocation_map_.end()) { + auto it_gtt = allocation_map_->find(aligned_ptr); + if (it_gtt != allocation_map_->end()) { if (!it_gtt->second.userptr) { if (it_gtt->second.size >= MemorySizeInBytes) { *AlternateVAGPU = (uint64_t)MemoryAddress; @@ -682,8 +684,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, } // userptr mem - auto it = allocation_map_.find(MemoryAddress); - if (it != allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it != allocation_map_->end()) { if (it->second.userptr && it->second.size >= MemorySizeInBytes) { *AlternateVAGPU = (uintptr_t)it->second.gpu_addr + @@ -715,10 +717,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPU(void *MemoryAddress, { std::lock_guard guard(*allocation_map_lock_); - allocation_map_[MemoryAddress] = + (*allocation_map_)[MemoryAddress] = Allocation(handle, aligned_ptr, addr, aligned_size, true, MemoryAddress, MemorySizeInBytes); - allocation_map_[(void *)addr] = + (*allocation_map_)[(void *)addr] = Allocation(handle, aligned_ptr, addr, aligned_size, true, nullptr, MemorySizeInBytes); } @@ -755,8 +757,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { std::lock_guard gard(*allocation_map_lock_); // IPC mem - auto it_ipc = allocation_map_.find(MemoryAddress); - if (it_ipc != allocation_map_.end()) { + auto it_ipc = allocation_map_->find(MemoryAddress); + if (it_ipc != allocation_map_->end()) { wsl::thunk::GpuMemoryDescFlags flags; flags.reserved = it_ipc->second.mem_flags_value; if (flags.is_imported_vram_alloc_va) { @@ -772,8 +774,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { } } - auto it = allocation_map_.find(MemoryAddress); - if (it == allocation_map_.end()) { + auto it = allocation_map_->find(MemoryAddress); + if (it == allocation_map_->end()) { return HSAKMT_STATUS_ERROR; } @@ -783,8 +785,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapMemoryToGPU(void *MemoryAddress) { handle = it->second.handle; - allocation_map_.erase((void *)it->second.gpu_addr); - allocation_map_.erase(it); + allocation_map_->erase((void *)it->second.gpu_addr); + allocation_map_->erase(it); } auto gpu_mem = wsl::thunk::GpuMemory::Convert(handle); if (gpu_mem->IsQueueReferenced()) @@ -842,8 +844,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, bool found = false; { std::lock_guard gard(*allocation_map_lock_); - auto it = allocation_map_.upper_bound(Pointer); - if (it != allocation_map_.begin()) { + auto it = allocation_map_->upper_bound(Pointer); + if (it != allocation_map_->begin()) { --it; if (Pointer >= it->first && (Pointer < reinterpret_cast(it->first) + it->second.size_requested)) { From 4c60c0cf65fc4a686145eace2c237b822ce6d456 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 22 May 2025 14:48:39 +0800 Subject: [PATCH 096/159] wsl/libhsakmt/topology: Dynamically allocate static global memory Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- topology.cpp | 157 ++++++++++++++++++++++++++------------------------- 1 file changed, 80 insertions(+), 77 deletions(-) diff --git a/topology.cpp b/topology.cpp index 11a52d0feb..ed67320367 100644 --- a/topology.cpp +++ b/topology.cpp @@ -59,15 +59,18 @@ typedef struct { std::vector link; } node_props_t; -static HsaSystemProperties *g_system; -static std::vector g_props; +struct _topology_props { + HsaSystemProperties *g_system = nullptr; + std::vector g_props; + std::vector wdevices_; + uint32_t wdevice_num_ = 0; + uint32_t num_sysfs_nodes = 0; + int processor_vendor = -1; + double freq_max_ = 0.0; +}; -static std::vector wdevices_; -static uint32_t wdevice_num_; -static uint32_t num_sysfs_nodes; +static _topology_props* dxg_topology = new _topology_props(); -static int processor_vendor = -1; -static double freq_max_ = 0; /* Supported System Vendors */ enum SUPPORTED_PROCESSOR_VENDORS { GENUINE_INTEL = 0, @@ -267,7 +270,7 @@ static int get_cpu_cache_info(const char *prefix, char path[256], str[256]; bool is_power9 = false; - if (processor_vendor == IBM_POWER) { + if (dxg_topology->processor_vendor == IBM_POWER) { if (strcmp(cpuinfo[0].model_name, "POWER9") == 0) { is_power9 = true; } @@ -344,12 +347,12 @@ static int get_cpu_cache_info(const char *prefix, static HSAKMT_STATUS topology_map_node_id(uint32_t node_id, wsl::thunk::WDDMDevice *&device) { uint32_t idx = node_id; - if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) { + if ((!dxg_topology->wdevices_.size()) || (!node_id) || (node_id >= dxg_topology->num_sysfs_nodes)) { device = nullptr; return HSAKMT_STATUS_ERROR; } - device = wdevices_[node_id - 1]; + device = dxg_topology->wdevices_[node_id - 1]; return HSAKMT_STATUS_SUCCESS; } @@ -368,19 +371,19 @@ HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties& props) { goto err; } - num_sysfs_nodes = num_adapters + 1; + dxg_topology->num_sysfs_nodes = num_adapters + 1; - for (auto device : wdevices_) + for (auto device : dxg_topology->wdevices_) delete device; - wdevices_.clear(); + dxg_topology->wdevices_.clear(); for (uint32_t i = 0; i < num_adapters; i++) { wsl::thunk::WDDMDevice *device = new wsl::thunk::WDDMDevice( adapters[i].hAdapter, adapters[i].AdapterLuid); assert(device && "Create WDDM Device fail"); - wdevices_.push_back(device); + dxg_topology->wdevices_.push_back(device); } - props.NumNodes = num_sysfs_nodes; + props.NumNodes = dxg_topology->num_sysfs_nodes; delete[] adapters; return ret; @@ -439,7 +442,7 @@ static HSAKMT_STATUS topology_parse_cpuinfo(std::vector& cpuinfo) if (cpuinfo_max_freq) { std::string line; std::getline(cpuinfo_max_freq, line); - freq_max_ = static_cast(std::stod(line) / 1000); + dxg_topology->freq_max_ = static_cast(std::stod(line) / 1000); } std::ifstream cpuinfo_file("/proc/cpuinfo"); @@ -460,9 +463,9 @@ static HSAKMT_STATUS topology_parse_cpuinfo(std::vector& cpuinfo) continue; } - if (line.substr(0, 9) == "vendor_id" && processor_vendor == -1) { + if (line.substr(0, 9) == "vendor_id" && dxg_topology->processor_vendor == -1) { std::string vendor = line.substr(line.find(':') + 2); - processor_vendor = topology_search_processor_vendor(vendor.c_str()); + dxg_topology->processor_vendor = topology_search_processor_vendor(vendor.c_str()); continue; } @@ -482,17 +485,17 @@ static HSAKMT_STATUS topology_parse_cpuinfo(std::vector& cpuinfo) if (!cpuinfo_max_freq) { if (line.substr(0, 7) == "cpu MHz") { double freq = std::stod(line.substr(line.find(':') + 2)); - if (freq > freq_max_) { - freq_max_ = freq; + if (freq > dxg_topology->freq_max_) { + dxg_topology->freq_max_ = freq; } continue; } } } - if (processor_vendor < 0) { + if (dxg_topology->processor_vendor < 0) { pr_err("Failed to get Processor Vendor. Setting to %s", supported_processor_vendor_name[GENUINE_INTEL]); - processor_vendor = GENUINE_INTEL; + dxg_topology->processor_vendor = GENUINE_INTEL; } return ret; @@ -508,7 +511,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, p2p_links = false; num_p2pLinks = 0; - props.MaxEngineClockMhzCCompute = freq_max_; + props.MaxEngineClockMhzCCompute = dxg_topology->freq_max_; if (node_id == 0) { /* CPU node */ @@ -686,7 +689,7 @@ static HSAKMT_STATUS topology_get_cpu_cache_props(int node, /* Get info from /sys/devices/system/node/nodeX/cpuY/cache */ int node_real = node; - if (processor_vendor == IBM_POWER) { + if (dxg_topology->processor_vendor == IBM_POWER) { if (!strcmp(cpuinfo[0].model_name, "POWER9")) { node_real = node * 8; } @@ -991,7 +994,7 @@ topology_create_indirect_gpu_links(const HsaSystemProperties& sys_props, HSAKMT_STATUS topology_take_snapshot(void) { uint32_t i, mem_id, cache_id; HsaSystemProperties sys_props; - std::vector& temp_props = g_props; + std::vector& temp_props = dxg_topology->g_props; HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS; const uint32_t num_procs = sysconf(_SC_NPROCESSORS_ONLN); std::vector cpuinfo(num_procs); @@ -1108,40 +1111,40 @@ HSAKMT_STATUS topology_take_snapshot(void) { topology_create_indirect_gpu_links(sys_props, temp_props); } - if (!g_system) { - g_system = (HsaSystemProperties *)malloc(sizeof(HsaSystemProperties)); - if (!g_system) { + if (!dxg_topology->g_system) { + dxg_topology->g_system = (HsaSystemProperties *)malloc(sizeof(HsaSystemProperties)); + if (!dxg_topology->g_system) { ret = HSAKMT_STATUS_NO_MEMORY; goto err; } } - *g_system = sys_props; + *dxg_topology->g_system = sys_props; err: return ret; } /* Drop the Snashot of the HSA topology information. Assume lock is held. */ void topology_drop_snapshot(void) { - if (!!g_system != !!g_props.size()) + if (!!dxg_topology->g_system != !!dxg_topology->g_props.size()) pr_warn("Probably inconsistency?\n"); - g_props.clear(); + dxg_topology->g_props.clear(); - free(g_system); - g_system = NULL; + free(dxg_topology->g_system); + dxg_topology->g_system = NULL; trim_suballocator(); - for (auto device : wdevices_) + for (auto device : dxg_topology->wdevices_) delete device; - wdevices_.clear(); + dxg_topology->wdevices_.clear(); } HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id) { - if (g_props.empty() || !g_system || g_system->NumNodes <= nodeid) + if (dxg_topology->g_props.empty() || !dxg_topology->g_system || dxg_topology->g_system->NumNodes <= nodeid) return HSAKMT_STATUS_INVALID_NODE_UNIT; if (gpu_id) - *gpu_id = g_props[nodeid].node.KFDGpuID; + *gpu_id = dxg_topology->g_props[nodeid].node.KFDGpuID; return HSAKMT_STATUS_SUCCESS; } @@ -1149,8 +1152,8 @@ HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id) { HSAKMT_STATUS gpuid_to_nodeid(uint32_t gpu_id, uint32_t *node_id) { uint64_t node_idx; - for (node_idx = 0; node_idx < g_system->NumNodes; node_idx++) { - if (g_props[node_idx].node.KFDGpuID == gpu_id) { + for (node_idx = 0; node_idx < dxg_topology->g_system->NumNodes; node_idx++) { + if (dxg_topology->g_props[node_idx].node.KFDGpuID == gpu_id) { *node_id = node_idx; return HSAKMT_STATUS_SUCCESS; } @@ -1173,8 +1176,8 @@ hsaKmtAcquireSystemProperties(HsaSystemProperties *SystemProperties) { /* We already have a valid snapshot. Avoid double initialization that * would leak memory. */ - if (g_system) { - *SystemProperties = *g_system; + if (dxg_topology->g_system) { + *SystemProperties = *dxg_topology->g_system; goto out; } @@ -1182,17 +1185,17 @@ hsaKmtAcquireSystemProperties(HsaSystemProperties *SystemProperties) { if (err != HSAKMT_STATUS_SUCCESS) goto out; - assert(g_system); + assert(dxg_topology->g_system); - // err = fmm_init_process_apertures(g_system->NumNodes); + // err = fmm_init_process_apertures(dxg_topology->g_system->NumNodes); if (err != HSAKMT_STATUS_SUCCESS) goto init_process_apertures_failed; - // err = init_process_doorbells(g_system->NumNodes); + // err = init_process_doorbells(dxg_topology->g_system->NumNodes); if (err != HSAKMT_STATUS_SUCCESS) goto init_doorbells_failed; - *SystemProperties = *g_system; + *SystemProperties = *dxg_topology->g_system; goto out; @@ -1218,10 +1221,10 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtReleaseSystemProperties(void) { HSAKMT_STATUS topology_get_node_props(HSAuint32 NodeId, HsaNodeProperties *NodeProperties) { - if (!g_system || g_props.empty() || NodeId >= g_system->NumNodes) + if (!dxg_topology->g_system || dxg_topology->g_props.empty() || NodeId >= dxg_topology->g_system->NumNodes) return HSAKMT_STATUS_ERROR; - *NodeProperties = g_props[NodeId].node; + *NodeProperties = dxg_topology->g_props[NodeId].node; return HSAKMT_STATUS_SUCCESS; } @@ -1274,9 +1277,9 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, pthread_mutex_lock(&hsakmt_mutex); memset(MemoryProperties, 0, NumBanks * sizeof(HsaMemoryProperties)); - for (i = 0; i < wsl::Min(g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { - assert(g_props[NodeId].mem.size()); - MemoryProperties[i] = g_props[NodeId].mem[i]; + for (i = 0; i < wsl::Min(dxg_topology->g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { + assert(dxg_topology->g_props[NodeId].mem.size()); + MemoryProperties[i] = dxg_topology->g_props[NodeId].mem[i]; } /* The following memory banks does not apply to CPU only node */ @@ -1288,7 +1291,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, if (i < NumBanks) { MemoryProperties[i].HeapType = HSA_HEAPTYPE_GPU_LDS; MemoryProperties[i].VirtualBaseAddress = device_->SharedApertureBase(); - MemoryProperties[i].SizeInBytes = g_props[NodeId].node.LDSSizeInKB * 1024; + MemoryProperties[i].SizeInBytes = dxg_topology->g_props[NodeId].node.LDSSizeInKB * 1024; i++; } @@ -1318,19 +1321,19 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( pthread_mutex_lock(&hsakmt_mutex); /* KFD ADD page 18, snapshot protocol violation */ - if (!g_system || NodeId >= g_system->NumNodes) { + if (!dxg_topology->g_system || NodeId >= dxg_topology->g_system->NumNodes) { err = HSAKMT_STATUS_INVALID_NODE_UNIT; goto out; } - if (NumCaches > g_props[NodeId].node.NumCaches) { + if (NumCaches > dxg_topology->g_props[NodeId].node.NumCaches) { err = HSAKMT_STATUS_INVALID_PARAMETER; goto out; } - for (i = 0; i < wsl::Min(g_props[NodeId].node.NumCaches, NumCaches); i++) { - assert(g_props[NodeId].cache.size()); - CacheProperties[i] = g_props[NodeId].cache[i]; + for (i = 0; i < wsl::Min(dxg_topology->g_props[NodeId].node.NumCaches, NumCaches); i++) { + assert(dxg_topology->g_props[NodeId].cache.size()); + CacheProperties[i] = dxg_topology->g_props[NodeId].cache[i]; } err = HSAKMT_STATUS_SUCCESS; @@ -1342,10 +1345,10 @@ out: HSAKMT_STATUS topology_get_iolink_props(HSAuint32 NodeId, HSAuint32 NumIoLinks, HsaIoLinkProperties *IoLinkProperties) { - if (!g_system || g_props.empty() || NodeId >= g_system->NumNodes) + if (!dxg_topology->g_system || dxg_topology->g_props.empty() || NodeId >= dxg_topology->g_system->NumNodes) return HSAKMT_STATUS_ERROR; - memcpy(IoLinkProperties, g_props[NodeId].link.data(), + memcpy(IoLinkProperties, dxg_topology->g_props[NodeId].link.data(), NumIoLinks * sizeof(*IoLinkProperties)); return HSAKMT_STATUS_SUCCESS; @@ -1364,17 +1367,17 @@ hsaKmtGetNodeIoLinkProperties(HSAuint32 NodeId, HSAuint32 NumIoLinks, pthread_mutex_lock(&hsakmt_mutex); /* KFD ADD page 18, snapshot protocol violation */ - if (!g_system || NodeId >= g_system->NumNodes) { + if (!dxg_topology->g_system || NodeId >= dxg_topology->g_system->NumNodes) { err = HSAKMT_STATUS_INVALID_NODE_UNIT; goto out; } - if (NumIoLinks > g_props[NodeId].node.NumIOLinks) { + if (NumIoLinks > dxg_topology->g_props[NodeId].node.NumIOLinks) { err = HSAKMT_STATUS_INVALID_PARAMETER; goto out; } - assert(g_props[NodeId].link.size()); + assert(dxg_topology->g_props[NodeId].link.size()); err = topology_get_iolink_props(NodeId, NumIoLinks, IoLinkProperties); out: @@ -1383,27 +1386,27 @@ out: } uint16_t get_device_id_by_node_id(HSAuint32 node_id) { - if (g_props.empty() || !g_system || g_system->NumNodes <= node_id) + if (dxg_topology->g_props.empty() || !dxg_topology->g_system || dxg_topology->g_system->NumNodes <= node_id) return 0; - return g_props[node_id].node.DeviceId; + return dxg_topology->g_props[node_id].node.DeviceId; } bool prefer_ats(HSAuint32 node_id) { - return g_props[node_id].node.Capability.ui32.HSAMMUPresent && - g_props[node_id].node.NumCPUCores && - g_props[node_id].node.NumFComputeCores; + return dxg_topology->g_props[node_id].node.Capability.ui32.HSAMMUPresent && + dxg_topology->g_props[node_id].node.NumCPUCores && + dxg_topology->g_props[node_id].node.NumFComputeCores; } uint16_t get_device_id_by_gpu_id(HSAuint32 gpu_id) { unsigned int i; - if (g_props.empty() || !g_system) + if (dxg_topology->g_props.empty() || !dxg_topology->g_system) return 0; - for (i = 0; i < g_system->NumNodes; i++) { - if (g_props[i].node.KFDGpuID == gpu_id) - return g_props[i].node.DeviceId; + for (i = 0; i < dxg_topology->g_system->NumNodes; i++) { + if (dxg_topology->g_props[i].node.KFDGpuID == gpu_id) + return dxg_topology->g_props[i].node.DeviceId; } return 0; @@ -1414,14 +1417,14 @@ uint32_t get_direct_link_cpu(uint32_t gpu_node) { int32_t cpu_id; HSAuint32 i; - cpu_id = gpu_get_direct_link_cpu(gpu_node, g_props); + cpu_id = gpu_get_direct_link_cpu(gpu_node, dxg_topology->g_props); if (cpu_id == -1) return INVALID_NODEID; - assert(g_props[cpu_id].mem.size()); + assert(dxg_topology->g_props[cpu_id].mem.size()); - for (i = 0; i < g_props[cpu_id].node.NumMemoryBanks; i++) - size += g_props[cpu_id].mem[i].SizeInBytes; + for (i = 0; i < dxg_topology->g_props[cpu_id].node.NumMemoryBanks; i++) + size += dxg_topology->g_props[cpu_id].mem[i].SizeInBytes; return size ? (uint32_t)cpu_id : INVALID_NODEID; } @@ -1450,11 +1453,11 @@ HSAKMT_STATUS validate_nodeid_array(uint32_t **gpu_id_array, return ret; } -uint32_t get_num_sysfs_nodes(void) { return num_sysfs_nodes; } +uint32_t get_num_sysfs_nodes(void) { return dxg_topology->num_sysfs_nodes; } wsl::thunk::WDDMDevice *get_wddmdev(uint32_t node_id) { - if ((!wdevices_.size()) || (!node_id) || (node_id >= num_sysfs_nodes)) + if ((!dxg_topology->wdevices_.size()) || (!node_id) || (node_id >= dxg_topology->num_sysfs_nodes)) return nullptr; - return wdevices_[node_id - 1]; + return dxg_topology->wdevices_[node_id - 1]; } From e98a87265090b53548d99acb3fcabdf45f32d985 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 22 May 2025 15:09:12 +0800 Subject: [PATCH 097/159] wsl/libhsakmt/openclose: Dynamically allocate static global memory Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- globals.cpp | 20 ----------- libhsakmt.h | 63 +++++++++++++++++++++++----------- memory.cpp | 12 +++---- openclose.cpp | 93 ++++++++++++++++++++++---------------------------- topology.cpp | 30 ++++++++-------- version.cpp | 2 +- wddm/queue.cpp | 4 +-- 7 files changed, 108 insertions(+), 116 deletions(-) diff --git a/globals.cpp b/globals.cpp index 312f8d0d59..880dd49cd9 100644 --- a/globals.cpp +++ b/globals.cpp @@ -27,29 +27,9 @@ // HSAKMT global data -int kfd_fd = -1; -unsigned long dxg_open_count; -unsigned long system_properties_count; -pthread_mutex_t hsakmt_mutex = PTHREAD_MUTEX_INITIALIZER; -bool hsakmt_is_dgpu; - #ifndef PAGE_SIZE int PAGE_SIZE; #endif int PAGE_SHIFT; -/* whether to check all dGPUs in the topology support SVM API */ -bool is_svm_api_supported; -/* zfb is mainly used during emulation */ -int zfb_support; -/* handle vendor specific packet. :1 process 0:skip */ -int vendor_packet_process; -/* enable vendor packet in hsa-runtime*/ -int enable_vendor_packet; -/* check available system memory before allocation */ -bool check_avail_sysram = false; -/* enable 128MB sub-allocator in libhsakmt, default: disable */ -int enable_thunk_sub_allocator = 0; - -size_t max_single_alloc_size = 0; diff --git a/libhsakmt.h b/libhsakmt.h index c6c4ffe565..b857c3b314 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -38,17 +38,47 @@ wsl::thunk::WDDMDevice* get_wddmdev(uint32_t node_id); wsl::thunk::GpuMemory *get_gpu_mem(void *MemoryAddress); -extern unsigned long dxg_open_count; -extern bool hsakmt_forked; -extern pthread_mutex_t hsakmt_mutex; -extern bool hsakmt_is_dgpu; -extern bool is_svm_api_supported; -extern int zfb_support; -extern int vendor_packet_process; -extern int enable_vendor_packet; -extern bool check_avail_sysram; -extern size_t max_single_alloc_size; -extern int enable_thunk_sub_allocator; +#define HSAKMT_DEBUG_LEVEL_ERR -1 +#define HSAKMT_DEBUG_LEVEL_DEFAULT 3 +#define HSAKMT_DEBUG_LEVEL_WARNING 4 +#define HSAKMT_DEBUG_LEVEL_INFO 6 +#define HSAKMT_DEBUG_LEVEL_DEBUG 7 + +struct hsakmtRuntime { + hsakmtRuntime() + : dxg_fd(-1), + parent_pid(getpid()), + is_forked(false), + hsakmt_debug_level(HSAKMT_DEBUG_LEVEL_DEFAULT), + dxg_open_count(0), + hsakmt_mutex(PTHREAD_MUTEX_INITIALIZER), + hsakmt_is_dgpu(false), + is_svm_api_supported(false), + zfb_support(0), + vendor_packet_process(0), + enable_vendor_packet(0), + check_avail_sysram(false), + max_single_alloc_size(0), + enable_thunk_sub_allocator(0) {} + + pthread_mutex_t hsakmt_mutex; + const char *dxg_device_name = "/dev/dxg"; + int dxg_fd = -1; + pid_t parent_pid = -1; + bool is_forked = false; + int hsakmt_debug_level = HSAKMT_DEBUG_LEVEL_DEFAULT; + unsigned long dxg_open_count; + bool hsakmt_is_dgpu; + bool is_svm_api_supported; + int zfb_support; + int vendor_packet_process; + int enable_vendor_packet; + bool check_avail_sysram; + size_t max_single_alloc_size; + int enable_thunk_sub_allocator; +}; + +extern hsakmtRuntime *dxg_runtime; #undef HSAKMTAPI #define HSAKMTAPI __attribute__((visibility ("default"))) @@ -66,7 +96,7 @@ extern int enable_thunk_sub_allocator; #define PORT_UINT64_TO_VPTR(v) ((void*)(unsigned long)(v)) #define CHECK_DXG_OPEN() \ - do { if (dxg_open_count == 0 || hsakmt_forked) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0) + do { if (dxg_runtime->dxg_open_count == 0 || dxg_runtime->is_forked) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0) /* Might be defined in limits.h on platforms where it is constant (used by musl) */ /* See also: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html */ @@ -91,7 +121,6 @@ extern int PAGE_SHIFT; #define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0])) /* HSA Thunk logging usage */ -extern int hsakmt_debug_level; #define get_thread_id() \ ([]() -> std::string { \ std::stringstream str_thrd_id; \ @@ -109,16 +138,12 @@ extern int hsakmt_debug_level; #else #define hsakmt_print(level, fmt, ...) \ do { \ - if (level <= hsakmt_debug_level) { \ + if (level <= dxg_runtime->hsakmt_debug_level) { \ hsakmt_print_common(stdout, fmt, ##__VA_ARGS__); \ } \ } while (false) #endif -#define HSAKMT_DEBUG_LEVEL_ERR -1 -#define HSAKMT_DEBUG_LEVEL_DEFAULT 3 -#define HSAKMT_DEBUG_LEVEL_WARNING 4 -#define HSAKMT_DEBUG_LEVEL_INFO 6 -#define HSAKMT_DEBUG_LEVEL_DEBUG 7 + #define pr_err(fmt, ...) \ hsakmt_print_common(stderr, fmt, ##__VA_ARGS__) #define pr_warn(fmt, ...) \ diff --git a/memory.cpp b/memory.cpp index bbaba448e3..fca8984c45 100644 --- a/memory.cpp +++ b/memory.cpp @@ -179,15 +179,15 @@ HSAKMT_STATUS hsaKmtAllocMemoryAlignInternal(HSAuint32 PreferredNode, create_info.alignment = Alignment; create_info.va_hint = reinterpret_cast(*MemoryAddress); if ((PreferredNode == 0 && MemFlags.ui32.HostAccess) - || zfb_support || MemFlags.ui32.GTTAccess) { - if (SizeInBytes > max_single_alloc_size) + || dxg_runtime->zfb_support || MemFlags.ui32.GTTAccess) { + if (SizeInBytes > dxg_runtime->max_single_alloc_size) return HSAKMT_STATUS_NO_MEMORY; - if (check_avail_sysram && !isSystemMemoryAvailable(SizeInBytes)) + if (dxg_runtime->check_avail_sysram && !isSystemMemoryAvailable(SizeInBytes)) return HSAKMT_STATUS_NO_MEMORY; /* If allocate VRAM under ZFB mode */ - if (zfb_support && MemFlags.ui32.NonPaged == 1) + if (dxg_runtime->zfb_support && MemFlags.ui32.NonPaged == 1) MemFlags.ui32.CoarseGrain = 1; // AllocateNonPaged == AllocateIPC @@ -274,7 +274,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtAllocMemoryAlign(HSAuint32 PreferredNode, return hsaKmtAllocMemoryAlignInternal(PreferredNode, SizeInBytes, Alignment, MemFlags, MemoryAddress, - !enable_thunk_sub_allocator); + !dxg_runtime->enable_thunk_sub_allocator); } HSAKMT_STATUS hsaKmtFreeMemoryInternal(void *MemoryAddress, @@ -419,7 +419,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtRegisterMemoryWithFlags( if ((MemFlags.ui32.HostAccess != 1) || (MemFlags.ui32.NonPaged == 1)) return HSAKMT_STATUS_NOT_SUPPORTED; - if (!hsakmt_is_dgpu) + if (!dxg_runtime->hsakmt_is_dgpu) /* TODO: support mixed APU and dGPU configurations */ return HSAKMT_STATUS_NOT_SUPPORTED; diff --git a/openclose.cpp b/openclose.cpp index 6bf3ded56f..2507276ca6 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -33,32 +33,20 @@ #include #include "libhsakmt.h" -static const char dxg_device_name[] = "/dev/dxg"; -static pid_t parent_pid = -1; -int hsakmt_debug_level; -bool hsakmt_forked; -static int dxg_fd = -1; - +hsakmtRuntime *dxg_runtime = new hsakmtRuntime(); /* is_forked_child detects when the process has forked since the last * time this function was called. We cannot rely on pthread_atfork * because the process can fork without calling the fork function in * libc (using clone or calling the system call directly). */ bool is_forked_child(void) { - pid_t cur_pid; - - if (hsakmt_forked) + if (dxg_runtime->is_forked) return true; - cur_pid = getpid(); - - if (parent_pid == -1) { - parent_pid = cur_pid; - return false; - } - - if (parent_pid != cur_pid) { - hsakmt_forked = true; + pid_t cur_pid = getpid(); + if (dxg_runtime->parent_pid != cur_pid) { + dxg_runtime->is_forked = true; + dxg_runtime->parent_pid = cur_pid; return true; } @@ -66,11 +54,11 @@ bool is_forked_child(void) { } /* Callbacks from pthread_atfork */ -static void prepare_fork_handler(void) { pthread_mutex_lock(&hsakmt_mutex); } -static void parent_fork_handler(void) { pthread_mutex_unlock(&hsakmt_mutex); } +static void prepare_fork_handler(void) { pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); } +static void parent_fork_handler(void) { pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); } static void child_fork_handler(void) { - pthread_mutex_init(&hsakmt_mutex, NULL); - hsakmt_forked = true; + pthread_mutex_init(&dxg_runtime->hsakmt_mutex, NULL); + dxg_runtime->is_forked = true; } /* Call this from the child process after fork. This will clear all @@ -82,13 +70,14 @@ static void child_fork_handler(void) { static void clear_after_fork(void) { reset_suballocator(); clear_allocation_map(); - if (dxg_fd) { - close(dxg_fd); - dxg_fd = -1; + + if (dxg_runtime->dxg_fd >= 0) { + close(dxg_runtime->dxg_fd); + dxg_runtime->dxg_fd = -1; } - dxg_open_count = 0; - parent_pid = -1; - hsakmt_forked = false; + delete dxg_runtime; + dxg_runtime = new hsakmtRuntime(); + } static inline void init_page_size(void) { @@ -105,36 +94,34 @@ static HSAKMT_STATUS init_vars_from_env(void) { /* Normally libraries don't print messages. For debugging purpose, we'll * print messages if an environment variable, HSAKMT_DEBUG_LEVEL, is set. */ - hsakmt_debug_level = HSAKMT_DEBUG_LEVEL_DEFAULT; - envvar = getenv("HSAKMT_DEBUG_LEVEL"); if (envvar) { - hsakmt_debug_level = atoi(envvar); + dxg_runtime->hsakmt_debug_level = atoi(envvar); } /* Check whether to support Zero frame buffer */ envvar = getenv("HSA_ZFB"); if (envvar) - zfb_support = atoi(envvar); + dxg_runtime->zfb_support = atoi(envvar); /* Check whether to handle vendor specific aql packet */ envvar = getenv("WSLKMT_VENDOR_PACKET"); if (envvar) - vendor_packet_process = atoi(envvar); + dxg_runtime->vendor_packet_process = atoi(envvar); /* Decide whether hsa-runtime dispatch vendor packet */ envvar = getenv("WSL_ENABLE_VENDOR_PACKET"); if (envvar) - enable_vendor_packet = atoi(envvar); + dxg_runtime->enable_vendor_packet = atoi(envvar); /* Decide whether to check available system memory before allocation */ envvar = getenv("WSL_CHECK_AVAIL_SYSRAM"); if (envvar) - check_avail_sysram = !strcmp(envvar, "1"); + dxg_runtime->check_avail_sysram = !strcmp(envvar, "1"); envvar = getenv("WSL_ENABLE_THUNK_SUB_ALLOCATOR"); if (envvar) - enable_thunk_sub_allocator = atoi(envvar); + dxg_runtime->enable_thunk_sub_allocator = atoi(envvar); return HSAKMT_STATUS_SUCCESS; } @@ -144,9 +131,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { int fd = -1; HsaSystemProperties sys_props; char *error; - char *useSvmStr; - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); /* If the process has forked, the child process must re-initialize * it's connection to DXG. Any references tracked by dxg_open_count @@ -155,34 +141,34 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { if (is_forked_child()) clear_after_fork(); - if (dxg_open_count == 0) { + if (dxg_runtime->dxg_open_count == 0) { static bool atfork_installed = false; result = init_vars_from_env(); if (result != HSAKMT_STATUS_SUCCESS) goto open_failed; - if (dxg_fd < 0) { - fd = open(dxg_device_name, O_RDWR | O_CLOEXEC); + if (dxg_runtime->dxg_fd < 0) { + fd = open(dxg_runtime->dxg_device_name, O_RDWR | O_CLOEXEC); if (fd == -1) { result = HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; goto open_failed; } - dxg_fd = fd; + dxg_runtime->dxg_fd = fd; } init_page_size(); - useSvmStr = getenv("HSA_USE_SVM"); - is_svm_api_supported = !(useSvmStr && !strcmp(useSvmStr, "0")) && false; + char *useSvmStr = getenv("HSA_USE_SVM"); + dxg_runtime->is_svm_api_supported = !(useSvmStr && !strcmp(useSvmStr, "0")) && false; // result = topology_sysfs_get_system_props(&sys_props); if (result != HSAKMT_STATUS_SUCCESS) goto topology_sysfs_failed; - dxg_open_count = 1; + dxg_runtime->dxg_open_count = 1; if (!atfork_installed) { /* Atfork handlers cannot be uninstalled and @@ -195,17 +181,17 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtOpenKFD(void) { atfork_installed = true; } } else { - dxg_open_count++; + dxg_runtime->dxg_open_count++; result = HSAKMT_STATUS_KERNEL_ALREADY_OPENED; } reset_suballocator(); - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return result; topology_sysfs_failed: close(fd); open_failed: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return result; } @@ -213,18 +199,19 @@ open_failed: HSAKMT_STATUS HSAKMTAPI hsaKmtCloseKFD(void) { HSAKMT_STATUS result; - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); - if (dxg_open_count > 0) { - if (--dxg_open_count == 0) { - close(dxg_fd); + if (dxg_runtime->dxg_open_count > 0) { + if (--dxg_runtime->dxg_open_count == 0) { + close(dxg_runtime->dxg_fd); + dxg_runtime->dxg_fd = -1; } result = HSAKMT_STATUS_SUCCESS; } else result = HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return result; } diff --git a/topology.cpp b/topology.cpp index ed67320367..e9e34be8d6 100644 --- a/topology.cpp +++ b/topology.cpp @@ -395,7 +395,7 @@ void topology_setup_is_dgpu_param(HsaNodeProperties *props) { /* if we found a dGPU node, then treat the whole system as dGPU */ /* noted that some APUs are also treated as dGPU in runtime */ if (!props->NumCPUCores && props->NumFComputeCores) - hsakmt_is_dgpu = true; + dxg_runtime->hsakmt_is_dgpu = true; } static HSAKMT_STATUS topology_get_cpu_model_name(HsaNodeProperties& props, @@ -604,7 +604,7 @@ static HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, snprintf((char *)props.AMDName, sizeof(props.AMDName) - 1, "GFX%06x", HSA_GET_GFX_VERSION_FULL(props.EngineId.ui32)); - if (!is_svm_api_supported) + if (!dxg_runtime->is_svm_api_supported) props.Capability.ui32.SVMAPISupported = 0; props.Capability.ui32.DoorbellType = 2; @@ -636,7 +636,7 @@ static HSAKMT_STATUS topology_sysfs_get_mem_props(uint32_t node_id, /* props.SizeInBytes is the actual physical system * memory size. Reserve 1/16th for WSL system usage. */ - max_single_alloc_size = info.totalram - (info.totalram >> 4); + dxg_runtime->max_single_alloc_size = info.totalram - (info.totalram >> 4); props.Flags.MemoryProperty = 0; /* TODO: sudo dmidecode --type memory doesn't work on wsl */ @@ -1171,7 +1171,7 @@ hsaKmtAcquireSystemProperties(HsaSystemProperties *SystemProperties) { if (!SystemProperties) return HSAKMT_STATUS_INVALID_PARAMETER; - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); /* We already have a valid snapshot. Avoid double initialization that * would leak memory. @@ -1205,16 +1205,16 @@ init_process_apertures_failed: topology_drop_snapshot(); out: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return err; } HSAKMT_STATUS HSAKMTAPI hsaKmtReleaseSystemProperties(void) { - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); topology_drop_snapshot(); - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return HSAKMT_STATUS_SUCCESS; } @@ -1237,7 +1237,7 @@ hsaKmtGetNodeProperties(HSAuint32 NodeId, HsaNodeProperties *NodeProperties) { return HSAKMT_STATUS_INVALID_PARAMETER; CHECK_DXG_OPEN(); - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); err = validate_nodeid(NodeId, &gpu_id); if (err != HSAKMT_STATUS_SUCCESS) @@ -1260,7 +1260,7 @@ hsaKmtGetNodeProperties(HSAuint32 NodeId, HsaNodeProperties *NodeProperties) { } out: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return err; } @@ -1274,7 +1274,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, return HSAKMT_STATUS_INVALID_PARAMETER; CHECK_DXG_OPEN(); - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); memset(MemoryProperties, 0, NumBanks * sizeof(HsaMemoryProperties)); for (i = 0; i < wsl::Min(dxg_topology->g_props[NodeId].node.NumMemoryBanks, NumBanks); i++) { @@ -1304,7 +1304,7 @@ hsaKmtGetNodeMemoryProperties(HSAuint32 NodeId, HSAuint32 NumBanks, } out: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return err; } @@ -1318,7 +1318,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( return HSAKMT_STATUS_INVALID_PARAMETER; CHECK_DXG_OPEN(); - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); /* KFD ADD page 18, snapshot protocol violation */ if (!dxg_topology->g_system || NodeId >= dxg_topology->g_system->NumNodes) { @@ -1339,7 +1339,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetNodeCacheProperties( err = HSAKMT_STATUS_SUCCESS; out: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return err; } @@ -1364,7 +1364,7 @@ hsaKmtGetNodeIoLinkProperties(HSAuint32 NodeId, HSAuint32 NumIoLinks, CHECK_DXG_OPEN(); - pthread_mutex_lock(&hsakmt_mutex); + pthread_mutex_lock(&dxg_runtime->hsakmt_mutex); /* KFD ADD page 18, snapshot protocol violation */ if (!dxg_topology->g_system || NodeId >= dxg_topology->g_system->NumNodes) { @@ -1381,7 +1381,7 @@ hsaKmtGetNodeIoLinkProperties(HSAuint32 NodeId, HSAuint32 NumIoLinks, err = topology_get_iolink_props(NodeId, NumIoLinks, IoLinkProperties); out: - pthread_mutex_unlock(&hsakmt_mutex); + pthread_mutex_unlock(&dxg_runtime->hsakmt_mutex); return err; } diff --git a/version.cpp b/version.cpp index 0cbf188cf4..2c383027e4 100644 --- a/version.cpp +++ b/version.cpp @@ -53,7 +53,7 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->ui64.XNack = 0; VersionCapInfo->ui64.FineGrainPcie = 0;*/ - VersionCapInfo->ui64.VendorPacket = enable_vendor_packet; + VersionCapInfo->ui64.VendorPacket = dxg_runtime->enable_vendor_packet; return HSAKMT_STATUS_SUCCESS; } diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 68b5f25967..1907603363 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -824,7 +824,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac uint32_t* pm4_addr = reinterpret_cast((static_cast(packet->ib_jump_cmd[2]) << 32) | (static_cast(packet->ib_jump_cmd[1]) & ~3ull)); uint32_t pm4_size = packet->ib_jump_cmd[3]&0xfffff; pr_debug("queue %p %s VENDOR_SPECIFIC pkt pm4_addr %p pm4_size %#x cs=%" PRIx64"\n", - ring, vendor_packet_process ? "process" : "skip", pm4_addr, pm4_size, + ring, dxg_runtime->vendor_packet_process ? "process" : "skip", pm4_addr, pm4_size, packet->completion_signal.handle); for (int i = 0; i < pm4_size; i++) { pr_debug("pm4_addr[%d]=%#x\n", i, pm4_addr[i]); @@ -832,7 +832,7 @@ hsa_status_t ComputeQueue::VendorSpecificAqlToPm4(char *cpu, amd_aql_pm4_ib *pac int i = ib_size; - if (vendor_packet_process) { + if (dxg_runtime->vendor_packet_process) { int major = device->Major(); memcpy(cpu+i, pm4_addr, pm4_size * sizeof(uint32_t)); i += pm4_size * sizeof(uint32_t); From aff8e508df3b8f8644bde1acaecba42050b63895 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 22 May 2025 17:18:45 +0800 Subject: [PATCH 098/159] wsl/libhsakmt: move PAGE_SIZE/SHIFT to static global var Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- globals.cpp | 35 ----------------------------------- libhsakmt.h | 11 ++++------- openclose.cpp | 6 ++---- wddm/queue.cpp | 2 +- 4 files changed, 7 insertions(+), 47 deletions(-) delete mode 100644 globals.cpp diff --git a/globals.cpp b/globals.cpp deleted file mode 100644 index 880dd49cd9..0000000000 --- a/globals.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright © 2014 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 (including - * the next paragraph) 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. - */ - -#include "libhsakmt.h" - -// HSAKMT global data - -#ifndef PAGE_SIZE -int PAGE_SIZE; -#endif - -int PAGE_SHIFT; - diff --git a/libhsakmt.h b/libhsakmt.h index b857c3b314..28f4b8ae34 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -63,6 +63,8 @@ struct hsakmtRuntime { pthread_mutex_t hsakmt_mutex; const char *dxg_device_name = "/dev/dxg"; + long page_size; + int page_shift; int dxg_fd = -1; pid_t parent_pid = -1; bool is_forked = false; @@ -98,11 +100,6 @@ extern hsakmtRuntime *dxg_runtime; #define CHECK_DXG_OPEN() \ do { if (dxg_runtime->dxg_open_count == 0 || dxg_runtime->is_forked) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0) -/* Might be defined in limits.h on platforms where it is constant (used by musl) */ -/* See also: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html */ -#ifndef PAGE_SIZE -extern int PAGE_SIZE; -#endif extern int PAGE_SHIFT; /* 64KB BigK fragment size for TLB efficiency */ @@ -112,11 +109,11 @@ extern int PAGE_SHIFT; #define GPU_HUGE_PAGE_SIZE (2 << 20) #define CHECK_PAGE_MULTIPLE(x) \ - do { if ((uint64_t)PORT_VPTR_TO_UINT64(x) % PAGE_SIZE) return HSAKMT_STATUS_INVALID_PARAMETER; } while(0) + do { if ((uint64_t)PORT_VPTR_TO_UINT64(x) % dxg_runtime->page_size) return HSAKMT_STATUS_INVALID_PARAMETER; } while(0) #define ALIGN_UP(x,align) (((uint64_t)(x) + (align) - 1) & ~(uint64_t)((align)-1)) #define ALIGN_UP_32(x,align) (((uint32_t)(x) + (align) - 1) & ~(uint32_t)((align)-1)) -#define PAGE_ALIGN_UP(x) ALIGN_UP(x,PAGE_SIZE) +#define PAGE_ALIGN_UP(x) ALIGN_UP(x,dxg_runtime->page_size) #define BITMASK(n) ((n) ? (UINT64_MAX >> (sizeof(UINT64_MAX) * CHAR_BIT - (n))) : 0) #define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0])) diff --git a/openclose.cpp b/openclose.cpp index 2507276ca6..224a2098ae 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -81,10 +81,8 @@ static void clear_after_fork(void) { } static inline void init_page_size(void) { -#ifndef PAGE_SIZE - PAGE_SIZE = sysconf(_SC_PAGESIZE); -#endif - PAGE_SHIFT = ffs(PAGE_SIZE) - 1; + dxg_runtime->page_size = sysconf(_SC_PAGESIZE); + dxg_runtime->page_shift = ffs(dxg_runtime->page_size) - 1; } static HSAKMT_STATUS init_vars_from_env(void) { diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 1907603363..31e2686b92 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -261,7 +261,7 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, assert(ret); GpuMemoryCreateInfo create_info{}; - create_info.size = PAGE_SIZE; + create_info.size = dxg_runtime->page_size; create_info.domain = thunk_proxy::kSystem; GpuMemory *gpu_mem = nullptr; auto code = device->CreateGpuMemory(create_info, &gpu_mem); From c6627102d331f0af5f12489278b3d9adbf6b81d8 Mon Sep 17 00:00:00 2001 From: tiancyin Date: Thu, 29 May 2025 15:30:54 +0800 Subject: [PATCH 099/159] libhsakmt: fix resource count in memory export D3DKMTShareObjects() need resource count paramenter not the allocations count. There is only one resource no matter how many allocations for a buffer. Reviewed-by: Longlong Yao Signed-off-by: tiancyin --- wddm/gpu_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wddm/gpu_memory.cpp b/wddm/gpu_memory.cpp index 6677ea1fda..53a56466f0 100644 --- a/wddm/gpu_memory.cpp +++ b/wddm/gpu_memory.cpp @@ -406,7 +406,7 @@ ErrorCode GpuMemory::ExportPhysicalHandle(int* dmabuf_fd, uint32_t flags) { } if (IsShared()) - return d3dthunk::ShareObjects(num_allocations_, resource_, flags, dmabuf_fd); + return d3dthunk::ShareObjects(1, resource_, flags, dmabuf_fd); else return ErrorCode::UnSupported; } From 13fc35d8deeef2f14b87919bef11611cd4571056 Mon Sep 17 00:00:00 2001 From: Chengjun Yao Date: Tue, 3 Jun 2025 17:49:28 +0800 Subject: [PATCH 100/159] wsl/hsakmt: Configure Capability Info to Disable alloc mem in dev mem Regardless of whether the HSA_ALLOCATE_QUEUE_DEV_MEM variable is set in the environment, set the dev_mem_queue_buf_ of the region to false. This is due to large BAR PCIe being disabled. Signed-off-by: Chengjun Yao Reviewed-by: Horatio Zhang Part-of: --- version.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/version.cpp b/version.cpp index 2c383027e4..12dd505714 100644 --- a/version.cpp +++ b/version.cpp @@ -51,7 +51,8 @@ hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { VersionCapInfo->ui64.EventAge = 0; VersionCapInfo->ui64.Scratch = 0; VersionCapInfo->ui64.XNack = 0; - VersionCapInfo->ui64.FineGrainPcie = 0;*/ + VersionCapInfo->ui64.FineGrainPcie = 0; + VersionCapInfo->ui64.Devmemqueuebuf = 0;*/ VersionCapInfo->ui64.VendorPacket = dxg_runtime->enable_vendor_packet; From 872476061a92794b89cb6b179f3ab1fa638693b0 Mon Sep 17 00:00:00 2001 From: Chengjun Yao Date: Wed, 4 Jun 2025 17:06:12 +0800 Subject: [PATCH 101/159] wsl/hsakmt: remove unessary struct _HsaVersionCapability Signed-off-by: Chengjun Yao Reviewed-by: Horatio Zhang Part-of: --- libhsakmt.h | 2 -- openclose.cpp | 5 ----- version.cpp | 23 ----------------------- 3 files changed, 30 deletions(-) diff --git a/libhsakmt.h b/libhsakmt.h index 28f4b8ae34..0f852ead65 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -56,7 +56,6 @@ struct hsakmtRuntime { is_svm_api_supported(false), zfb_support(0), vendor_packet_process(0), - enable_vendor_packet(0), check_avail_sysram(false), max_single_alloc_size(0), enable_thunk_sub_allocator(0) {} @@ -74,7 +73,6 @@ struct hsakmtRuntime { bool is_svm_api_supported; int zfb_support; int vendor_packet_process; - int enable_vendor_packet; bool check_avail_sysram; size_t max_single_alloc_size; int enable_thunk_sub_allocator; diff --git a/openclose.cpp b/openclose.cpp index 224a2098ae..93c796ca43 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -107,11 +107,6 @@ static HSAKMT_STATUS init_vars_from_env(void) { if (envvar) dxg_runtime->vendor_packet_process = atoi(envvar); - /* Decide whether hsa-runtime dispatch vendor packet */ - envvar = getenv("WSL_ENABLE_VENDOR_PACKET"); - if (envvar) - dxg_runtime->enable_vendor_packet = atoi(envvar); - /* Decide whether to check available system memory before allocation */ envvar = getenv("WSL_CHECK_AVAIL_SYSRAM"); if (envvar) diff --git a/version.cpp b/version.cpp index 12dd505714..121c687f3e 100644 --- a/version.cpp +++ b/version.cpp @@ -35,26 +35,3 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetVersion(HsaVersionInfo *VersionInfo) { return HSAKMT_STATUS_SUCCESS; } - -HSAKMT_STATUS HSAKMTAPI -hsaKmtGetVersionCapInfo(HsaVersionCapability *VersionCapInfo) { - CHECK_DXG_OPEN(); - - VersionCapInfo->Value = 0; - VersionCapInfo->ui64.Sdma = 1; - VersionCapInfo->ui64.IPCLegacyMode = 0; // Force to 0 to support IPC mem - /*VersionCapInfo->ui64.InterruptSignal = 0; - VersionCapInfo->ui64.SdmaUserQueue = 0; - VersionCapInfo->ui64.SdmaPeer = 0; - VersionCapInfo->ui64.SdmaGang = 0; - VersionCapInfo->ui64.Image = 0; - VersionCapInfo->ui64.EventAge = 0; - VersionCapInfo->ui64.Scratch = 0; - VersionCapInfo->ui64.XNack = 0; - VersionCapInfo->ui64.FineGrainPcie = 0; - VersionCapInfo->ui64.Devmemqueuebuf = 0;*/ - - VersionCapInfo->ui64.VendorPacket = dxg_runtime->enable_vendor_packet; - - return HSAKMT_STATUS_SUCCESS; -} From aeb666c210f4322c72adff4ff40f90044705d61a Mon Sep 17 00:00:00 2001 From: Horatio Zhang Date: Sun, 8 Jun 2025 23:51:38 +0800 Subject: [PATCH 102/159] wsl/hsakmt: Add w7900d device id Signed-off-by: Horatio Zhang Reviewed-by: tiancyin Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3770788 -> 3770812 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index b3932d9dd2ca7e431a0608806ae0cba324e04824..7ca74a98a0295ffab187f3c83975e3812047a17e 100644 GIT binary patch delta 22399 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 Date: Mon, 9 Jun 2025 16:53:16 +0800 Subject: [PATCH 103/159] wsl/hsakmt: add more memory type info Reviewed-by: Longlong Yao Reviewed-by: Flora Cui Signed-off-by: tiancyin --- memory.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/memory.cpp b/memory.cpp index fca8984c45..085b4eb8cb 100644 --- a/memory.cpp +++ b/memory.cpp @@ -840,6 +840,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, memset(PointerInfo, 0, sizeof(HsaPointerInfo)); + wsl::thunk::GpuMemory *gpu_mem = nullptr; Allocation allocation_info; bool found = false; { @@ -850,6 +851,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, if (Pointer >= it->first && (Pointer < reinterpret_cast(it->first) + it->second.size_requested)) { allocation_info = it->second; + gpu_mem = wsl::thunk::GpuMemory::Convert(it->second.handle); found = true; } } @@ -864,6 +866,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, if (allocation_info.userptr) { PointerInfo->Type = HSA_POINTER_REGISTERED_USER; PointerInfo->SizeInBytes = allocation_info.size; + } else if (gpu_mem->IsVirtual()) { + PointerInfo->Type = HSA_POINTER_RESERVED_ADDR; } else { PointerInfo->Type = HSA_POINTER_ALLOCATED; PointerInfo->SizeInBytes = allocation_info.size_requested; From 7855113a9f5a2811d157c368cd281d72e3f442b9 Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Wed, 25 Jun 2025 17:10:12 +0800 Subject: [PATCH 104/159] wsl/libhsakmt: reimplement GetClockCounters Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3770812 -> 3767136 bytes wddm/device.cpp | 35 ++++++++++++++++++++--------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 7ca74a98a0295ffab187f3c83975e3812047a17e..45ea022accb6ec7d81b2e79e538c1f8f7eb9e0fc 100644 GIT binary patch literal 3767136 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 O3uM2xy}Zkjt=Q~;(c!X zSdq_g*z#JWm;=ekCO+@1U4Rr`EJnReA2iaHA!QJOEsA=FI4TGg~7Vph3cW zT2egudp|vZ{>-7x^w_|`fXpJclpa%0f|LUd{;oOOYD@c$+^?Z|U&`aGb%Jt!8&R4h z8vGW8{vMD!w6^u;s|yA4n%=fj+;Qn$pgBF^s<#&=QxiDL^-`Wq3wkK+bc9{+creWr z#X(dd7ewf1KU;oK0f0$t*n63#_XnB|m;3FuxiI%&5vAu!;DyrhC2F>+@|=Uq<3lvJ zGeWZx3pGbQ=RhTb1}0kOwtM7xJP(#nt{3tV|qF&rVW zYFaUk=0oUu%S{=_o{rt@?=YxRzsjF-j)%l=Y&uwQ`W%=IZQK5ddE|0xOs>ykv&>dS zE>@;eI9pI&8`n(rS@WeKmX5ZSi3PCs6U!suu=`R)lfd2 zfe7OOFk7zJ;N2*-w=E``5RmAHT-L=3UKd5V)>t`&)m8(?>u6?8uC(6-4G4Zy_K{s` zY(PfDhD#Ne%aCX`$66pMg3d&YWW~c*p9M z`OsY^>|1uqhhCKk-D3;ra5k%$)b)+_cPGQbA&rE7Vw8YEB^CP!FhHXN4O$HRJE@*1 z>au9qVP;VQnx&kEz#n&LLVlocliwP*$gW`4HvkjvvL6fl&j|)60#?-?mJzsYX_slfNB_0fexEb<=@> z9DSZhp5;~~iGTnS104xjk-^L%LQ8(;crPrKs?ZT@C<5*h;^JfqdqO%z#w@c+xZn=# zawj?j&394B%bA9st*_yBuKLE9)V!;{I{n)Oxfd zp(K=fW`ojIigiU=X{O13&rquLlrChglhhxZ=g|JV;eN#j23+nIf8M@Q5nWA5*{8|G zi$C+^WZ5V&Vl~^Wye(Up_^EZ2gPF8)vl6)F;0Boq#V>v3uKGjTTPfD_u zc=}rK=7Wbg9f&U6Fp$nyVvSPd%iZwll~^<^QPH;7;gzV2V8POk*$-&MjtBm*Xvi0Q znCnXq-3b4X>?t%~Sk6oDdJ?H4W;|fwc4N{@fnHX)nno{6cE#Y9(_!Tz1cs7sU2xm= zb9Z?dFOW*2Ebm?K!C}+c()7C-aRKEoLf@y0Rtry{t!s7@dhCt#kXR;RbuYGHDKg5e zg?k^ZM5Nr$P?fIRWS)#VAuFj4IL9nASTe=Jw*5mu-rB%4F06yQriqlE;ynyoQ|*6N z%)WgM`#Ste&ujGY$Qqd3C6yqlLM7oEuHe<12X2eCX19lHzq+hRbh<9jty8ZePpWTc zs=$(a`~0wRdY2s+9f| z>9!u68wm%L<*aeXXuj7qFY=&Mad~x@UZTnGyEd{`UJ0Mk?IK`g(l}P~>ZlBz_1Abm zuah&9skzy&!9HXS<0Y};*noRtF@CUC90 z7#2uqP2J;XY)m<_KzxF_X945|9tHor6ewBAG7JmF{d5wCNOa~LlWP^wy}2EwH2W4@ zaSJ{}a5@5frRkoLqeqO|896a5m$mhd{s3nZ2Cy5}#*gN!d5D~&JBAAWp(5?MVT z!*1l`ch(=fXBdAxc4vL-o&^84=2f&NKvLwKt4gCs(clvBc@CD{Swx4Ou@kS>9X@&K zfqjxz{c?D29majJNH*7;K8yFO@x3i$-a{DKVuR_U$flK|k;I?c@;g+g99m*no(Usn zWKn=?0R_kx?(pvG+OMJv)x$4wP_Vsju;SjpsE%PdMpqmo^-YUEW)hzpLLPP_aiAq)KN8!?>_T>CSD9oIVa9&O$1k zX{^rIe<>I9t@=ZL5)g*-ONjn{2%>X2y^F&XLQjzU2(5_W{d%H#**Bw$le1|O0m|c0 zqMJMp&=`pu<#A}je03HT4m9|b0S0-a7<^f8KI`P75*Ec>NkEKBh@5iZ@gU6x<|4QItBC`LlkAXf0`WPSvybT)fS2{Hh zu{={WG#zoH#l-%(HJ;o707Kgt&Fwo1p9mV!5^x{Z&&Z*Y=y&CnMW|qwrL&Ts7|w0Y zQ+$`?sGt5w(Y%Qu!rgc_{<-M?Y|RW{;}9RuweLYMi}(xP75>NAzh$%Rg^73+uioz! zh;N~x9+}%#c^*bDQaTf%5-<Bzyfd4p;resQis>hxW_#FAwkqsUv>huuWkM zWiDNU;Z){HGd6l00@3j9BuVsUJ(oDh@&&G&cJjlUg+1EDfIO^Zo^8WrcIP8sV{JG@ z;a3rb^WD)S;ul_uH!Q%y*injAh%;_|;S+E+me$RVSpbDBXNRh99NfvCtVbv+z+>Mj zLcx!?Q`4#EELf3BBYVUcpz+;i0}SU#oXgJ3fUI9kjc6F{4NkO*O|AuH$<8rMlYB;{(yx2 zNZs3HSCf=}H#%IzL|5ke^tGW+(He?*MAw%t)jv4c{-=0*PIc_DMg7~Cpd?rj(o%Q9 zeEownr#?6^^;Nc5`+4?>YFnP?mZyImXj;ltw$%TAl(2xnY>cc1vgz283>@ds z1_;Cok5x3i);^_;d-MqSXv2d~_5k=cnLsbC=GiDZ<+8wz3WaR9Y!q?EZ6ctm8TUYg z+C;1yP+8KK$-Ef7Z$k4xDA zZA4h$s}7k2-0k#&!OP<#v@uiX_i%)Ar=za%G_--IG;?s|miN_i35@wk+AvU%$(3BK zmL-(QxJ&&)Dzt9>9S#tK#Y_gaF%#m&J0`_RLCRs8HX~B0S&U%Ai3i1DC5LMm$FaGv zjC&w?H+f^FfDK*yAUgPxR#i%Ao*0svTT-+2%0X>!f?v0I>tk$oa4Ugm3`1M91`fCQ zmtb4--#ri>z^Aou(41cE3@I4K$dH*z0qivH`B) zx8UQs0$CK=H;M0y2QQ`36<2FNPN%NCbH95kaA7LCk@oP8sZxTZ+kCF32ZDeMvyH}d zdD9$EtD0)RA0R!dO=~2{ITMXVBn~2b^zuH8p1w7Vhaoc&%Q_kBVTcMrhanQAjdYkP zbm_ocf9UfF07Sx{=5x)k-B--HLo@+HEDV9v)CxdS2-lL=yw{GFz=hA>P_*8-EqENn zG3PLxg>+#R1e%DfPQoB+bk9s8oRwn@VV5MA`a(xRgBV2F0@WNq7?f94i7A+xJ5*rl z8DiKlqet$(ze3 z#UXPptl#8o8)06B=EmVw(BGOb-F;$F3WZl8YjuiMEa$T+6* zx>S-CW8tdt^gNb~Nb^CI7m9v1@|fBrWXel$j{}X49MJ&}^T*7&qYjCf3Kg?pTvVY1 z+fW_%aIy58E=2&;8VtkwHdpG@;+(^PQ9ZqnQ^_NU&D|c9=)-$H!$J{zjtwk-U#p%1 z8${0V^DLC$=-m9BSQ8axJAQA95{LX83M%qON}vpH6!%g{`V9I?-nxl4j1z>dflz$| zXv6zd22uqO*ms9^vXSIc0K9_PH8ZP|jn?C21FB?NhXeJwp(J0+J$T9nn&gf|P+Qc+ zK*^Su4mxHF4x!h7hJdAick6{XO0hA9WQ+G9rhDpO;eDq%>0+zlJz}2`qs^v5XU(tS ztn!Jcd;$lLU~iMsn5UB=9}ignAPAhX;R~6OQ@a=#>yQ znE9q7A+*1lKp{-Ae)`erTGp!xfPp=dU6Ea)n?C-Y+4%F+=Owj9fj~-7T0{ad>{^;) zUv)R4Ay9p&oN&cefa=N#uMgv7(fISH43D8BC;jRhwFi#U!H~(SE{9#Bi5MD_MOd;k zk*v7ryGEX2Rav!()7EHgxPp3{q+W zZ}se8)%juuR;MoDgCkcY>x+GnUxOOx>Xq?CTS8io*$4>>I!Il^8Dh93EFGADFA{lW zORo(!NIC~#yRD&va#mWn5@jbNOeUxI!e6|GezQ*jrjnyaPIw~fjpnpRsva9z%ih7Y z3n!VZV*fCdgxe@91{oozwO7S|rW=M_Aysb{dqi_o1xB@kQRP{jffH_!;8PeC)+%$K zB*b`~^IH@%5Sq@wMD<#CkEu6s*2W9(Tb2^3XfPMK+H#l5oLJx7QkyLS1 zD^M9o^_x)(lmg7y#CvS?cCU?HU{qbU!TPlXrvw-A9=HgsZ_1eWa^x@;lM{>aQ8@A}8e7Va9EKw3$qK9F$YJa;#zj!n zt7ZvJm=(SkS?Dsu@F)qj%yHNeBh?3ND+N^rO?VwsQsyc9Z&c`A6QAPec{jA%p$-J? zPOa!@9JT1i6!^+{PLVQQzQ@gI{|yL{I(#0IGHE=HqeIiX6^CUJXzUIdONqPtZ~_B% zHlLaJw4P6TW(jm;owA_HF&cGq)tc?X`g6Lj^E%4~5Q^^$!XWh0*H+>NKby{ZwTw*S zY&v6FWNT?Z6|VPRS*~JGqt%9Ezoq(5mju7AB@RRigjw^*-Cp8A0*S=IGk+<8AZ{pu z@Z%-WyJsk5n(tE~bFVx#-lGEO-6DXR?~|oz<6ad<@8Q$aEQihjgx$y?miNcPyUL-k zqSqsx7w0FJ=j&DZ$_p$Nvgi}L+EE9^nioRQUQFD*9<|JT{ST^Meg^4FF5X%HgL|Hf zKmOp(`tr}bK;L{uGMjt`Z_>;rm~-Q#NUm@Xy_XGE8mmDn!on0@+{NBTs7ri}Jgs`R zPxWMJPiRGBBx>J2)jNAbMMd?gg+A4PCCmB)kX?|I)2q)s9}PVS+W>6~ph3u49;bVE z3$O4w_=T*U>wE@f{{tG?Ywk2y717IM9UGdH>TJ=HV42Jj4R24g4to>Y7fu}c6T!iH zUE$d%v=A5ELYT2!78@605`E0tIPDNMCu*;uCCnPvSoXXG-LZ&tT-=U* zfeU|o6Q&RyM98!VMl~#5upuAX8}_>}B90ND%k^`{kySf=KZdp0#Q*66(J!=4tq)9p zBkDN3sK?s35>PG2@(e~uU>Hc^cywT4LJtGV0Jz9jw*%0Ce z0@07lA;aCDo!bXsH;BJBCX>$SIMoRwkv>qax3hC4Ph8RzQPzzoOKZ<(EDvFNCEow4 zGtVH}HAI%NUC+$ZBjX4UFLmUYCmuLb$9}v9F~Th*=Q59h{w?W-%wW3l*#TQePvXFA}l3U9W)O z#s#LU&2K?e1mV%UpR(jns@%A?eukuNW##;G$mr2fKN(3S&KN@8aprRcs95o2pkeQ; z{*fCA$)rJOV7f5{>0Rp!?lh+HcvsP&- zVHlQS2u2hYaex(!XPGXGhN4IW&mlk_r*3_efZh4IO3g(KaNeJ4{0DaHf#@pPDxx<~ zC^mb$QO{1zc;>8}LqEH*15U#MyvAHb(;jmN#@y>YY@fE(1>o1I$u>1)7p|ft%2x`#Dj|JSAQtL!$fX z^|FeLk_H@7+UJB?^Hvzd9?h=6you&SUD12hUqJvdVXTIlBv=#hVz6Nn#ywyEZ|wN| zEnEROVCL(8C-0u0yn7N(xBqr${qLrjP8feYnchC%@6iOuUmL8Bk$ZCz^MddtVuK}` z6uh>J1F@-m1x-cKA;KhdWZv&p4qi8r&PScR|ZA^=!Ohk>5adsR3` zpt!PyVB+j5?=JYI<;ZDwcxT`2?LV$11@K`1~CE8A%q~-@_;Qkn?HeA%BWY$ zRFbR(_hObFfMiQz0O`0hL7;xbE~r$ECB|F^#f?m7<|&p3)5j&xJV=C9@WvMA^tBE% zRyBF0>Bl z0@2nU7-mD5*8>mNehJ(1K^6&Chz0m(HQ^M7#KN5hAZ0=4QC=7r%0{G-G6fdLONl2lt?1&6QW_3eIZp2EP1?;3+*G1s zG#$N8v0a;ZN(p04azo{lI|dx;oY8615{-bli$l4v%|sI0n;%xWO4$Zz!gmOW=W_I$ z6U=B~ZkWe>cP#tzU6kEszdg45NM1G^@~-{DIOJ2+_-40nfY!(V*M6bF>a*K}Q*Xlm z@0+^4P2E#52uj3__K)lgl@_Gbv24(>#o@GIecf=En^i1rO7p+tJ0}igrx2h+WlWsJ zy5MnoIAXdD!&g2h*nSYl3K%*$8?Xkk+dM`JMQul+B2HjR1+qxLGMgQ~!tDTQ<@iG0 zcmj{&*Jlxvkm%5X`k}%jQis9meW>w;0022vS)>lD+l$*IIu-zUXamzZzdxWw_0m^$ z|Hrh$0rP$Q2x|KH>C=zLfMw?xoaw*rlE2E?245N7GJi z4dD8qVE6}X%q6Td=49>++{Fo7G~Z!)SoRQ@)m0?wK;}6RvWW6l7#2xg;}Jl3qiFLh zGe)TOya7z}wFnU6O7*Pe*d(+Fz0!@fbAZsN{ua{*dp&q3q*+=C(Gu48&@E4aZ1H4j?J1|#4Ee$Vg{-@S%iOfNur4|K(GJ1)31$y`!bY-ua4i2^6z6x?%3?-V!(D3IT8s3{-41pg#O3r~ld+}&~6;+T# zk&41ABVUGPj%cDe_>ECkDqppoYV?nK#nydG8l44l(HY4Sc?z1=44O*G9-i9XDk;5e z@)`7$%tf%q4i&m#yVP9VaiC9O4;dfLG>>7LF%#Gd(K{+MgJ`($oEIQMaY>{qiUlhP z=ML{%hPBSTFd1J%N`&@HgaTxC8)~V1c|nW|-M}*|+}~*5iN8Q8-iWH$tXmeZON=2y zM%5b`Uv#6?>=a)#``84~fey*rFb6!?gI(>2JtHW47}2HYCWd<}{iz3s)xmKsNB%w{Hx#e{n$* z$ZY2_A`&i4AP=BAW+cXfS>f1iAM}gBsF_MX*nG!R_K^KY zjGH?__%9Kw!W8wj#vdk0C>Ma4oi;cf`ROhlZ(G_f?b4+m(6dF; zRhC}D0g-H~(je~-bLx1!*XV~)R0ImVf!eDW6Gsfmk@yRsL7hg8Z6;EJL+q-_cIV4CG^$l&ra2fmgF||uh1_xKkYfs4*TFK zVr*E5j5&zOz3>*~V+S8fN_*r_@MS`Rf#!1WOG4SBm6RPsbM>6q*{c-OIh9eWVW#4A zXkZCAB)sa)+a0t?t_XX1r;c(GTxG~N4SZ_J1~9Ydtn>y=j(Ou7YT_+QEvG2U5sUIY-7XV2F|8UCjl^V)Y_l@L{(o#qmq+e ztJFj)Sgkj!(P7IzNc7%p;FR0{fAZb~%!;CE8=gKJ&cZCq0t+mQ!Y&{zpeswx83Y6* zND#y&XLKbfVnPug6cJDaMMOlv1PVTw6R0SPCFMd7nS%?aO!0YLo|x)Gzv@_3=l7}p!!cdD#P^3SPofvK7FBTn z4V!0mSYbCq^0W&u^vC3%S9j`%rcs&nXN0&UdY}H7(*w^Uj>dCV=CN{`Oo z7yQBl9=T4!;Nwntp)ytt#_a5m@am2TPgV05N`mS!su}z4!%kSa7A3e}K6Px5snTfA zO{dd?)PQH~QS^TF%sDhNEA*HlSkR|T1av~h{~PR!l{}t-?c)Ilq4YTNZ?_Yz7duGx9 z3dIkDSW$nXXOVTsi4Xq}HfVnmvvu3`5mbGJw4RO#n+X1AzCj=--v7Q2yxNHADcGY@fqQFtEb<4h#?01?3v(;~ zYU>pA?497nJm&5%bP^*F0VgS-yJXgz55dj=^*+%4``7oNc~T?xD8q>`(PyB3EZRQV z%-E2^xy*PmB|N7S9h1+7|M=aD_%S}ynwb)tl(-JQ-^G-hSlCO(nxO;R2XX4W8`sU~ zNN%9VZf@9&r|a&Y)nUDT{gIp34e_^pxSKsN8Q$0<_lai6lW%2_`{;3( zogV8%U)(>*=#Hz|zx({5%5F^8IaKyGRQ6_g2o;ZKx*FNVi+NJeip~IwKNvNK9{_wzfFyERs3m;nwL%-PKZjdhQ@f1X6hyWJPCPZhhxW&1tkoUye>4RLLB3qmEU{GhbkH7qhD%$+eltpNAiF0 z+InV@ui|(n93#fGbB_1?)QM;~X5^p+dlHdl%{0Ir!Kq8RHq*`PvA(kvYYEN>bd~Ir z1eGn1si3PCcueKwo(n$FdTZ^SFem%Df!KQco5I+f@i;4v)!m7^8N(I8oFp`rO{XNz z8*`hD!ytoD(>U2T;m6K6?$S&JZ*0yE{b#GlZ8P7w{g2+piBLa_W@~nKD*A1lV|nMl zVPtDEvi09#q+jP`w>J)EkLqB|L{C@Av=tqvBWtjE`$MO{;eS2DI(OEs&dE#=Qac~K zeT{oxj~Wmvf!`nc-_Ae2ZSqd2qMm~c+=#^&C_d%CT*UZB!n%@DBY`+7axCuH%|N{B zVC!=7?T>#J{I_%VF0{vKa^nIP{A{jcI%RoS`gpgn*7@zny~#E(i1MF&LNn}IgkFl* zhcdmzZ13V{jiJp84lsE!%#XuajylPLpR}inx??ci&J()VL;3!{_3Peya^r%6;Ugvw z88be=K|$MzLxznTF}d52$-_pEnAjO;qk@8AQ>W(V=hvM$V$_JK1(PQZ88dlO=V2W> zbRC+{ONS1}DAIqdzfOmLPJf+$*nZM~GWORkXg7Mu#J|t^sF#5MPg?(RjQ@}HpMdlK zWBn&-e||xm3okn<_tQCW;_>-E(SMvG1nT!>^`Af${KxwLDf`9tf6o7&{(sW`f71V? zTb5(SXYa{%>lO4aEEsmtlnW=17+z2~d1Aqs3k$~&88(7ie{*f9U(mf{n`2)OI&|ng zq;u~E1s%F}Z&FY&>cS~};iy~C^`c?p3JNb8KW5lv9qJy_n2_s8@5%WMZTp4}nKYvF zaWb%a1^S*$-k+Z1-J-~y%8U&_br*ztowAQR&tvxdsE7LeXqf5=TYSIA9vCB%Q4u>o z8Z6S;#dL3GeA60ToXxT0^>q6hP(b%H__~6*VaB)xCZ_n4>U)BB*|_i3rL^C|wm!2? zC5nAf*qX?Yt`a)x80iiatHWU#oo~`%5B}1L#^Gl3pFUbvh0Kl7SDX)reL_#yl|MTW zut8A17mb_Fvj+>pI>o-`85?>SZ&01j*np9O6N~}xKG>@`)O-97@!Evqb;6KwBMK(r zYL0Vi@{m#SM4bYDenGb>lhLy}kEk;Dpww0XOH0XEU@#7c=$Qj`*IVfC4@VQib!d ze+J3#?3kaj2gT-`JJz#u?%1%{#@8cGiXe^nAYBd`^FgK@G~t76IcUlUxpL5q59-K4 zb3SM+2QB!ZwH&nOgHCeLh7WqkL0dlPF9+?*{n9^W0YY03wisN`g7RkTu=Id<_-oE2r zq_?+X+qjdf%AJRxZQLnUm7BslB~-b)c&DODqp~#aR7s_gvm1BHQEBAm#+|CEG;(j_ zPPr;g#A~WF5wE4vNPHnTd(jkXSR&`8al4=*=NDgy&ctR!8d3|=XfqcHku8wWjfYBZ zlX?_s+^QtEKVuu9JR&A{EJd4pfxU`lE6IIGa)O?Hiihq4a=@So1?Ltzq-0=0!6m$d zGk~lRlaSkl_M7V{;?4H8TAy71)lvPJ2it*Daz02TK+Dr#@y$3sj3}Iw3QkNNotF+6o5+t)4 z%acH!C$u)%o=eGH#^D%Fc^8{q1W}F}njp}3*c|a7RmaB*1y4g!Dqs;~YoU}{ezM?s zz?vAm0m)aRJiA=OcvB>(Ucd(#4(B19nLg(d;MW)q>&az3H%UGVf!*WbQhS2W75s5v z8$Dc6w$ANbeO>Nkr&DyR4?x&UBzDn$sg$*>pcNzz8OVv&MQW8U=cbpT5?ATcK8q3_ z6p0?-IS%nRDHRdf?k_&SMg%YJ+Y1fF*;JbA_Y!W%8eXr z?Qx%zYyXf;bzUG+A(J zvF;~)2Fde^nnfvD(hWkQl$Sh`hHe#zB=&odBBB@}ncO3!Ss;}_ITh{1WwOR6)h&|r zluznsNSqzHMBB7UNR%>>NOO>#cHlsjLq&~Jy4bcw$dqt5k=feo7n&ps;lJ;z`r6~8laC*tR}wQxpQzNmxbRA49}tmBXlT_#7sdL-?uk^+&$b`O%u zX0s)eQ-$<2NWT$@cH%Or>60qM8R4V`KB>JSab=TBv`uY&FVyY zTDcM4wsA{vdRw;wZ`--2@wUC&khdM(cX)f2`!R1jxnJ|PvwMiQXS)-5+ts~_x82+u zdE4Dx$lD%nbXa+o8Mtn?S@~YXQMq(}oU(-5JXIOVr(uZLl%Vb*Y|hsXuqiT(=Xj6oUb+qRjoBi5j`5PF;h7seU11<5-+NG*#sXeAQ9 z1AHV%u?$K97@^zX$27Jxo1fYQ6gmk=+RF4TIB_UBa~c4TA3l z_G187!*D3E+I=;X)sSLxs;*e| zA{Eb*l~YDsINa&}n1ROvDKw}EKV?vL1E9Gv@N+(VKcI&VEXGVKu@Y`oqG}^^iK5=a zYPaDEyvc_T0y+`{zvjcGGaM%qi*ollwrCIs5OB8ZD4UiVTqThdc@BC%q5E2h1KUCSE_u?+xX5pvf3u z=7I`Cw9p-rWTYwsKh5J{fE2&(j$E`kmsY?!7+fs6Py$BCQ6UpYjmK)DA){@9vJ!%; zSxCQ?FggXq7$KC^ga-hw4>}}#nBC11 z+zz2VMv&VCA@#IKzkyJ)yyptv7>nM=qSpkqT@iHKj+;e>^$h}lf{|g5Qo8ocEf(`% zU@bCCZeuLwZ5DGKSg#l+-^m!;wc^_?`W{e!h^K4j5{p?p({Zw}NNB_wyUb$N2dlkd z#u|IC#k>HlNro9}>?(^s2h_Xb>Dt%_E#?zoy=s`T#y)H@_k#7KVa6K!sKs<~HOs~# z4hS{&af{v*)GqOKZS2z)b2wO&4Kvo*7cAz@U@bMwSYuzZm`{SW)i6Viebu6W3F@!$ zbZxA@<>ELhm4&GvEa73W&C=Nntg{U>*4TF~<_NH+8D^-l`c{oiSODsZc)B+BV@vV# zV7+OWv7Y_RV(tg)uwlj;`-R0UjcaNREXN3guPu5TPoAho(>UGp<&0#R=QgC1gT)DjCH7MFNGYXHMHF=gR*gNb zRJqlsBFZ^f1_T+RMfy~%WfJhqJdQr8b)SmyTY=qSaIxq@379~iia2TmR<9Uxuut_N z(!V5(P607D*r)mvU`pi>g4d_21hA$dP)KWgb)SkI+zy2PM4}K?Z&ECCI;}Ka_o*JF z+MEdLwT2$cwEI*`z`D;cNm#41`&1i2*kMRUowDe5pXvutOJ;k<2I+BT+kL8<5UOtk zxlM@gQ*{Snm?8PvExO&Ox)RhyMbM?bBn#cAVtwnt-)Lmmqm-^aqx)3M`~a*2hRJP= z#ngQ&W+vsJ>w`sVkc^FUh3-=^y*{Yzz%AVrBtY zlMOS}Sly>$`puv&ji+m4b)SlvPlC1CFk_9?eJW;t3f51C8EdTWQ!z8OD!M*cju8gB zPsQ|Rpq?F1*T(8T6*EVGHN`Mvjn#cBX3hocZo`ZoSnw~S=ZO_~5-POFk!F`>#H@W+G zJIDQP_`x)Oh`TZ6ar-Cn$1;9kVrh3@sdy~AD3+r{qlyuH)?gtvFOPB)TY=2qeD zy>3I^u5{b;c9q+YxA(c1^7ejr5pN%GpWy97?wh<_?S9YOAIe?EcKuSW&Q3h#aL%D} zE*`e2a?as$HF$fZ+?Bljty~M<{$6enZ~rKFJ8gRmb?Nz}Dm{j|P4T=;l^!G9LA)L5 z7V>tKdp&PQyLa(+jJuww9+wpFs2gy%xtMc|@w-s+Ex+8cy*}a~(Q{4M_ zdx^W5w^Q9uczc<9h__d{i9Jcr47WUQuXE4f?M$~5Z~x^EjKr^!oI2^y7- z5-8&TRy=?y;vY%(p2YhE#1$QCi8ZQ3Q}hg)a)x@wXog{vtmG&vt45+kBpa3z=_6RA zjjbyX+47Wu#HxD~4@}CzeX0cAM##a7DuqgL6)8QcXwBoZbaw$AID%uc=|~rz$AtP} z_}6jngc3ZKk*C^hy-448WJmkBH+9hC!70(DX=@?gg))$57osazrY}-QVu^f1{v?h} z5S&g5qxUgq8d7fzat={h;SX>gDo#?)csiip3XiGB=DAxK9bTuxE?lgaM52i+L5i+R zeHT2sUvf&~Nx<~z`sg7fjHQI=V`YAae%XJ#45iEMQ*?0MeA2?yyV$nq1df~p5ABT9@xNSS~o;`V|YXiwb0a|-Fvo6_z_ zk~}REy_v0^i-g4_(T*foqxfTPDj#U?Je+YRnJ>^IrKv0_XH(JB#luf?_8&sgm!yod zXMYMz4~{s_?|_nPc`*AUkJ6(rGEDqRfU6OuBFvG;ilVO=v^kKro&xR55e-fwUy7n_ zOeM-FEE9;zio}ZDj9!D(n+Rbe*$RO_W_TH(hk~%^-p4Qv3%>;THKJHXe$6NqVK0y$ zje^t2tyU)AGB2q%f(8rQpac15Mk*tgBL6{su zg8!kZpz8I&RFoJJWBoIS!iP8nT3uAsg53`xWgQl=Qs7zwp9%PNq--OY-5_vFfvLb> zA?1h%b4mCK2uCdKB*ZkhzA6^hAtaI&rl{0IsFd6s%&zflZTWekl4@uKNQH(-ZIiTy z(V@bb4@_ph2opDRa~T~cghz`c=*K1AH3YVo>p(R8OEmm!2)sut9kCfA&t)EfB)RhQQ@x2XJd2y+a5zJ~W?5Y(1@Xz386& zDq!od$VpP4PDZJ>2SolAV0#R1l*ltKmOA}N$1k8J;WYBkIq^B)9Y>!KovI=jIUdV7 z2R1p;4T3d9avKklHcezVYuSDPhZ+JKEQIZvFcsjO071&m^TlxI-=--bOgAKQmE4C!s|$%P zb!ssP%ZSA7nJB3vIG@5#1KZ#!(ejP8JmOpJ2DZn@x1!nDXlv9OI{!HN4+HtjNDGRm zC-9?_y<9%VN3lrW(oT=9^Kv27iXlBEBjTubSal{cUBPrSF{Z(5K6!wUiK7a!x`fD9 zsfJm~<^fwsI4hIP##{1hfju50KSgkEsfu6+MO+}t_iNcRk=~RrV}e%xqbBqK*w-Uy>{pGA zNBTsAN!=b5jHkD60(J}G92*jK!y0v_tCNt^)Nk|9~m@S7HC4hYKwB)KT^l}`M;+oC@U>Kle` zu3p;XUs}vB!1^)3)TF}}$!&;U1s1<<<@Az_BT0Vy-2klChRG$C)1-xvR9}EY48ihS zS4+#~AY5-qmP;@kbVO0$5WG(~6Wb$?ROduH6E{eTKx1daTYN7JVbAZwKj? z;wyy7r^NxVem6|kX*vB?i&?fY&U7qRB!oKkK})7H_!k6aVmblQ_Bmd0^%C30v)Lb__y59yR9X!@{NMW$S|Jq?A)8Po-< zg<(<#n$+1M^#fs4fTWlyr^)%kR9AvA!((YJQ!JzI0`{nf`%Qt}q|LVIZ-9EB2)Zw= z^I2gDCgE^tnTy5OH> zWDHYrt0Q9spZQq~26LKWv!DDGHtelOF@FHdY2_6w*4W(^GYhO*h8b(@pBA${SmzmLsIhKwjw!CPNubV%r)y&?TgivT*hv<%3s?gTGuGH^Eaqge zt~1P7V^>(rrC|NrFhh-f)S_<%^`m&YHuhzU`72n_Hl7z^jeXZ*=75!Nn6btlvY2Os zHP|pijZJj@Fqj7Fjq!ACY&na$0<86h8Eb5HVOBwJMZF2u$A;-QY|;=k5he{bs>5I< zwDlZ7#nKrsv`D9dP}h)*I=la|)}nU>bzBkjxc~ti}WA}FBp<< zj79&&qVEFrU=eg_M(C30ocSi#NP0Uw=Z%GLbZIn7x~opKt9^H>o_UVoB! zmFd>6fFB8R3hAtuImCyGlaxQ*S_Vg~EoQp)`;RdgB@?UXfHD>`G_g7bnq>d+GL)`I zK?m23egb|4W=*S0k6Tpc{h55yoe$=&76LU zq`=JSYe;yHBsP)+Ypl+B%}wP4GjqBWPB1g4WNgaWr(+$MIW2blqmOLxsRx< zNUV^V(`S(S3L)$xwnAW;Io%CtUl11E`=VqdjX3@ZIH8lLThOl=r6N=WQkziLzku9o zWg;`Dt$=s%IDwhd^N>2+Lqt$cKs|GM8L%4yxT2?Xbc?BHPM3o4a0sa;l>jrR8-S@O zF(k(NXEsK_$?bujIlTjR?*rk0r$)ni=5#6G#LkXW9E-SEr1i`x6}T#(dLGOrk@-+5 zj-EN~1j3*oiDZQ-D)r1MC0_#O_3`ZZnbW&Lde9K*L8jo$=@ww}$SFTm#r1<*S~y3~ zoPJXzLC>6)=;CQ$d$|rogPu9fGX&nFm5$hv?fcW|Eo?n=dcI-v9<4Ncbjode4O`Eg z-e}nT*etDd`Si@`Lx#ZRV+WMu@>w&dTZqKgbNQuS^vvlVU`2d#~0vjv@ zZ|3w-fUgD!Vllt)DpYUg^dr!I3Zb%_gzC+lrgX*37Z%@7zDI2{y_wU-;C3^7<1L%& z&72Mc?LtGnpQ=Fe_GV761GvBtc3q6xvtjA=~AcO17SCj_>v(?^vo%r!aoE1%~PV~^~@=s zv>DxTPGAvvd*+nH>jG&^C||qmnNt$(0i>^yt;zlxTW8xum?ehjnN#AZE3ukEWa~0G zroncftY=P%qaMU+Es?EK>6uej_Bya_gtIcqOwXLM{MW#Kh>_Pbr(Ejd=O8Yz*!uO% zDdV+()rrCN%qi>d0<1?2u4hge9}BE72G=vE+;-gvY+ekmXHFS^5ZKxnT+f^`{yMO2 z2A4C;n>qag>4ym8OF7dy3Wep(oTm1`hcU4DEPbMSGpA<&tmhGQ;OLoC*4YhMZ^F5X z(z)`znbR>ypG=rBK`ZxWPHzM_&m(Ben>k&D^wkEFy0vFcUjg<8;heEV-LOWL>FOk8 zJ#$JNbr7q+JTkX(`U*9)ZW&)f&zurboz@dokHxaxnmHwq=9J~%1omExyq-B_`R{=J93!u1PPutW z>xG^a7AdIJr6E~Oo}M{nQhyMJ8IslH>6ud|T?xW0L$X>kJ#)&W4!i~?(LP+T)i|?&zv$d8?4#^rY7l`Qzmr)p^qW? zr>6ud|T?xV*LyGmAo;hXa zePBImm{z3dnNz;5y#c~rL*hm|R;QjhW%}=+x_!K|Gu=|GXHGfy)4*zAn5@%sx}G^@ z<~d-EiD$++RnMHV%na~v56Z-PR?nO={ZUX~jHhe&>X}n!ehAi&L1wH!^vo&y!|jW{ zF%~)bX;1FRq&b~ji98gXIptj1g4oN5aR#)~_UM^Y&R{%Pml`Hzphlu7fEd{2O+ zm?@`;H*@*~7|(eutwqnAvQh5?`^Lk4@7ujNJ#)(RYIk`1gv^!0MS(me~gW*C8@o z6k2(~B6ET)lXxDUbjK1~e2zz2X&F6p$})|??-e4$%?PcujGj4VnepIXV`L0dajR1s zB2HA#oDzL8nClJOoL3T|aLHcB}g(WhrlIh$!9O!xF@Z|Rv+#uo!y7K7`VQ_lQp zU>gXx`ulq3lm>*zPw#-Urqbh8df?o;hXa+hBcRm?n2yv7R|)x^q72 zAB)tgp=)FH%qcT#fz{M7V~y1_r_4MTtl@?kYpk9*W#(02-D;R7ciUJ!bISBJpgtE* z*T(9ZQ)a#o)|ZAEYpk9*Wu_X0i2y9(fLLSo%qcT#gVowFLygrlr%WFJ>ezU?HdfD^ zGV?mH78qu%v3ll|nGb{YykW)~t7lG`xf85!4KvhOJ#)(R=mog-!xA0_dghdw`Czp% z%vfXf%qcSmf;G-CV~y1_r_7uQ)?&j9HCE4@GJQR$FUQlhXZ6e}Gd~9FJHw1MR?nQy z?|{~VKFgemMI6Aww9-25nbW#pwJ=O7mL}OVr~N<}Z%9U+-T$y>POk@bWf62f8SFE{ zo;iI1La!S^@|-rto;m#-gd>LJ8)MP!nbR_ZG2w(I#uduci^G#wgk58;Z@GQT+bzCjYvC_M5+@jYh>vIm|lsT&Ie=DXfp=r zWmqEor9k2;;y8KCDP)&YKJ&3GA>K>$SwTwCluHd|JrZ9Cqg-Vu?*slcj55pwvRQftgc4NBFuVzbh2v6D zk|td(Zy_=13=rxOi864Sv6VAa8D>W$U@thGAH=A}*f$Z{w1tGa7^`craGCf412)n; zV4x${lDHS_e|r)EOm=|&#j!-#teRJF@mV5eIGQ~yY!*F9A-lnHeMF_gZ-3Q}~8>BHi zYp$v>8k4hhkadTuS7RS6<$J@d$MpMR??T}&%Jp}uC5(E4slPz{9g_d@AbDEu5gbbQ zHS0aCAY%k#1`8_?7B@~z#Z4vj=@-9Sg4NkDlfFWJg6kQW3xJI=cyYqT)^vGgN?i?b zt|8DPl*%%woMx>AW39&$KmLpTn5Dn%TN0XI2VuKMQf!MR=~v2$^gRf_84??m#05G- zvLcSk7>V0KEPnZQtTnMnO+aXGNd6<|S=}wt1t5$uB(_Pi>t~T>fN--RSvHNfNcV&A zq#<#9vZF-ZRTlFdu)Yj3{n``yCX22{q5p?P3hUQ^Fy9vDO87|C1}mSK8B~vgeQMce zij$emtTcJ0Xg9F$4Q|e8i7#BT5yjaFrP+ycl#@_~%t$H2n48dM%W&lgR3)LTi?c4> zi7rP;+Y=!(>+*z+W6&48`;87AY5mdWJOYYZC!4TcmCv^f#o@M3T}@PiXuNl{QMK zSg^&Cn~Buh0&@HjZ)YiAKd2mSV3k@8$`eH6ulKT{i3HLUPfql76p?EtJ8Na~0~g{s zp?{4-BOyVvQ{IqJ-$VQtQjtc+N!$2|V8zFx6NH5!RX}c#w(JYRYXNIu@Jx~y{D9zH zfb}u>sf6qH=SLw_LDEGaOfw`_qDjB{qy-?{ZAh$1a{5C!>w&%C;nwVJR&tcXmHTwN zK=_16HOLaFhRw;%i;XftS6&9ph@_(9@b()PVM`5FwD20h&WORQ3C_8l1+1IFCAU|T zn_3~>NZ3SDQ?Q!uu@xDhgQBBFS`5O3Ch$^njeIyk ziTI1jxfCiY`Z>5#(xH+q39C}$@#-rU_JnQQB#YD#gytSeE4kLf`vN=P;F9mAo?oy;jbm1T6?4^)i$Smcj;Rs;j%lLTgr!_^KC49 zNq3|3@qc#Qz&FR9v~@iP$;I;!2!!cZkf!&|Sq4%96gy z$vgbWrWiCEEEeoFH&TrSIUIX!ms~poRu^M+4VK8~0}`c=Egfy6-HB4U#0~utvgv{= z2Q5?TQrTaJ1;~D11q2QLVgZYK6oU}BgGrY1>f7)1-ekG}gvV$2+~o_(`p{@X0@ggr9~z8?Z!PA=e3T6#?%e@na8A z+X%gp#d_Vq&5`;U;88=Mc0oSx+iQ{F8I$1)EUcLo$W1VL#8X9oItPEW02foMS zhzEr83v(z4)DhrEiL;%I7MT8JPo9icnecH{EDVbZ2748=#tmD5&?!jj$hMpzBpz@Y z4uUB7PHLeZZ`jZ`csI9KYNXT;mpXE@)hj!aQLzhb;_G6soJiS&urNiAszgdsYn?7f zRRznGqiT_o6Y(v;Yz~)Rc`{YM2f2SiChn$U3RG91-^s8`f>3LL$|1SB2dPMJR2yZh z<=Y6U83<<^5?@{{Qd=Pn24S2bS$O+MBDrchu-P6i)hR}H6!~Sq9`bOuL>tjr@D0GW z1aa<-^y(@&_0B&B{!CfUQxj)w=`rQ;i_|@WG-JxqFG4AKNO+m zSRN_B2X3bK$iM|0H&Ar3NNJMtE^zb+QE*;Ic%8`W6kezEI-A$6c|9HTlO!OUh-?yN zlOh|MnZ++#HX^o`g}ZQ4qPmW&09qW`!>0 zUykQ3ITw{OG2%WCy+88dCEO41gX4i%A{8kv1-X=wi;z0aL*#VtOC?O1CSByYz!rPB zI*r8dWxy!MGknf8;4=;9D2O3@Am+F?tzMG!1|C)u~jng#?wQ8ft3c`tVYqEFgbXNt&5apR+Ip~ z`WG7~!pv-j)Q(1&n3~j2NatOH;2I1Q53qf{|JaV59vQh`nhz7I-qr>fK@*XY|4cbYntZW^PXLk;`Vyl%}3GuC=YgH+N>La<82dU?2iiWQN?u{~mLapck;Bwg#NPohepeZqs{$@Kt z^J1WdqL8e6$UwEp26wSQTVdVHfZoEwrb?#5S?Y`L2Y!$^??Axj+$)?9k(_!pMuM;~ zM}|b)`~7Tc1Ij0uJt8@*_H*b0sE3iR$VRRecm$FQJxR6Kcj$V-X9AlShCeCzN?>cl z@Mi_z1ZbhZ<$lC zYXG1T1hdDv(8Ad*;>5WM_;nsfdt85uoJw&QpnGHBPer=G!EFGb7h~Wr1*V|<0MOnT z_#1&q`EP)da8|@c#37$k33y(BBcU^}p!=mV^x{N!AUNd@e4Dk3rt}8eb?{5q7lr=y zicdwF{B3XldZ!U~F{!-eU23piQG~FGzOt-9&H{Z!9@^M z^hIghdXZ{*=AeJqv**x(%mJwS8xtyAt4IIqZ%W`3U409}VN$V#RNO-b@YT2eW@%zd zK%xv5#vKFnjZ!7B%yB+D!PZ3 zA>(9!SaJHyvq%l#%T4Da3C@qef5pQ8syz9vpmL$L2Q703N{oeRFTWW^YXw>>P&#e%^Z4A;1xK3w2l;~^%Ws65U^)SlBAt6;Sv}tP+oo_(-$)hEP($0S*(J3<%7daCj-k9jj0_A3p#_<+Mdv$iA^9U%9 zc{Gl z($k}Hyv5NTn3w2G1ZAp6<9Lgs-HQi@?f~U(kH+y9M|a8cwL4=XkSd(m2#QnCLVBrI|;s( z7DrosB+;1x$_*Zk<1LPM@UKMYK~UCuG>*48+Fd1+oVP)F-=lRsh_H;Kl`WOz90uht zkJdPpHm7uwQ+XENhrq%PsTN9GmXYLi1f{D-OAn=GmP>LbfHKLW{qa+nZS%?}ISW8p z?9ujz(o!lUInRKy(WAW=N}HaQZ2>^(mOI`Cs^F&h`+Z_kS8%S(Cj=9)|+!Y zmvYROyD7}2`IH*&(yj&ycj?6j4|nNe;OtUrvn3DS3p(PNa8|&jpL-l?>_yY7mE&BR z1V3Gd}s&!ya2jDe!~D7}tS!(Do}fx=z-vcbb$`YmuS zB3&&d58ey9G!52=umUb^<@a4D-Jo5ZDbC@$SK_joSl zcKTT;ig)Szlp5~Rp9~c4((=exM8jR$8aO+P`YA%>y`W2ngtG!Jz0u=P2S+r$e@dK7 z9|~v1yYww4!lkT^Y!a8!p}6$)`Nwl9Um;7*3v+2LN)2~u2Lpw>bgaR{U3x2Ub}97` zB@f;Ux^#UwE8x#%vPoP@hvL$!Z#kYzxoFovzcj#b{5?g z36b}LE*%ig3b=HJ$D!LP(R5K}oJ&`Pv*KO4nTc>It0SAlrF1ARJ?*yRxs?0kDGS0} zT9s16UE0z>;VvC!@Nk#j1e{$;_oI>r?*(1DCY%*;=?;%WH?pGXSKM>NMCq^Ltaz7J zgv0p6XLV$gxRegXrBfFk&!v1PG!Tm7qx2F=4R`5$1BJWvaf64u^b_FhQW^=6Ja{kY zQU}(DumUcv>2YWXK{Q=mHqND8!ddYyy^x8BQdUPciA(8FT)Jh^@m$LHpbtY)yh~rB z)Nq%6ZlG|N7DK)w8t&4%z}ZY;?hcY9M7eE_pfdbbLlCR8t&3Y1`2oS`34Vn=}h44QX2h|Ja{kY(pBNC zfJ@)5B9?m$nOM#k+JA6A`7X zj%*T_(xJHYqxj%*T_(xJGt{9VU$DUUV& z21W5MExW`sl7lB7N}V(rHmPHvaF_Nmc(_Zi0?sa-dx_^#-U~Y7?r>JXrJFrY<##=6 z$Nm=Q(yzi<@h&X^hw+Ke>c}Q>DIJPS$1XjdOL>&H8x+O6bTp-gN9ha$g}d~AgNM8H zZQ$(EZzg*#<-MRwe+p*>Tv`z&WKCH+JZo$I8t2mH;jDO<4rU^vl+}?<;!-+vcrS43^9cKLsET*$bCeqH)SU(jcj})84|i&HjFYk}PMhR8mG^>9Ju93Q zaB88)DZ9(FcK^XRr_K*&#XI#eCc>$#j%*UA(jgw_pi$tTdF-}E%cK$&Khn=3Wz?0X;yw5ei%51#M$e>YmtlHGrDybs&cj}H(vZ==1R19f29}_)%oLf+ z&FGazGxcMc)|>Y`ja!EAAxl9ns8{TB{Ij==D`#{q{S&E)h|+UPlhTyi)nM?`<@x7~ zp=qQk@-vc-Vu?)Og#liclA-sE(LA(G7G%KY$c@0^T5`@A*l`+XJXyTKa__^_8P74h zEtuViJq3?BDcX}K%rldoHWm1qU2Rkd1i|RPhY_QogYcp#V-@3w{n8?g4Uh3YzJE%CcO7J?3*Clx^&sLV= z{nETH!|M!Qm*sUiUYF-}Ca){-I*Zp8d3}m`hVrO$KgXE-uXJYb;*rLog^{P-GwI>U?uN4sM19hK z#VUpZnqc7V1j||b4a0Pf%>+E#qiFP?LGK0fq=zcv%ZduC$wv)&8;JXgBG)E!GhBJT zi4^?>X0cUX@n}!CU3*V^Y&~AMV}2Q*p9e;LkFViVeYhK--UjAUo_<>rDWS~90lCCO ztw-=OYWf=H0>91U=nT&A;fDdOkAd@jcq^ct9xUIEkRmkkIX?nd_jyHTZ?YqW*w!az zft2kLwJ9BaxCx;49;|3jyKYa_VgGjIQ~0Mp%7q^eaI8m_XD%}as+{hF@xWkD@(%rO z0AYbglBPeA(uw6nDSDgJ;o;18+(i%I!8;0Zl}kyr8*?sd3#9jvhIwBjOzFgs6{RV9 za$Pq@@3*7tl9uftveEnT{xcSq)s4*FC~2pYPgMtWI>C#fTC3U7PF{_q^lHS+ls^_& zLAm!s;vgfyXH@M1&gx>MUP=gADQ>F$9wW1nI^Q4_NoDQQ@=X6KB(IKvS_!lf$*;yh zHw*M3l0S`so)qX;B>x!$eJoIEc=uE+;zn+hQ@MBv>NIldS~*ITqbF-JwzJ*KSHe#M zC8^UMK;bsXQL;LXT(nt^qN>76!1nteNx2qz&GGWHDxPzW-iyj>&sk&)Rm&dKPxNJs zR$Mvi1qi-H!p#oA>$|CuqL7wn;WI|4N)$NqIfjh!TIL}5DbN%nBZBFaSH?t5tpr+4 zLuJiEn5GG>0Cq8i^I(L;!s#z@l`cV6Y8db_9!I{KlQC13B4ZuZjPtu*l_KRS`tV*?gDae3_8!C&j8sNgRV8`E+C&6v^HB)S0bFO zKMd%v7+Al;LvZ=kI0>-WW!G<1(e<<;pf(=NFIj8<)b#x`0Qg{!qg``$9#tb3Gv^`p zG%>Eja-(5ZCR20%%_!B|3LuIrusS2JROEvSe9$S6P7ncJt+)=RA5(lydGufp9*Bd=Hd2}m9KYam##rQ#C^qUoB~Esq|qk7lj$)Vxvg zS-`X8vtW^&E7N*EZ2BDh5<$+@CB}p8k}_E<-j8T=udde-us)bxjN(x}7@0I;vXe7| zZgolPOb~9vQk4Ko zQ2w5ryO*}YkmD6t>7c6b*)w!f-{lMVEH66w$yPU+SvgBPZudC|GMNiSrLREhw`K{LjN> zbjI;ACD!7Kjiu;P$IG+ zkJMd|9$AM50!v7t1KO__+w(zfWYdeVUDF4HIx?IdrhP7`x7l>xtbpxW`}3f_98M2t zzff%d7Sw|_y$IVi{gg-XmKzr18J`}e{cKQs+H^}$t{D>4TKhCmr-#!6+NX)_4}kiJ zP4|rnct+EAg8FedJxqHPU564_Oi}&4FzpRNZ5~e7+Wo#ZJN0ealPDb#%u_!fp=2ejS5 zi+%t+OYTw^Gkye0zXN{6a4Z!|m{J0EWny6i?BS=C43kB505>GcUr?v-J|AF|nv3p0 z&ht=tm5y7?j4P_q{bZD|JTB52mRSNTuSMD{lA%&-bRDDj09^)T6``CT_Xnk8OdUYc zUEjUyOMQ1VFSow?`qSQZILcqx%xzlwJ1B4|TYVjtd;i?r?~8r%m{$k6Ke6(3BxGZW zJo7#3fNu|J;7jbvJyeX8P)Qqu(=Nc1%ECrAucjpBK`^( zca?KHuv^v7pqF_ZW!yw%q_6JC>Mc5ak5+YoO7A$gRSQy}xT~Dovc>Y@)OpSZE-9^B zG~0)iYGg{TJh@EnQT@TVz{^AK337*W_6%PN=*l3RSED#7VR#{+B?jgw&wH5RwMgCI zA?i(3tlYN<=MCn(2mJFQIfs~Y79PRk|Ig<#HMv1Y%G%0LP$G6_@YSCEFt|4g8O7qE_gsl*&x&@lJtp? zI)KopNYZaY8Vka-5E8csxeH8e+yc&B0iK+Ec|EyKC_WwoyeU9YbSUjXZle-3dC6+? zCK;KpKsXYVp+haxxCG7bh$%~rDW^V#pvDr}MJEOA>8NkfLOu#cNg}k$2=zi*e@{rG z8x2|rX~%>{Iufu#($nlh{b@+6^r;_~gdgY{vqYC(EY$~n>k8g;(8vFr)z}27d)SHMuc|@loD=I6T(ZHq>?kln`2<80?!hDbx zc|?5)$dX21A5~OoR5>Z!x+fxR{boK&Wec?Rd!Xtlsr!TM^4t1kTw9e(t4hzpPHD_T z+xk@C$8PJ}gV6;G=Mmr54+AtN2-|J_wSZfTVL!sv;|niQGRAZ(rtYn2rY{w>9)Q%2*Zjb>9&3<2(yYL>9+nZ5Y`k) z(rx{VAiPr~Nw@W1g79mRB;D4hK95g7VhMMFZtL?wXj3FfxAlEN7#Tv6rpRyWuL9?W z08h8uep`PJ;B^6tqQhgh_1i(%7nGsHW486hUO-11OC+663fj|A@3r-mB=-AleM_XZ z_k`lw`tyMdHE3L0e>tFQ49u$Y{I>oMAS(#v6F0Q2e-`koo&qsBwypmJ@IH^?xAoK_ z{7>6@YBXZo`Z^n|wmu64tF5P&rs%ew8Z4`=r^cu-*w#)(QSdz8gd zIW5(l8}(-%b2`ZI^hcoYCy~QHqE2ZzPX@+w+Njg#4~7u>$VloeY+|Z(=%|P#62WVE zijuTQTXi}UM5LRD5L30os(VmGNcs4K$3gK%Yl#L6WHZougtu`06T923>Td8{}T95#3@G{+LO-&=A5ruQnAV) z!O0n@T2fxAd@xp(JW9M{8s{7AMCm=V<|LYu^R_$jCGS&lIlH)XqQ=7RDOe)e#!SAf z!KRxD*s(gJas2lt4N?02~d)pkvTgupCmj=ps3hhzwI!jhzgl@B~X2g)mK<7 z6~d9(Rj!!`EG>^kIQ1znvyzKh&SCZlu_JZB>|oezr&-DQl@n3rIn*M@@|<#_XTh-c z;;&>yZ_szIVMQ`vS?Fmkj#a$#aJTUjG09S z3GvhhthSIqKN6rM6C@uI9wo5IAR$mCz=||1mWpa*agG%vHGnraoFSB#S;YrQA27!n zHrr`d#}5*JunQw5<6&WYvL+>`q#E!Ff`n334jWijm3t1^=%Wl(opVWIEK5%QM+o1C z)el%ABgt?Qagvx+$!{T4aVW2h#V0XS=zdVQKkHu0^jf!JO=0@N<4Ci*r%dFxf z^LsE8Q8r&ATPEf;W8KGSzI=b7`AUW=9ho)Md(hd2QuHOYo)uWbfK8=5?;_*w3#|0T zHBZ&z0!N7_v3-WB&TjN0?;&81lb-4;PbBhSVneX~$h-Wtn8^DBa1@CVdY`n2$jb&^ zn>ddXhxYu)n+kvB-m&^qwZ0sd6q$*NyZ096z%y1r!z9H;GcnVFd$Gw!Bb(*DOh~XF$MR}aTJ`G zCs=UQIK4l}1&`z`P^l%~#9ao&ot!)5O#2sO1omAeOlh5N)k!8PRmtER)4J43C-egNU*)>WbX^H_BKMoSy&?UVxFSC7<>J5 z&$4#{cvDF#&y(`)_0J~QOC;Z3QZJ)j-3N!>Bf-D)=9_QtMQ_FU_e;RPVu{dOZ;JL} z?DbC>%idF=CKpSjttaK%>z@R$mq@<7q&~#nz==SwmHGBo-WFr;A}G9%a;8_x6z#>> z>qoj}?^f`3l2l($%D2~#UD!(`-(FIGOnc#9dS{F6y*=kXm74XgXYV?R-?LDFepn*( zz7{`uDfY_As6S&!AzKL2 zpI1bJ5_V$w%t-x!%(T{bg>x8K!rPu!3)kNl%mkJjz~y;TG3_T&(gK8ThD4@GiG=j0 zkcNUV+9Ns7n7cdr08bK%?^M^HnI`un%mZ^7v5kME4Ps_arhFxrnNNfDdXUL4ZKadW zoKu9Eum_9-#A5GR1pR*l3F;k00u~|g6|Na;s1eDZ`X{VSki*;{hyGnixSu3gwI$(&K7oPIr-XO0d~BqSBC}xV9|ZPS7_LLV%zJ2Lu}H2Y z9}@bFLFi;iWSW#n?AM_`2!vrC>A0ak8_YY2ZTwSI=syP5rXbUbY%lab0OJc{vG**3 z7y5qyjBfV`ClmUgbUoqFZ-)%5(5K6s3H<_KUaafTFARph7u^W`k2*xG(7yws(~AoI z?Ev>+k&^Q(jVAPeMEV~FqZcRr&@YDAW*IN^=`lAy^wW2Fk)%Vv1^C@ahTeZXR_Koe z>0%)QHB?(q-NqC`8U?B7<;Y}>Nj8rB)hA3KftN$IaBVo7> z{j~Q{UM!L;$%lk~JrLR%5}76?3WR=t5H9dY#|{1K!CXjet4 z{LrUPT$GXmp?@n9mXZXkwj{jJComBDl<*ps_l#72T=lkUjycRVjKSy75Wc>^-PdyMYb3EZ-en6vDkYS!3+JL z0RCwRClmT7(dsw(AQ1Z0`8J{72iOURe!@UI^yfmf$k5*ca0eDCIlmxmLjOyo|70+F z4cQOFN^`P=bsS9& z=t%L34&$W0@TBM!Ek7^+EjX4k^{t$*IdTSkP-S3q_v6m^%a4IA+?Bj->0Y@dg5%ci zW7{dcjr$^R+qxg|ww-&Jx9#0BI|%RK*5qwRw>@vqatHAC9QSe7*TXHuv3RP^JE;$S zq8~)4^Iomu#l8LQwJAg^kn8H~sJ*MCxBq@^GF;Mk)*jFWb*wdgl=_R&^ogZukELm^ zrRme!Yc5 zzT)k$jPJ2+&is<2+|hgRv`$1`m@YXkH8Kdttjuu+7IZCiNLfTjRmq*I_;TRiaV3=e zgg5UXmjwCPNJ;z;5b5P$Qv~3#07{6GjirXAY}n%|*Y>hgvP+F9e)V45Q4_V)*bK@- zN?dAG&il|Jz_|3?08->&JRhXX!2~|Y5wQa|?)^@9&@WcVKB5ivEDZsF5^ME`BUYe%X=JY=Mks8 zsAz`cHpKglqy>4ArTZXtu!qQ1MPPX=a5A8)Jy;zjX?aq;{L7_Df8zUi!yEX$K~6$J zpL~aE5j%Bx2k&EnQi)_#^6He-_i-c*)tZ#@#h^u8nqL0h)EhpBvBXZ`nl8V~B~9Yk z^1JyUr8g-m-&8`c!e?kru|k78wlHxs-Gu=WN|qs;hnS6}0dK3Sz{pOnOKrBO!8$h}Cs`Ht83Wa3S%k^jxn> zsS^DveGuZNO4-X*&hO?{fg5Psk+t0IZn>Q# zKiF-^+aYdWy`93_q3!~`U61W;iriefj(g^pn1_qdfi!ZZd!|Hd?89UHc3LTw;x|-f z@>8AwL0Um+sCX^^4wk_CC;ed+meSwAaH3~J|8%yn17)T6JJG(9^zO7Dk^P>upCJ3^ z(te`s_oMwJ*&jgr$+AC)_M@^tjP_Gxe+=yxll=>6zqssArhQlTr_p|DIr3NORSNNk ze~p`#>`eUvmeG#%t^{B1!@nhhh z6Q`bUZWn(HUHt{D*jF02{v<3-|4%gaJXBQ>YI-E8>$Js@5-p&TElImGQkL*cap=Dl zXRk&hX%ZH$c)F$PLEaMg@(oy!z6jLi9-RgsEIJQW1nIAU`nE@>VLFS>gL*;wFQ7VK zYh!3Y+oJREcaUBU)H6LgP5oGO`XZo?9j~bWhp;b!*Qxs6fA@Rw(!Jb!%SBRM8hi~G zaU&{IQmLefG>{C8zF#V$Ndqb=(LnR4dC;hmBBdy$q9ke1;Qu^pt-a4auiNi` zKcD^HbN2JBwbvfbKKrb*_db0=9pveJvlY>~Cu1Ic9H^5$oiFYpI(Nm)qdyGlLQm&= z$%xK%#^Oqtz_h`?fZvnMBdJxGfC*nnP z?vkHJZw6|mr*m>=MCW%3GReBfo}e9xAgx;me3D4<#2UDNgyngz(Pf3}LF@K4_U+OQ zNE+$NLpKr8*HXhmUa9}#rPAn*9RIo5h@S5u_d4+rg5ND8nYR(~I^Yk|l+#I>FB(>P z#5*`nM1&48cAf5u4*Jo0aDF0uHnho&#eX7vE4VFxfEn)tah-9bUBIsRL^$>22+9p$ z*Q!1dPVtc`amQ1WsOl5pw+A+5HAS_^JXo~hX_7u-Q7B}e2&XMe1Ef~r6XAnHg7_*p zjqZeq%&t3RrKj2f`Nwz;JMtq^v&mA(Tu#zf=~4sSlyU7LP`(G<4GG)Hx!&>`l=Ukr z{@Lz-4a$zI^A`m6q-5C%+qn(+uP1}#M4!XT2FpoFOQ8)B!)8G2E`;nFnxn`FL7qVD zOCE7QCh(a8e*|b%fHx7AhnuqV1^y{OzZ1&j`XORRNqAtbJJx1>F2>eb0b_fyz;Js8 z$85M#v~&X26(Rd~lKezL`XP3(M_g`2Fn)@_=K;Drz(omsgTU7Vni=5I1io3|hXK8m zf}N;1gZA@pu?MZSYsLnYy^oCLn4uPAmDSaIZ9V9(_7eth2-%&On8FPdrt!N0YDRbu z!qTY9N?ko^{ESzDMk>IFeh9|~fxePlxx!~7`g}r?)J_8Jq0rTczR5$bHPceOx#IT$ zdpzK>C|B{;ioXSHMG99Xntr8{Hh{1tkSdcz_EEfeBkl$WVjuRX2}bOzcxzx?0#5nZ z(u0-M4}@WX#GJS&C0jahF$m*5Nvo?gd0?w_RvFi1IX z1N$`Klu%NMs6AOp*^OZQ6P!4E^ z954%Vzy>4->yWS3hZN+lxwmnB`c~#ftaK850dl_ z`xm-?Q?blOyhFe`86n%5jp+!)6uT`7BPRP1rKN0M5*5H>dPGW;~0OG2kizzr6;Dv!e1)8!p;6s!(34~dJL@h$n`cvlN%6tN>x2s@EMQO@| zE#=jqZQPb>_MKy_+-5wSA!r8a{#N@`*BoP2fU%Ef={37Mi=oNu7!74I$J62?fgkTV zT2um-y{1ZpbO8ug1d^1Ol2$~d=^)GrB-&&~|6t}U1o%!MNMm4~8mnP}4xhdR2u+D3_aJ^AC0leUdyd{5 z*(AA7@w1w2(XHh>B+~XLNxyk*ik}wA?*yzd@koA@;*#%ufpyEnM@RT^z=q`E|BLir z3hatJd`g5*2R17YpQgCf^|QcU%EPBe_@}^D2V7h7JjLB_jQ`#8?x@aM&2vU*0PsI4 zf{WVLN@H~fqlagyJD}{F$b><_h7pg7aD(FP(B0+0#s^$R{Y|)E6DsCbMBhz_b*&a^ zh0k(r?@yZT4%MWUlj+{U&$6mS?s6TTOhooj5i;FY{A~A!85oyCDrHe@=cvpM5p#F2I;NRPXRGvS5xp;{gHm*>u7@MiMIcN}ktADo6~3WN zcRLvK0*ki}BdjpO3jkm91j9PkkmAUGiuiRNleQgK%>l-8f5A(O5H(+^+$K&t;A|6s zZ398Z7fDahkt!UTm9om72ioOiJ{MoG`xx>*s%Eex^)XkuCZgP6q^O;#y#QWt!>94ykNy#M~b& zCCKMN7eIyoEhmoN$GEI7in#(uvPff#%P@Y@52QO0>H;XDa^QHtY) zxRaP#UsL-Gg!O?W<0%;mE2)W+9B!Va2x^g#l2KHX`*hfuZ4X9Igr?Nb6Mg!R^I+^HhE+c;xUJ{5B}rktcbtyV)6O{PGr0^2vHXk$~rD&#k!Mw&fT^ z-9zR%dKrq|K*)a1;!b&vRwDXa54mrNkD#_j>N)y>5l~u)Aks>SJVy;Z;yp*SdKWQ> zo}+6sPM?SAIeHe_>JjpuqmB?Bf#7}y;x59Gk>NR_o*cm)M4~Fs5ykIIi94Q}L{*-n z<$+CEO;If}&k=3dMCdo>Tp{xu(Uv;MjzVe`JV*R?fS$l}M5DtA^WI5}H#gF;h!8&! zWi-z$l5N~bgrymchCulzq$F%7=SiI(;9RELi9h7m`4bRbh>+dqQ;4VP`~yUP<{{Ue zcwFZPA>tRnThkO(q3%Lg7m4nQAlkL&rA_GevmJoQt(_SWiZ+`}jzyx4qsGHEi-v(G zrB&mRnhnUc_d%VmEP5J{wDC^=tIIOlmF3v!Cg~#10d_NjJB+3)YjQDJ{>wXC#JDDOU>WnLyDkmi> zGPd&CAaY&ZvMlx@Ybo+Kh{4?vaTG%KNZ945(UGIRvXYyHGXfE3c#a`+1sRLjYdqqP zW1g2l7?wZ4-xCor8}R%zMGYI>_!&eu6ZWMwUqi|Tt>ok(QB9dI5Wc4DaB5butLndp z(p2VS!X%?sfy)#l#LS8HS;WeGN|~gDRPu{Ldn3B5hur1F ze-{f#x)P`T0S-wMRQKe(Z% zEekK}OQ2S^&W$x(rWgC_OfO2Q7qz5Fo&7&S@vl@qnR?ZzQiTd3R}VoTcQbL#bv?yf z0Baxc8Hs!Y#SaD6Kj5&NW&?v)p*>qz(`8B#v}hD>s;(wBhHML9dl8pn)tZ>+vRzp@ z%5I@-Aq@m`a31?^*Jl0tz;3N=6i5peZZsHe($N#%X~? zHOkUH_YP%^0pZ4NNs-IDWVSNrf%SY9%;aIM*`izA*(DdtNQTOK1L;Rpt`9}W2}VZ?OR|!5*KZX&rw|D zYu0g@Ita1+f+*kr0oE!He=5Qc2G%C@V6p-BCu=o@DCK1wlEji{5<^Q z2!8|E;(+UwxJGfe2Jst+G4GD*tW|9>LiJ*oDMLsIE^2%A%-7ZejJ-U|Zb7>$CeG|b zfgMRas@_HgZGXod&#JezvPp6m<7YhCiBVd|I~R1QhFhwMbW;&B-2?b}k|InX&POjL zW#0w3JWZf0y5vNuZzj6|VG9{as=_!|7)+(K#AO;GM2To?866ql9)$f!idxge$kP76 zj`vEesBVblF93E~p8TDW{4`)Qg1pw|ql&vn5dWN)jqB-UBYX((^Fa7D=|q+r;TM2g z10kyEwMM}7hD;5!TOi|{Li1`{=AElX5*ElL-ZUC#=_C9BldeYUZ;@2YjE}%9`(XBF9 zMx+Bk=$j%*wyan-DASz^#;CyJjl&4e{E$}zoazbcb1iAC7>9G&hk?nEO>bsBWn9u+ z3Cu(GT@wDJVsX2a)GcVuM}{2Zr3tmaN-wJHX2fK6@TDNdFAkvg{KN;6Dg(BY$IZ;i zno@Qz#CP+UT!c{@Y~Mz=a?TC_;{?yL)VmsX9^x;~!`hi;QxJc*$DA~Sq<%CL584>> z8PMMQzp2L+@aZIz{Tj5*X)0A)&i=NX71l+oN6=O;Y0HoJP4ybAQBzz1+4i7yOHoZ% zi4g_>JSk1kD`B0KF!g3H1^&M@N5J-3Ees*u3Bp4ul9Y-S=^!h%*TMK8u%w4qRTn5h zUMZ{tVWTHmJ8rJ_N>YVoc>YC*`bJSwQW=rjfUs|xq}6gxfsnID0zAGd!qrAN7vShB z2qnF(>}~*fdsT$~MtBV13sn%>&$c8!0{C@`plf-x5{H|bKfx%(XhQQV1Jq=>Y{^Jt zH3nm^G%Ff%UTds_z!;EbMY?7f>r604r&*#)uh)776?~M^;#^}7xeGvl2B9e%GEdZF ztTv0YxT?pd=@`8ArbO~1uMzr`4=sGT0UiY1(9De_U5%?ClPRAg&Dzz*bo&Mf+019S z!OC#g2=^(W6~K;xAVXbg*5!)?mtnwBz>gtkJ19}_Wcid_5`iHa+^Kq1|j}bkGWkatjh0_ zxr}ZSuqI;bs;?XCz4&aHUhh?FN0+IKkgb4~t|v_u?^k_W@6`-gWx(&?w^(K3qhIf} zA0!S3eoWxJgw%~=>%GW12l!=yvyvQnBJ}IMt^+nB;FM5rX#J0OU=HN!sBEBJcENWb z79gihna6i=qF2X3JAy?l=y(m{D1zs#`*9 zH?O%V4pg%!QWZ05;i3NW6CwT96_7@a?3JN~IB1)Z_Z_)KsI>6>cjAHj^+>${^7@dDtt(v;}+-6tL~hhlCZBJ>RnU*CPY zQ}p_d)vj;E-qUvdJGgs*;f@93I^f7&e&O{U_2dXj&sF8bZ;GFq5_dc`iK<@T-5l7I z)fCkt^U~3VM@SmXqEN_Q-_e$L1Ef~rjU98C)WFG&Py@$p%&&n0MAt&dPN&*b4eWyG zW*&0)5RYr%K16f_d{~+i)xdEc@ijn;>_bSU%Zru*?)Bm-)afi3iWkvqo9(e*L8e^Z zH1k&dBsdRCO| zwTsJiK*%nkUWM*b=rBYN@R0kAxOAbV4=R2JunPmen)sQLt49={1nlO3f0O8cLh%QH zEets2T|`=_qz^z?9Y`!XB^}9>`1dowzdb>lWmGzUBHMELls@40+!xnMt_Wo!L%UMD z4A)WTK8Wp%ko}2fDsIm5EyRxjHi-CE;*FVbX?eCGI}Vp4pd#imXN0>3KiB1nJnHsj zlh+}CX&d!r3+ZVvUm#lyklR9OrTMx)Li{R^InwpMQF@vYenpfkH{qCYz7gsJY?3DI zD|vW1yDN*xeAlH9yFIv$+U$E>rEB5lm>me|!Cr$Ez$30X7tR~|EoBR70+^G@mg3T~ zSsZD*7ubVAo8n6%`9;9q&6EE)l3xq#hdg{L2VG z2-xAor8cy>A9KywAz5y}QMQoI2lLWAZ8oWQFB*9hu<1dY=60jXi?xpfdp5}Tl#1D` zIETd9WxyO$(#Po1LUs8{PBsx^Duxv+CUzA!0mc*z+aZ!`K`fH1AITk*C%2PgV$0Ax zY*)o3pJVcL?xvXJaeAIy(@5^gJUN@YEOH+PIW4!^HRV57mAfB+{f;2DF1)j;P92L~?uV<}z&%A~_|U7m<2_aBLv)C{CeGLA$oC5v6i(Msnl8y#8P1S{Jl? z8GW>qv1Vz*S|U&S(+G=$7>iSCM=xe&H&57W!Tc@FmTp0bof2Zn?r?n|XjUW6I4yt1 zR08i3I6JTy^*(T1PR#2EY;eFM9cL&`^DhEEImJ=)<&jRUx=h(D$vI#?OE$X)Y1z_D z_1>%ONr~>IV1D<1>z) z1z2NGU&|z@7OlpYl(iEGZPFy(ZliZorLQaVK(LOjf|)o9N*7zoBS9OxE!E0tnX#sU zG0U^`9<3M7D>dYQ6I%Q%2(NpRlfqQe7pjHB9k&XEZ%B%6EMFzeo z@E<%WA*g<}eV44hkyUN>3Xmk%6F-Lqw&I1VP4E%G&Iq_R`E_~;x^ak~OpKN~)~xj= z4{5J-7qABd&T=*UdBtA_wj_l+A*mH})e5QW^JoA!zQUI=fqG)X!_)pUuHE&^d?(j;5Sp^@7FVV_mt*~V-ZKheM|?~1{_&xLsSt7*$ND}x+91( zo>Z-@N- zR?X6kE2_XiQyW`tC)Rw8wAUeIFJx2DXYNvkGOh3u06`$fBYXVa&Q+{fieEz|Jag4fIV%+12Z0(b68SG%AWhw>uxg z#mA$LB^qtzeXuK9jjK@0+g58I4V}kP?<%x1EAQjXaztP1A;%*twtlW%)7AdgW-Gd9 z0-hVl-&2{Eac{S$lp8_K^hv6o5g#IaLa7ajz@e@oUE0bWpWp?KuY;ztvTbg$9t$Sk>NXvQ6=plxEaVQ;n(^uq zCtinJOY5Th%zW(595OQVG&OX^c~69FOI`t61bCUiKt!JE0ev87Pl`-e?{K<#g2+&9 z?@{PloZcFQ_9b7@WkeqU@?=1}5`9h*TtoCNAYTMD2m7N`)v)#C{S40EfhRVpmY;~0 zv_&_CAo+2$z(o|Sqt0a70X`s5XhuxIsyfW413V&7#1_#aPbnQ*X$4*i!v8!;2l*4E zRyuT1!hukICkXd@lGu|m(g6wSH4xqpBqh4z3o2$lQN+!qcho9~wOWiB^o_5lmEBQ<%ljBas&)Fo4W_eWTaDil( zx+Wk@CMv2F9U~}(??JeqXk^vgz2&Jv6Pli%&XF17{Rr5N@LxYm-WfVDXD}Jh1 zdd-U87Ae~m*dD}1nc}k*7x^y04$PB(Fv|5{V8iq9Cn9_du>a=a_VEMJe+RI8^6)pJ z^j`q>S|0v^;xgd-0@&99*D9LRTE_62nU9rBjw{;RWwuAqVpjaq2yY3jZNOF8DK^cN z@hY)iCHnEY7=+kUDZ%1%1Cus&viX|`su*Uo^U4vin-F_v5F11>&eH0zBi>*t9~ z2ZksXMiXHSg~TU7*O0+B6DR#ZZ5dK&s;6kGB)Y=(nE!yF#z-LX#xm02a;Sc5!3vFMeNfa25Vtpo=J6D6Q{P| zz1igmY68vmc~``~MeL>^b}q$a1lggpl3cA0c>jx_xsSSsh`fu=Vi zVjct5DQTu8s!V%!7MP`ttmWBgx8cq*paZdp}4@c}V9??6x!mkK?2A~T)>~5m;L?n#a8M^Q9ZHSo)e0rLLMWudb z0rvgXnFXBLp)c~e)bc%?$-tOPEgK&Qy$QB1#wxjKS;*LgebX5$!uj?H*}L;IwkKlu z^2oLsI}lJG54(BWWNbcSP6a+H&5?}NM+xAdZRVi6P!c(sYsOS9w*8aw+SxWL17t!;!iO# z8M6BcE-xdd74VLMa~rf7$Ho-o90mM@z?qFBeK_(HT+T(z=zvp#PgZ-$-l#b61;MN* z1@SNhLP3aap%xF{KV6GUKwVD#i>Nwop6e0&n@6^-#X=~mhaiIP9ZIK~=Ld*s4ZKsD zldeUngdELHj6Vwk!T67l3FRkQG7Q`Aei$%pze{21;zWxSvTHM|s7@DqmTNP2@1Ixt z-Sp?}o%!4!-?w)g#7j5HZ%5etjW#Qbx(3noR{D+J@SijTV#oDXd}bI7JSeF1J!SKNPR0&%2oc`QI`)ht(=o*O;EoF^K6ISXeiVx?~#nIS>E zc^e^IE{-0}FN?#q=3PPSoLg7U?_m>oxOL@|C_H)g$JUh#acn1pY$FLKNV-MVr!BL1YN*OKIQ>&jwCHAE1^y_LYab!96+9RvJc0_)b5 zhXXn$z)K0M@w#>8DJjT_xEVj7tjVvKYeS=@yYkypegYk{5jl^dpHrd2Ho=qzz6|IM z!ru~>W`Ok@^`z}GUIlD>N=9r#_#+7PmBK66hqgKg;2{7(lMAza@#-_LTF1JsofmLZ?7g|3TT z{q~fZo_PO_kab_6Ma%NsvW?necS7`@9&&}m8_UIl?I~FcE=N>FY zs{+40WsQSS-Uw0(jtVqoZNRoYWeX6x1`@RhDVh&aX4_L94c2K@Fr}h2WxqY;SkR_! zOEvra_LOtLcp|XcpuMYos>^Rr`3@M%JWH?H-B}E_J>{;n_$T0hdXD5&9SMGWN+FdU z>@wvDS{zbd@&H$6Q|5%!34{X!i8h(hetXK}0G=KQ(im8$#`4=!UIE6Wz!Eju%CJ3U zcia>7U8Ucil1%p)exC6n)+Vt%cKPPbu1N19m5I(Wbau^ZUyfItZN=_+fzzi9}DcnJlwXY6#NokV*{=&*>6ud4e_&xG4GCaYc+m*$|nIX zN)cStw*2;#E5Z26v#g!l_LO46-@pnEO&7ri&7ydZcLugwz-7?hq`TCF+XvAH5K1i6 z3di=8e`6eG&BL~*B-5Rap9`uI!S9u#Lp!;J2rI0pMF{0{y_Y zJtdP}jj*1K#86@A_LNMe;4m!xMu-xz)~N03nwQWx+ z@}~ehD^K3Grxf{#z^=`cx9urqj6N6G{5*ME|Bh!ZtbYf#ILK>j^4n9cLHq_U8@Cg` zJ!SR7aYsSWGHR7{Qhs~NJps1#gp78oQ+5Dhe^1i#^V?HW zd3FG>lRd62BC2QGo>G`sfOXx!GHrWG+M2x|tY^s#oq^kSdrDz`29}nnjM{q2Sje`g z6vFQ$v`gyCZ%50T!fRBRi&k>O#c^?HG z03`KM(ElRhCWP!h?B;po$T8^-s#k75eeI*5PXd0>~*9B94@gL1sU%TO;E-(qSVt zv-l?*F*4hF@jHvkUc9aT=kgbs!%4Mc8bD4_Uq*b_*zIYNq z$YxeSvy^$obcI?Vy1j=SkFprQQJsm@1pTXkWL|j=yew-$_GhCb_LWrzt>Ie(7>I zV66f!s+XY(@f~{kr5QZ|ADO0T>bB+G2w>*~d0y0C;^MNX~X+5>i5U zN;>6IMw#4I$b~eMnw8HM-9NxLljo#5--C{isAm?_&<6CPAm1VO7mv962}>VT`HH|b zp=bvL5p)kF@T&qh1=Kdck0;9CmOAMPsDFU_qJ_lGNsmjj;VQwIaoy(*xw2)ug@*?23(-dvI6`IZ}VCw?@CGF6bH%;-Z zL-7?Mh>e=P-F(aQUtwgi`{wr$N>i^YKF8wnCEJOo zu(Gh)&V<`#g<0%1uY z?TaHL{S%SaBl@>M8VdWYEZXVx0aqJQ4G`26DmKE7)#P^U_5s)#;VvnEW<{t~l@m)Q zDW`KF6v|2RpqFsP`$d}p^uPq{;1^jxN zawIYSEkpd50h4=m6}KF-@9-K$4UhBo^{!Fx02wIs(-DVNXvIo*?g_TDY{gfuF*Bs~ zSkYViuwGDcG(xrmE$&8(rKMGzsJJ^F;02zb?zst?rL&dM6EaglnC?lcMQXcZLc(#6 zgYaS?$+t0;be)n4fVma;`I@9dX^(i)8?$ICHn`ey`|fh`@KKqHTcu`6EIb~&e<6r~ zy45N+y4vh^U5ZwZHpHd)V}>*+(4u_ia$_y)TnP^$pc8`5n6IF&a||Pmn(iH@pphN3AntV z!N^N4C*tb>Z49tj#Dt=cv*#`ZY!}6IxuVvvNiW*xbM;9LGImiEchB}X(VX$chi0Wa zb4Nky7=-LZS}8?UJX|*>Iup?sdB|O#;Abm78Q9De?#^K`NX-{NZ`JlF7|(l_UPnrJ z)d))ge&Gr3W+tPBX-#7WV%#4fR2yt&DoM3`YFZis+#?VuV_Lpa0w*H5E+8C8(yRnu zt2i6D8w_lC9==ZT2aqv02H4de*ALyRsT(3CcZ0AXkfQu-ib!vQur!dQY-J>0{7-h* zIW$glccnI3w+rfR9|Wn=pYOJpYhypNXJNwS?;nNR-f_FbAgN2&d}Z|v-Y??9B;o{l zBs=)9k(ni5VOQTwjtxeh5Oaq>{!zI+N{TNj?2EHLC*gM3aTW6Xn8a`10-N-isrYhf zqizyt*CS-b-p7SjJWesHa1Y|=DNoRv|5JL+=;swNiM)*D8 ze~EnYR7r(Zk}au5R)ZmU{y`91v|{A>s8~0>cl!YA>~VeeDb~I2U0*~G4AAaOy7(Wd zRcR9E0=g)`s&tlSax$WC$b+6&XfC4X=Rq$k^a`Ti43MU$`$kC<{Swf(gscCF65p)( z{ft)qh1eXbMf12F;fV^blxOB*#FPVXk>$ZWFCgl9 z5Z+9aREfEkKL_@m$K$TzDow;~1-RW%Gr+x?Tqldn!g7Eu0wKB87Ozqbw89+-LZ3j2 zwESkti~x9sCuAB+lPIrNy8*5jC%56^Vrd|6LfiG=-9qkSTC-3qgkMG0vE##lo(!-= z7dO!Hn>4QvfGx|zcUD}Q!$x4g1zfA6i68%=ni?QTbvS0tdJUU|nr#KJb092d-lc=q zd(By@hF8%5kWM0znb6Bed!tLLH((}pomKIr)f=(TsHtXLXQRxS5S)upFnHj|4ErXv zXY==v3%8)StsRY8)PCnBh^cFC=SvD3jXro}4+Lp2+HQ9~*~!gxBV;ZB;fg?# zWTYl{9;3;S2udAQIn|Bg`$8xYcRV$Ts;0V~8rYQ86xAY| z>P8#JlXMn~LLr;#MqBO(kXkj%)oyu;PY_exXmm1fZQSYR7~#CNvrkFpt&PHQn7780 zFmH_~sd;O~h$utIj;28^S$Z~atr=n~J>n)Lu+CdM7*O8;Pa+)8TN@gn>j-6Xi;y+B z$&?MOwR}r7Z|(3?@i-_M>qU;)p!3!qgqBCCX13!tANdEW5gnacY{D*8dX-V-NcuO{+5s= zB|V6r)Al!_Yo2D1dxL2yZgbjp2KJwTZ#$=Le_)5Fa8;t|+nlzOKsYmy-c1s*Ic?*B zO%Avez8Yb3+U^4ONWdu{TWWLK7J;xVkeCw}rDSv3)`ReyCuvp5O^I{b#-eqk=d|(K z*aeqVGXyESD(19x2G%>^l&ES>+b}TB4yWApS3N+G?Bu=>IdPP4cEnZBAQ#NcE#6 z52BwXEd2DGHeLcba#exNX`|dtX<1Pv3bvioM(l-uq3h7m&uLo<)(V8|GB!4ypk{O0 zHXwS7humu7jpbs&oHo`1Hb4ccA~vV3$(eBdB8WD}qgXD?X(J#*g)pb>IK+%h3x310 ziBiR!HZ}s6BTuFMoVHsLb9azlM@##Qr8cMSX<)Ag{3qh7z|U!00r2}kpaM-Gu#twa*%CXMy8vHpKHB{wMoor8}WBw z+nhF%+!Od&NcI*c9?xl`vZV+sh)Vm9=d@AyXN2F0imcj&Ic;xW1ie}!Hm8jwS3VNs z2n5xoY|LqUKVjRPHj-R#{PZJRbgMR-(sG)j^KhHfCU|dP{Q|Bn z+0SV^4e{p_W8S47u~y^fv|R&mdWztpw&mxvJq*T^o~0fs|H)-B;R9gHh(}cr&uQBT z?6-i+=-kg~D>@fDp&>*TYK3D?+Zv3~(sSC#bY1Y%t11!9Y5OS=u{mvIx^wX}nj$nX zE(brS?FN9irwP%VHYWQx!i!`iMH$U$V=BuKz9b__#9E_1k&E$vk#L@=v7)p&ZDMI7 zU`>ceMQL-|M1DVD-Sgzl@gVZY13M{C-sZIN*~DE2Y+Rna&1vgNd} z#J}QY<96cbw0#0_O(0a`v$JaObK155%#8B6*G^UEv`L4wBcNs;c5-z|Yt&-2Ic>r` z0Ia@grX;6Ko6{!DGr=02W=iL%OqIW&hRj18q6Vf^m z{!Ec1TUIQ7PFv~u*#8Sb+ZOK%M(}gm+5+6i6Abfn+Ik~?kjHea5M9E4PTMFj#-v!P zCd_HO3E(|}AamLhHDONMvtYa*Sdzu0jHIrc_&IIgfVMGE$EAv0X3Rm^D<=0jjbqpzMa7P2{Q zLU@OST1h+ibK1T{{0~e*Itz{>bs9|*ozo@;*T9{=6hS$RGLFt^6HasBol+bpL>*7r zoVFuC7#v74p4xU!+b9smr%5u3(ssS3x;SoVX!c&P79z+~0>=VsAoJ^FXuu!!iRC>^ zOu%qo9buTG_B!s?evX>-EaJk&9JSTZUG*HbKY^s?s5OI*jtJS8)}w3Uks~L}Q4_s# zJMnYWjss_im(cRGIcgMimjD_|_;n~WSm&sT@>>Dj5#V@^8sR4qo(m}Fs4@SU9J`Zb zj+%O^u!Q}bi_>d_e}(8@6yKNaMdpFj*Cp&FVD5wkZE)+Ow%0d?}Q>q_Z~D1@+t z{XoR@1wJUvkyWrXpb1uO{9ob=x zuqco^#7b|Tq(5b_6uQ2k0sWxIi86U2_n$KO1=!YrAHl@Lq2O0~4?;`>B)S`d>KG5U zacreGIr{-WC~%&}k*xuKQaumHBj)6QQ$oEt^}lV%BAX28280W^zMr|kffkM=%4V(c zIPitWVoC~a5u`(*Nj~KHxn|*p?0#c0F!`7>FXZ|x%ofO_{su^FMaZ5BYvfs7`x_%AUBy9Kn`XpH(1lI-i}a@6QUBYRqbRq2^#uYHqH=%dz!2LR5UJ={6ox@f;$=5nR)oP z5k3Lf%^r94(UZuJrBtjhmSiCGFj!A|rr~uX`~zUi^6-X=OKaH(>@SbI==zI4eJ)nZMkOz(I%6h+kqYn47HtGcoQ#F{>D&mm&TkN@-Em}eqPX4_k-fX2 z>4{>QvYwFkjY$)6PY}{QG*Rw3oWt`bIE{H{;~XBow@lCBd6yUANN_Gd$S%Q|HeWx7 z=QH9{flUjz+?M?u9^wlCJsx1OfeFPgLuskmjX6Ar`90e&VR-d ziQmp|fwnf_wI_Eg^Sn^=oV=Ys0?^R`mJ2EMcK&Q&=jY+^+xaQLZVI?&*1w&+*rkOI@IGE_q*_cV%33%?~eVJg7OIO#TfYc_8xz#v2q zqpm?nGCdXGVnmPkkUNEVJQd(fM9ctuZ<=yCE!3$1Pk2Oa%;ef5LOVWA1sICwGU@m@ z6<}XzliPxy3h)ty(PO!Dfw;QtyOfNn0MwHss4mYoR7`Q_BRgE%ijS_voGBB{Yu zXe@OKkf8Vr{JfECp!qt4>{HaPkj)#JgXo7nb_Rlbho&oQaxq!{_$C~S0gSZR&V?-?BMFq3oKtkvBrLpS8JAos6X4h? zMZ9E8%K^al6ztl%PeRB}rpSp-_b8bvCnYK}wsL3?xvuW_5NRN@JxX+bWBsc!5fmZ& z0nBmK=*ZFM_Y$4xxG(T-o@2;d$?nmJJ<%iXQ|4$1gkkvu{9T2JivVAlrl?_~8&5%W zGhts^^EM<}&`M4o64jJ>4B;8dejUoH^fOrSQ?N2(($Iv$fCHrWE6FsUAz^dT=px`3FmwSpS_$(-x z24t2;V+Cu1f~Nt$8Yn!n#&AuePcY`z^nMHUZ$a3UrYq%7p|G$D(IDy}ND(;EC^wgq zYTD_w0M?$kv@(Gg0?I#-KVK~3@Pl&p7!6M&WI*$;Zw zM)R;iJHic6znOXXh4t2#36=a}eI!K75Cn4n5dU4QB&h&C$`%0IrwOY2cU5pGu>JwB zNw4O+qM+m-C7cpKs)M(ZnQctuH3@Ujnxc%PD5**d3Qi-86^`AjcL zsaLC{NN01u2E}hvd2Q-dqe>N8h3Iu2a`lO8uInkDf!;y{5p|6c`38!Y18WiR#tGg? z@vgx71f23tNM|rx{5!#ecAM55&U9sOXR&%H$9!qj18zs=FPpmzQ8GR%S)dJ%5!re8 zS-^umX@iWyN*-4{`x@fkCe|jwo;GYX;@5jjA6-@WIU{7JVCo}+2)jm_6T z2aI+pmf2t{9J7Z2>=y`K59kE|TkW}he&QY$bk^VoO0Hn%10 z*812jq~pOniR`Fa+AE&D2=P~X%#m)!?XLu02$YEn>QpPJ zHDGKAtVqpNBUDHCQ-+{TK-5SlqfOv0W3>Qd-zr%9vYD6k$?k9y()X9}qptJW>}S$F zq+Gzc^8r}bw>4Y+4!lk**_th6KIDL=$^lK1gYG_tr71BiIyqqR$N?)^4%j5*fVOsH zT3K0uSkkm03>*53$=%fjT!68EErjeLY_u}>spK$)c0qJA54pa?wTbLr(2#j?Iie~u zP(_YJ#E>Auqgbv5c&+#rBw1%fmN)~T_~ zbMD52F(t4>jixnN)v%4Zc_1tx=?p5+R=7(+bKdaP%~o=XvPp8w@UxO^Y17KywV-t` zToT4Mk2^`O`c1eABB*YeFjaD~jAW>6Hz3W3iY`UR2}o zlJCEP6~HAD>whZ3cLugw9{y6Ke}7;H4 zQr}GWRfPA*NKzHXxx!#7-ym!xBS}PC%jn4X!doy20wFGniIJr(fbB&*YK=EU@`nOD zGEe@_Nd9zS=LC7J%|{h?6A*vBmyPS`Wh2Z5_-G(pkaQx;jqoPGrGXID^jaf)4{&oJ zL>laCWUla5%KHI>KaEy%vZtsB+X2^T2=g7MBfDJKPkHP|0^R>gWE9mA3@uckP&rfyH}*5nN6lE8Sp#!#zR2DqPZ7F^H>|n(A&coW7Wy27EvB#V=gZv~Ov@zxs(C+@fsmB$d z;9$)&puLr*QnlsmZ_C*#Fg9Of)8hr25U2b97yLc29tNRYkbk2nPW?stQ6$Z!5b~0G?MB zp}!HX0(fH;g!Z#7iTeOPlOpIW1+B#4rsjPxRt1&}P-Oy|vPK%~S1@Ya?lUZ`Xvlf3 zu^NHVGR=x~%`jGXFpf&IM3-K#^$IHZD5V$D8hgkc5Bd~@rfkSOQBSlMzc``O{Kr6f z!Si{d4rt|z?^)a7-O`ZdPP`VZpS=iAwn?I@C$o_lANHnE$&b9^=u1$aC!JJ!hK2@0q~qakkPbQT)s$fdE0+A@Tufn&E8HN zpyg9qNk^gFcZ5rddjdZT^SF~+Nyg6~b@s?ixvu{vWi`TDQfZs1y|$eUJ(T)|s3oNc zIouvWEs)N$e1m47DWcmFk{sTcsG8K8&tfh|P$hm*iGhe179?(^#9}v+wv}irxCG!> zPtXQZZcE_YG{n#Hn7f_As{AhT*1K1My@fD@wZQu5!voDC`w9K~42-p2i#`mcE1i;= z+>Xe)dht6BF4}1pc3>Az3>JV~vi9e{`v5VCtSqb)^&eg6Tm zmwCi>Nnrc_1EA>v?m_qxkv?Bq{`~}fCzD{V;ybZ95(49xk1_3Iyc=7hcOEb z-+utdY_RV?AmUGI>YXHS-+zEqLj*zGF$rwne*n}mz$YZIuA@C1&@ll%DS>qz?HPbB zOTkW51Yhx09<YG9vRCqLoK8zY#r^%(EkD=U!&9+OiW?xL}>iyfYuPcfbb3? zjdirr_!+MPwvLt&#rMDyh@b*}MW9^!tLBJqLr9VmhmT)Jdmy6wc*u=qT8i5`+Tp-P z23#DFircp#{tN7;6s}4%eOpI+9|(^J(tndgY#r@ez&;AN6uu^6>uA3Rwk6<{k1e%z zw8d!qyCO&?1$R+OwvM(Egf5<>RVA-nNkHpJl&lmpr!2h4&T zumQ=z9DndD4!TiKR{E%T9c{aNVVn$u6naWq2XEoM3CY+;9IjP=8-jULNn1xd7*aDR z$%E+UYSxe>r0o{phTtWTBUcsJI$FxDOv{QYQ6T0h{R6d>SZ;1AsX(_SrfZei2&^Uu z*(q#n;^i%~b+jE2-Q7d(R^p9Wn1HOQ)6SVwy#D?m%c z*3pvWPQlMvWQ#6kV;yb(gl+3+NpjQhGlOigOSRcLTG93du!Y1$o8q>PR^&eh_F101 zt)rEE{|fA{JlxjN3SRF4FEE9iNBWI$Ejg3xHjghub<@ z!KVS65pZqEejV*2h<}b4^X^EuR^!*vehBcZ6v0Jp%deyT1B|VnrH%u?j#fi6qt`yqNTp~OP1aIB*poHSeeHUyb&0)DQqN(Ad@PftW_9W9ye z8T`CP5w?-I9Q-=kPXT_DCPeFKne5*PHRq=cjn>gJm0f{0CnHJ3TBCZ|#rPf|^zv$~ zC~Y0BSUL>YXu4JTY#9g(lTOO7qwNmxU{BC>Y)!^VAxVcc1kgDic5-z| zDq4)Tj#il0fHghMl;o6Y>u81fI9RWxnbJ8b)7H@n^9!(kNi(H&M<&=hTA|l@2u~9T zS{gLgs>{~V3aK3k2c$@nExQWeFn9YvFop#d?+Qln>u4_lIMx#k^Xq7*A%2d>q;1ES zuwO^J5R64Bma1vu%!9ZR;17Yo0b`^ltfMV>7?a-+G}DsBq>QAsgmtv7Kx>iOTq?r;LSc9jy@RJ_5o^NqzZsw9OH}H-Z)uhm6+Pbseo3+#C47z+seebRDg5 z&ILX$#c@K^@szEjy%~gi6B2tk844@Oz74Sugm==UWE2&?4Y3gnhuf?^|KmiT|D)QL z=YJgy>9--IS84{CN-xKgSWZN$diZz`4;6{?P>yW&C|1Udg%%mi*TBjc&ZHI%oc`^n zn1XaqOybUKLgJ2a=B2{&nXkZ+hvPO&n{S7g6MFn{3(ox0<7F+l#eg0!Z_$m**u^!# z1*N||hNqh&zkp`(Y}Efm){v@a0}D!bL#?G3lejFYrJn;@ zgOFZO%It{YEXZg;NWBF%cGp1#XcRvZy>nlNXM=#L1}PRI`}AFgai_C$5WH2%E8wuuqmr4szv7DqYX!s)S5-1kU98h%g6w! zRdDdJ0`vq9J{s*^SpACnJ`*|Ox;~jW;ts@daK!N>IO2Gca>T7dir*k)JJX=p5w``g z)j=1;9h|`Gh}#j+?g2iWaO{Yy4A4=8GPzrzPA)e%;yM*Yj<{W(LKBgU^&%(bh`StG z##7UPBzbkj-GbQJ9&tkwSRHXs0(v>XBNA90aUTO(9pKXwSRHYj0ab@tlB^@_L`87K zZSTQ6N8IViSdJM|505$GMnb{Ci0n-&Vl_t`uZ<00Z}AdUIO2+N$?b}u1we_a9C3St(KWCVM;xzZal}b; z&$06gj<}((o0IKhBro1J+93zbf*h~`$w6y>Fa`(RsApS8+(H=eFOIlng#JH{ILVuI zP-W(b`xa7rJPS!4L_gQE@Y9YsUIICCRe?F;C^zEY6m08=BYo<>(9@2%d%(IMA$tQG zTgnmlBBI~+kef-ov0N;0#IY7!j%dmew+Rsi3r(BjQ7q>jar&6#zt7qfto_n5cd=Na z1mS~Y{kt4_D(!u6!x1wwNZ(5%`-_q0gZnSAsR4h0xGL~IxH$ly2m~t7l=ZqYAKcp@ ztO_J*5mG#GwC}TS25YqQbD+|-0^J~)!xIQ&c``w1o< z`{1bTPJ}r`rRm2$I0`?H@G4P}RlDGW8@vd5wM5JZN0M8QpP$JVUCM?JZdk%L9~?=p z;R_h@BdBiGWBUole*pljGu6d^JhLd!5acA54g5u?}KZP_-@3Qcj-c`)p#G= z0Dvc_2rg<{-Ul}tj4M6MJPr1JR_&I6%_c6@t3@39;GP5aO2AV-xaElcicn&qRycfc zJ(GrLJ~%R6;Y;Yx5w;P55ALW$#C&jMy3Y7Hgd#LBE(h;}8w~KYG$HcAG1)7CP9h^Q zH1feQmDvdM$w(5h)~G%>G5!q@7LydUM)SdmrQZVk(JM*&;6%RW%UJ)05X+knPUQas ztQGO7D$EBb4}}K<>zyZWKDZ*5%_+dn3i8^Tybo?X;-`4oxSe<(+&usv3WR6bPpAg( zgL@s|JDy-J2lc^8hx9d|%^r4gbxCW~Vl*F|FpFQo_y<92Lzt4BGR+4k%#L6kl4eTh zs7&+033Dh|7p0j=XRCDc!3q6(P-mv-X&;=Bo&;f0iX_>xV(~t>m0)}uSiCD3!TaF; z0a)!-U+Y??-UrtZ@y$J^!-VJ(_CC0-U>uraX%fK)Hw550fgnD(L{0F)O#ov?U`ZB} zG7`Ij5AG4ro(oj6%*VDs=TOSDz-1t;^d!U02S?@E-+<*_`?q>FADl27gSFScGR+4^ zE3$`zbsU-DI<3M7C(O&h(h`;NQ_2S?gj+~>F{v-_gPV`|r*6=4{j$AS_G1elD751bp@eMnk1traa!d)4;%w~#n-~` zrXGvCu1s>ncT=T@5MLDbq&pwl49WX$>J%WUJ?Wl9#Jf!VRk)lSj~qEB-9h!rZNcwJ zw*l~GFQMgPd(u(R)qzoU5wdU6hb1mS`);ZzuK?68!111RgbxLBWI(wm9rK^bv0F%7 zg1Vd=UbyLR;2zq1Rpf=^_c_$90WTak@JoB)?uYItsDCLt)W6v}PChMqJg_qm zFfnVd%zG;^NmmT!k#5c$zS1@ttchNe4v57^$AZ8?+YAdKlRFg#2OnL_H&JXi@phc@ z(Y*mRi>WHR0rsSPbYCI*M-RCo;<1me6cII`v=l+4m2x^CP}E0P?h*5b!+$6byib9ccaresSbJ9P@VKJ{*r@z0S%8 zZO4<~KIBQteYh(k_CUxsXIaJW!;XmU;SpDv!0J9c2GGy|cO)FU56=rwXF{3WGGxuW z52qDJ?!yz_f%}kUp6NwS%6<48w7f!12PDa>`*0azzx0SZJb~4H_$wd>#UkjAN?>&# zmH{dc@PGtX_hBWV9w}H=1oz>Q9<&QaGd7@XQ8C~47e1&8e#6kM}WN? zaLUJ)n)`4W2x|k0IdM@+=05xjgd8ps$*xvak(3m^hcOi`#ERA2hrBjgf!)zdRN+4C z4Qx=rDN&XCa1OwBl)Opb>D`A-AvKJWJcxeAu<+CFLtX+oa#ex34=Hy~ zT2@qvf^FT0#NPWCdfI)s2CVN9vg6sm8%q;_`;fKZazs<^!?uX% z9z=K)%X#-#DJn-TLaM@t*b%JWRWPgYAr1p=)V5T! z&-)Os2IIEC`VZQ>+NZhjKE#K>c-FJ@nw4Ry&Eva^7B2<-c$x?0cDb>_eooH3;7mmG&R|5G92VF#teNS+xs3 z#9cpwUbV}7h$Oi-_-RkJ=u$R(h`T3j^C6Pt2H|HI*bf{WUg_aVLn#v;$MCTu=LF<~{Z zwZx+;h<%9eBlN`xil=;tjS$_GP-3B0IDCkACC%1+h-A7W@N;ZcBJd&3PejazNTwTy zpUD)VfpIx_AL49)^V5XLhsb1KLwKKz#L&ox$W+!M{7goYh_y!bA&T)uA7lL&Lfjh7 zhbWe|1lE>#RFpQ4Pvj2+c2u6c`4C0^3}ENx$(s*Ro)9JhyFO3ee2AOyT;Lu6_DGP| z*5rMNZy^3dFB`WL??e0!;4gvjFv{ARoA)7Zw+y!&1kJs6s_H|O4yhTSjvjV$bxCW~ zVl*G3F#CcvG|iOclxaRhVU7lCa+)cfqcY8hD9n4oT9{@^>yAt?AEMAd26c6cZdZoQ z;}g=KAQUdQ3~P>>TxZ)^C8lT>=dx>ATwO2RrnBv`65_aqB4F;`4ENh z83|7$^_8&|;Xfn(Zzds~1xJzQAJln#VsO0`$U1^@7-bxt$0wXlzvkPr2Lno5iuD7`&OfS9Fzy;I1Z+uTa2HjgiGoDlL9dRr6~Ua(53*#{!7Az$WbYR3e$hd z{AY6PlJfkQuFcA#<3QE)ktfr_InfsJB>_gHQY-x1KVV_;|pNgdtZw(sXp7{aX zfh5&`N$xS{;`}0n>>A1|^0FY45PP#nv=u7+ioo{+dcwo*J4&MfsQ6X!yZ?xo_kgcR zbHokL&#T~|ZDu!0aTbi17bXc- zusXuTH?3G@pXx00pxcc}R51VNR8{x%%)Kjq-}C+ZJTp7f=Tvod?ylQ2136DZ-*5;O^sNKH-&U!5N%%>ALh1T$QJIIeR+EcW-vUGG9mQ{j~2Z0tEz=)hb!r8ql#jy#1EPPuQSR$5$)S7!I&71U7??FWQGuP9Z(;SW^e`Hdc6vyW=iPb_#@+CJT^{T916MgwKv9q#w+{enh z0TNm#(6k1D6?!mUSV!D_Z1t|-=qn=*s$y!P)jH`9s!s-{g_0g5IkIc`Cmp0>hHm}x zAfa3PqttW!QDcyLI%p+f8?jpnKaWlR6vJolCMdJi@c9Kqzr~TC%ZWj1_{>9MO&kKb z1;pdw^Hl`21>7-BNe!Rd1KZ8x+P=p#C-mLg2LX}lCLal)0Xj(M3QUmZb^ViEbt{aj zeL2jOO`vf7Y5F;e>mYsymG2QG6+cDsdB7G1d<5;6{<{9@P9{bi|Gxz8MiUCZJ^qTI za>OWV)nvXK4 zKxL~s4aOq2v$cY?uG3{3P*fQ|r?a=HB!=mV*I`zMERf9+2_k%C+njceM{|C2b zz0WbtJ_g3B7q`LvUnL}F$xgtBdX6gkQ#kd6 zl5dbF>j*HWcvemcjg3%7!UX^?3xvl7s^3a?KhCBt`3B|WJp#_No~IwNke`9-*W_jT z!Vgh=2>ese$?eai)ZZ$<=D85B)1al?{^iyjJ{jLFkOgA>yuMe&bwDX>gF}`IyotY` zAbG$ncbwfhnY~GkVFeG9rTCK-v{x%SXFNl`w06uH50#~6JclE;t8lotnALaTN*jH1 z%y`&f3IwGaDEWgi#XnAoJKmZ^sTogwn4^(VR%1-fcxXd=k`}Yv6|xBrZP`9R+Mzbb zFUCx89qk4iblakO`>)_cV0L$_kv4fWM9#pGU&1u9i*dZwF0tE|Ytj(qZ!7$p0NxY$ zU(pPOb?x&kpjSPtHE(l?ZIDPW2medJD?G)?hdST`phcb5WCDJ1$r{dpj* z^(#`>kMX&BmW+VJ}WL z#M=7PEA=9_2xhnZIx_p&r_F3$L}vF7B$ypYO;Tpx2TtFQ&Ms;8Nx)Wb_AIh$Gds2j zX1^OO!YDoRIWwCVk=cI+63h;y4N_(wvJ7T-KDVUVU4gCM?7hgU&Ft7Bm^}mBP)Qce zH?w&WnSFmC!R$b4nKHX2W?X&GIIpDH-~KDJ>p?@UX2%x6?Ec^evrm4(%;rU8_V_@8 z*@3iC%ItS(_M#aj&Ax#Kt+sAIOIB^U9a{vm{|pwPk{t7*nazvH>{b}nG;J_DkUFHy zo&iqZO=p%gdmmt{H~V<9YBM{w2xi|OEP~lbE-u!P>4K7G zuLW%NW_Kp5HnU@kVD@-$LnRsil9|nm$n5h231$aUP0H*)!Rh<@g(b~?fd;L%l6*~8 zZDz+7!R%JwMP?tc(9GsVWcCh$1hWHa>y+8|gVVR|#U;%?8QAL0zLu=o%#JOB*^7cj zs3dE@Y-aN!GW)MUg4u!8CuR2d?_u`TOG=u(6|mKty*F94nH^gMv(E=NRFY@B*}RC% zejt!wb|CdjnceCKn7!cAl4dXeS7u|XUAx(_MKF5@aD&;CU$NZgMP&A&fdsPyX~&e= zi)i+S|1D|ujWlSrb^AH8YRm1|BDi^e4i>@9!yBDtw7}PL7p}r0V}4)EwZ(hyzn0tV zN9>@(k$>VB%rE43msOmPE6Ki=yDbOJT6F7@MrU8k z6;fvqdY2;E*K&olHwa@&k?d=^LOKD2b5kV!){n+%U&|Hd&0yV|Vp=}5(%)}|^b!c~ zlp<}SB$*EW0Ky+6g)&WjEtiVc{s}Ju#Gxgs-_q?X^G2ebfNbkgtrS#j_Sn~Q#hwvh z?eCd}+dKaSKOWeb9*=W-Oq8f=LAcqIOo_d_UzE%R_L9eACHA#kR&@6{2;Y#zMCV>Y z)kjUOYE`!8Hous&yK1Adx--}~tBF;$E33=uUPo(s`!ZRDZu&D8!8r04kthqss?8K~ z0}#Hq$DCLu8{3A8x-QC^0K(Kjx;oLam1#K-;D0?q7cyEGdMe?1h`9Sec*2w7FBR_) zk=_O2lR%QFRMQ?xlDhCG2xZ8D{4F#^@u3mk3|Q-c&yj4a+9!#nJ2AGAb{q-1s9z?nJN& z>c+p)@N(rDLBpGsYp#nMCw?Mo2obt)6{Zgx7piX$Hg8hsJsdYdP`xUAQSBsn&o-ld zd{OPF-;xdP2jV(xaOX|f;Le-W2KO8SDskjTttiXc=5l>eZBvA{^@uwpfpvp>cR>9D zd>G+)gZrKVnoKBHn1eKk#~bg*SZ`6@8-8-V-oIn+!OukJ29jeooGLx;)zESSH64>g zuN&OwAoOXExKk5YH@Lq8Xla0_C$MgC{{@gkyrS2go4~rky)mG+DcFgMLz&t9>*PW6 zmukZHYP>%ZR$zj}6WQ1{xL*MM2O)4Gr7mS;3fl&E8h<9Ba|vHdSZX#mxHDS{3|9f$ z;LdE?!XkZQZAs0-7?rTTU$;BXlaSbl| zQcv*)_xB-Q%LezAgjTb`UD77LUcbS;&R_8L;&8l(P7g5i(;M8`1PbJ;0^8tDxiiwT zqDmALZ*V7ecP;ev2KQ&dT7V<}2rJtlX$9eksW|xC`lT5b8Rg9kj`e_8Z(=0PGkDQW;pL#_}87`-8E2V2K*7 zW!T{U!n&|nW3~{%QOh)VsB zH@H*y6C7U=6wI=%w?p!F1CC0Q%KVr4UZ*V^z;5jLRi|Ur& z;C>w#w|JJ$jQxvh#e{jl<`a*KAl~4<6xf#mm*4IEi)#NwaGmm$g<9a);NA;U8LJ+) z!JSOk5vLxdM6khq$3(<7xRdF|;53mUG%(Hwzrp=9fHTsBXoEYWy$Q!XWF%P`ZE$BS z^KraEMiPnDMqLAn@!x{5f~2T6+6H&Abj^xKJYBt&icVTt`t6!Qa(J9k5xC?VXuqLLN(m5*A zHnblc!A^oKy5m!ezCunq1)dLM*uQY6P@Su6A#-1CKeZcQATZjK5@ z@EhD)1Kh+D4D%b@`yhOf$8@d`HDSNO{Xj4dPq9=@*x-H!z)J!_7QBg?u)%#c7;^(l zl9=R?)RwTp{TK4`yh%7}O-VHG^D-BJ zf3ueA)^`*;)EC#IEJc}>LvXjhslr?7c$IyN)){ZBKDQo6nE zO4&Z*+90?+j(pvp&^ah%A9(76;DH`;YZD(!z4rds^$@T>;0bBUcv9^BuO2Z^Lg5dj zA=xUl!I~J6$mUid?!uG>Re1j^gy-XM8zLUJ7*|HdRw3#s5LEF}o1?D)T3sEBJKmZ^ zsjWg=2R3CjMzzSl{}sVQNNUZjP{_ak70}@UQme32h|XEP;rm}e}wP*FG4T9flpL(xB zU?Ua{z6|v?u7kskH^Je?o0P-t2n0;Qk?+JD+Ef&bm1c7`LND=%>zTk41ilT>0|D+! zICi)_8=(G#a)nJ0;2mx!w}{>-aToUE4P;K|29lFL$R{U!+Q;t@9_ zfz{zQ0MOt74^LoqxQzpJWPnE|usYn%0CY(TcA_FU+^+Xv#^H7k5>{Y>v|BWX+X2wO z2!Tr|buc4S*c@&&eifj<2u~s`6;NJC%T~j16)=Yz12(CT^06=V6g%8@X$a$F@RxqC@f;mO`SZd-gjVBlleDSivnqKE zq#mRsFQU_#%>1;&jZL6Ht|~Bx8|7A}Wkr=JD0a9JYq?e`sz6UW+`59*6G#3WRyOsX znZs>&1ds5LyM%a4X)JspEn1f=5KTGUPD8*&L4;SaTyVG%(0PV;xIK=L*VBSmFmIw* z;c#Oma0T*I+B@8SM@VHOON5(6ONWZ3=5Sjd*hT@rk+>@G4!52FcMb$9(3rJxnZs=~ z2uBAJwFs$%!|iOaW|d$@Q^k?G4ca{j+H=KJv(G!+-Us8G!0L?puJ&mvyu&TOHr78l zq%4aaZnx3mjeu|IIhs|vCbKt62x%t}h6a-4my*okCZxkbI4+QAlNs$DZZiR18wgSv zSf0Mr#=yZm(fXNITrfbYJ82y%$LwZuMFRwmIBLa_eGG`i402cQNwV z;YMX$f%GIQ^*?sFQFu=v!-K5a1&3QV7J%l+Al;Zkk~;;b>12y8Wy9gtD`A_%jU;zB zP7jhTcBwXVxQVt`fxS&!v?*>5H^++ITXJH(iFN4nJ-?{NDT z;GZdii|UqlxHW2mi4%@E3+;^(VnSzN-HAs<5Ifuk0~;1_&Qx>W;WiP$#}G;^)B=aY z?VP0An!}AucP&n{ONqeYc3C1~4mUF0n>a0@2n~$$!8_c32AEqnMTi`3jJ65TR%9fG zMh-W|(j92Ov<|C{>Tna|_XFVouf{wy=5P~BPXuc=?9+_AIo#IARNwsttb9Go2&*jK;no!4ZHY-1MD@fw+(7zlvzo9g%v{LKuUX&UWTT=!`h;Ik-p!5Cj1ZtAC4pcK66kZ^CF#&;PX9%&5FQd zFVZpu+yeN%G-W(T7WE>{^N9B%ZHs`!i?m5|?*@Vw>7x%aUZjt~t+ydk`#s`uEpTNH z8F-PXr$A6$G^M;q6yGBy?s#hwrMyTd2R3CjMp?HsH!l)xxPqjgnH36|7m2n!7$CI@ zUZjb=Y>QWOc#&vy${F-C1jLI(nkJLEP~;3EER|thWLOK{MQryTMG|Mw53M3+(1#H4 z&Y(|l9h^bD3CNsU&Y;%= zv@W4sp(_HsGpNzVku&JA7Vup#!*T=3NjZZy0M-gezF88zI)l0*w68~8y9Ayg)(rtP zD!`j2@Pz_T26R$@w@lzm1-=l_^(okiir@^o+k+WrP(LKBzyzt6!JI)|q5pFPenY7q zj7(v32GRJ6mib&2j{Nq7rBcxuB$c1xDqzka26V;IGYF_N#+*UBBX}=D5|wsc<_tO% z!Bafs1~D$h%^7qKuuB78>?6DNCN;H0R2E7Kt`+>A)5{Ws3egO7Iz$Nq52y+HC zM73^-L+p2yk1aK4P*)K82NF{v%(OFT9}vcRQpOqd9qXEAt2u+%HqHh6GA~iW8FUA* z#{*7@QqG_^!1yq*5@!(Gvp9pKx)<0f24~R3EzHp~8G_>Rp&fF;B*+CTkX$VE7tN55 zeW|C|88o~#j4SO7I*QP0oI#Q{_2rl|=nP0bO-Wuvr(w+ev@?iJpg^uFFlP|u%G;!5 zMU^Nhb_NmKycT-e8MGZ(JL1Ui$I6y+2JMI7gFWO9BChKlID=RUu0S;944R36Yl8@{ zV!7Z9BA}~3?+khoAxqMN6PPzqtZ)X&2v8tTrM)w#PFsv|I3yA7NLo6S9j)JewK1^H z0iQx#6?kXRjsS-R0u^Y?+PKUaG!cYT1BqIMRKgi_8CZ9eU?$U;u>0z1(B3Gfntk3G z^c5Jt2G%6hcePJb;hjPCH^L?W9Fh&i&Y{8M5~yCdCdjduq92C(iXF~LQ3%R7TwfU%Kh*^<|sL1Mx-!1@!9iXe6djRH0{ z;3;R&aR@$xP-3ALIGjPvlWJ?uATr&ZI6YiS1kRuiiHJFa$aEj$^bJL5V4M%$8I*4i z|1XY+5IKVwZ5yClkdYV~IfEEWf1takby#gwXOI{_9)u&j8p}#^28pF-1DolU7;erW zk-r_-JsEj(28sLvV6SE5%^AemzFP+Dhm5>Ag9hLgbgrsHKGzV37NyoE?+j{(@J_@e z3!-}Bok0Tt4i1E~lTOMzgAN9Gm?xy1LDC^j2XvW-owP2AMYGYILBhNjta)jsM5j!1 z1_|?hu)aw%rE^rKIfH~*xhYn{I5c?@yVUN;1ak%ny#~~6QgkaW+kGXZ;UFB6B1y8W z6?$jT$zYrvSR56M;GIF&0=(H14D-&Q#}U5JV^X){ChVO-pMbGE#ZooF8C1R*e*eUw zsTXHZQo_L*)Ey@!pWYb`R8|EQF;DyV7GZ( zYeZDe<_r?%Ghn@0E7P1ov?9M8tiQ+%ok0m_kT9EXj=n?EC-bM2Ge`(MNH{+!FYgT6 z9pNKzXl8O2nQ{h+!AAi-xV9Cxxwa1CsPgyMelom*Y(=CoTi=A7vIFzhF^O zoBya@N31G7+!Q@h%71hlbl;65|2i{0OaaO zO3~~6N2h?A_>ZpJ(mR0QKe_?h)ForDXlx1LU2(Y2fw)n)O8iIEQy{3Gno|BFieHct zcf9=v|It%{O<9dmEi(TRZFrB+GG>KB=0Bn>zXV9F;x44oK0^49Xter|{&p}Vm)jBP z*Ih`UNd@VSkQNlOR5MfDs0LVGrW{WbV?oUyGK(Bf)FgUmQtv`i61J23#PM`UP2_mm zt5f258iDKJc;ZcPJn<&wcv^{g{=||0jd8_}r-qh&gZ2So*-G#5m1i+uR%C= zJna;qdW5hy2a$Nk(_33aj;ET=a6B=ma|6jqIi4UjDV(5e8pOJH?8Rl}qWa7eU{uoD%*@wABtGmfXqj&M9NLF&;k$J3@z zFcN_WQff;^rm#7lX#9zQP9xldu+&C6o}|?JI(;>i) z3bDE_qLiEX12O{yV| zq71NINE-p`8gNRKay;z}#$JJyIG)(L#qlK7y};fyIG*nBYfhzaVX%0YXop-d339;- zBp3bt#U;4tOFhMor#B#8i{oiIq18B^ByG}T`p5qMhE&h4kmN;l8pO;`JD%7C3goH+ zb39S*gxVAoJDy0txfXib@$?v2^Kj(%WMxY^p58(5QV+TPh__@<-WZN2mVzq~O*x+G zZUxr|4$#mZess06M+o=SVi(=>#f6QmEKr9;J1 z+l6#3u-O5hKwK4g$J0E3uLlAZXw2HU%<=RE2!8|;wFs$%8xm$RWeSd` zo}leqOf~zw<7s~|jts1aQQy@*O@((nO$Xyb&nk929Z8F41AoYKoMe?QWz6v;q}M=r zKaeE9lw^)4A^ie^>+Tato6KnMcxnQ$T_8whV3``rJDz%hF(9x+jn*7IPIi5&zU2*D3w&+%E=6DiqLxGJTE|w{7jwg{n z8rbm}d2>8Tx-S8CWd=9Lli&{mdn|*S<4N?t4eb34ZjL9xe*yMK1~+jevgNfop2UQQ zfjvn)DuUSYvDu*#{{u&n2pmt}CL-o| zBGV1W=|GCmz&Ibg98d_Q0VGxFwml6AoWzz)gCo8#$et{YAR zc2i~6v;7J)(XAj=~pny`}lNoR4{^fJT(Q_!V?Vhj;F2&@9#04D@0A$JDx^>F)qbY zHNo+80>E7}w&^^*=6j{U1dy>wn#aG&;4CI1Gu*c#-6NKrO0vs&2HsExfCC zkryNt-hyh`qEfY6gR_}^vaGM#qbX;bg>CU80FL|>2{N=Hk(LPE)Fb+uzUBlWxPXkxAmamaYz8?@5ZZWAKsJ|nCJAyQ?3xYaAsk|)MyQl2LHHHGi%Gc+ z{FrjQQ0_E4S*@~ zrH^tvJ&D?AZxO@Wx_f~w9vXgoqRp#0cm(l%pF8;GJR{-Np!)|BUc?$mywD{-U+Mh{ zIDL<}9LvG}tl+6vdS3x-^>6)rjI7$;`YDl_MR@DyvS5*a>!)-P+u#fI8|?r?dL9Vh z=0-H6$)YOma@0-&U!dnr3vux@+1g28uvvdNB5>s8n<1Ow>mlhc(C-3l?|{!`)=0+t zFVJrYi6ej?A2`bpyK(Fb^yFL&d{*ET#)2dD-G71p0boxBoDznQa@9=97r<8HfX{Zz z9Fu{IPI94^^Knrp&y4O)I{)e*FB;(xg04SNzFr!iqL-{GFgL^F!VfY3W_5usnO^&i zo`VrQjH)`(FokTR=R^b_<003R_*lknj|=xjz)ZkbrYYk|QAhpl9x)GOp#uUENBvqm zdQUqX^(-XyeVe2HMQ~T*aQ%U}H3lGCr9$(|0@PC=s3D~s^%U;`p+wyA)+9=8^gKAQ zDXTH6Mdqld4X2T`6SG1gbJWw8YXYQJ!BHQoGdFtD=#;X2bAco(sqRNTbhzIf-z-~K!Vq_yCw-pJCVD-262DD>)Q-y^DX%-Z{|!3IgAv)J#UEu=(3*{Bl4)5x#=3R4V%0 zrSdae1hfaW{lArKrYFqlU9*X(VL;B5#=R608}fBO&wkMfYak#Q+*{`RAQogDCF zJa26N_KShtn8HY{3k{f_dnrRHyM z4#F0J#FPlrl4Jh%ejp6;BrPiGhWVPkcUjjoTWzB!+s4sgPxBHw@TzU*Z@&cCO#!Eb zl5}nCU$gfZ7|#cmWTTA9Y|r9vm+D?%rx^V0dkr&R`o0hpr#kJB3noD>Sb^l?L4Q$+ zyy{Cm#s2o~c7bs+_m}P~e(HBWLaXt&OWIV@HhLZgso9j|MRdB0nVByO&!?qBrCFQ5 zz2P9Z{%}Yl-9qB3!28=f0o*nas6b=Z3T*!Ny+AlLkf=pSCH(Evz`CRaGg&DHfBS6E z9xJArecs>xIv7g>YXs`M+NY`T{`OU1l&ILRt?$(X-g zNPR)rIglj3lw|&PA&mv$h(MxEX0-RWp9%2NK#x8DKAoWK$_TFc;XzkMrM ztTEeb_Q-S};q^4Q-_Wt#%&L{#d3>~E*=Kp?vX zS+xuP_R%Z=wafhNB)O?Lok+ImQa1eUV-vRd+evaa;WV3Uu}ig?zg@IF2ka%{qD^u0 zw~PGez`n`Io4;MsUAYI|1cM{iZ~k_{Hv+b41~-4Z=W`Ag{H_``a4~!A?jVngvlk@&5KL0rm`pkD<@1oAD2R$ZrJ8r_> z-~JL9@1$6&CivUG1^8zmaKad=3I6s*dtoOa4y^)`#3YZTwgi8BZ_suOROx#p&r=&c z$AECKC#C)ERGvQ-*o7X~8WEMV`P+qg2Uw5S$~1pFt;oLv))!=kc3Q&UF3dW6qwkRP z$^5Cm%!TYVdqQYK!skhOd4K!X2;UxuW)r83DSx{dydUs`1BXE=f4gu_0e(S>jUc4X&E)U5ZJP#smyWYWlV%X+b(k(*p@f3M5`6N%|R_ zzD=$wnWVYER-dG$WYy*+mB^ALHQcB6By|lKlGJ#SCF#|4lJ*HCBq@-1ktAt8IDHSf zx@3|r0=D`jJwR4%Ns`EtlK3`Q1he%s+3;7tvKSq2LRxEtPd7-jZnLxv;}_b+P3&rx zRv!$G{IFB=IbT4T+w7~d+ieNX z7OpkD@}hVJzSw%JSInEB*zr#E6|1U*Z+;P^LPL6GihV6(8Kc&;^0TYW_cIdTrO2#;6vV zbCfn*OVU7Cly;8Nmd65=a)Ew~U~z%+W3-wWrnSfgN?5wUHIOaQ*KHG#=sdOpB|ry;2)A?FSC?B{P`Vp($KA>36uLcu#uK`akPK{H z?o{Yx1fPK;KZno+M%?9Ig|0yGO&-z=94z=_`fJRiz@7`ZsD8(h@RXcs#)p8vN>eoU z=QN7HfUSY#NbGJNO^^vrmlpb>v3zrY?E^tl)|ydB4$YEyT1Xz{3N4|_I+lCtRPPTV zZISoZS-0i(P@G^V##om(f%T)#I$cKRCyz$nQj;6Xpe{e=r8e9IiF;_q^Dxo9MmrV% zN%7}^y%zAdiOW2!%PIPzt@kLl41`|-X-`}k>D-9a00yj&Lt{FeB+ZdKl;pMq*fS8Q z*a+|B!9_hB0dO3S>m+yhYpLpzY)WStGs3b3o!He73Z2-fg>1&?uth8(Jspz{e%^Yz z<@lU@r0L6;)M2cV4q$g^z54Fe{l@rSeTa0vTsd{v-+FbrN2K$W^^`bE7(+)#RDASlRYQ z$UNW+(;WHTa}}zi{_Z&%%mT~Xsu6w_b_e*nhAG^>)GHOE0e%(!3Q%9N!>_{Bl>90T zZFQs{^1lji2Z3F2f6W3JHFF_)mg*e?eGL2p9$suE+n-0wA}Z_{TLkidufa!TJBR2dWuJi%l#5S z*Lv7JMCnwyKZcM;fIpk&NV%te@5Xj~P?F^SiaYINQ0|+tH76KeuOnPyeY2t;EI8{4voSDL@TI2UJQ?(1A z;z=CtEo6gx4OeP6r)uZrFjXTcDJeNsqj(u2NW>j)O`_CPZOg!>ti~ttAnNTc3^^ySx?& zcBNk8d%ndeDcD8_MTXq5zZoJs&Jt3$n8a2j1uJzwA?+KJ_>y=b4Ih{o_(AmyaMX~G zqb9Yq1E0Uv@J~9tO#>|xKB!(8B$l+VTh}+jv@~Dk=cVP1-9h^AAf1-rwp%YDX$_ga z<-y*FK90Dhp`lENh?YJYindpb^s>W5)%HB9`WA3x z(0P7cduz6hapQWvj|`O_x924Z z=U3{73gz@CCq$PkF!rQqyMY&KE7x~Yw0${fCZv61(zf%A^w~v87lC?zN=%w~ijnx4 z<4DuZG3nbkFn)6)bjDjLO)tfyUW<(M%bO|E4>4)nGZx(|7p6$-jE_?1o;T9N7oF|dX?aZI3#Wv1=m{xJjV44X z=fi01!#H7Y=o2D5@r${%)qy~$O^v&cH z>7|%d^}dnXPD+t}h)H||U2Mt>0qabRvVcFE3rRXTEf$W*V-GVDN90N9Ep+^|on>vH zVs{+wGIls)aAl(@M&$R_$B0Z&dXSPMGQ}@Wi96n!M5z(^>AWS*j_+zgrEh&Zk{-FKV|ok)>J zu$;v)#xi zv5ixwEJC`Ic6=!KVazyZd#j%^JR1oE;mkn7Kp5&LFTAEp>Qp}%NSD@WH1|cTpS>|v$GMWd7UAdPxCBRj!{5ttxhJKT?)SN{+^q=DgxdJ6rXZ2Co z5-#jU7p_Uw?h#<_BZ@4;Dc>6UbfGQ#XB%B3I)C?&+vziFv$@=DV%x}FVF20|6l-)A zJV1iC4#7_d`v`JnENS>(CyeoANK<6@?&Q?>4?yCbYRFC}mt*MZB=W)#zVlX*YXV|% zZ!6G)A#PE%st z*CPcl6)RAmj#t3DqONw0ykrZNuQ}y^VL`j93Q<7iTSI{)lQ(j~FNirAP&K`SlJt)8 zWJ%W*EPP&Bx+1e~C^qX~q^rBeMCN=S6K}MVN)@bGTqdTMPql`q10p6Qyb$|kQ>J)# z<-{iswEBA4ZM>`w%aG-T$jX~L#ak;UzMk3=S3k+~X^{UPmwNY(iGmxUK%xuPLu=nU zyGYvDx6Jo8^2Xgz3A(fhqp*)!<|({!9SWdmfkmcndQ6e2EZL-j%13$SloX^lmBG6~ zftVVI#gWV`j${=|Es2D8*-GpqA@+ceBoHmJ2T6YXf?oSwP^9B!7w)7Vm&A4%tyP)7 zB~%@Y_f?G?d2r@Ou9Mh6qo1y7ezPisoZSr~k~~(G^hKr`C3Q(N+3G5TC&x-0Lo|b#5i$6KSczjux?-<)oMn&R&S1w7BcWlwmP}g z2Dhac!pt5Ki#b_p##(21n7J=nPoq}-@SfzlTx#`+a{W1xL$0%lC5(C|A2t=pi#<@ivuSsgqSjO{qo#Bo*nGh)GiDmK*F(L;1-3R!___EzQF4btMz) z^(xEl;>DzLv*Xq;rerhwRL^5CoTv{I8Oe65Z8`1S7~wMzYwZ^f|F)T~^Ng7HC1gX# z==dv?oODp^y+k-&PhEXe=E}WfQznp}SR4s;5~VKWF=OV1Bv)QJCc~_p_(D$W26W(L z=*6*k)W*w)i?OZIxh(J$=6BNDC;2GPz{Q=%#+#StmU}7g5^=IsM0*CyYBt<0PK&Zy zZDz0-Uu(lIw?z*LdqY9OzHkflWDK@KwM7p@{+o*FUv?qoHV{z3Uw#D3LxOJs)$$8A~OzypmLRkSIy&vy_u4ks-MKozfIu_wvCA8D@{C8(ywthOBiw zaw9Z4Gpgh6-})go(Ef;{`JTlJ7%ZcojP~i1_BG{~iOtg>EA4}vaG^a5gREovQ^<3Q z$VoSp#33^US?~8AtW|&6>f}U3tCy|sSVucfH`{n4wuOsK$Hnldj{0WF;5}m{vZP2& zbXLHBJ_QshWjfQHc+^wwiu*jSK2>y}ybyzC%||tVll_;R8h#hL7Ms@5H~kajTl?`s zzk~G5Ucr5tUziAgQbAevZBfqSPfxMbab%-2LJQ?sN7r;WIpu2QQ*A< zRPY`YNP>BzU2r^8=y=Im^)2M6JJ4T|5;H}5s{tx0Djw?#|dU+`PkbFrvft1r}O zFY%&iU*X|edI?Rmt+(HRz7}VjDM=?LS4ELO5At>?^00kF+6HJ-WHUX=b9jRsKTQ0d z+UD7_r3XibJP3(Uga2(8F|i<-iS@otGk?YEgp;nb z$03yxUx#zE`BAHx+JD+2nO)!EUN&@_;iA_5Q_^a4)r%l64U)e$O24R`qc)ZY)PF$d z`2rtN7&w!mGF)j9_)5XxRYhWSzPN?&`C|5qb@r{j&a;f*jZ}M%MA)Mb!kEG_7*F8_BPY9z;&K~@y-8Pk3O6b_*{u{)hG37=lb$jhH;$)N=`TaTQcvN=DJQ$9 zv^Uu%8G6^d!1C&!hF+_&x2xlmqy)T z7Mab5*ttIsV(27vKxA;OQ*KG5pAV6_%*P}{1y8zY@6lO@s0}Z)OdurnB-8IFqf3wV zRb=;nB_fveI5Zgur~fN49i*qK*i)+$kwl4wadln-F)0{n*Idn|S|m5)e&-nc66 zaf~V4^mvb_@WxeeuVhT&=E*lbg*Wc+EQOmeS9%I>+^;yLv~V+L(~B)%c;i;!l%jA` zXfIFUja%cw427FZM|lcwT=R=E6z+*V)l+!mYAyyPwHA8P<74hKR}U}1!b1<&VlA}f z8?-GsZNR7d;@sfA+@)TeH?HC`2x|MEo6IKGyTqzKCjz3G7cwnKPBx|1h4)TH60+Q$ z&!4z63vchQNUj$S>(DB0>VO9_X}vXT8K z=J+(T{D!p_pcae)<22uoKp>7s`v-<@52o}oLfQFtBsUw+Sw->iL2!xZ*i1YGisNDE z9X=kR^u41*JUT;$W4T?9l4z1e7=yYtY$I5ftixlRdiE~}kaeA_5JRTg$urRt#eGLsn zhAlbq)&}J5bwMOfPl`1zu`D;lQ~0=wlSfsurd(cRN(XPsS%BhPAy8}zLm&6? z2<7mXGp2k9Q$F$(K3?PG(VDC&ZLi7Z%0}Ll#(-i|2o#&b&;ejdt_bC;S2Cu&2vf#; z3Lgh@@+eT&l)H;eY3WUwl`(}tu_+9F!^b0({a?$N@*qt4#Z&nBl9NZ5vZnNymCcn6 zyeS<3#koSD*c68D2d3nTP~LkzW6H5GWtyk(aVsZ}T4hanuE>-o-joM3rVuDLg`r>h zc!aX&n;BEKgDKV5nziGefhqE6SnQkY=;2BN@1dTu?L3$)j|0YQ)w4a!<&7+8EHOGBa)oneit;N$ zbPD6WmgKAe2a)G;yh&eVmP^T+Nf$)s=3{V^>mwyn|`z6-lI*i&oOQq~Np9 zmq9>sm^bd{k71$arukX9@Os57<&7r6FUMp}7A?%m&Cg0^<&9Lmx<#XOLbiLDn`Ji< zDa>(s<8JyC@x>HA^R=_5@X;`L!?Fy8&xRf5DSU*?eUPQ_8L|sJMIIZ4=?7IUB|CwC9C1hSk=bB#vaErK^uilhwy>UctXueO#qW ziOp`ddsA>P~5+8F7x6;?G683zt_Z&fT8F zeIUB+mRBjxo1P;ZH^M2!S>-wWVKCYHQk3c4Zpl`Ru*lgAkX4M#`X(y0sYUW(Wila= z&n!wJ`8h@MVL5R}BA;1FMDnYO zyJf)tU?!nsg3egxVlVC}=#X*j$xq;_eH9@#j@hr59Hsx`iWTR|M6{4Ihz)v8YO{!XuY9>(KH0@Xaf7^T3lD#+Q0Id9#=N zd{Az~-_Kr8cdQYF$YILyPEYM|rP7s%gbB}=lHnY^QtLHdqLsSw_m|IFDghnM)~+%7ekAM>P{)u7rH zd|TX>c*fV?@SFtSpZJzrL!KvB}d@;Q8a&Z=V20^Z21ba zGTqi1YrW_1@?2j?37H?8a?SSe$?NfOGW$BjYfikqyfSa^M{7YQmz(iVByZz9PvY!I zqUFZwWWuC75>v_g*^6+pBqFj+Ety2g9@&)0#`joGZ~~>VaF6&LDVA(q)d!R>1-A{8JnDr|gWQP-JPk*F_CClCX>Zhk)ZvY7d^bvgQN+1_e1nSI zlL(X8CetfBWnYNKl%E<_HT2|z?@swF}L3#F2P~rv70f40}#n%u{wxYwMTnB#av^%J=N4Y3*hgUihEx@hH`pvh*Uh^>qqSlD5^(ptOF$4L@t3T#5jIs<-N;Gh`zd!0HB>~bq zrcV~R{jf@GJj7bV)adzc2LH2v!~d{K=8QOAoo>Y0d7p=6HWE&0Lm2#1u_2rSh#?}z zJAL6JZ&iUegxI8oO`I37I6#QAU*@ssmOsG&g@ve{nm-E8vScW$2E_ z@A=w+KHy3JIDX5k6^0#M)e!ZmKoJ?kx=hgly(ymW`5S?mrxbrhPz$QH!Tbvj=5hbQ z*Cw}m&>8`6+&(8~8Uf!Ty}hUK#$7~;bdKeggsH$w~TW25=X>UX?Fym3364vQp18g7#e$}7Ps8gzAD_2Rh|xuy?Uy2W+ElVy!kuAEVk z>*Xop9pNcOnK-i|H_B7Q0m4&?a==9uxl=tw{1-f>$K?lsOAfI6kQ@jO(rDX{Jcq^kkEJZ-Ev-O|^*%WU zUk)X!cZa4%+=V_~R)ta(qc|oq%OAFw*g9+N4>YEmw3%)K5lL9mOh>|IEyxXC3uE{I z@Ej32rOLVG+=|?Ii5VWmjd0_5(mGi_L^tBFA>Qqy;*G?~o?lXz%-R{`IBR!B`_a$E zD)Wt4hvQt{Is<$3|3rjTJ`!~XP9oxb{v;N>o1V<+byH+pu*C*>pp-jyEO9!WXTX3I zC3&)}=4j1BPWg`oN203jh3;A{EIU{&p7au-ZiVbf=IxRl;wCQ2j(f2NSsLqbTwQB+ z)HHNb&#AiAqh{H^iYMK<4e_$I)x&6^qVx6Tr&i>qLQ1mq%3G1+J1u}IGSJyR@GCtm zZgS~X<#qkdSwQP(4>av1%>O(uOVOAvMQWFNiu4*6Ek;c0PsZ%yV7$#N8`WY&!Tx`<^c@(OxUP&dFHfKAQS%JHG z9ZB8gm1d}~295u!$Q=Pm`2ZX# z`X%Ui-6Lg{dP+5ohUM7S_muGxiWF?@-Dm+$!fWD< zdtoC~f|x?Vb>>;JL`%M%r&xKtx+Is|4iqtC6{^0ztVphk%4-hDV^idZ!wb%=Rk8ff z^OSV?YpZJZsCF})13lzzyZUBC`~~y9{Tdh*H4Qp6-q^J=x7hQ3AcdzCWyh^5bANhD zE7n||EV}VYzHj}sWd-wHvU>}J#Mzz6X-gCHXn!zE*CIM=5wpsafdNgk`^Y3Q}q=-?=jPy;t)e4(B{+lACV12C9lK+_!ti%x1SH_H*JZ z7vV?ET}L7FlMb-e*U(nM6!iEET2d|RXs?dxlE#vZ0+Q%t0Pt?UTfGQVBO)WAHS7C` zOZ?~|mARK7C1mb&jfMne@UdO(gkzOrrg>mgCy(f1;(-)pjFZ(^RQz^`qo&EF$RAe?q2c~$tM{Ad9vbH zRs50dJI@pEkP*4{NJ6fajHhM+!{-`-CIGy#n&PM`D=9<#OaVecl8WmQJ~%S<)Bv1|Hgl=9zHHzpfA+ zoV^dD4qj+OEB~=fAQseQLcGvV!sT}4<>+Rv{$2P#lORjng1^j5@GT7HDc5ipfGSc^ z*6?Kn@o;jInxd?C5m;d0IGyYk7@%UmsLI@Yh%r?4Dpp-qO(h!;lap#<$WP*3Nlh zZA+F|78yKPu~7k|*yT1|9z8Q(&D4^AN|vFzzf$Y|>(SgIW=3xGcN(swF0THr2%Jxn zj6b|{yv;T28S-ZnWvw7f@+U)8U2UBtrtS-1@sw*gAZXY_HPjFj4RRGlMvbawrP?=? z)NHQ)sn`UMnaIAHRp$roqBxabmnHdiFKJRH#?W}zE|UuKGEr8bxHJ#c2)-jGlNLp_6XlWduQ;Qf(TMRlxO581oEi~vq)AdO0I>dH;I z-c-p=9lfcRn`*sTQ*IjQO+C3;TW{*i&ANKiKyEhBn}%}JLT}ctW|y_G-ZZYy+TAf% zI01HQo-UEJ)WAq7S_?f;GG+)vL&i8J)9?wBr$>1ytrZbILgX(lA+K4uw-)-NBuL52 zmE@zAJd0Khd`b*_FBO%wwqsrWZD7*Mfbl9PQEN0Oxq96}SQj~H5a`-=#}wQ&z8fzgMa|Kg-&Pl-So(??&| zjHw|15|2qIszd(hSxpEt;~z*xZ18hI`pqCsT?RiBq*ny#2%a6J*LuZ_j^n;9NN-74 zN}q`~<*xlP+*KWgfNldST-8;$xL9~)ZL4m0J#X*yFKbtK%UAQcOBLC)z&z$ss|5mOdK0!l z@*>}56!xr#pYqYwawp_w6mn%Xb-#nqFy54PtIvOX;eKBn`9t{WzyD|)eWWEEiQp4F zHjEDD?+-jo5JMXBZMK8y^01ujgUA*5 zo)xp!$TUq3nr3@V>9UxD$L~^Q!N=(2W$bmZz^Sf58OuDYEbr>enq`7yaHSK) zD?t7WNB;2Nz!toN;A=Y6YpVoM(E*28&&Ljx%qtB$XL~SZ)Gu3Gr^b9y&oD1SSXK8D z)yK;8mu5<>E<052nE|IlMDtOZT;t|)EFQh@B==HHG_NZ9RzDA!^+>DOt~tBXklB`< z6~n7!>hVKLC%UU_V2TnEeN%hbs$E+}WP7C?A5ji&@F3YxkyWay^fx&9lbfNNocTy#X z6*(v5*x_D@YMPfn@UXGDit~e{@-GVaS9pF@y85BL4Y#T~=xt0>SOGR1Bm(YvuovRU z_htQ2Xb**!BKTVmxt$VxnBw`j@Pc?8BC1~q*hEzKZYr~lHgYpU$mF@sIQ6E$ZgeN` zDyIV5G?mt^H+`DQazmv@iS$mCJ_4uXgEX&9x^Gi?Uxo^d69I|;I#BMV0F&l;<+f%b zG@2gGrQ9^dT4e4`a6SzZqJ(0){b<9>MYZVp6QO0uN=Zphdf^S94eF zLOIT)bX<-S{~@3pO93X$@oIJDcqKTqgM=udSgIUF&$9?!Kq6C;Do4Vf;P@(_QWP?S zDNH~Hv>G(O>X@A{br|$+Rn@Ni|4CIl`TuEEFZusj)xProi>edk|Cd#l;s0WHz`;l7 z2EB#&aycs4?Oi1363iduWF2wqj&=D4=2rOM5mki$f57U3|M$21Q}KV`+gx%;572tF z%!&B2o~x*FB2y&Zs@4aPl$*oQ#E~b1MC)<#Rb$Rx^!|{{{e;Z@;hFnM;a&!Y*4=6z zhFOI=uw4VX*L;fD^?K`?=K$(;kDAuux_8ae-R(0fp%FqBdp!TGr`;gxy5hB)N__bq#FQ zwt?ceLEh~KY$$QDP4PC0%Uih*2X>stb%ms)_K}i{LAb(`a*B6~lso|JDUZiWx+zK0 zwHO3`oJ!K=cx8!OS=Q~0Byqi>c-KVEuZu&BR}qbT+bHr*AoL=M`4y9Ph&1g5!v3W+ z?Hp-39)vSXY1&;$^68LkLE!hc;^O(atUG@Y(=8mVAySLz#?BR(%l%m7bx@UBei&6H zjz`(5^fxqDybtYn6;-9C2yW{kCqLhWs`O=&e^!;qbi3d*m?BT4s?z%j+o}>t?l_#L z1-53iRV8_&%oV_{B`&rpZdFNsgLo9!a~_XtfmJ0@@(~E1ds4b8iIUt0`CJtai6mBH zRY}s-7KDx@F?y?{XB*yKXU#5>ecUoS%nV~m+#fz zhl##de*&QI)z=T#y=z9`hb0Z~Q!^UZp;zA(nV`Vbz6&6b46TxFOl{H>&;K}TiX6+c zP4O&fJ0C}WAMRF4_3Aew_-+rmv%e1gG6t||xn&A2a+uh@FE3&32O2&h5geRq&q9{2V z*d-p1l~_}hblnZYqa-n1j#o)joRlQanxe$}2}sK+LgQ6LQ((QiL|zBQ(+EeTS4q|s zMbl;=bR#LN$(o{Q+5?1rOKGyE$l`NTKsdpZw3V?=NWGc4J?c$?y87Wl`tgOIM3qMz zNSP_Y^U$@B`u5kR8eRC%b2oiCPKIE~q|&M%;=TSgmZ&4%hfAkR(0=|l?L0bPz)Vcq!OYY9mxA&m1(-C)tJSSL*GBHN!J!hOgkq_6r|9Vg(sm>=C8>2M;eCLN4yfko zO;Xp~NeDg*M|jL7iOMp6mJ%NV>G_!0j=9Ou7P8eLk#lk{1wN9T!e=P(Fkkup3!Sg* z^sUZQs_p*?_Wx@9ANa#JkZVq1TZMAVd}~O$=a{}N1<_S#Z-(+&968yl^Z$Mo`XHWkv|X5d8CJyUI-rGA$J+^FtnWe7mU$f(1sQ=-QhSLO_8e-HinjI3EPGi zlHAoe-4NKS&4!knA@805_6%{cO>rAqSmN$OU|)GW9u;h85hZ0`<#TJ`h?R8G6__Y# z4Qz9d$4YEyk#r3JVK7Ndm*Z73v>cTr&W09=_c)Nwpa_ju5lw*&EfV=G5N;ilMOAR>1z;vE~Uwa78akYkJ``}hZc`i7uE^6So=rRn*w$1%9<8B(+$7L zbf$Yk!Eh>>4VCH6^e_Y;>mm1Gf?H=g1K8yrPj{yBd1CF|v@<2oJ%!T(3Oq~mc@;WS z*&XjY(>DpLw05TNQu;5P)>!7Hc@;WSdE<);XlE+%Zvjdl3NUGoSF7txM}u=jkPsyl zOLeBA=PZPtPa;#2>P!jWg5%DBraIG?5d01f=}h@Evl_>!(w%8J3TkZ}fhe6RL-nh5 ziJW8Vwcnt^T%i*(%KDd%bw_=xo$2X+YiHWu{y${@-^Krd9dJr@rkA4?9FDl$m((41 zre`zsTZGE#|66BTFNde(-a}lzGwlu&eP{XyqW7Jt!+Y67XWAKwRbXo0^`SvJQ^}M- z85&VG_7ur}X*W!G(po-Wo@p(oKzcfkd?lhyx0b6Ae2a%%g9NwM@;I>h9#6LxdHHTfp|y0Tblh4b{(V82KmjJr z@oIIgWd=Cc1PM_>u~cgjJ#!HH1c^*Zspi&giuZvYhVHwINbSeA%pj}G8_3_>X{5nu!|Btr+m*W4xubV=yImaHG zpAAF6)6ng9W6W`v@*zWqFsVHKpLZ#t>F*A^eebXkHcI*q-2iq<)2D$+ecNY6roNp3 z=~Hp!51^5$RmWurzTQJ_VuD+Jn*;1=kEiR~Bqlp<`sBHJPvmF88bZRkABt!|tQuR&r+=tMI zNn}b=^^NdrINk}U=BX_v>M{Ru$oR)fDB~YPTky4OE%1;_=f~ydGi-+9d3GVxU zVDmkmt_1Q-Q(OtibIWo1l>#TxkHD)?3FOfLUkM0U71Byj`4gl!#c3-XD$T1<3GT%9 zX%o;&Ao1@D$^;59X^vN`s{}K^xh6=65{jiNf#{io&?iV_N>Y`8@Y^`v4``|qtbzPr z4~J9&?$wY=z|a=FGg~EQZo>x;50?p27=>&JJ=V6rXphxl8||^af&Yj-*S>atBK{A2 z4S}g1i_e=Kg}B^>G&}CG&SxkeJ(JV_d5@)?RJWS@VOHTI#H9hat4Ag z_mJC}cuO|5cJOo$#k0!k6(yN&9!~QqvU|eDigIAWwiP8w?t7em3GCF0av#XM1}pIv z1srNyYDLKscO8NC@OZo!v=yZ&83MvSo|JZ0ijt#%o$T>giLEFlU6+G!BS}n`<5jYv z?42aeR+JL&LXh622s2hiQY%V{{6`S}Bq`CGT2YFoCMd&JIEpmcic&Q71Yrk~vYKo~ z$>MXPK^W&rIx4bGNWHnQAL>nky3#Aky1!-m$eW;GHkEA1r=(JS<+ATUBZ8Bin=OcEf3(AkC}L zN6ORcDqs^cMlcPOnG|5s9IsZ_N8Sg{(?LQKL9tXHDSF;V=u#4yl2ji__&3TRqZO4F z%}2Cyh0~A=p_}8wxa`)}8K>RbJ9sFJ_XF(yVEiBW7y?t>93LGU0p0pegt(iV!cac@ zr7u1C|Mf%PH8892JmT`*+>5ZtcXN{vz3=9x;yQG5&5>B&&CP~}BvYiiGF3@8H~P=0 zn`0?tySaU!Z8VO2bN&RE>gJ9{@H7wU>j^?P_ckBf))r}wGcw(+INe2&&8bb<=;mHb z*w)RFWW!#u? z_1{tDVNa5+JeNV&)zsIE#ht1=_aXQR54jzPhsv`n9uH1e9x~nMIDJErof9@H&$bEM zDi29+?Z5K5rZ|+HsysuP<6ZtAckdl0MfI(Xc6D{r-Awg#bs7ekff*Pw$^at*qJRPp z3@9p!2r5Vv5s3q4P|T>9QBc5$85O~Rh?u|}P%)FloU?-5wbr|Kbr*1s=R5cN-9PR; zPp{eUUSaRO_S&hsx{7#RnJ;zo1rI-8#TrDs6AeGV-!*u|$mt|-t`YJFj~Ka;c()sV zz7Y)`Y1e8JSkFS-E{jvS;OUfWoCc4S`y&bMU=^-BRD8iBg%?rxl+!2At}l4R(g7sU zhlO^xq`@PWhLgZ4d$Xj$!`)|HKmwN;A;gUDIhTP5+wzVOuUNLOfqM7r^Q8MS>$l}! zGy9guO_cq$VOgDWd|e)CgG*lt(*516>R%oYpd1V96|P&boYkI4H&*D)Y)*O0qdW@0 zERTb7+E^a@vi502&hWH3l$&?Xdzfe^fw@7A-ry)jI&9^*? zoxj-_xl&rJ?GaBdkRt*eyGPkqr2(L?AZBzEH- z%A8xq9>`Y~jFR=hxst@z<}1T3Toe{7DL-->b-1^J7t&8pdBrZj2rKuN3-SLb#nb42 zzZWUfw}N+~j7C9n&^Wf8zk+w++*7$XnEb~MD)&&eB9~BEW(9wTYGhXMv#4aVg3qS3 zw}Nl>6lV5ZNfu-U7pHh4A@YY=xa(o?Xrx35!@clzg-YAwo)L711NaQY7SVXogPI*J^Zq6}7?EwbR#!y?%+8+@4 z%+uzSH`E@`n24Dd9>2&?&qn%Egbxf58BTjCpP%$`G^ zOFgc1ne<15L)V-2E~v9xS3F57&#>AX{DdH1SG-Hvn+?nQAjj9P_>Fj0SXKR9A&+a! z?+TW)S`g{L3g440i&I`#$P+$HSNy~5{I2NE+M|g~^0YbSbw!k))B*)`g_M6iiQLHw z+%$_*|JD`jNM@s_Ax2ou*A-&tN6P)31-T`@u3&b8oSdZ(xW2ikBV`{%ADQ*|u~MiU z7v-PfP9dQ)^95yk)wvZD){9H>Y?Jr|M%83p2$5bqheRk_{cM=?8hg+)4Gx7)$qC2JqiCwM12*tdK9k+OFfmbHxe z;6xT;f8`75(L*eqP6BiGW=VICV(AtV zxO;Dwboa>JXFW>->y1!A!i8f(60hG$aT8%%{wpjK3U-@Jqjl{-A$@||c-Z(R)25WY zuVK+wh#p@j(?f`NnBn^;Q+b9GW;bjhS>NZwy;zW2;+ssF zJ&ZUfd0ZLM{7kk$WIOeiH_ctZUt78ZL5sh z?3?D^=Ujenm5~3~G&hN=6=_9vH`Ck#s-l_Zs;GD~&2^!)H_grV6lV53n=Is8NYolZWP+#7DKA`i<`fXFQvTH>aw{uv(=1N?Tev<) zG8;S%F~VxTa1}e>Qtrok%e}* zq+1BFw3!6H*_$QZLU8w4btoDf`k;FxTsS5qal>mAHxahgi#wUGUJlFT1rJYqyI;LL zhHMREdsSrJA3T#O`z*t<4r0C+JX5#s9y}~*-A?2lRyiamO~ErZC#}K5Le^VEHhR*& z;2FSe{fT&gFkkBC3!Vzfwo++3P)Z-+=l8n?j~LmX1P(Mp{{5#I8BDyB3_st929LDs zEE2egg}7Z7r*gqFG}kx{9x3-h5_*DFxbjf(1&OUeQvvho6Rf4+(jS(LjIh9c zl)KV!@_$%@M||8zBCiws9U}s-betf{{KJxOiSsjaXR+yh*=ENn!sXT%Q00>JLBZhG z3YVjy6>-`zS9J4QIE)N>!TlUPDhJ-yOY_4?Welrb$wm5t`%KEd(6FotBCH&yrSOB8Rie5VnRTjTWgr ze@4$j)(j$Nd(yr|Y9#4fHxTb;=1bjtikrGSKlE7~tFO>HD89fVG zYl*D$qcc9B=9;5A9d zl7^C4Dx{9CPoF(3X(-9h=sS`?7bB!CFh8T`pL_>e#6mItZ;c_T$@K9849y7irVPpB zSds*Sj_cqpB@Z{=Z7I2zEIq{K{`fO_&bO4jK-q5^mi2dzuS>~x;{9m&{-s3TZ&tz8 z)qN7nS@jyx!I?gE&oCiQc}vMbM^cViN*XeNHkOihBx)T^WVolzDQ_u}M;}80ONo?! zA&Fei3fwe{Q~$PJPk3zYQCjJ>};mo&smUL;#*3Xy^B6!ax}Q`sb2HwK-mY= zNA^klY>gJ|B+f09CvBjvQgRpaf_8|0Q9GQ(PRUo!NvoiiGM|K&<_k(GoLeSOX3Oc} zacZ*K;YlBtP)B)JI^HbPtB3`-Uu&uUukQeNrT_gdr%d0KjvaOBXTzjvW!O3SS2`MV zZhh{2CjYT39h0b9k<+LwbERVeRnc7OXh|iTD;@h#+Pl*6qNhMt5y?W%DKeP2Rk_JK z)--SO=I+}4uxgjvff#*)XZ%G>-#(xbWw$acYYy`<9n+U3500fO#*XSC}$T!dZj}w-AMuu?ah)--eT!x5_orSmUQyw?z4U%f!~Y}=3b5o ziJLE7ikk@A>cvByH<5#y4DOtLhatv$;#tZzNPp0bx1mi20muj}~=;yq*d{`Gv*$5hb@j$d8R zSL$WN^B7TK~m<*nyGu!337t3UCyv7YZ@?PksGKqY;k%_(m^e>Ybg)^jQU7!n!7 z3fwe{Q~$P}UraLdJq^wxdD_M|R;#<#|{W^W#@wo7*F3CSr_CNHI^_<@Z zi^_3P{w28$b<_d$@dRZ_=G-z?%hR(yWMx@>gcBJ;-tv~@Q7y3~@6!lN@OP#7f1=`9 z^uOQRl<8ZN52lP8s4Qzcw=aK5ewcIly|qIAV@vW1s#YXObvH}$W~z}{lK-OO&62!} z(%zDMoTo6e=d)xX=M)(a+^XEHy0CTLtSTL_+m{d5leLBP3Es!^pl?Zjh_Y81mbHTU z-jcjIw+`u&%#zkNB44q}lR0UcRo}@;>#WK`R;ra9D5ejjeY5KGJPC9lUT5Y@-F&ku z_qcT=@s2nA{0UKKRWUMy1kN@>{#jLw+(5ir4L{$A&Z^R`RV45t3vs(FPUU9R^|{9B ztSaSxPeOmO3RfN~zFAcY&rtU?rca(-->fQ@x{yFG7TVpC&Z=VR1QIxTZ_?o0C9Wb1vl_vs!>@^_T|r(s!NGT#fH z^K$Eu1`kVG_(a@PrZa2ag!pK)g>4Ki`N3kF@Jg5(tqirCk=Ma=|k`*EkIxDYq>N z?awM)d8qh;M+!fJ1ctE?`zv2a_j6*YmIP++&5{O>SXw{=cka!S1`l_iwT1*py3d@xOufFI54Kc!MzC~E0@+M&pl-(!cW69bH z^a)O;QR-j8r&9JghGm_}{Bj;DdWLcCFipKnAb zVQJSnByb4}al0%|=6k{OQ*PPP6`Uoltwg?LmDV|F3ZCsbX$>A0vXUL` zKt1|E+7~=kyjy8cy#1Lkb@K(!NY+1sc*6`ozuz@@#7Hd(oMnXk!6QblC*Bgn&o`pM zBkg*U1YTevZkNTWT=0C5Yn%p;l=~eC{mCj^d8qh;M+#3<_cWqUo?Tz?h^5XXa0m7P1 z_7{d_?aJ|W1>Z@$=zgl|U%^AaQ`IUsV)Yo!a@M{?y0Aiq*_`rL@J5_tR`8}dZLHvZ zSbGAI8J;$$ycK+(oB~#GDgR~?xt|rdX%?scZ3TawWIpvY#0abTR&cTN2j%|5g4`0{ z3eM~za&ifM!1XP{T`9XaePjjyx;OpkOe)7k`4{0SBy?WBpe(|iTgGa6de$>EiQvR2 zoXBG87jF^1cYiFxMb%h@-#Zlls}-M2|NE_?Oy45hhB7{(vaD`gvHV5&PtNU0xkCP9 zi|`_qKp2EzY_mKtJnTS(lJaDUW^XS$tdGn}r zz;4IrkIC9r`UGF1f##n_|DbHUv$CuW%=hNeij#L=gjv#RL!>>cyq}Y%d9*kut@9`g zSwo1N=t=wL(XBk}Pbc2F%$K_P=27l(>qg?;Zut3Apw6RWWHkvqXN3Ios2KT#cwZWR zz7d^ArCm0;v5-E}E_w-==L-56fRk&S&ZAOpClcz(DqMM}_~ub5d?*QwVIlTczK|}$ zVrdo$T(&n$I**E_J4j&J-Yn@n%H3zZL;`OZAxxhf6B0L{_UA>IZS^vXa9Ov!;Nkgd z_eHotR~o7G33egt{@~e6vok~LIunJcmD!$;6!snB~Z7h_t3n2|2vGf!P ztlOI<4IZ(yg#^Ccn_{e9h&tRX9mXam83lO-1{1$go^x(B zGQL4;ZR$X;`eNeO;ER15jE3)OnYF$XzZ{H+UxUANsdJE4-1j|&mFh_vOjP4uG?i=K z*=Tr8vKM|o?tY5r#@@M8fpg5ERI;kz;2I;WCeXU}BM{`kdc_?}>E#TJkTlRY(>_uReZyA5o4 z;hmWZ_y>c>8V%ns?yL^?QW;GAE$26fTxvADmP;8ge?yZ86V=G;^HoN}cUQI5Vl9=y zWRL0QQ==fS24S+N(d5C})c?L3d0}yg(fIE>K)Z~efIQu3{8t?y&vNWApPGQT4$e0U z{Hic{*Xy2r^pcVJA9&uhK5?2Q#I+9>h780*F z8&07{zbo!%2kO#1Z=Es6&py&)x7r(+Fn*+7%VMrHf(9JQ8y(=(ZT zHrA4KgzJ#pMH$Ic$)}Oc1jkxY78~n|&RC1`2?fQ`V_p2iL27JB?&nJ`Bav7ci6=WS z*-82_CaoF9B=4jcS?}JP3R_62aW4?LPI{!Ka{<2t^){=fYjLBxR8o@PZ5iRbB)|VM z)}G$Q5IcxSQi#BF9m?Z(F~c}r1vvtuOR8273*5^kZBfU>U4mhN%QqOtv`=#IT z(w)*DdFlN#UwG-x>74y8nQ$Ldk*?{amp&j<>ZPkwxpMpFl{-JLJ~uYZ$t=uEFK&>_ zf4GGhmxmic4c*+q*fKiQ#L!|mj{sprZ4kvk|? z`oJAu5dFmT!FbnUF8W}6Hv1-lCFQJU^D=}mIGSDQG7{8t}_9>Ahze6i>J##Zj(qNc8CPk^m z^v1>*r;_`oi3pU`JYpxFLzL(qW>+FUOQVpLlqh*Em%g zD8MKk5gtfl)RI78Vx^t9nn3afBDYIC+(#+7@{7yAvK&s-SFJzGJSKtUI-=`>vPYeG zVvu}856ULDf96TZ>*XhoN%SDj-<-?a1BBqjlO2{#_V?#bkoVfR@N!XfH@lF-<4Df# zN*)3^jIt~t7jSjf2l)-56NlM_?CaB5mP^2b4Lh@g689JGX8r^_!JfXAv)Ro;@RIw9 zx7t$A)kZ}MRNnn|f{Xu@dGfYY+5K>q3fuwZz<@mk7Esm5_kHXp%;eUgDY^FW%tjKm z!FVSYk)U}WS}#~qDYdcA8q5Mb%+$BF;_)e*D^=oDKwj;M9(hQ-e1ngV0>FQ?0T0!c zd*Q>6_0X=@jDR-xA^78a&gS_AyQVyU+zmZ`?<)l4y|A!(lHG_Sm)`}O_gYufXL1Dx zGQS=+KZ4fFHjZBwn`>o$D_)cB8^1($@BFh0yHG3n<+3@xI`CZCJwD=RVe&hzuKOY7 z%LqHoDOlo7ey7C~mDD{t!cHr+S$&ptVxKniq~ns`Q&w^arDYOK9IlffbtPa*0SAGd5O~%T z;8Y;l$7{uFK^ak>8Ud|e5PH9P*%-f*qR7{7s<7)Fp^ejSnlHZGXSdv&B)8h+iZ@JG zza1RP`O<1NTWw7>SvcCFE&VZf-00)Uu))-ZUBIMO;&t@+t1@e@Vh!1E!O%i9Vk2kg zIxUuLK}%sHCj2(zScXWl9bK-Bd_#h*c?p()=BstG0Z0Urd_f|@8FyGrlXH6$=8Iaf z--r{N)`rMzCd_Ef(lI8G&fuZSdXVN+wsRBK+!t9ZV- zfRL0-CGo2dBb<@!JDl_m??dE)Y9dcE;k?!?5)-n03YGLe*-yUAsk=xx`8%Z|FK|_x zola0l?Q}|I2}V9;%d=*Z0fxyx7&hkAHrDuI2Bm}~k0M3`V#HdWL3tgBL>f|FY&E4~ z4C~WO6`0&Sw?Up#+2Byt3efx`y)=1|gvVIQv>qg3s~x4lnzDa_bI$Wv2jo~)DF*YI zm0O%AFG#YsJY-*TV{K^8njKt!HdTkL;xG9w!N{{D7~4jvWS7|l-y)d&k>walwWoGS zd1sfYRjFU8#>n38`1`m+mI=k$ndl0|(|AJ18&RJyqXRI#`Th z9-i781y|>esZ;wVW{^G1?Nb-IZxWEXed^*uuC;w+dHfhV zaE%q6c7CL8UrM67b0SIZ;LAjA+69rak%YjyFp^{yfQur@^#lSA+naV)q@3%o=5tWk zv(121a{A*yE^0OX3BWS6X!?_Yl@2^TeN`Qs&3k=2eNuG5kbmo2>EW=@Izl5tqe5ds z>k2Ip>IjVsO$c>`CWWSiriEsNW`!0BttYftXnmm#gf6@eBD=CQ~#mE~{4F00{)u{V4TKa7cZHkt1+=S*^ zQQ9XTY)IN^65iU$Z`!h<&SfG{t4NA+DTYEu$9@R33KRo+1E?<0 z+du_C?*KVK?*hev-UBKG+6W|Put4qmKrVP6040Gw1WEyY1e6B)7$^hu2~ZYj6HpP* zW}tdNTY!pzwgS}$+6L4B=rcjVhCtiFD+T%-s1eW?K#jF8zqEg&ewDrq)_(0S8)o|Q zn=D`EHGTOlkoM(wKtWji9!UH02O#asAAz(le*)6J{2565@)scO%U^-CFMk8lzWg0X z`|=MU?aM!bv@ibx(!Tr~D4{LiVXvjY)hOQOc069!92-c)u=sCKEffxZ^%5~{u1DtPh)XFE!6kmysm-@-%zL(d{d!T z@GXT}!M6cT1vda1555CvJov5(s|Vi$G#=cjx{a{KtbNpq6i`&27d)yj?dCW@&kG*X zH}I;(eP7M~m91#)2UeVeT|@js%l?N#dQ-x0Kj5noq?i0$4@2=jc*F6YVH1a)28o@*pS zwQ<{h+mlS#<-7zLN!PYl5D&Z1S+(`;_eRMsw6?V!E}|rMp|x%7HhfK2QCqtWf6cCC zH?+%TJfS8fcKKJd-O$yj)Gp_}BX*;;jUcIOQ)3_(dS!MwHzxyBZkKbF2LUyKr}o28 z_;XU}60Q9t6nmRfq1w%%_-fDlTSE2tVx`$5ZB?i~*``pJx6c40x}I$Zqy-F-@@c3U z?_UBn9&r0Ho+gT~~$*__~9l$3pcvAVW3fM0G4Z9cs#xg^r~)kk_&F43Lhc z=YWb~`FWrcpcjD3fL;Wu09pss5@Ny4=UW^)1EKN0!8*U`l)_~bAT)-o89Z-9Sz5&z`Xai7HxZrz|+=wdyoRrf5 zed*8T?=m=P=E+WBJIN6!C#qR94sfp;ua{qEbc;*8%0<>02MWOD*BJ*1z>OX=x(je1 z)+7EGT{Od8A2WK!*;pAk2a6bP+L&>Ofd1h0iZ3Ctfv6!TrN%MfhYT*j0dPidyO6Tz z+XlMS&6~R!mlq~a`QNVEvZunewO#o(Un@LdvfA{m+Ic&%|J{{3?B)JH-R(%7|NnHo zZqF-qxPte8aJ^1^GEnFdLXQ-Bl+Zy!j~052(7{5F6*@%daYBa*9VYa6p(hAEQRr}? zBZQtLbfnNxLPrZ7BXq3LaY9cPI$r20LMI44Rp>;arwN@Tbh6MXLZ=FyCUm;cTA?$9 z&J=pO&@+UdDfBF%XA3V&^1Dz5xQ3BvqGN}`n=E=guWDi0nb7S*KNtFi&@Y94 zCG=~d-w6Fy=yyWD7y5(HABFxT^k<>J2>n&)Z$f_;`iIazh5jY3_Zl1re$rsN^2z*{4Xz9Pp~19sVE)$z7odOsHaL{G(mNvyr%(GYcMq0CMo_3N zG$b@Ew2sh-(5TRu(7HkkggQdwLJNf^gt|hLLQ_K1LNh|MLW_jf6Iv{^zR(6j8wxEE zS}L@W(8fZ`gqG*gCX#L{v_fbzq0NQ1$fGSK-AZU{p>2e=6}pemeTB9YS}C->&<;XT zXV~v3IaNYq`JR8E@S5E`j~$-#u+3eP+u=D+6h7;h42U&-L5lOVy@=R2=sSZfcS$Xu zU7f*J_$Eqq2{}Wo*hQ3*Gn{jrmCF16-WjS8=RaqdLY)7c;}zoY@0_3z$3f>rg*f{= z!xiFm=!{T^v%hnaLL3&IkqUA4cSb41+0hxT5NCg9j6$6Kov{jW_IJi9#M$3DSs~8; z&Ul45P&=n6#07X~f6<==Nv2VMD3glglWi` z4TNdPIS)vu9p`+@et@h<$T-dgmOFTcv3Zf@@U*KXTnrRMd6xib36}!Z0q-));VWkP zO^-9zvV&w(N{BjFSnicx3G;llzDjG2>w(VImOUz`cdg}qPG~^Xxxor=qEwftbE6e| z)w6YzmE!M-0)gt~lm{;^w34h8sJVwJz6JW7lDdA#oiNTVmc5Yjw0?^%_wbog&TUq> zno?BG9ad~VN}+XkdgYW*9?Ds2%1Kd{>8*P#J4A2_Wyqy>=RWHZ!ZKcU)JppQU{0MQ z-=^=PKlRb$mOYGY;;xP1LFZ{}=UFo1H(TLfh=J;Du}XQR1lVeoay7Iy&scK&RJ7KL z|3re?tIvX`aq}DyuE;p+fL!=wy%pz3$pF0sR0Q-gB#VJw0mAhe=T$4tTZ1z2-UJWV zV4SyrD#3djs0!#Epw2+=0(Ap=52y#wMxb6m?*ml>eGJqe=u@D9HLsI*1|jb=fi4KxbqC!ldaKLg>yjq?i-F5Ec30!@SD??5ww{sh8>8|N>e zS>XK*GzVxW(8WOi0L=y31vC#R5R~4(7AOQXAE*w{LZB$nVxYP}w*xsqOMwc3?gMgx zmI0-JmIGyg9s?=@S_M=u80Ssm8lYnEHUQNJ+6dGD=p&#KpiMxfK-+*C2kY|a_@V=k zNT(dUFD$?&fZr%=3iyMgCRk(k!IDR$_EQMXb?WM45up!T8)e3unJ5XUyz(EQR20T{bA%MeZm&-p<;ZkH) z+!d(e6`<5$yTm0fgPkeMOtFXAc58xKsUvLnymO^egY58`l%h%< zW5>o(3Wf)3ISP+esFfO`P%CwuLao$Lg}UDvrcn1g$1BwR&It;2zjLBO-R}%nsQaA} z3U$A8l0x0@j8v%moly#PzcX5)?svv0)cwv_g}UDvr%?AhCo9zb&Ul5o-#JC0?sq0A z)cww>3U$9TQK9a4PE)A+ok@U^`hn{Ay#AbG`t#Mi{+wppPZPw~b;mmM?J?)^*L7vi zLOa}H7QNNiD!ax0j`~xs3_FYLrhM~QRN-QUQE-RDcOpVgka#;SB)w8ICGH$Ji|U$PrX-$b2P?f3|)IlgOhUb9D&2M7n0G)cvEvVGTu^HjCgokVcC3(+tt!oUS~JHkSxCvtZg4~ zw%7%gY%nn2x|!plhQqTAm3z*Pa9~ux+*UinT^wy0sA9)(<;>*^#%xkBZBH3rZ*W+@ zmTGUzOmh+^NsVqvrBo(Q|Ene%Z5FKYWx7CoAMuRIUq#A`w7Sa`WeUt z`o%8bO<6{_n7`Wg9aN_&JgxJ!1gCYVmdgKsvyBzqx@v#_klmE*z`uhvcr z+2@nCZsu!4?hZm|*UV5US6tEQA=wk_ZRE}wA^Xjo-nk*SYL3yH9csZ9QoZv+EqE_& z^v)02F_P33=*p0rxjWm-9YsasvD-I#mEfQ98Otgg{AMqd*<4A zd&spfl=j^f3hzMs?heJiq!ikBkCvnGUWMAe`xI*X?pLVodqAPK??FJ*zGceQ_C2If z+xM_SZQmmbbxB0eDQNEMP?( z_g0?NK(A=(t)Na}{PIhrx7~R73`(K5lX2OCn!%e=sKK39sKK34sKK38sKH&NPzP^4 zg}N#iE7Vx8uTW#XM4`rdDWI*f-blH+L2Rs0H;82lb%R*0P&bH86zT@CsY2Z#Rw&dB zVsnMML2LmS)D2=wGl|tPSwg%)KVG(r-BDHP2u562NRc4>K&HaUYbDhrd#+OQm z91ssXltPDeQ>zLO1Pp739Hd-zYIlX|)E)}esXYPf#RAoLQHP^OhxlsLD{kLJEUi(W z`0J=q-*|YHSEGI~6VV#g0EV>8{(w>4+7AG<)S-tdREHj}P#ro@q3*bk0F2e6DUC`; zeUI|hcThaomRM%4I3>RNGBd}V8t=e^T&IDF@eUmBx@|ZOJl!Zv0@BH0GLTLVQ{o-C zS27=4;|BH$OpSNo*+A!pX^%oc`s9p&hJ+gx;1lU{=BL%+>25)zh6@r zYfmWz*tLae_LCX$*8%eU9wiw#{f5GX__F37D$C68Hx}AlG_K3hYjqYBK0pen_sxYx zdCtEDNS(i^u!w7<&R-0kI)6!F5gVbed{})oC1p-LQzy(@3+-bmPn&jop*#64W~ElBli4!B26Y0}Td6|u(!<6}?^BlX z((*$4WrFG@It>**M)iZ29xIH?J!?Qu6c%%H)GtpK7DG@xv5pwxi5=>RRfYCBl&79p zUFdedLOk(IVYoA;$P>>N#+p$Io_J2Hukd+=>WLQs`B#kJl2No~ooUTh$}+8asnC9h z;1tThM){S(sZ>aQ`0a81_RT`OKgmc{%bd3h-4_X=$?p{AU(tUTNWTH+ zs`hnZDc7?E=)1x!7tjrHc?>0`HzsLsd|zm9AYtu|KMUPgNrH~PI|{=uP>OovpTgK9 zltORpD)e1A3M2rvH|SR?yhd4+CGZ`T5nIa(VnR-AvB{u}pekuXd zDY<1L(S!=rUTXzj8Tzm_Pz6w%M3%>1OQ5!i>>1>XO7ca!M9-@|U+kC2%qP!~FFGfZ zS5b<5(KV4hhf?sx0g1*OP{tSC6lzx<2*_R8hg9I2?umvnH`a8cEaRF=R8G65J&?Ml z1CY9=BaphL3P@ekGm+SrjH+u622Wjc2#~s_7n-lG>7B^({f6p{K9JPq>Ci;>QgTfd zxu#!Y`Ss$A0g3cPauV8e7{mb%2VjpKnTW3o4x!Ii7ekvfg(>zWcemUjJ^_QR3fwgHQIquXI!GV0U`AA_=KE? z6`cYUQaHxPoRCQ0B!h#Bo|;GxBO54fT7J>f^NS8SXCyKQT`LYcJCWR9YAeSvpaz*H4B8{-U~QO;eCK}6y6VbvBC!c=PG;M-$n5XzVStXv%pk zQBFykO;#o1b#IUnwK|dfo~9v;sHgq2$(r3}lV=j?7f2Q{yB6IX7*OWClt`b-*2qCZ>iFoKyIKqLlV_&&Flo;OJwXDrTQNv zk~`*0^*>5vzoZnZ|FMolg`X(Y<>OO@Iw5RQs1w3wg*qW@QK%EbRzO=Pgl)>zA^({| zJy35~sE4-C73%jfUntb$_LmCvxc!wvJ#K%kP>(J;Vm$Tv;~Y9>+^MMITyq#IvKRYXgUa_i-_ zYY>n|!_h$M{CSbn#6BT?<|cXg*LHNEhD>&|>hiK(_-maT7dMECs3n zZzE7kppSrB0c`?m4YUoY4bT@r?cD^A<8OdEg7*th70@3*`vL91>fQ;69yu<1fWzHF z9*-e~$Ge3*<_0M|5yECE9u8=h;>m6y$GlmJr@GlUXaFs>G;9hJ1;2Wy&V3REe0oGc zRVNDglnAgQQNYI}fN5?49}EIDU&`TBu2}GKO3ujV;LOZt2*Fc;ioz4*l7u;l6woHm)iRoNp{~EP0ZVC836ll1{d`yN+4!5PVh-jPxc0XMwH6n-ZslUB z#ieez6{V;abKO`WrBI8@{k6ElUyCdKwV0<+cL7%^)Lp>U3UwE7jY8c8Tnkt~qLshS zEx62U$@Qisvnk88WWH-pB`7V4IybrQVs1&)x!Dch$SsLFi`>{bUP~6ca;i4R;U$3G zO>o`n7935o@Z4=~QkJor8p<-|-Qn5?67(*Y-Q@;uH52sRZvK6I_W*@3TL=g=*I4)6e4+@#+$qK+nm2$I)KP}WeE36eJ` zNC;}B-g4dkw@Ibmal^eSMU{Hbjdh^ZTI=BHQv=RMSDxV()mps|7}nG92Y|M2Z$AWd zX+Qs!SB;NNH8$l{W0PyYWvUT%wz%#Zu13`P%nd)z)rdNuyRkbd^|4grD>wg|_&075 zPiq>!-vZI)pt(SQ0nG#Y+s&|Zbt&Beo-U<3-3%A5OX)x0>5{k$NaHn-l$vS0 zT0mc*gdmVcuMPAAcp)HNAj3eqK-K}$1u_C;7RV@|Ss-J8Q452jE})~Z0MJ$F0A>`% z0nItP5U@nK3BWRiE?|YiBw$O0DZsW0(}3n|o&l^y6=z#BB6B>iv>^{AanP9+oXLD zN$MiCZ_dYH)eOEzFVvygRCs1w=#3Uwmu z3`iRTe6QOj8Ein7q&^wvfTVk`SDyoY?Knu=fmU@-CcBfHT(#088JuFQ%yJHYXfRlj@s3K)Rw;1L>;O7pNOb=$9bMX)Sg8}mLBuEwmjRey5e-uy|c%y+TfW`o+U&kg(xGHTi zp^QtG3}zGroS2lawWcYYlq?xb+?fieBpdMWn<{MxPfa%9ZBUiMX@K1n)&llYI0KQ^ zU*XJT0}k1N3eQM3;20UC@GJ;#PgHp1>B_Ya=>j0uS^yUrCHz$swa<0 zZmf)C`h6jfHEy0@ekv>B83q?=M_!w>pQM`U$i6=5K1dSq>kY{)Kj1~td>}KjZ%o>A zNYV>{1<9g&jpD*&Qw9OJ@#bVx4qtOa`Yp+(T!gtHeNnP04`*|a`I2Nob5bp)iHWPr zX)`ggSSN!|*XrMqv{#We9VmAv54&Fm%Du_(0hCJ7>Kt(HOXfdl#JOLg4wMHJ1|j^Q zLLDf}6zV{ENTCjthZX83{t<~6mlWcWa?Z;N@q9Gr6@{e`epO*3z}FNu4pa}MfWZ9pMiM`T#YF#R z(msS(64oJSOVWMi0ojOtmJB~nDVj?^PsZ+{6fAy`^qn@pRHz~Hl|l`XuN7*De4|i9 z`YF0ZRlU0$G2UG6AUm&X;V%L@Vd)~oFl4rr8{%8#XF z%6^|%+M0B#beXg!n+n&Z6k1aRGmgS~3bk*FwM-ou^%d&KXaLAR!CX%6K^01TRVYo_ zcM(g%xy)&ta_^>+F-w=Fn(?Hks65q-Z}HW$MH8SXB%7w1@hEVBD!|jVw^^zgcarW@ znx~p^BXuQi0m%}ba$BYB*2GkIv`LjdEbiDh6@K+00@*JiY2?$*0xqLG=FsU;iJLvR4pa`akLnOt}lF z06Od+l?tB&_aB{#o#GXGOsauIf!1L#p!}qXWKh5m6s>V{Tq@F;Sc-LPmn3PPWL4{)hE$!`b3bnUSR;ax_UZM8(DGIf> zCn(h3K2@PQbD~1+?b871%X2h%QmSB$*ZRpRowinRt2MHxrtGDrowJe@%CuCB8r6?Q0v=H8mhKQ`V56y@)v?n;GcL*edJ>_AW9o|Ig`RP}p-NWpa;OvOfd zV#|DD4;e8OdS9xbh$PjIx`Z|-loJr((kYF*8B)PQ(2WpAV`-Q)(Hm8svof*w!R z=QE+&dNNg?Td5K8RH{CEQqL#Pq~yy?J)bBcG&} zk^uGdrd0SkN}-=O`+H=ILY-Z=D%A0|O`(pr&lKu-+pbW@+vk9M@++s}5Her-I`^xT zogtP?2D6;+Qf~1|)2BbEAe{Z9P9i`*rAoOeI!Jy_)#cZq=^*(fRhQou(H4@wrc(UG zk#6dc-%`OxO?e^buarBB%A=`oXDWO;rN}qCQn4|Vf^Pz8nfgq$T7Vp_2a*gLWT$28 z5vb`%S*EYU>0mR0(yks(B<=n{2sMhOOY#PPT_El10w8UdlP=-vX}jWSc}|@!v4!ap zeo{)YwkweiUQVJ@cpS2ICzbB@nE!@Nxp{LhKhWRfM$VG7y_0N3*nmb(qjcbL@lJU< z{4Hg}J5A8?kiw>bQ4NL)KwDS9W`O!^Zl}3I-7~gOsC&ki3U$xeN}(PrS_3+nK=n|n z47#Ch+IP!++CGd}>i>3WcP`Z*{%@Zy&hvkVbTQxRt^V(rF6QZ0{a=+X=4PwM_k*5J zzMX({^4%XuFE4aX7hgtwQ>J~>C2hyajMOFS9FlgAenMidPdeO#QWSI5=~y#L!K-}{ zWX7xg6slKi6zVF~U!gjAfI{`^VSrI{8@_T&)MW$HbswUN!GA}ET$K)P zG;Jtzu1UK;dTqE4C1}K5kJ7abH~4Bj-&gA!)0JP*q;Dp`o6^CBWK)A;VcH$?lmx}1 zbofY0QBW*N$GTGrL2;|UH*U-IMiI%N*Y7aB;ZT<8jl0spe@r=L&fRJEeqy4{_ohp^ z&5G^=QvctdF69cT#~(vhWd)obm5G|j7ro*36ioE=HI`$T&Q0X0M--VE!3UzDok3yXQb}7`YMIa-( ze9SnD45Ed>jBd22P?qVEP{tlbP%0I5>SWxCr%gknnfxCf#DL6nRySk+Y4pk*C*wX% zdej&<6COn=l$b<`04XgVev4+F>UOKR%sinfHXe$%Sid^;ZB*XGy?74KU0@~KWWBQ=Zw89S3=i} zJKZbc0AC5+d?g$Rq$L~#qONc*sdzr3CqJ4Gc(i{?3pWZe6`@_J=T8EA`oXX@TW z^_&%`;u<|gA74N9$=K&np4f4nei`@AwGx;$nSy;NMXv9kaT`zyt{;Gr;wn50FscjM z;RjVZ^&WV}CQzVEg3fUP15H5z=bTKIf3{`5kvKP#<=+hj>VP{dljZL}^(AS} z>`a!wG@%#Hi|%=uEMI#I>xRiRd{hG%SVnc6kd|aa{XJjhw!DDEPweiSK(!uEN?32?g#GNOqQ=0yrS^(OqQ39 z{++FO&V9zCmiM@TyEh4(|yHug(;4EbmZwO(rWFfzHsq zHk0LkXshtLOqLhdVG6I$WPhe6oYfi6y5zL<*hrjx?dKH_*GRZKV;@G=*2r_lwpk%( zVI6Z$+~=nDXiqxW^@tSKYukp8$l z)8xHTgfv7qLF8gY^k$&BKwC2P_z@WMfVO7jQt>jNZJ8|pMs#@%*Y+{weU&NZUy-f? z`Z`mvlDxeJ#eS2i$1My!7kDkmj|7j_BP2eecT9>KoNqI>%k`AGCFJ~&ai_p1KWDKfjubJ4fluAi}{+5vga2Y*{?jXv9m;T7;iMNWf%qsj>#%@kf4e!XfH@_&(-jxYo zPbo5NWn<@43WkGO-^toms9S@OLfsmK73$U?rcjSWbrqTm_6p4fdxhqLy+S=dr4;H_ zzKlY>rkho$*K~^%>S3#%LcOM2A23xIsJ_8-Rl}^h>he5Sm1ga8jjMV%jkE4natk`N zJX=zirXxj7vT~_F!>DPt1P@(JOV?Cn?R!X196rHmo^?-JM-GoVZL;B}ltNdv&DLjo z0Q+R~ZzyjGmKN0tC|dIm*>v$U=yutXyq`f=W=pt)5?oT8LP-g&v<|lpS^Ec5onB5= z*1d-$(5OznM(v+1Ie=o;eD&LzoI#RPxJ`29qHA_L;rySP?s?@x%j}u8SCXv8T)(V) z{CbJG{@H?KC`B=MST=SDr4Vz6qle6;5!ISxp7E<>{^KCzgF56jx)Ne}Z=hUTXevg2Q(>Q8V+X2U-b z2Q?U#ZNt6>7@cjyZUq>VZNq`1B@g$NJc6_+#6mS|$dEoN=;UlGej-n38mc-z+ln3i z3eYLpRy<(e0Gg0(#je}{bZWL0w{RoS#B8f4X`%VTOev>j?PbIbRejyd4qQSlkg!OY z?c(bdn<$J%S<>}AoDVA8 z7B8DV_^2X#er^nXT+xLqpndR3MRoyI-t@tz6~XU}l`>~@g?of&WotzdU&JwezO5oy zMLa3*3uk+U`-ms`Ma97njraQD%Zh_JjAy}FUsW8;6`KR}HF(bfeN%BT7q?DZ^le4( z1cDFB`{t_($wpu&;s0tNjG0^xOz z@!Np#I>-3!KoLmZQCG^t>m1{Ef)@ktE+D+lF}@TCuXBvw4TRS@#_s{b>m1|v0u{o_ zeL#3MXZ(Iad~5Bs)KB9B^cR0H!F32cF5MT3KV9Iy4#%vG{o^_2S(s5bJqM(Yc^)W; z0$%`9$Gj+ruNB-+wou@D6euqviCk@MK47-^ln%5N(qm)rHWn^$@>(&Uc$p^ znW8tPX3G`5RdOFS=rKhbO4brur|4a=GK?O~&POQrf=vB%5s)V?c7(yqXFI^&3!LS4 zQMQPDBh6j)mdUNqA-2&zlPYP#=bJ>&HxWMHhucvKLGgoJ9SSM>5hw)SPe3{beilR* zU#h>Mf)Fsj;&P6>RyY2e{RuI!yu<^R`^a0ovxtYSa9v7u3B@B;>~|_yma}-&LO3dn zDa3LXFHne$M%+<|-E2Ir5WCrUp+f9t;|Yb>&Bk4Y*v-a^0Qn(@qp32oP{xZbL_Srw zu@&w{)kS`pCC_sJD7Q-4g8)sy!A>F`^dZ}lR~KXbjMuj!LrD!g(s)Bi;@U{O#442& zwXAOOQt&Ek*k4u1YlgheKrMjutGRef%N{_c)#dwG?gej)%R5-%0HsjVj#iSR1E4A& z><7S|)YS_2Ar0!JZdR-#rO-(S>a)rf9t6mjsOoz5d+4*uQNwmtoX2IL<~3>quKC3G zx8hs_3LW~3cedhBkOZ!s$9q~4uBvI#A(p*{6q85I4g`{yGkJ+fjL8MTWhA(QK0zjd z^)Lz-PEG15zFcjgRMlmkaCPu*HL~TaC)L($vdpX8W@Od&*>i<8R6+4ZzQ09k{^y`$gK-Rnv=>! z!KtGs2PT$q^DRP?MobBu){q-x1uhn6O=`haGiY)nE=c?|ZVaWyO=EH%lX*m*7S0*f z?k9cecaU7v8HdYS`Y|!BJ1A3#vW`k{&d z?*{{stB4bOfhv$(_aVW>44IL9mEnU7cT%O2<)08-&5#-6{@xl4#7>G4W6dUV{d>en zp1Yag93qkJ1Y2_|#w6Kb3#C>tk<=yID6-!pm}C-3zeh$n)tGC1=8z2k>)Ou_^dW}D z35zRj9me^P87!OU`v{L`8BXNMh(FG}O&Wdy^Zy7EpGiQRa^`K8ICmlQ*tBMkLiS^v z&0PW&Si3X9#c%Yn@@uqBYRzT*?v*H}QQ<98VK!Q{(O4ID5m^nK+1~QhJ25|3Ves2o zp8heOzBCBtcX{g5J@vfOcY4~_dfIuV_s^BS+*23pD7{~<^bMZA@W-wCED#vCj>!fl zo0xpVLcd8Jw3K&J|h3@Ec0S7{=OuOQZ{vD?X>ea1)W_pzla-8_Bii zRBQ(mP9@{t6JsYE*iNa|3|oIdB*r9pD62L6fXYq$M5$(!igo&dM3@oVOnJ!+GY(?L zbw5*H!7oIH{6iwlh%rerjEo?W);n3`JI*WPrcUQPP9^udmEatL$see?kt^8VQmR$5 zb``6#&3h~)31P1X|grYkZ7_46U5LXRK+Mf7sGRM5EI6D9ts<1a4(?nNkqxLnQ%e@ zXhcIo$wNsSoB;X|(ZxisXap9bm5jnifF{pj!c~nyBU*V8pm247glmxyuBGe-vfN1) zqJgliAewB zfT`igXKHAD{s8W0V4YY*D3l--liy-X!7_zY1cY2j~7c$o=F z%+@N2RyG3^Fbcn7>NiX+BKlx2pnnnVTLzZK7=QxOg87ssbHJ!_YY#9d`+~XWyI}qs zpupc538V##LZZptncA-!w7(&$oJ(i~p^phYGZ4@Nh{DHc_gFB8y{Z76NU=q|kfGbp(?Q6_}5$a2~wC^(d~2Y?2v zCPO`G0aF8k&HydAem^i1N?t%~gu+`uOI}IY;g~N5H%@^pX@ShW1=;{w&}|wbH5E}B zQAk?y4Qi3piPIsr8(2a{$#1Do&_|Jjq}mETLV-jB_XXcc%ySVE!XqJ@>_iqq0i&>Z zf6!`3BNQ+Sk2(;vJwOY>13>G*h_s7Qvq~*%+_b~C_sCqGnEtZuv$s!#qam&hs(*a>6Zdu1>3jvKJ z!?I2-Dt5(l-e8?I=IOKwjrkhuqOpX=x(bE`Cs{gJ)-72Il^X7zp-Qz!D^OGyg|Mtg zvwuIpTg7q=j&Vmgv*bu=68EmLvLk%`eu#pBE zE_tan*a%6RXt0rjO)}Uh!KNB)v|tAqY>Z%a2HQojLku=nusH@BC)j+0?JCw68LU>Y z;|#W&U@Hx_yI`jqY!AWCH`sW=E;ZN$v9Q))dkVJBV0#I+-e402yUAdC3%0>v`$+BG zVX%EA?H+?o66^tkO&07CgY75S69$_i*hYg*73?{KO%v=zgH3PBe({FE_HV^eZ=1mm z5KiUm_Hv-)tiWIg3D(G9GlHAY!kQSYPOugRn<-eK!44LkWf&;g-?sR*O^Vt{JHOSo z^P-Xp{{I4XrHma#?Yr}H?@iPzKHG3n=N5h0X?)#ni@G#Pe`5MaQP*ZgOp=CQ)U9b6 zh_8|Ef+RFjDTwYlMLnAHy#dd>hhY9YZLxRRIP{sF#oR?Wkb*D}M&zwd$s0(~@qQzc z*&p{~($+&8D_LC8Ymh}92XNO%^Uig=C*|_Kq3xCT;zz1A^PZ0R-iVodtD@cGIA=_h z_2NloEj7SN{g5lg;lz`Og97TA*)A$gtb)7R!z%4z`%jIBaW_MqM$z$1r@z`)ahQ*B zkC9Qe*^|OLF;XRlk3^nz7GwmK=(M@ul=ahPvl46wuj<;p-wT<34K)xj{$1;(m~T=Z ziIO^qE8mJq=J0){NKx%J4@8~(QI!0PO;#JE5Z-G3&m4YD-B=M(f1M9mO}%SKME%iG z*XM@CdOEpfwJcO-PZCw33n1GRZ^#4}+Ua>34{U;K5h4~lYq2N|WmpvxOy06|{=z=}g_T4)cax z7?Bnd3im~nyq3(94+gY>d=DG~7NV7m!uhihk(PXcsZRk4pC$S((URHVBN|B51!#B` zGxQr%yUxKYE75>aNHp2%GiHsGxl%wu>Q_wWdNQFG6Nn~jm_SBT6Xj0rknr zMDGR^5Dk7}RB#xgry(0`p}wbqCQkrgC81#99Hs&aR{~0|rh;j6k#VAx695H_!uu$8 z2U5e6<^g($eAknY3BjcKU^$HmuQQ>^5uhz+wE0-DFd<+R5>5UJmdZs;ok_8$=tt&X z)VBadLNs6$5>0kx!guq4mK}lU)#D&`)J6)4glHwBFm*B_(vp8M^$tMcy+kvg1MPY$_=pA)^#vMU z{TC{|CsUvEpgzkC4gnexO^#&(Y2n%%kY7gOK!_y|V!~s90-}L`8lvWm&hU|NF`_V& zfPz!WcToXQDotLDC?uM^f(c@1Bq2uOtka?S9-@V3Ko!y8TtMMvh>|ZcVV|=>BN`G) zenML2ET9(>{ekG>bHGBhl2Ldu&}8}xBpiD#XhbXL0t)BVBcTft!ec1ghb(83g=iow zi^#GY6KXC1?Pf-et^f-Y0!AUxsml(Qo#s7mHiL}ObxF= zNhYr*%Qr08&kjb!!6fK%Gm7{XG~@6oHbpK5hks{*y+|#mG-ff~4%zpCUgI$iNlbpt zWTu20?m+UNLUhMTSh^f&T-OFkw9+3UcvnF;4HVd8qwo?^7??Om?O^e*rX2VW(jVC3D12!(qCN=~7I%6pJ| zqLrn90!HCk6gvi~;lB5Qwv;TS1r_%rbt-7d3n}|1&|vom5Y2iDEKCR(g@O)cLO)7e zjJzbDq{PMyl+Jw`3SI$vjmJ17G5Il|fGOdcjY$5UD4}pIQU7b8J)eO>qQQJZOBkKf z90~P^!q+!}uM&Kfgn|{%A|e!?4=6c?3g$kCToSE35KzD<+(faNNDVJ|0nj}1-Ag_u z1cz(}%Oy-$#e~8aK|7aGr?yqqElnLQ%qQi*p!PLt+K8`2KgmCKnh|cF~kU%qAp%xBj>XbHMW)!fYhAZEJ zZznUM|GV&wXeE1RFb!@6hq7a?L$6C-OO}t(S;KeOpzkEggm4ZTM>ri-JAhNbw?Kal zMsLKNC%6YuxcB>jzGOtGQrdduR-jKYB2+02qZ-p(G5(UybY=EBejxH zz$pBl(fzFFpQ(Axqk#PH0Iem|jL_)E0JR~sE1@z%M?DUx5>RkEXyKDY2Q%TYCjgBh zG@sA}LYF)VXbPF%04<#U6wujBm_cX}A@6BGO9?e5w2DyQjeyPt6dVOw_zKZ~5Iq%8 z_$JYt$anlRfbJr+lF%cB7H>4uMj%oSwQa*I*QOXLbIO(^c|sjgnlP9<9R@h zzXx;(p%#RizW}J1P%A>62|Y}xH=!p84I;E~GoaCg784pzsKbkZ_9Jx9FQ|YzK$V1o zx?d3y3XcSoT!MsP_utR}iB=8=6fg>Jq}U}?aP%L5t|Z@O?_G9(<2DD0jFUqA3w5(-{oL@4}_342h%{TXC~XyvVd0!Cp8Q|Hpq$1MOIO}?hh z!NP>#t`IDrG2v_`9NrSNt&DoN2MZGdMj_GUtzfBqnW>LcY+40ec${KmyFxvqN&hz1!P6Ajui^1C4+gD4!>0el5NLMfr(Jw}AWubI#u3Bg7zR#XzLd;n0u zDD2MEAxI6s?FeWr`3lRy!i3=QPGI>r6Aog+v7JG~p-rs7SAm5I0i%#;@?z zQ&8-^o^at}iY2R{zT-@^rgcEC@fe3BChuS}Q^K1uAxb_@lu&pQ6~0U~(+3KP2740P zpV1SL4PKdD81VCX=wEM&qYCVT@lm|cVDj!|G?Lck~_nmiUPl~b9z8~6si3fdZw%)u_K>Vt=b zfGOclV}afPH2eT)Ks0>*XY_%GNc-_yKpV+SC}2X^nZ58GrWS7j^eI#C11(%T00sCX z(X$64^>b=2_=)AqI3zLI3Q)k5u*BMLk0 z2EOUwt0WXW&4^I=1{02^g4=dSp%AUS22j8#Y{}Gmq=s*e2egKK-X36KLU7Xru)NQN zJD5@KT^S+poPUm3w}mIi#Gvf z00kRB3tJOy&xEG$0P4zw8$kvt%%NH z!YU3xM=^o4a4;tE$rG8d?=67NBGlm^~3Ww&}WArFCLhk{u^zXXebaHbU5@-sCt7Dp-MK@<}` znGkLp40JHjZfsIzEWcW!ObFh24H3`Z1lc0wK65y#XEsv9$6f-oh|o)Tm?W1{q6Liy z%*z=>nGo!~04^NFh&#mrj{${;V6aZ!M3zsucbTPc_Y-A8cw-IFO+*7`=p*LuO`=R# zC#zaN0=*2``4zvf`%M(WHh|$oEFc9EaiQrAp9x%!3-4SEv-crNcKR)$4tfF*!*C$A z_-jt28vu3C{!0lfH4WG-n^d+hlSY}O#UL-wN!pDP3rhS9ja`f+eRyY$C-ffvdXku? z&jKyzpgEtgoSI#q1?nM6KDHA2h|->v)#<||z2JAFQLpkz`om)Ggo-p*ar;ujUnPr+ zT`jX-NA*`0Gm-fj#gye_3Le>ta(dzfblq_v24^i)3X^PvL&?Jk#}_ay*Tkg}@o{15 zg!tTuh7(>0Z%M4vY3vrJODX8gohF%k#!_`YWX;rH9_8>OCQA;{au6u*RJQm7sd9)* zAc=T%1Z#gt(HoY_Ynt`~B1M$!2nbV0wgeInT5VcFEs!brla|mAfIgn3ojr`WWISp) z$ANT`<(HQ8j$|)uS@kk-o84i~Wp@KpXV8s+C4JB%M-x`+DbU}s+MY!(nnLP6%ZpzG ztPZ+-F;S(y1j|oxHg(W-MnjW7ao!bwl7DJY?@E4Fj7<*!*`4{4dnVdBX|=~Z*t!Q7 zvG*X?C(|JKo(O7-W?dhMmrcLh8vmmlY&LW%j(*RV zG2Hs~6Wf!sd1qhNgXlr}Sm?tI2BSf#3nE>8K^5cFm8idG#jfO$ z`knda2<0lh9}*_Ul#Py*9T->U*H2Z2{lGg9RDU@lsVdru)fq(?t~9@ds~918*&9Gj zi9Eb0vAoa6ct>eg@V*x3-Rf!#4Ese)J9!1Vf{QNkWdQW+xo3mc8sVt${zp3Ty&~D; zAe)#mX_0D+rXxZH>%2DH-GQqXuhjTNi`VdQrC(nw#aM8&*XmO^FRg0#zd0i^tih0% z-3lYpJ!GRUF=Myg6g4Df?4<#%_fxM>>z!lq3XRuUysyTms?1q=?bQ0)*++Dqb}r{B+Q82(+Q82(+Q4^3 zn?BaLTpszb1a`zX7L@>e6_<+X+O*L)&Ux7YDt3-Zw~3_hveL|3@fzvTru6sndYf8S znOQMm*Lq3|wsSF0t-{5eT7`=_wHkA=VqMIR8z=XLoybMqz0_Tek;*EgNYsr)8eBvu3KmI z+ldyVBz>w%zh9kDjT(spG2*h-5>y!hi?lA4DLBq$-(_hD_#{g_KqpxuAR4)@V6)Ku zU+?B-N#ia{pJO?KV`KW#F1VPLH%r&pEWIwg7?I9w=CU*_Dy3xOhP~wtNb26ApGbds zC8b)2ej@$ljn-YJuC4?A9jxgym>*_F#++UdSy%`Q|9v=W?zc6=jcyCg{mvRU!(em2 zkH%|N#fdRHu0gGX9VtrkiITy6{1PoR2PbSX*{ZlEujIQ@1{jrlq53c^ELLqM45B(2 zWZMmMPh2+@=#h+B6SEv(#BA3e3PxOqHv&7Pcm1(okj5us>w?+Xm^T}TK&7;f*HHa7 z8?+rw8emmJ6%3!4U&8YlAz`0gwx5&UyjC$C3n>;?#!F5 z0fDK{-yosub50AwQlD?cWZXz{9Ax&NF=MWhiMr(J&9@S21@oZ?zL|}xqk*sKQdd{U zkOjfZdMQ&^T!#`B5#R>CUlW~3#k4{Stoql)5RH%2_-~1}#5tX_gkBs86ZIQb$V8;N zaY3P$n5rr!#xmmSWnerbqNM;sycR;EnTw?^8(aw-3?V)6bn?6GAz1|P;+O&F>F3q} zPbG_|5#YvCcuH#AQ;j=MiRXCA0XD}|EdfvOjb+4nTGrGQIr$<_wGeW@vNWHk;~^Az z`lB7D-;Eh?PmbHcD`NvknP_$+E_01tR}mg&tz`n^9%dS^)9HAa6^R)8 z;40vKP~~CP$Yu$L)GV8FbJ=0dn5F!a%UQl$LyG$JEWcgOXgb1BCY z$r7q%c;5UHp34Zq%f1I{N@VM&rq%)B%gVLhmYz7*n=ViTX*YSA*PeMFO%WhHen6^4 zb|#`SC&ygsPCf)LyFXNjbzVY~>22k~T?k`5Fz8r~))l8x91(F)Z9_~|Mr(qq)8nd& z^}_|z!3o1qIwtHCG2fZPYz(T*mYC*|5p$!AZD=#i?0Fl+%bv<~zMeKS0$=xif*K zq%w_{xmF_O0i9lUven0#j@08IP|Em-i}ab!CHj~k`YHy;^tqmPMqD2n!cnSC-!|Wf z5IWicF&WpE-n25&8^Ht2!vL;S*tVpnG`cM@LE2L0yqG@M@@tx#me1#3gQpowd=>4)2{J6+ONRl$%ccY`u$b3=e&Ww?YGNO`nF${ zqx5ZmsOhZw4fJC_dIJr=ei4gV)R{g3P<0D8pj1aD>p&Gc*YE}4+pi2Ue?ii={=_aN zWWb|UIzwWY%IR3ZLOWBH+@VTO?~Q*57BjF*WZ+3q^_XbeEcwbPrOjNX8?4lI>Do}Y zU;W0%%;C|1MX{wQuZllnRpJ`mpJD)oMwQSa6GU3&lf3X{OaYpOKsq9l0cTA#zc{b- z8qP0DsDWWDSZtVV057{As3}o_ai=v^p+{vti!CAiE#kc&$?_!NT{8WsK?U}HTZ+o! zRT?*~0u{)6XwecvtO7GLV@760M#@@lX9VjMIY!obl{rS%c{Mpk;_DP;C%C5Q9yEu- zh@0!k*f0sCGER8RWar36rElA}yh$-7hebJk2NF`Gd>G^cZnD#&pxjJV^n`-B7775fSse_!$hoC^)S3me+nZu92k{SVQW*>8}*#XR`qO1{D-Q( z8_6{gwZT>OE>>amdfuV8^VwDP`QVGH`g|G2{ufofN38sgiJT~EV+x(mI>}T7xH%+d z%jQw2%Mb4b8Xu`~ycZD9nJsftnKN6~5|}NYAIpfV{XOFuiE3X9q4sxWd4HQnVsTeeE?Isx^vuUZ3aQQ|29d8|~=?_!#nL5FKpKXj^(DAp(zJ%7X=unqSZ zz{`$oYYLG&l%kp=iPkl_3yBzJ4LV$-BQ?5TF*#XqeWyx{XXmedXdALTSf+1(T zV9W$lWoG6z^@KIW{bw=7E^SSb7&E2O$P_u_ru1Nd>b@jq%2jt&k@1R~*-eo@q^Sz9^>RjaE-0^?O3~{NWm{(;101+6{SCe_~a0UbmfU zJ=u#?Yjk_n@5EY;TP~hZ99!eT#sdPg9Ra#~f8}@7{Yt-?7JOw_^Yoi3@L{&!1p_gW z%(P$O+Sv4{H+&0YqB)vLa=%q(LwssU62+xhhM(G%Y^-dJpOzMGEMOSCv&Pq3e1JRy z>(?3l^faAI)L*JQ?C>+?V*%_%m6N&j^TlRN80W<@>PEP#cIK)2Z)ngH#yKqr^O=}w z(bqXQEb2h@B7=QQPBLXSbTBA-7OMw7ti*mQj{vhbh?Q8~Q_M=Np36?f+3oT<$lAGi zv$n}*?IEbLStHD>rE!TsVTs0M3Rg;_>{Ws)^8=o8mF$tPjF=vnHsKg6CLU0UUDvfC z4^5-2WLqUEn~a!b7v2T-L6GxzMI>`&o{ja$ph{?h;c)XycqAhPFMB+wDUrn@+$bPi zgezQ!YbR$AxfGEodu85q%_MoOj779Ny3WGj;uedF5UF-(|X}v5(T^ADuQHwN_S7I`*!##xL zPRxVs?nyQ{?~Z_|!|B<$>u?%(9ZusI`C6}Z&C%KEQX01-3q6#O7g7S+4t5c>9%JWI zuR`O-&Zk~qjbkHsJr42AfL8w;MACxB0MOI@Ez-v)0e?lGQIHkSSA{B-(C?juUS%0j zl$3XZ(JTWXJ72j4)f1wSy`qyqDq+SM-ZsC4$1+0jvIQNC?S~uKelf4@lw=syIS0vT zAE{&HcWUY+`BkaY^sh>n48#}tpxg$jBQaSEs`MN#Wyv$#y)eiD1^q69C+i6~VQ0fY z19;h+ATOoe`bn>JAz08lEMBE?UD`+=p>aK7Z~c^4c&oe~Of2SCs<@z(c^!LSHuR2c zY=aFw$ZYn?#)%9EnFXrDX0Iy1LM{77`s{u1wqNFa>=Mbh0##glN6V_rez8{N=J02M zPvmnR5<>Y2ITW|BicoHz1{NQzaW{w8c&$#y9NxTtsH#^n<-R?ZMYjyL8C0nTu0%;* z-DF;>K~Dux4Hx0~tPQRj`j^M5;Z(51t3l(g8Z_>zVVVrEv1<6Ly|dw}VIgcp)$om; zTbR|7o0Y@YFGoRxOS=;&@*fDRzu5!#f8*jYq*iQMHu}mwfmz$U5sRkWk+O9@dn1%3K zJu9ql$uHvh^$S&|&5178&eE;cQl9sX_#Tcb7iRqpk@oxfEZ1QDA9MP{! zx`dLyndNp}Ldo9->vx*k;=}aYlFE$FTL}XyjM_Z!Hp{!}mzk&%G#XWco}q1D2?KG0 zeP8Ic!BxT{P$lmJ^}3P_06CSg2B+zlgUi1Nkvtv?!D=g^Jz!NrEev;?U&5{uHiDWG z6{v*MfJi00-N!XSR|!8LIjV%uWne*tos_qv4(eh`D$lFg@~-+_EGj9DMkS@k-|b84 z!H&K<0eWqiW&kgH8K_cHBlU2%eMxmJ^VNEA`41tIlIjRnTT)#Cs}gEq_`v)Ub|v*4 zs3}o_lDZ9ul++rG#WuK-D(xC8DZQhIlDa2vNu3T}v76`3a(P$%DjAiOMx&B4!*0VN zB)y@9udah$8(f=u0#qrf1+j-pPMd0-@zu-V^0y(9l9~usTT+t&s}gEqXxh!$a3xg& zYD!d~q~4|~cI?Tq)f`t+wcw4~lwQpN?^k(C>VLp1_VTWp0Hg> zjrhY;FU7pr&lDM!LO_+0%E~b@JqwDLRQmPrJ(ce6N?=?hTM4SjJ}y01KmMC`FDTW+ zCk{T|J=#~h#bn*f!=YC8R^97m5N~>HksWz6olkO2?)1py4G@#8M9a3x>4iP@4wkl` z+`q6w;}ccYVysv^6SFT?pbTdpt^H7ruHZFwLd;-wWN>7qF_>p9VR=`*co5ZwM*mxF zWUg%DTyqcXvtbE68V?pcu)mPn`0o$ws#8i5>PAS~&?CzEMo^`8j?h~QGFo&UR?zWS zh)7#K@+g;&y&}0@Jkm_zZ842I znUeCd>w207@gEjtxKtudZTS1$^`eYjba{WMUW8d|7G1VB*Z8FtFV>4P7g@X~btURA zF^e)Ew&gb(vCts79sZG7qtQ>1;XnFZ4&q*JX5h)LZr!eV<`@qwgc#rvq3nU+zhkBFN=G0U!XwCK{lH!cH!!v?qLJr7iA zviEBHDsyp6ziT~DS^ZL2JPc1jO1xltk?w_hfv;eCZ;k2&zJlo^^Zeibj1dY+U&o3~h*L|dScEGY!o3Gh}+_IEj{4vW?di96PQa8=SQpmG04_pb&6f@Xj z{R-UaRDAN z(fJ4HSXfD2h2KPdUE|cPLYScnKbzsJ&Jg#9Ad>t%hzF0h{*+h#7!XxM{R{`0U&7^# z5b*v3YD#p#QZFEUOjU)066)L-zk7(U0aeC}_sl~)eHM14?u+rd$Ls64ytVpqIKH4f zBb!(lGVhJOlevjXNk20na5+nl0JyZ`){OL}6}zTYwE^0OK*R=D#kHX3WH$3<-u16_ z;FA{6`X#Sj&idC&UeBEMua~@`IqP39d#%m-mr5Uqm)^%?`H+vjOCfKy`N(jfSE9BaotFw|_o&%%*I^ zKWN2leb+0b(Pn~fO?oro(O+cz#%97Gob)>d za{fh#B;#_@j|{4WCK&EEzl7Z~@J3KmB8v>43q8@fbxrh+OJ|Dk^KP*t07CH2@Cuj}Zm zEbk+>qwj)k&#Pm+b0WQu*(HjjkmBa}&1|NiGb-8ySJ3BxFY4$yE3D|~IV-H_=s7E_=;&sJRizhq^wmwV ze7KJOjLk>RazVVK^EPnis#r&t(Ha@`vL!X9qtjvWl3!kkIy!a7JG#cv(ckUjt09oJ z!FBXnP^DOAnaN}Nm0rF&EXM0P`gN9<3%fZT{Yn(&f9~kFfm;K zct^iWIyx;ed~JRSyN<2~q2GuO^qYsMiyi$>o^wHp4dV>pW$QqV7Tu+zldp^|O8c(Y z;G>SNTa)hSZ=;|wQBx{C8kfCJkLm9e>0f8{^Ju3Ordw8)MSZ$ z(6^U>CEm9+?)tXIUEe-U)>2&G&aB5rPHb>fh+SYqcc0B(nY&7(_g3D5h?L>#Holq# zP8-~~un1If?GC+mqcRW1rcBjFz{|c5K9SFPag27yrKwi$;q}mKB6Gc?#$`2eQL2jafj#8N_?o|04VoY zB9dmx2Q!{W3smbWuN|MtK(H)O`=3}d@9};Yk zwhzS1jsR8E+O4wmlrc&j7US&~slEtQ(a~T%TbE|Cx!2L0%8}9rZcgdoZEn}Rm6jN4 z6y~gCOQrF}H>xzfi0vv(DW`$v@ z`6cWs?MP5lq7ao<41|@|Reoz#W(2-HV}q-RERtnO0~PU(jHzh6XXh=4ro&7*%0VwtyK>ODD+fJZO)b`E2vH7~l>4d(%Kc%8q#XFL$zKk8Aw`uiD-3n!m#`~` zC7`B6AV{)$XUIVJMvfZU1u$*@SK51lwE3+5DXUptUJ)Wtm zld-}0bxds+Bj;s*w`!ve#+UMz@4Vrrd~;T}bvx@8YiD|4+m)}zUHR(adup-XSVZ}r z+1yu4pxpllA}L?4Xy-5A6Of`xm=%Uc%r9YAzHfq>5``$=lYp>%&y!!2@B3I3|2Zb- z%D2%7Q@+R9LHS>JNZH`Zw-5Mi`L?p<`!|gBdm+IFH#i(%)kb4|n^W@*zR!YB!YnDBrK;7v;MEUn83ulXK;JD5%nYuQik5^x^o7&8ir0cT;*^_DajEm)*6u zP0uTc*3PRQ!?O1yG1<SP1+YrDZwO`$ z&^C-QW)V>1`5yW!V{7uKMVW6gTIMo%692Ptr%r$IU5M`!co_e)@$e_4sz%~a7QRDQ z3Qm6jB56d+ku*v8POmswnhiBEOfkQN-K)SHP*b7;^USV5O)ZF3a>{KhOn0tC<8{(FLo_%Q2m9nXB`d*fN*5qib&eAKy?2k4CdfQf+z& zpcw#c*x3MH_DoQP&OR&v7t5ukbw?7Kg}ebKW)_h;dolbM3#ezuhcM$GG zOg0z98(D?t7a<5pD<~*QlxaO??X)D(OXFtkv?MWD_Wb%O z_-t=G^!CQX-S|Hu%G$m*YwVWdqx+J>jRhl^^QgDqR4_>6=GP`j{x!7uZ~L)+l8V0dA887Z1!)2|Xs^;(^9TY8)32h_k9J zp%-VLITsJK1h!%NobLL8d#F4e&xmN@g=8&+8PX$toRHgt`5r?0^$i!2_3?)}sxosV zP5}RO6mDov%4@3cu6*&ue#XxbN0Y~uu{kXW^F^ZY+Jb}{0S8NXik7*JCp##6*Eq?oFMn{Rvpp4`#DV0FPxdbBtFdUZiJjhlYGx?rfrYlmBX zb|920F1WOywZ2s}2UUD*%w4ySwr{O5%Uz;qyGWejw~%#>VIS>1y`y9CQ5vt)IQG#( z*+{~g=PT)iItof{aP_eQR2dXLv%5pL$FgK|?q&Z8zG%?X&5pY=qLP5Ff1FI$do_C2 zz?113*LmW}bdBSc>W92`_S!9OM+R3)$U#{G+72EST92`VgR&Yoc5qNux`3NM=FDSl39MQLkr;~`jMae>S(ao;2OY6P^AHEdP_eQvfiab@lQy0#~1oy z0?yKHRv;})$M_h?XN#~A`F7rH{R_;}fv&>bPIuf1gQ$TWH+U4ANtN6;O27Uc?z`^c z^7pLCsFyt&ROtfzziTqJCtn#AmvR58O!l3`gSptC;-Wn4$f0@uTf9X5+7)tYUUGul z2gR@9>6fTKe?{@v%v=5G*x)L>4T?^LTK{}RGDJKFE|09LggIci-TV@E^Q9+1O^Gb# zR%Zf{^`{Z==c5?EYj~~4oAPFEQ3}Yc+;f}*2~MS0@OUOPyyti?k_SN426tj}lvQ|= zR;bd)fVVEjJIn}q*|RLKGmes4)s`Q0gmI~$(p6n_UZ$$5Zr}Ur_L!#F`Cm|@YKcl; z`y)$*EPN@7rIUR1RZPe1C^x^^+}tbcJhdwQ&Q$z^+X>FgyD@WP@UjnsDz(q#*wzL` zd8tI2e8(HTj`v_Ih}CMZ;EuO@ZMj<$ZQpdf(`(L+uISm<@h(fa zM{n?SyjzQ4d0(rzM>E)s?~eCc981)#_V(3#F(2I1j?}*ks?1HIw<-oB~<)rJjGZ+IS5 z$pVvO>;DwZ=?$B^#CyYBa2InUAh$PgOCzT@a5pHYH)ukvH|Sju*BkWykv;~(-k@=m zXOFJF`Xc6o>kYqvDphSaY%)K_HqKmc*ne+R?p#U~r+b2;osN1#&ORD?gV{&Zy+Ln% zus1AaZzw<0bvpN0yGYESH_(jj4YV!2;qlnHOE>nvX|u-t5}g-p-n&f+y{Bh4O{!k& zm{31M#0F=)(LSau&Nb^MnV&+JN%tZ@6MRwk%h_N-_siK}LHEnqU_tjY8!Re)SPNgR zgeDtY_xp#=tr-=xgU$P^z=4%CRTz{f z)EQ9ZuSF#DfEB0^tk>zy`&B?x4J|P|Zhi@uGeYpPuYj5o9heVX07M>w^RS%RbdvMY zz0OsGD#J?jITiBh#-dJC@B4lBAfjg&bJ52DglwCu@j*}LRz*$c!1S~l5j%cfbj z?DR2#uT}%G;Z_59*>^w{I!7|e%EPiGRjXTI_r~UG#z>2glEpIQ$KIF5r%SQ6)w6Lc zJ-nj+>fci8x0tm7k+rhPrmlNp(uJIf((*#T?Rkz-@!mafsEi zQv)4GzLu+_@NG;0jsmxT1|q3wK9f<=_=;I~zhom2RYG+PH<@3;9ilP#VNg@l!5T;% zFTjQsD!t|ve0Vn|;j)+5&$#%j%y*oNf7{X^dm9Jf6WHMP%MeNSc!b0Ii(5T4RKqaF z{1SE(vq_+)L>BF@7zo?n^!G+7H514N{E5CYv;}##B?mX{#D;OUIF=mJv}FQo!3GE5Eg=f5|TvP3P6%LI_0s!x2ed zrs*9tUBPo?(~LS9&N07)T?MZNHANj#!3PL{3NHK(kIP$t`A;Ge)qH|QZRaQ;s)WJ} z+srRvr}{TgQ`8}Xrgf z_2R!gbqFy3ctoO_y*X0-f-ECbnBj8sOW3Kt4b&8Mi0UH*V2fY-64pXv5^mMtM^I(t z_#EXO@6^Y?*r3HX?uDUj8nV|Ckz|jb8S<`RVb)L$Lp9QDa4mius40;}i*H69Xz_(7 zV$Wa_ky(gDArD7*&$9??D8g{6`6cWWUIJ=LWTEgtAfoWL_V{lUMD9Q&3OO=+zp>zI zD8lf%`6cWWZUZ$XvQT&n5Gu?Z78|W^h=!Gerki#i?e+2d{4yFAq?=UeJrT3^ly0(% z*(1^EnI=1t88c10A}_Bi1z{84$Mb>XeZ|!=s~Kh!0WXGetHpYk1S@OrLEGPvBpfaFekPL4A+uR+P#F(tP~ zN?rz4l+#+?rydjVCa9HmZ#;@Pd&CZ(dWCOdV{R+-`adC(Vl>-;*y*Y8D)r7E4KoxU z;Cypa%^skpLlwH#^P;a#kMUMVytjiYHlr<{ zQZz@AZtzJlv*9VL{rIHV4E@HVGEc=Cm0kAqvY7)L>UCR5o7(HGB%W2mR??=PdMjz- zSAS!_i* z#M*ycUoo|d@i8%G=hvH-SvCY_Oj;-(>Cj!U)+^LoB4%Z>)-zw;MTb8orp=9!qYjF# z5bkhu?EmL0*muS3lp9yQ>^#_lOau$vhicTUO%K+vc0y4y_xWAS0Q^v_9o0QxsB`* z&}F85<+OaBI8`J(kr2YQwv~!C~XMVqAUoEX`aLAOT{gR$e zpK5V!eaO^gZwhnkDzhqPty?st52$PCOSGXjWG|C-t^>|gL-sP8f?SF_7-+4|3VX>c zHDsdvGat-%q{R=J*g+fK3;(4J#hs*`^e@QELI5_5j-0-1yKGRobo0ST!n>L7*FA0B z7_`b3X8QW#gt|AT+Z{}J4OG!|kj%W@so0(nkyEjc#EPaa%F}?E`HDsgdiYg(3(ig( zfSX2Ir_-<28*s=sMv0jAJ0tB+>{$Dd!yC)pDf>n`WM1QT+E3kxhRnBkt*-X@jpeSC zU%#sz2$XdLuQ_wokcEvqY6T!?dYt1L^Y`lr#YJ6T# z<2qyfyq?B&#(?+G=f*~=^kbMsO@|R1Tm_vCs#K8vdSkTg{5d4>DB01n^U&V7{})r} zmYwgh3hia8szdwx>h&0J%gFDKE$>J@4OE#+N4oNv8}ap-6}zK&s__2zJBsN|&ndMR zByBh<(zgy&ak?ocX||@zPw?742ob-2l6|K{1~WXN~9I)|0rZ;qUtDyO>WsqWm^L%rv7rUSoHegGIUpir0wyK!lZ-`8j6! zm`LtY$ccNr9GMHaEpnWK(03=zP>E9z8Xu{LR-A$$&dIwa^x~d*wD!%g3s& zu*+%Fx$&ItXzv~~*_@o>Hlxw2J;7~8o70MB=jAK%k+2hGGAeSTRHfT|juT;EvB5nA z>p_+0!EJ9zW5c*1d#@uP@gE+7=OcMTOrd)SK4=x%&GSs3SdRBHIqn~ z+NLjoQ z(*DL@w#ecy@Yg_l)K-7e1*Zy+_!2wANbw&;BqLZ;7*{pqX4qn^(9u&lhxSGfNd)8wjrmDR-Tp)K1g zKLQf}p~@dZ^3^eguF5x9g`KrR9IhFfP@7}CuA9GOdF@e&!ka!)>UU86viY)B(O27xi8o9WU|g%- z?3HQN`hmjluFZl7Jjac+m~6jD_NGYoYpWhj!BKuiuaSN2{j7aW*L05#4stPv6*Esvo%Sr)D8l_fvhk z0sHIeZdJbe4AM5NH-MK-9BE34$qh~{*w(4{>DfBpV(Uzv@A{VO5<{U#S||Tag>9Yo zUsj|)E%DXi;ILs2qr%Ioqf7>v9NS*y21`ygJ%;UQS4~-P7wdgioD`GgbRHn$j&V*k zakD+AnlvF+O?s2rRg>PHch#hE?1z`O_EiVu)&>-a1l*klRhp&U56^6C=E}%b>AB#O zDrK{mDxCp}b~>ukoMQ?Ydd)EfU8VFG)q>r<5oq|=K-zx|kz|T>FWsCid^EGx`W*c~ z`Ya-!(LtZb^7grY2VP`QCCn3pf3))~D-=!)DnN~tr^H@;ZR!@}g zx3P(To!9JCBwUO?aj+vEJRVt936(P3V}1$m8I1wYfSRHx$}DxB{Nlfp-N{y5nYR`D zi%l!0b~`XpiwsP)*zzt1hYfDsdpM}l0&;fA@9~PvE;)8Ko>uC>nC$mPiI?4IWiP}V zJBw4wru^rM0T4;l-(m4;jhhcUm;bzr#&6Q!2rBQ&hM0)JARZqGSW(4OB=$N!mzrBkYPk*unON*Pv|U&5{$&j&R{QC8!A@{4LbpVc@aZ#6yx9vO_N-Bu&DNHtEt zse^4mY;e`s=x?SPa}Fw?8qGlkl^*&eHp0PWgR92#tn2{|s`0WXa;s6}t{OG||67d# z|1*7NvhAwKkE^2hkrnA_%+n64h)FqB^u(*WioQX@U-*+M`UW!wkF2VMN*OvH>%4bW z)F0FoMOj6^$S7)dKj9q$Sk+Jq!`J4Q@O(xHcqSbOXG8^N<_}X9=BI_zcEu;# zk>YnoBzkMK-kGZ8ijKS!tx71#u&enc?B<_SK~0GY=xqyxdMn4Fkb*am>52>Umegu6 zN=Y3EK$p~<7KB++nY&^#ZpQs3k|ifxITaw;)Bw>Jh?6afhUw>tUYkgUMFTaC9n3F> zBvi8{+8H|G9`r?^N(D@icLYp5%XUtvuAutE5lO)eM-rYh`gGP9AgYF93^UCy;c`X@ zUiK(ZQ=$VU(+3DkCcW1zr7nx{w}}S!KS33JJg*|TS-6dZ=lOcDEdHVm6F7yF=3o3p zca5)HQAC5qUv(a_5IfyZLye4&#a|b11I(#Iumu3NJC9by-?SKw9B}%eGT+9^*)9F` zTWactXLZF?=L>eyM}D!V-=f~l0$c&kj?17v}V&|;ah;Rc9u zP*b7;&2=kPp}7`rz%088DgIbQqW5*JR|W{))mJ5yWSC=q3A+Je38*Pi0lkBO$N=&C zd<+nC`k|!u%Ue=+gHcLqIRIT!b6OB)NfoZ@;HxKzyp2e56~w&FFjqCy!0@N}CG5Oy zegbkODv+xesEXb$!neKKBgOBJNVf${*-?t(EpOSY5=t`cXMPDgZw~`CB`Tn|3lQ=4 zb$a_XGF`DGueaBLQM{cGzLaK^@9m)ldV&7v`6+^Y#x= zQ=$U7dH{%cTiMiCO_u{HMOgz}1q^X97i3X`jEAYpSwn7OK&Ga#XA!C^y71K|H8f+~Hp%04^R^h>B& zp!!P@i3erzXGeuRJ1EBR5A#ddJv(jzH6=RW!h9ffp=u|bGkZS9?=tZgsFI238?Yb7 zoOEw%gI1bnOr8^8BbyZI6JBOne`J%M8rOT^1tXh`&?mll(d}jT6d2E}BY4>(toF0V znw^>N=2zatX$ z+~$%-kn;*l>S*f0`)nT~4PIfXnc+$EOW4kfz3jHQ@|4)aE9{Y=@)dSDe&rSRECF~T za~zJ+|C`C_lT4H3R}-S?Oj4R8wKDVpj}5L#jsi6$I?yElqAoVcYkOk5Gsf?lR*6JisWM?MVa^vh^nC&!=2`ru*<|#pr%9zGO-GXWMXN%g!&}L zFHe8SdD-tkl}sEf>$;d*9v-_-FoMbv@Xx_cj@6cAz#UjxQ!r8=($d=+U9$y)HI8Mj zq6<)UCgABU!OJ#TWwh~Fn2dDMl$Bq#)!RrnHZuRpTW=T^+}OzcZz#QCSa4IL7CiG7 zZ5V=3MrodO+KGk=Zf)fA=$b4P72MXS^*wL`Gm+@b$U>bT!*FM#mYShX3*6PHwLY~r z5mTyzVt!N`F)zDE+z%;K{ByCKlW%8Mo0D%UebHzvhe5yww^w&6s8R`Q^(0R;H9b1| z$VWv_h}z)x2XBLzW}PLUj^a3+IW?Bi1xCip7M&8?4bQ$`T3Tmm z$bh8z*n-Xy@P6jpRaC1M&?kWgCSxaoN-uQf*gcx19(`&o(+%vmOZKGwsF4jRNtSAY z`Sbt?Rm?%6{?--Nvf6BX(^)99S(q3x9Ap@zr46Y_Cit-eoX7(?vv(|$c-@!aWk386 znVg@j(S@XY%8(%w_9Xx;%PfBljD+=+MIq44q0Lk z;nhhq8nV>lrp}H}HrI7DMO9sbGfc-pw++%!fq2=AK-KG{GtGHdcRETgvFd|Xbt;n{ z=xT9bl;fWvFZTJrg#N<6pg?!9c$LO={`f6RjqCjJe+lg+9WVC1yWV}A4flpU;Plv@ zmivcg`g?bE5RuXL_nmRw0h~6-qObT^2dZ@RWxAu|e=7~~)ruHzm&l*98}eoziPe;Q z8+`~%EcKZ*Z0jD4 zFClh^j16x1nq)QQ{MVsXZOy$ut4aSyQE0jv|M2GMm?rnOd%4w=^QpsC@_#vFdD8z- z2bx|yNvWq|no1+@wty<7vKW0)ihR=+*)>r?2Rw%|xBlJwfxX*Es?(X2!YeYxr7Sb6 zb62ZZcV!Y^k?p^o3dUpJT=9OaZrpHqfat@P7lrhcdBPwX;ZU8v16eyBhz&!cd|V2u zWO{$h=JCXmc3ghBS9BdjaGp!0e}dORT-P=WWk6o>P1Wo---ObDy49ak zSqQ`i=lR*7is$_sc)qLkd@MY_BPQ!Se-u>l{E+7x)_HS!e%Hm;o>IFT(94GB7|$ub z1J9Y1EdOicvnOPTEdvVX3o@+d(_zpa0QjX{M(DQkDJ>Nz2!E*{(&uK(F|2wia z3y2MF*=i-I;<-K(tDjfpOS~d|CiW1Oz7U?TkI6dE?*vsmKMH4AMM*Tm&4$5Diwmv2 zxaW<|GoDj?2c9!2$MXy6`MG&LA1?afIfbm}G$Nj_Mb-`kVuSO1DX5ZZeKOa1u21H| z^ZVfWRWVuT`K_Re=Swy<^!x}I%shxaL>pXd|4XDWwo`luo---O^9A($w!EGXI^X1i zLe_H{5zntf)~0~N2Iu)=P{nh7KG=D#&j-Wv58!z=ChI)E-r8LGOheBX!(is{^Q}Fl zh8obz{vuNFoZ`8j^9UC9U{`l#5}vT`skR$EeG@B2J@0ve@ti`|a~cuPlgP*(;IQEd19;h0po-`BW1BE~o*&{B^?(RQxZC7i zqnTn4I?%8CZ1avMbcYpLvqQh6+< z*Okgy8%=wm0Bqk(@W4++9L0`d;g!?$_XfyH)48SseA&el*-yi8IWwIJyb}PYk0d#7Wexp%BjfYYjT;WdxRkHts)}_*49jw%GG2UIGY^}Dub=ciR zxr*K5#a_`n5J~W5pm6^>rPhJXzXefqN|INVP?X^%^Gn#hDZT}2O2oKD^z!wd+6IdM z8zRwh5&RH9?qQUWouTv+=TWUt_`2Q|)Rf3mS%+&qRSk+?i%4`FnX8QK4D-w{VYnl~ z%Ps~rCGu2uHVXeFQ2dJ#i85Zuh~!&t>15SgB7ween!Xd|F2@zH`d`nHXJaW8nZphDxO+#W6Hukl*k zQaub$dlPy^+RuS@(Z&A`yFluo4vXoleajl#QT<@MoVc6aw{+R~nv^1%X5NnkS1g+1 z?7L>&Y>kZ02de>Jly7)n*F$EHnEAt^tey;3@t@ahashYw2lpt=)gAGQ_b4^4ON93* zHD0UJagS1eFBA7Dm!uQwDj2cB-6wbjRB0-kU>Z$DoGd-8_$o;7fwY6q_kEA#?_&xJ zBVSb3D6}8otUBj8Pjvv*23JHqE$u$@NHZq0~(9I7Y$~2dDEZ$4wrupG(#~MfTdnvD-+JF3S>|nbf z#}2j&a_nHcz}l&3d5LSft_)9r9VuJ#NoKiSpoOqN_Mu9sELd!C&(rHcm73ojf-=;O z`^$30|Hs)U;FH3~rGv8X-V$EmdcpQMh@hFM^uw(^RdBhpgDoL~PMB*<63;cB&|A z(aYj>Dj1va@INGD^>cyAhnMYqg(y5uwV3IZQag$o29^--qj419(yx3q2AnojNAe3m zmEv<3e&qC$zU5RW&r7T^>-#@bRpI(CeYFfS{&|SxVNF5zt%a`ni4S<`G|k{YA7iFIIDw~`&13N80MN^!miqm0yQOK(2@0);tJPI zU|1bvb_IJis8X;Avuj?_qoXSew>i2Qd~otO6}C;3%_w8X!Qs5`%k%O67V$Pubg;Zt zTXB`8_$ueL(_I6q!H zq|{PS{mT)_U7I|&&qjOgNyS+J+&&xa^_l`il~5VOCi6>pBqIb|bB^mvi3v2`lR-s= zr_PsOytO>p8-;VV^RuUxhl1vyil57Hy@Taf7=Dbo8>s%ih@!j#*wK|am+3msT$!U* zhSSY2;aWxr_>UKP6{o}~az6;k%>7vT#aD69LDfDI)8uODc~B+y(S5BgXenRBc(bN4 zc-g(y#dvv)22E$43NuZ5XW)9Ge&q^GsL__fCN1l6L5u@G2uoDhvPsw%If$;GggZ59 zrk?~?kmGO_7B^{e0lv*92TBWTQGT;w%Rdv*j*4xf*OAq$>w2Qsi)E-vm_>%W%rD`Q zj1au+=D5C;m_TVQ1eK+=Ony;X&m*s2#T2;G`VG{a(yHo-kERq~qm9ytI1m>=VJ{~qHEP~&+( z^IN3C0e-1=5VBh#yFMm6+8Fh+Pv*+%`L-`_M7nK_-wKo(W=HT(|D~) zUzhUL36Qm6eWdXcP^Ipf+~DRO<~(v^Qr~UEah!C&9ysnF)8jna0;-gx{*tZp=qwz1 z6^~Ajd301{zkI#%h^wz~t)DEzMjn}u21g!ge56Vj6!~f-WNkoOli+0!1XXgPFNm3( zTwTy<4GxYnC({S^!Lk6juE3u(Gxv$c=XIeSYQFvWrJvc*E&3AVSAGk*v7;*Pi}}(r zvb+WQWKqK0w3NfM-Y^T8~Lo>@QF7QhAu|o5SZxH%w z!uk5dRdF+1*IkA)_La~iGtJ_(S2zI(C%Qom01S#aWS{Zc@%$LNu9|*Sf29^7Whwro z6nHgBr9VYBuL8-2hoWrO-C(lGV}Vk_`Y_}-%Viaz`w1PHkf`5g@oJ54T`u@ z@v_ZF!5C5(L6Vml1*v|9M}$s~BWuxA^}n%xJpNJnFlYYybhzxua{kqByliv zbD_CG7hRdlbh*L`;LD7W$mh&L?(MrR9ki@jz1`A>m)@jbyc=sv<02K~Z#0E1Pc`a# z5fd-zsa=tzdus9dcrU`$Jxu6lt6@XClZBmj*wAXZR*SI!TN)kq$1+;SOQm#0ziY9l zK$WyuO3G^iZnx7kXB`2r{-xKg!n7Y08{A;~uoZ3(K4}lHY@vO$_1!k&`>!#fY~)w_ zn@sP#N*0v$Bc;5**X=sNN6L#H@G-=r<6q?iykbq@w>DQjjqx9Pq7XIF!>x9Gz0cfG zDgUgUzP@+1xxV*#`cSCQcTMK}BT}PWrT+tpc39~z#Y9}CZ-t0dy1T2lU8U>0dKliv z#;U_r`ly>5R{FEH(o2w(ztYLFeWj0|j!Hi>X2n(dQmB$jr=+cPnwClrSn1EA(ys%> z23P5KSmA>0D*YQ=*V_^k8f2usY>Qh=rO%T})=T>3rC$37A%a~5UFoG>FOAn(e5l3` zP*u-@u?kvjXdCGspI3LW*Usoxnbx-TLB`ea3drrShL^`gTn#@45vgHbqtmk6)i9H! zTi+ZjdsoAqZf#h@PuUv&6Wa6FFj=;*;U)MALdAD6E3SqQfEB4>O4=HxX{lk}GfaPn z8a@LQ8(a;qw!)u-FQ;1b) zSYrj^5B;qWk{HREjt)25(V+xM`9}w`Y(F}5!5ztp z=`kyAbXW>iGCEMwjt(>}O`Det(?zFX{0GGbH#*#5h2H^R?&xq|KVLmYHE$r2;w}V_ z9UVHdW=bf|@SFK1Jed)Kmu+?jYDQFGba{$DSjVBqPJsosqVbep1f37 zLP>^w%`ai6_YhE1q5^t50TI0eGWh;Ik<$^0-idfau=$-17@xmK62pz=m$1|O0H`TZ z0lmiq5xtM&F4ra^TM>y~^S>(big#Y=={RhsN+`*YxKsZUc6wWZni3VzyT$0uEREep zaIeuLz}uSQO&6Mr3s`Tfi?K=~($VlE)_KMJpVzGKs%QG)-#x@~;n-J$s>fb4>{Yex zkAL?b-({NlY%u=+6J%|0L*yt>C9C>?H-^Yn;H``Cx*_t2hP;`6d2@L`_{3J8|Eh{y=KNPx z4CK*&RXrir>4ru=7u{{N@#>oNKE5Q%V_-<<<~bMKfcK4Ga2rz5JQLkjD?9{~80fOW zy+vMcE&Pn3MG8Z|p2glGnG${Hg>R9X(C{sC5i~__krx7yx5yI!Z1)zK9@^Sh8;`V^0UVzJ}N`SlIO;8Q0n856agbB_C?|uQVH^IbBc}x2ItktogMwcLx zY5H-@vU4i?)4ZogX|tKgzAJHhl;!$4|MW<{{mKt^Rkdn^Cquw;!Cy+;@5=7B zF_w&Mou{4!HF_VBSe4HAlf9I@Q=_UW#-Jbapyd`_XPST-3kD4N3bAVFxnnZ#Vl45O zO}-SnK|rR|1Fdrt) zx&n)wc@I=6Htm-r1ZOr*VHk^syc4orh@X(S5U)A~CHilG-6^Sh;ls8>$>)hL%{iUy z4?a=N+kler+d|LIAF6hga>(H8dQScTlgB$XI|lZ?2nviV>W|^i<2xg zT%06myY%)0s4_9yl|aK&F}MgEAAG~jZ?wZ>@utyGw-Ko#z83||D zH8FikKd-P~qOkL0Zqpz>p_sL45Z`di+BAr7xMgh`#5dgRra_hZdK>J22a*fb3I2Fc zr5yb*i(?j$zmCnrZ@3+bI;6K6>Mu{XPlQ)NSU_1}N%+fCv=p&j&*_SmGI^}k`{9!F zb)0m;FFqfFD#hXVmmsTByAO@j#(?+RMEj7(EiW%+dEsTs{%-xYrPaKby^@4FzTwsl z9P$_B&|Z0JcK}6`5Xmfjl3Ck~m!Ol8QPtGMaHc&n?PuZ3K#c_hv+#b%a28HIhJB=~ z1O6Q-grGCOftvIoxlc{L_Al}8nbh6vcjP@9yo+*GvFT0b(~xB1N}~$@djw|r?}Cx- z`&REK>?}`i_qUZ=Im>tMQfvysxT#I*%;AucN>W>?Q90Qj$EnV{<`lZZ32`H3so70A z*&Z>g<$tUbRsJ5x`%Z{kKxF~IJrKJc)Ml%#cR|&8T28%9pA2S*QqJtCnLR@9vS4d$ zpQMIkA%qSwo-SECWQ|zdI4L(9Y8+&7lUg4WsOY0|#m z!&A+eK#L!tuS-F($$*k>gi^JP(35k@6g*=`HMa*tMxL3P+Tc0TP~3;A0*4F!KGb$j zF4<`89zLb@WsW_3J$*U^>NNZrfrvN!ouUJV_nUKT8QyHph2fV5)$@jL`s}8L-@zIF z8=&VlJXvZRe(85G{3n4HZ}^eWA{W4vbcUyDF?{`u?-E{So|ED3WM_C&8yNlw7=8sf zT=0g!+sP&SoD;*}cBx|z4Zj`&bsD};us7HnzWZ~w$NRm(wG40e2E*_bLG`@h&jCbs zk00U;e*{kDHauBs8~*ceVfbl*7H`C-rJ(5XlyrutYB79GPMP1G3^zwR!<*W`@aMts z<^RrQ_@1CjBPZLe6T=^LNiM^Whd`Z%{~!?YhF>l^(Bu8qS@77{2VvTs{6cC&Rtj&hVx-F#O#x z{1R}u;CuWHPA=Kyofy7Bu+7=e@oOPar{T{DM7-hKykL90-x*!Y@MdQ;3_m2Oo;Um) zKxFs$zRvIm;8bqIlcl!dXMF?1pB`xOhQC(|iXKl%XLza>!{3loW`mRA)^KNdQyUom zT^PRUi@6Nn9#m=MWRrPf_`5H3?G#Qm`#_*h!wUqQe3W#jO_i~1R4X1J&o-DNu|HRiYeB-6LdT+0ntT8C*3{TZ!_&zyhCOH}IOm~Ji zwSnRD7U0b$aJb-m{N+wA+2fuVenPOx+xPevAyB8`*99Wp@Qq)#J)ZlxjchH$^A!Jf zr1uS~=M8@hAhHeL-5Gv2oXTx@veY(wLmGZbpvCw28>OJ=@sxCir)n|$!#QQ%b28i* z?+kBh1H)Is@by;bGJF$IrN<{*>=VN`c6U(FT;A|ILZD8=UlfRV!!Hya=<$AAdM(4- zZRvR68&uC5{tG~48@`J({8KoU+wf$mZTQh&!SJ1z8EEl6{t785dORha;i*~-|9VcD z)lPe;tT;!~aWkpvU`- z_q7afHr~VVzXa9uhJObT*@iE3hQ9}=avPp3wGF@SOBjCORk?b6v)8RLDCrDO)nfQV zbIOcxGW0y)3~y=!!!Lv3j{%1Z-teb5xx|M-V)z#4IQFo|uY^FIhF=nhc*FlFI$(Ie zx4)L*&E9?({?wp)-teQ}*wpYXo#Cr+D!1XuQrqxVH2gDx7T@E~1(eLYlyrutYBBs5 zIb|MqGDke+4R2}#!#@MVe*q2`yy1Uwa*3M+XZXTFZ{wz9qpN+_m}SLvX7@L33CV*J zj#v2fAE8iBWaZO;CYyZvkDT)8|A3>npy%!BW;#d~%V&!3&^Y<9*KbK7pVw z&wEagJgz)M3(8}%NqNXA<+*_6nGwMH^0au%R+F->JO&51RF(uX?xI3xCOesFr%6MI zY0TTUBb;eWc4#l!v&D-I$;lg~l}E8Cj|8y3C|5gJ%DST1mv~kB$wjVZ!!hy(Wa=Cv zJD=@E{1|DuhBd|*p=SmoTWgH)lw1dW6qMADk(q$Vo}8MX8_V6DeQ+xG7$HmTF*5TD zjFB$a_#Wu(afcKXs{$pBJ$CO;)iOqQ$tm-hlcB2%$jIFtQyYwtuQ5ha|H(B*Nrf zya=jA0fyh~k!cU7-vJ!OrCKv#>c*f%9S{k|zt(1fk)2^jdt};!?Ez{m^1Kz@@>)Nj z_a!5O&MXCw46>~z+b<-Y3QBu=)Zkb>Ms=Fn+&aY=*=cHdDNk_HROwv;mc_9wab`(X@a-y$w~Q|zh~!(!~e2RpIIrH znELM9g+x5>vf05VJJe+NDnSraRn%{4{BGEH zO)BbV`{k&t-^lvqF#MJEyHeQf&nRB*?d$v6$fv`+j?>R9=13t zJ^T-kj-D++XD$LdM!0gck0ptfnOJN)|t zvp}TwNaM9noN=LJQj}Lgm507lp4FxUdY2&LJlJ>_!PR}=)v$#P{yl)cAG-Gd;5@i1 zSWtIqL^unsGI`TzbRKN-_WdY051uPdJ-kQQ^vK{l!#$HS9t$0)6P}Q+*6mvurynQuU!Q)L8W=mkj^M%aYT>=NR|q5==>`9V-e%>c;6~~?HiQnUPLGH ztCSo+Nc2(IVQs{IlLeD<3}4wJ)BZJ+pL2@G0u4Qd$MfO;i9w(DmpeT_wrkZWmjDfvsO|(+ zMDMnKHd3d+naisI@8OAUzj3^D=Hdo;(H;%D89ys{tK_z{R;f>YS^a=21y%HX@ARAp z-T?uxciyy9E#5V-!6^an_DPwp2UR96+CauS`P$1K^S~s@+bYH+=4}-+nYUHW9FGoL z|2n^f_zwGlD8RoZa=Q*ot!$ih5qi1{eUd_T|I9Tc-sSKPLyS|B3ys4NGjrix4&y)s zBYY!v^bCMxG!l^vVY*q7gt?j~EW>nrWZGXT&IC0Ud5)wZXz|4XUw<+q=*)6Z#WKdT z3R>-4@ID#vRvT9Ee&~2@??9oCQAPctc4HyJ={7YiU#pFQ?C3-Nnf%3>idE!1itxLk0zo^)oGlQnur7}=Vr!}5BR9qRG}nCB&yth+@QMa>KYUd*}; zCA=&EUz`-|=}o|;C5i?`ZOvASp$2P6)TFmma(`9wuP^aJ7^I?gh@?R{(0t2O6Oy6u zb6*=d4I18q1vM6Vv`k4o6uCVpQ6(Z_ngs)?GIBBOZjVgw$_PPc_5(E*F=E{Mw^EZp ziKZbEj89M?RYop`8hd2g_mCx^#v;ZZGPaXe_Xm6rkr@GRfPpGK#5n%oH91^&Of7KU zB9MpYj;RGbjpq(|vklHZrWG{d7?G>Js*}sLYPsH9!#ls|1ZseelH7w$c-sfOenuSS zc%8GFl7p(WIuz9CL_|{a&&+GdDB(f6;$)mw)f8j6%pRHcpf`dV3kKHNBamT7PVd|y z*OdGwPMhkt&TH#D+oaBg>3#~Zz3I08!dA|B_OPZqrJ(cfum?J>G2JNz+Y*Z%7X+AY zPH4I-z`8eZT=1qFn~jde;UMtN$;o^6ro1H^dT4bysL@J9Vmi8|kqejNV%@PJ+}NmU ziZQ%yk4$^heF|zU7%<&6$jBUU72UIZ=?nZNg%EURG^j~i+v=jBS{Jr8T}R%5grknu zg*}`X7#QSVBn)zXVq`cLw<#32F#NI2ji zctL|y;5ay%w?w00$%3(wI)s@M5J?|?7{h-!O|{LP z+ARBJgkV@~k4*cE*A<|~f`LAKI5Oe+x_upy^2Z-6R&IC0kVONCZH2E2Px z0Rr~Ne;xEG^9K^6`{(?Q>_J@fGJ5u>k)mJ4ZNTb66PwVPVGiJAx#y1&olv+}z|Axu-}tj)ZQ8@Yo!cdIP8K3gFy7Xn6d}h7&hd z*ogkR?$ulH=b0&>{7qfJU4Ptbjs5O`i@x=(iR)(xI@24}q;zKX2ih~br$MuqE#=QS zG+gJT+OAP*RDkxB0Ym3H#i7x&1Fl<>s+#XC?~v5g{dJj& zmegI*y8*W$fb$hC{mxd@6phQAsi;BAS<#MfC^Z0bF8D^B;?U^eAgfXNx#FxwH3T&3 z#9w#9Jo9>^S&%&kKj}(^ke7tHekLx%?e@rY6(a=va|AV}IJbHX!d)7Xb9tv>T|sI zEQ@uwSCv{B$ol^Eo|EOy@vwiHZ@~KgW%5H+Rrzi3{~Tb6!yhqb;SbhG7f4@)K|gs# zscxXU;0-#)@ltPAU;Iu8ISu+K;ARAH-k{fqaG^mBS}ucDJ$)-agczXtE1r)W+5%G% zS&_=mO78>-I6P75|15PiQtBp~#Kpyr?it`J=W9sr3a3}~F2++xECnWecdOgZBG5=x zNas7LW@qBF7m#(q7i1EsvJxjwdfewq(#wK{bXZb^han(9d{x{e+{47HaLPPPlu`_u zTt>G+@(^)yg?BiVJ~OCWc>=s1(x&taI+)5#R+Y^$38r^m=E{v)B>eqj3r( z(KjF}Udg+3b-UEU=84G+y=JGjz61fkhDCxG%X$qazQ^v1eGOZAaZ#% z|CzHrS!bbG^^vLHv4P}S?0n{D^Q>&{?lK`t)~Mt%^)8-9cmrT^9oS`JlWA@vEy_Fn~(2xTb#y`27Hy1%4SoQac*q`^_58xQMCj0h9)uA3y}#WB@IIj0?MgmjPeqIu+!C8H@-j186o9^l2xZ za}JQ|BjW}Ti=EGW_5f;$!J1dIaZWOTt~DA|bJW*#dkmnraB-h_tvgP}zy)Ru{MCis z-VO+pSvc1ZpsOvKK}rVDRp9`#{_o6~u}CHZB!+aajD^9$51?C6!hbk`=qD;Q0R!l5 z$hzPM&^l0M044sUk^$82dVd>qn3dF-A%AQ-fau0b22cl_${s*GReJz^5P0bE1L#Od zo4N%9s2wh`(#rx{_yP0)_+Yd%d@RYp*TzwD7| zKY-GIVgON;1LzGo!bkLf_lQ&(&P3f22_XH3>X#6yGKw(lVUJAvzpZ0IjYSrKosr?y zT*-C2MQSQDvk?j4r3Ac504c(-%pRHcfGa_bMHYZ3AtRTE$KtAdb-?e3_)dS>f%FH! z!y(RV@VeK?_`kRtfnU@ZQSpz|lRddT4Dl%tbRk$HCxKjWAR~gx5Fd+N zvPRAaQn*I4*#BgW{0(5q5dZ&qjT{?{FW-V^p+&?r-d)!{?Xui;-7~q?zEGEyrb z;KBf#(3v+~!?Nq3yW&5?F{=5Yy3LEb_+6FASD5?bcv7(*E`dIQRP+lX>2-A1B?$2s>#K0h&?jhhYL# zj6X!6L~{@cMl~_Y$i;BAJu>a@hu;KhEMmY&zqf>EP4Ls`kKp--(~WM&}33?5EKM5D=i`IwWx>HU+1$r_scTSk{I7IYHh0Gvm96xCt{?pTBRb>Qa*ufr|{+JPh z&g=_nOi@mwt>uVW?;LE8pUBK{hy;-P@%2q;IE*@A`8HWkrBYAog-CGBhw6#0MebZp25x8WfWnk z#yJ-};0RD-kp*Cy7@X)IDu+WHW)4FnfI|s5S^z1+u+Scv_JEgz8jCCd$08$u^_xcO z24?O-B!G0Ytgl0)$|%C{wmmZK0lx$_7FhtUL`DE_Zyc%Lm??-X;4}iBCV&(X5S(+t z0}cc=7FhslWCZY%jau!(%os#cLf+KSuOm|U?6Uzn*&YSlBIExbsIkZbaBpM;aPWV% zTEfhYhy*Z0z?A|>5r!A-k!fGT_dtzB7J%0xL%`JKKWp{hfd5|;1}B4^R4U#biZ(+wfAA_xRyR1VDs^dW+Ey+n5pcA zb{%_jvd|K2lZEy*$hZ((OTPqi!IO*#Dhus%NF>+N3xO0~OS9Pj>YFUI|NmY~ zm&`it;*P&))w-UyXpp>OQzHu5Nlx}jk%gY9FjDga-ft7$+a0gD9cW%u z>~Md}y|lbsDRX#-`zx5`(>Xj8F3nRf2T;COZg5b>#}e;8Pg8tRb1R78Hk(Qx8aQDY zk`!S;{d#8gqKi6N#=M6kIAJ;95Uv;I<$$hm!ea7xIpB;aQeziFi^#K&Rba3 z%P7L>0dJFpx5n{0&rs;3pDcf(2VPk)%;Zfk8Mw3{ zZG0GwRVBJro;n&>(R@VG4e4(xang0gTNv@xRK{?Yt0`3Jh77Wa6Cn6&=+tI@! z^;y7we`2YV8`Lv@;dnam3d0pRaY@+WX5C?g-150#?r9pizAYhEYVHr=f2$1l4tMF6 zbaaz^`=i6%x-oqOC9ltSxW^IfUE2=#8WHq2196{Wz$|I<_q#lL&~g-D3DmkU$|iK? z22iC3IX6D(X@NVXK?z@BAuo8WJ0 zO)iGMAiL1VCUj;nsIiC<i?4r2{5%E-kq%O08b|LaZzH5M@%=&}xxx;o(V z26`D(F%U1M!#}>Cw5!8FSHr#0yO4^$MI?2id!xWWgk)%v@|E)jY7J^E@~qsE&{6?P zv^64ODii~ei(x-|WZD~OEU2-F5o6yrxc>u6Gy{=fd?eS~d% zMR4~V@OcA$3#u51SMs5O-b&SBpjX?#{}ZI5qO>g!{VfFsA|%7sIPZct&~~84BG1Yl z0xi3O5{-6X)vR1Kxfo{HBh%hM^FWP7j2MmK3FEA)Yuw`egHFS*^oAMb2og)47OTTnN4741inYV zsKoi4QkC>5mHs^d+&3xdivW~c8RRj@mu5ecytFHo@>a$MG!wqfqSDouIi2B+_U6T| zY+G#i{$pK-S{K?um1%vvDfh?uk>XEW58; z?8*^-{_`hDZ>im#%PIJHdl|;MJ}{QI`wmU4-N{pj-KjLo?w?-j%jWz0xqvbVTWt4E zwEN$%`vZ`5!Q1^=DI8w)CSSJQXXdnf`=*=PJ@HMIhf~>hPkd5k+5MuRZoa=C4e2el zyYo1uD(O!uy-(1P-tG?pQ2IN0>aaVNhIX&IcAQf0fapR?o6wnGK@|g;jZ)mEHc^#6 z(Ygi_a(CldBw94{qJGNUAJjmUFXlsZbq6Clx)pVlzS>^CFx4Bpy@c>ui@lJ>3|lye zsOg$ZNH)QDiK}qVRBnsAL=n40=Y>kWL|hwumsks`3`O!~cZvIQc8RTQ|*1%Za?mM@%b|+6AcBj%TyKlJAm(BP0 z3jk#hw%G3LY4_t{_lF_tg17tgQaDV3m1XxO zLEU_RpAP9QwY&3#r7G#?Dt%zkklyZ(0#N!pdFrq`m1f!fGOYV9c)K@f<;u3jc7KC* zUjn=Lg{%wS?!!Tq{!YGZyU)yN_bVWf-QVfeO72n2!KrM!^Hl9;>pKT^^LGCn(pzeG z=Lkzx(#=)6AZSQ$_v%t>ckcPh=Y`;Hel8-?@CJU|(QEw=k(wEN?*`>l|5!Q1@- zDIEGc`LgYPUrxI>ZM~`8>C{T>{tK|O?aouR?f%pGt{mY!GZw&GYIo-cOI6a#ReDum ztnDne&fE?_>F?ypw!8gy;iX-v6n|6vCGHRB`Lg-`{##PEEw=kDwEKG4y>nSEyY~TA z`aAiu?fzR%yPpk#?EaoO%$kN%*>+DHWo6AXR|j?T{e2Cjx76;=4VJ2;ldJUjpdo#K z@7l)Nojlog=fw{Gqg>jRO0)X=vU79U{TM(Qge|uFF|>PQyiUT=RQg+fD6GmsZl>*8wZr?mShyzwZ&$&D(uX0B@^|}wXQObQS)Y_`i|syucJBwfH*c5A?j1mt{!YGZyU)yN_md%z-QN>; zS%>0Ow%rpqSy}!4&%jNQxBIh@-cq|eCs?YIF0RrK2FCJsZ`t13oji5eok~NyrP}NN;ItJ9kd1lFpjalY{Q#SCx7lY-^JzyS0;5g-XL!C3RQ5Jk<$;F8C)b zdx9zkdegXT!UTz(>!*ubB|sp10%rQ${%3z#(_ZJ;{4_&Z=Mt)-<|HD z_;fUN3aZczN?e$hs6G(XO>8htwLPNLRJu-|FTVnCRsdL%04{KVKN+K{s;8G@|9`;S zB;mc&@t!ON#ofi`i;-VV;?k+Jc4WftIOjB ziB9Vx)uxlLv>zgsph~6hG{YP_r{bmLmaUVj zrXea$O{!lxwNK#c_h4_wy~s|J=D zgXhjW2mCuE{KtVRmb%zf+zpYXl1+xlZUEpA={)FWzm9wJT@MtQk{Ke=qKMnft|I%H;4FmgZP=z99Hhx-!8Kk5M>@3}#G8?D!EM^b{VY(W zP*lX{(Xh}&)$O%T)Rb4V+_-S+_D1?%8BrtTrc}2#(<}d?(dm?Dn(Fpesx3wiUjtC7 zXCc?3t5>y))rmcUpeCx&U}vKeQ`KkvK4X=RR_VNnzWEMJq^^LJOh)u6l_X?tgBvRA zXUk>>o2=Pk)YrJ7!UJ+CbK-?+GQKStbd(l}rvHSRN-MbPAly3< z9@?#*>c|{#M5DjKQwk+E@f=ndWqS@QjIuq46-J5Yu+Gm1dVFs_5qc6U$TMd;%`=5V z%`PmqCBmVpP3p`|PN?Efe20_~?kCzKYV=K@X`e*sw@?TJXu4F$s2rh7EQ-r_O6=4A z7T=8CKI1BC*(ZnBGT0}}YZ>g5<+UuZPkMZyr#vb3Qs_zSBZ)JQ(&piO*M{|WvZYq( z^KweR>!hi*wzTnbhLz&MK)P?Dd#6gPJBP=#IbDsg8OeR;3^7^TRp+)g=CfV3rpX$4 zS#G*YuQ}YWN&e#IG-xufVXW5er=YCn37l~VRd|Fvfm7-4gHm2&VRU9_cUww&K$1Ep z3GeT0KjZI=i-2k2{pxoh8y5pd=w%2i62cHeuwU!U-@kr|@qu>1+`-mH>TsKo1v7ta z{X*m1%Pgq*<6M3e*0-h;l^Tn(y3oTWbmnMKWg;>6;L(Ez-s=0@oTR2jTji>$DgJhw zR&cvbE4W?#O)9uu{iK3PeGbj4&knBqwmv($JnQr6dc4Yj61gxssn1AIr9S=TiojfA zrFV^5^Gy@J2U9YCs#XVrD>@dDEWYoe(Zzv9^NOgc2P39HBMS#`A8ltmzTr~gKHwe)0T=u-_6Vp+S;J+Fh5f%QWA8xj zy+D;;#(oP`)n3M`M#0rs%bvcFeQarUW*bnYkn}WWM(i=F=%t2AuN|blhA8mRrs=)T*NehROcrG z8UO#JWtDB10dH^_!;KTJY-aE*&TCI9D(~{!n!I%*F?OX~ zZP~XrN9LFB3K4m0^N8o|;DE5dNL>fH#2=uUW1B{$-sztCkYM5z@VcB%0f+apjw74n z*Ij!n!xY% z1;Kl%+b6=WLRc)!N=RZc6iG{V#e1p5b}h^IQcWIj6`uIER^J81`8Gl9)!P<_{slR| zz;4*|j1T?|e}&F|Huu55QQ*LZq)N?zi^ih?Rk1Tm`Kdt_Q6Vbe8gtX;5Pk`P#1gU1#4h`Y|1)?ta ze@DX{U}Tl2X9We`H&I*zKB;cv^7jN#+S93GQgL%JHAYU>Lp=MC_5i02Go z`~<_~s{@&#Nf|nBV@D7bC516_;W>Hjje7gn;hel}O@5p?e{Nn=QzYEenSv`d7yMkf zC(zBr180cSr1*Fh>*6c5nuaqjbhLdzXLMiN6no$=8rMEi)NgrS`S=St`t0=>2>m#P z=hbA)+uHrE&ucjy9PX9kek)wwOxyi#%4@dwQsb;^uv7b*O~?gYzX$Wu)B*dN{G)lr zlt9BPm0qyK*Urz&yQ8#HyQ0d1ij&QsN)ayFsvzrjN>LA&AEydS&(@8R*PZ9lJ2{-Q#u&U6P=6dvguLY|$c)vf{W;Ys24cf7`x zAXe)Rff2eSd>4TaWr7hJ>2{wi<<0``W`q$M>E0#}BP?p6)#HJlR}=YnL6w=6rvo37 z)+XcneWu%$8n2NUO6daw3;9ci!PS9<1g$YB2F(}@FO6pz3@?pagN>7y#*GGao|2(Rb0{YAo>lgrap!{b8uNY3W>7Omigt3&5|2=+q44Th+}}6(ZVC1{ zP(y4Pp+(n59WA!WFOQm={D@?@Rapr6V0zK@Q7gkR8UH7KM@{Ai+Sb@kt1~Z$+L8&O z=t$$|krRR$a7RbY%>7HVrJ!i0b0TT$_Ai$o1rPfhm3kMr(YJ`CJ?M8)67qs{8I>|L z8Q=}z7qZr%#v;$f@SS>ERe%z0jYu#q6i1NcV%X0fneNUAL1)H-8jBb(QfI;y*_?py zO~VGhTR|0L)8m)D8i6mew+mZ1CylV?k*fHe!Xo;q!wn*Qvk<#6UkuPXBxr9tw3$HT z^>V69SFL^vcrhR(=uEwB1I?TSQ|sVdtrMs&c;4Qd@)i#6g%4K@&pEu012g&`90;DH z+fmXDZ{&NMJcjoUC|FHSWlNnh<1h^cy9MTZIN`zqx1=3BR^`PLV@?6 zcukyJm@-}y@ALN>W>}+3XD^;#*l^9q{Np+lv&%v_%e)D|(c_4u1Jak~a0(P3s;j<4 zMpd)u44>K~)8&j1bmnJJW5K}mau+h3UP`vZpRm++$aF$v?zwQy6%{W!72B+dO4t=u z89^BK0=El(#hH+W5eqJqwIDu}RkdiN)u}lpZv$0^z$(*erSEKazHVbC*m20uQpopk z6K-m^{#v~hVELtGt;5XcGT8`Tt^+K+fg#vO`swNl1H}=T1 z$M_Z0Sj33&O>69H9|DZVh=l1XVw91Kp%2I|`1N5RsIiD~hMn`aQU?ZnM_U1%nE|Ra z1s!5x>Ve57s`5v5sdZPS3J2T@XT+D>h6QpAqE!J(nf%vft;>f8H=}h&qH~mLL0%zO z(F@I0beH>eSL&oI8(E~gJfN#)3*omp1B$vlrrUo#v|e)6q5j6HrXWOlh>AZ!PN$Hn zWXf}O0%?Hb(mjzX+!|4VaGjf6eC`I?UXIO6PXKAEBZoVkpV0MLR=d;rNuAGvHmFJP z?t+jD{(`(%RNshmQvKVAY;WwKdfh*{N$&P-PeJ0nqB(T+>+f>hxihzf+uo91xPj&^Kb`V^2B zI&x^5f9q6Wn&)eo=4A-EFwrL9Oi5Hfg>zz>e-pW8%$AtqS>1%Pyw;jcIAfsKbfIyc zi5ssfHUBN8hN36B;CuNYpo&KC@6z;g>r+Yg%|4B~pb|hzf+un`URwc6V%E`cROjIC5y3S{-~7)7%ar7lIBh zs;|R2G0jaxwjKO`m;xP~vYYMT3tz_t6MCWxzJm`2RW#D8R5*=Wk4kvO;dXTJFVVqI z3IKcu|77Q&gZl@sTRMYNzwh9;?-aD+V>tCDe$ms2imyYYS0k!q%D2NhrhwcOKVkFIoj|H`)%7z&B;0svQ>E)2S*0H{wDK`O?eBC;lSA%(d~hNA2?;Z zX5ypguov*6$MZj^A-A4MOxc62e>?|@X{E{F<*%bR9AXh%3UFFg~a`Hmc#rq;mO z#5DhgkPE@U5!H|4oS5b*BHMxUKTLsvL)py@oT>%r`~%SwUGV=l_XkxpdauJ6IP+8H zG8A5iryUeIDf6@gIi0x{Vsd?+Zm8RsFPz%P=nZv0>v!0kZ=_o~$HVE11FT^dRcAg( zu-a?u=GS7i*ZudGNAz%Sa?G-%7^-g~+hHVXp6&6s)~8U7$6wsk-T~@6pBDU&_D>}a z5*$2qrRQKgm5{Fw5S(|QI@bicn~J_J>4ZCuE& znCo^!B!4_-T3-C|oTAFxMn%_wkXQ2%E??7E9GI&iw%Yyw(h!daSiT`9Cs>Lo9{*&d=p+h^c}DqY}q81i_^tz6f;thFB8Hl%9W*ZHTAe zz}H@J$_3vLKY%I?VLaUb!-m)p6uhSe*O?Kc?88Djq?B&4VaLccO}pLmoYzWeD&(Ep z%F?d40?PAHs`)1by8Pq6QIf&W)fqArL8 zVJSI(T~!gl!CAg?Sd${H}Vb#;xVQpxi2HzN%j8^ft`n+0)KQj0bQu6Or7+qaPvZ zL{l+g8mC{4^4qB$ak7j>U|4RCO#62S?+zhiLB%cgBSGaY_4KfyN&FE0!wJzHnbc_D z{dsM&e3jjwS8aWjsq~QnNEOv1=**DOw(uV0!zS&sKt60T#DS!4g}n}ihztJ7(NUmE z+Zoq(c$hO5yo&N{1iXGAz3zC8Z!mN3z4^8I9VfyylRP}_I6}TylM_E!YzSc<}i(=`D zR=PdU&>O!aY;6ee`cF7;3^gw{yfH_HL`7@+UD}hNP`Xn^nQnbKGQ2)7oR7pES|r

Tcu3}!!Fa>(yyz22TDx&ws|sU*`&GWOE~ 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

-XV|A_9)o;f^7l1FrZ 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%0DeHR!%_ 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 t=a7x+nN2~)IUqG^1gW%Z*eQ`@y#O4#L=mR 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

  • kF~!Lb$%ZNFvvZCmg< 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

    #+@_~>9Ysu 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

  • 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 C#01a) From 334c7d9bac248a9c600ccc7d82b06e8e188c9d5f Mon Sep 17 00:00:00 2001 From: Longlong Yao Date: Wed, 9 Apr 2025 14:05:53 +0800 Subject: [PATCH 088/159] libhsakmt: correct gfx version Signed-off-by: Longlong Yao Reviewed-by: Flora Cui Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3771164 -> 3771164 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 1b6dabdd006108d8a06d139658161e3c3b330e4b..7992bda960899af475bfd30812815cee3ee630e7 100644 GIT binary patch delta 251 zcmWm6w-JI+0Dxhif(bEUR>X`sVpzu=tUZf&XGh+>Ugm(^|(mik$sE8whBvMF2Lk2ps$RUpciZJj$%BY}<8tQ1E si55(>VWERAdgx<-Ax5w<#spK$FvkK*tgyxgTkPOqj{}acz&+XF4?&HAOaK4? delta 249 zcmWm5HxhzC0677qSDj{=G)p^OTusG$yl p2AXK0jSjl#p^pKE7-0+-6HGC~91AS5!WtWFvBMsRN1%@G_Xl`kfG7X} From 9489ddb3feef9697635a025f5a1145ea55037030 Mon Sep 17 00:00:00 2001 From: Flora Cui Date: Thu, 10 Apr 2025 16:21:17 +0800 Subject: [PATCH 089/159] wsl/libhsakmt: correct gfx family id Signed-off-by: Flora Cui Reviewed-by: Tianci Yin Part-of: --- thunk_proxy/libthunk_proxy.a | Bin 3771164 -> 3770788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/thunk_proxy/libthunk_proxy.a b/thunk_proxy/libthunk_proxy.a index 7992bda960899af475bfd30812815cee3ee630e7..584e1a7666cdde43f1fe4c205318304573080a5f 100644 GIT binary patch delta 575290 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ℜcFMY#I)c&e?nRyF@io%icHE0$LgZIyjT) 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%0Dokbm)!nwgS?rAFA_Kcx~;#f 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�!Rd!l{*5TYp$b{=E}u}L`coW?^}+HVL8YtK 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 z zB%4DNpP&HqNbB2DZzwKIVP@0$-l+HiiZPpx@fpQlO6{4%3B@bP$873vjqmLF!@^BzeTs4)WvX4qrlK*?1k|1-d zU2^``b#Mes6~C`hs8kP!#d*``-jq!zIM|bpJRYTn>BwW%cCz1{Dio#-Bb00AUO9%p zIylT+5o6I zxB~_I;NatxB>9OWaEhDqKZ`@r`C}=q{c4*=S9ZKt>y1({9v zdzfNOxd&sS`{8~lt?n;K3b(0Hm|FiF4%1xnKZm#qzbnnX=ZHO_b1Cp#+9=mf>z(a@ z;$D>6A6qXtB>4zA*avnOJ|jtpC`P|Kvp;J2V@<4T>hwkI4`s?3dRsaA-TUA!>MDt^ zaMYgo?Udlu^&BYePb&v|2Y~zMNTthka60q$w7(v!@*W?n(oZv;7?<=?^MjM*e|_eOMmhrxbfAz+`5z6KE=aT$OrD2A}@Hp3zK- zA~M(Iwo(qSDegfDaLPMWb`YM44Ol0k_NY+ke)k@P(i+xJj>Rv^@sW=~sKhH9$>v>; z+tV+5fldxa(#@#y zy+7L1hAD3^ptZvFpxF!mb=$k*zq#G^;VN`<3cY}x<-H<1o3HrB&$JJ*Ojj zF~rAgMzaSh9!8#*z-BR+nTlT|KeJiFV7cONDFAjG-mduKX%v+=Ki4mZi@T7`g=O1XC@`K=t+Byu`(v}D(ia+X^MMOBoj>ozMjLOX8WX_ z>90cJ4txlBLua`FzoB>~`I*g^sTV2kKmjnGLu3y@p_@=K73vX+f$?A>^<~86vu3>3 zIAzby2=am5dD=?NZKW8ClxMz->XGk?T;_Ty&!P~=zR7wz{IcSD6lHF`Q1UrL@vD?b z-ugqucairMj=Zt7PTwg0n$npsSs&XhdfJ{dd?kl@(0KWCnu8%_)?l7++FhHfPL9#duOa9Cc{?9=S~X zq4?5Q)O$GUQ2!_85?11jJtKW6h|OJx^GH!wR@|Q=%&*jw8rnp0C5khf$h#{pL!J@f z+ask8J*T)o`I$>~mGg9(;u#cRp0iPSy@SKdQ@v6PjypKUJmdjM`5iyo^F4!7M}ikx zD}PjXux}&|EMAL2D0f@y%R>WIC@iwEXe0{Pv~uH>W3gato-&ipAu?CNOLFyGt3u5n z?LRjv zPvtL?XEb8}@w}Ac3yOax|7aA`2Nd8?3(80(+NeT(Kw)r^+HcA}j-91_EwK{++0mHL zwRV#H@tWG^bxM5|>8_I@N4M%Zd$w+VOwC?Jx(|FLn?I}^%V}bB*MpA;_f?GdnV6>* zk&5}M;>HwZ9<*BW^N!-lb<=ZLbh6_cpwFs4-b|q^qt~y6lTs^AV=|c#aN7i zxxkN78pVFGC+#?;jstIr$az>*aSr*wcsSN|94fgv6{f3D`zQp)Wi!e@`zXQN9Hp`W zY-2v=k#fPldwlwW7e0@Ah$1GRZ=AylH@KWXk z6eVi9{DdYT$}9KD9>XdyUK|IzLz^UygNpwhPq!xEbQ--ys^6c=50m#b#J+l)Y+mqJ zds3EAIw^uyL7|Lc^m zCjUglzUy0weXn9%WSAG95Wec*F!PJeCBqf0Q=S_o9#UOJF|hlw>yow>icze^Ct*79 zVe(B%yQ`=vz7fBr(ClqIrFBwT$=qA(1#06&oEA+&*K7u@pM>MQiq7H3Ws2dBOZG$1 zfxMHEP*Vz36=Ui=bKsVo;!PCec8z(BH9feGgCmpwOF|r>+k7BqIQZ`Q0i2$DZNa^<;llv zN^g$h)s(@!G)*qSD;3Y65cBl0lH#a?qu|HpT^IgKu}Si6_4obzb;7alJ^a;Db>dmH>PxE zQ>rg1UQI#f;)CS$o1z%20y9@0Cj6m;<8S3KgG;ott8MOF2HTJQJInV%n%UF_1EOb5l;o zm9M4{Hh0ZRmuBn_#aP1zTy)P?sa|*fVXefTZx(J>UmYVC$cO&0mj@=z&O)3mi^@h% zDSnL7nK#Xst%f)_$b7)!If_S6WEPGIR$RY43;8;-M2_Hb6|5|If{0~pLAh(at@tGQ znbT`X4(`2X&p~+#1abT?P?$rtKO<*HrV4d|V$AP$lzh%tj91CB5J^q)Wg*litJio& zh5Csym|y)%_EG##drEdti20=fa_jF`jBm;^SKBYy%y4jmxsb(gDK19d+2Dt}O9no3 za5{5VH{qj-H&BqdLSISo4aKD>!kpok160Op@y*@BK#DV)o_sCEpOR-z61P@dnf%H8 zqGCLkVxD8I;4o8hBMLK{$2qGN&!ku~f3G+%rM`)+H~6Gj{-?MO`Iya;(B=MTKcK@Y zgSnV>_xPYvnaymqj*4rMXD-+*Q~#3U(d1_~%hbQAco+qk%`){H6sJ;{ z`5$ZH=o^Z=Q*17>pPy3ap~W^)3WXj9Lb+EzF3s5v z#hA0T=535cnmJ!F<(TtzlHJVt`b#;sFHZ1lTckZK^^d)P;LYH!`+kxuc|GL?DT7c$ zuud=`s|&|UEHA52m|nwd=5}Q(-a-lH0p(@uj~(ot55BTW4$?jcr!&`{B?TCFaF99g zbm3zE+B1mNM3^fcmFiVb@nwoLZyqGsZ?E_SdEPOTx%w$vOa5G&sH`3ZV7ZfFRw>5v zmtgl#-^nHJ8^xHcb@Ck?v@w+=PiLK8d;vVWm~5Z#rajNtz8U*Ck8FRh(=*{T>x&wN zO1F37q6P9E);{a^7Dsl-y5_HOhOe^_HK^^~a&!+WUrFf;Q51J>mo#2;aFE%|%qpC) zXXQLan9a;Aui{Y@XErmlo>V-CJn#PZ@TuXuI0enrt3xW(a0+m!4V3+ETH8D~PSMGC zkstGH=k8nf6pf_R5O&!!MQY3wit$PvvzdbRf?_ODz-*>qy`%UM3Nf4MQ9Be9MU(lY z;$f6vHdC+)-?pb5-&I_Md^V=mi%=S7AMI7BY7|7M+y`S56k|O(X4iUYG8a2I&iw7u zQuDSu*z+E^PG2d!^A7eiztBzUb;&#A9^Bj^O{W0!t}Ll(O&lC%?ps)z(q|nU1E*A? z>+d1^Gp&~{K2V`Hk#8{?yiJrLKcU5lGUHR(W7!mYf}#}VP*F-Cl$)}pynCro7)7tM z1U1TxU=LM3kJ6W5CuX(V`HEXo5S)@p%a}ZQ;a1onHT;lSG7Cy*)xLA=qv}D z+uE9nW8`NxbFI24-c12;o9_l-ZLA}vyksaJJAz{TXl9pc-Z z-kZJu8fgJeE63EUEVyf(buqfBd^<%xK=Aa$)6v0uxBN>Yg;*w zUv;pbIbpravr_R+3NX7Km&l_I4ujoU&q}%er5IDMPOikETt=xMB9_0ul{7T4rc#iYpGmgRj5l8Vs2PWc!^?MM!@b7t0bj+6=N#Ztq<{N`3RL=g?$yJ z*7$KH9*{%wp!LBllcG!tuEM^)$&xd&ui_pQ0rRXtMB=WsLLynMLSZUZrH^o2Q?2(z zcPqz2qaPubwlv@)q^J*N)yBI&pjQSx*D8$TuS&g#rT9g z^RwRxzpc1GWiUT)y*#u;tY1@nhl>P}4ZpIV` zDPBiGW;3QZU2z|ZFb}hq!3`-cOmSvY^7|CuL7q>+bIVJv|5RL`{LFzW!i7@pMx|z&BJ|-vj8O7*kGMjE@!Q%EjqMOMav0hQU+ri$o;I5lx-;X#ro%x%%a32Q; znZNu+c)Wun%=0e_FI9|g=2}!QbSKxD?&KjAWGne|?V7S5DFDm8v9DOdo^f<1!R{OV z`bQ-_{nYNt~vro5ZKkpdiq`ZPJ4o;Q=ECHb?0`!gFTzUPtTRDx;xm< zd?8z^`XmPjm8pT}xBv(UshaNE#fIhT~Di=t_c9PEpsbh@^i@xtdH;q0p7& zNZvRsxm~IlT}g1BtLy0eR$RHhqq5s@16y^1?6UA(_LAkkP%>AlL>;n{|FUkBzAkmeQ7FwT>XP`m;9Xy zj6NpERb-oF_lkoPVD~EprKn4~>d z4ujoGuSm%ZR?L0O9mrWcEIvay`kr4S_MPua(pM-(-;?>7FNOCiMxT`V>9%sz;)>BH zWq#B8`tF_9if!hUMxPYy?sZd6kY|bq<$)!g9;R&*7$MxtryuoRH4x)&B49~ zEt4CVgNo571*e4RFd}geu^tCks%S53?vw6BX}x|;{@z46`lLG%%Sjrr6DjIP+4ym7 z`CS69RDsba#E8a{Y=IKr4D7IIOcQTlt z2}u3ys~F!qWv+&=FFpF8~qKUlQz8x-WbG=TqCm$LDb+Xb6f$zC>KaVXOhYgE~ugf)^%im@``Ua;v%Rjgvq;G5(J zyA3x|{8x7xzZd7?7Rug>(%M2f_{oiIt_ppEQlr?{<&IL{)+ydgK5*_@`p2u}q2I^V z!sN$jTFIinTWj$AZT`9pe|4?37E~;Mw>{aIJ&dT_W?lXJ72j@2x1y-CW?}u#%6pP` zA2v7qlHzN7sQ134&1We;MnPnis`i|BBY!eC zQv5Onn9a)iJr&QQ@PGWew3ZVUSEU%(?W!ov&2q))U={xk<#TqNeIP%Fv%Jt8qZr4JS3 z?J;K4fjXmjBn6q99+8S#>Rx*iR#Sxe_9yb^ri#(6VXpOvw7O3_*mD5vDJqeVRJ@%0 z%%*$xrs9?qIDkT$PGJr;sE`!WB^3%2!;>Q^Sk0b+EJ{6yGMrA;4*nNcSN!DeF;fN3 zOCbc#<@t&$Qxu%Lr2bcmFMde34q}yFlb;LK^3dZQtCgh&htg_biTw0K*w{=qs#D#b z&R?2S)*)0V<4-9+P7!RL%cB*Kqd2o!96zKul{|-&c!%N^Wc9M zIGNij#xq1_vvmC+#d#^loVzr=;?|UUB8kI_n~*P=k1B3V8DO`GJmo%n#{Ml&i%#II zGN1per#y?I9J}GJirY|v*{q2+K{1gxhMk+G?iVY*ww-#%(3F|A?zh~B8HYy37jqd96o#rn7@j?=qVO?rSREPo9%tv%Y;7#q-F25|v{q1^DL< z3L`M42juYodeHTgsAX@H?-XJ%A1iE7$6lfrC&ezM` z>DDQfzge$-s|r4uyr+?Zan$-Ws%K;C<7tKJ+V}Yx1raLurn;fxl@wvF{JC^EIw{Vf zIJ4;zy{32od42+i@06BvhT<{gXYM{lB44T)!&S_A{wKE;5eJ8VLeb(WE<(9OHzkrg z>e=(h!%}BZXuZgH29cRt@1`mkMxU7TxFwdJiZLp62K&OO6hfs8qjUIQ?i+CHRNydq ze@0wpwCb?p;*`#8MyswUev5+4rmIx4zCAw}tzy18U2Zn2DgKn=%%+d@wBj$xa~Am+ zPX4n9_0a?=**Pi{+9ZVH&d!>%cp_s)pN^_vJo?0LMxU-K=h3Hg@Q0s~-4wmwo)vgA zxa(>Y$xAKe7?nDQRGyqBwWqyej7l+2Um~%-pctc4%%-F|H_J_tCO)S=^zRN2PwjLEEuY3g)EKi(i1(epe3aEvGkQzm+4~ zS88C-JL1n|pVLkHB`ux4h<)rwvi);T-^bo_h4^Hr-(o+XS00D0bb6hOsB~p2N&2J8 zF}igTrPraKBs=clAhQ|W%G=PMyALSBZ01F#Dc(SFW;5v3Q8C`z{uPJDw59>Y|6Ha{ zzar^o)N7yewiLkTxqMM^eG31IT9-mG4rLm`3XSYJz^K=6;LOwV=f@Od)Qj2l<@zhW zn=+WqsMlP@YbeBQ`X3R+=@d=oV~U@r1hW|p%ln``E6n|Ae8 z#h5_J+|63Ca)E>6%nKID^BHNVu!A`j`52bf>$ET?1x2Zxzk zZIagH83)I}DRdg z!@CF@C1Xwy=9tyR2MsZba_yNXES*4k^|D#qv;822$6MO~=uA9&Qh#Ciz$rV7oYXMf;;bvPoApu);AdiDpWI3e{m zsu-hZ%*U5XTH=Z^ddA%IV~ITVVS7$6dUg$LM$hh1j7KxfX7sF+VvL@FQ}$E#HDs{W z&vNQ4P@xj{)5&Yd;K%i(z8_PL(X&6Xlk3*w_8SiNfm3Et*FSN)bgKhR`xDQGzj#(^ zV0WKALl{2e$nJYeiet2c6JU4bqExZ@ih20#I%a|3xA%2i-#*PJg??Ox<6$zmYr#?} z*8eHTFxhpaqV;^?%BCJ!H5pSenJ1N$t7Cfyd;SNmSw#{#%)x%nJ;=v=WR7e-M==J?n9V)SF2xT~h&gAE z6z%tl-4tbh$y%%LXT@ohU_NiHESB=9J!9?3`!BfEHmU0s9GuQv*WxCMzo8)Ws`uo4 z?V|VyMVRlh-nGtDJe1|HdUFFY@EA~*F`RksNfeghX$#WZAX|(W6#m&giy#E&|!&QolQh<4WQ#mWXQQVlq z;G)B=c_;B!d1%OGtSxf(HlAMHyI0P%>aFehshXWy1FM&1SF7>=tCqd2!j#L-sPX?x z70gt6I6DM2ui$^Gv{iN#YF@xUsC0F90_q+mY5PqnmcvQ`A7~+!rC1w#(rZyV^XzKU z0##RxH?*0neJoqGac~4ov+|(n9;ghf&he(9^K#Lc;b2dm8h5#KhRcrED8@CVQ=S^- zTmw5vy7wtRN&#%{>X#;!Ab(qXw(h1d^K$E!t+C=g6k|3ENj{|*%hBb<0qsK7^5Te^ zag{6;3Li8=sNCfwKT&*uLd*lAlEPz(@f3vFtaun#yowT>gymE=ACh1~-Pg{ZP28A+ zF$EyVKUmlxAByx?KdJd|slZtO@NzyB={IMkNW;p{kS9M<)F&bP*rhl?e&#&QB=)%C zCn&%?$$FVArM*3+SYH+Fe#@HYUq>;XIGxO2%%@eJD%K3>E`(uAd zyEM+}nQ+%f)*PjU$_rAc08)Q^xTJcs;%O9Re!ZhyuYOdFH3gZ?6RkTQv*&#ac?*I) znR14@9h_beM-Sh$;80)pmHN`%5h}twx4rNv2gjMWelBO*LdBQKQwaMwLHE-4F87?#_?FWbSM!NC**yRX)ibGdV5p0)fy%^!@XiqlM)f?`5e3zUM&6KaCU=if{ zxp~699UNgcPn?D;&ZaonZJs#ISNzL6RH-O-ZXP*Bls`!RqG$km(}1Ei>blL7rRIKn z7XCRyYd99;&nU+oBsNc(PpQR_RP$(QmI^hJe9RlIDFfR{YxrT2u^a zFwd6qb+V^%AVoQL^Z2KZ;w(xeb9=>D{tp+|+^RQR@pMY(Yi|o0k&1TG>|>n@g+=Z; z67z`ZSH+l%z+AY8G;Kv6w`X8Fd5VMIsVV1gZ3p|A2YfD#LuUsEn8{iwW~_t5%wu1X zeJ^)#jQL6H1-(5EPA!4#SEXttYP7{eq73}cHN={&)#wR(KJW~Q`MFtgn)Y;XlzCtq zX+mF9jG5NV6OYT;u)@LKlBgsVo|b&0)`N+A;SC~1V^_sGv|9wjYQj3r-6;atHpArAHXPja+>RH2Sh z42)Omt|PGP*9%e_6`r)Gw-NbDBa&bG3pZ7am*T)F1!!t%L~`3B8;@0?(kKeXWj(=x zvAW}(_+JTXjUV?0YbtP_r|dh%lcB6TYt%_;Pmw#3fK8pGNo}TreL`{OE|aaMO>s@~ zlmUM_POcYzNykp9eO2m6^XZ>a`0a z39$RV_k|x+j7LCqTs6w&`Q<=hEO#wG*>yMP}MtOWfIrwq4IxF>Mi3*G<(G`%Ci-jde zJ00v}eyE*n{hMM;A7n0OjfJ;TrX0W=K3e}qu%zr;5*?n2@%jB&H zK59+v8>1L2FoScKt9wuJl|__Q5rt(|yZc%>X7Y0EW;MH0ieI2Ov*}9bf5x7{q2%#^ zO^sH0(qbi)OT{UYwyVmq(jqp`T|+QmPkY8sQHWzVrCLStO`?4qyYbe_3s8b%H~fO) zG32cbHV0*@Vtgov*&LLQ6pyALvpFbH#h6K28I=;tN6C+;3Qm@vs9_bHB||Ss)AVRB zdv@_DB7|~9BT`ryiknlIBbh`w97)-B(mF0wq54zm-AR#bRNS0=%m)fc)BC+*EG5ib zX}F~9e~R%1HZW$ctiKzXTTbWjliSgMEZv@+#^kMvQ226MRYcigfM~V~HG+a*cgi?v zNk37H2LM~E;uudUEa&YW<+u&z*y~wqQCwBrk39E)$BmPn=kIM#Vh;JiSn+VcJxFOj z%I2RSFvy7r-w;GpRi&>SB%Lt)dhRDjLacvbEi3m085*@b@ zBE+cFida%MQls#7i*XCNG(u6-==VB%KJWd_=j>ne*nPg<=Y7um`uV&+pU?Z9nOeMj zOC=dZ?wYW$%{sF6`Fz;N__9~>AE)pz3Sxl|4-2zd)u4^EnGN|=F~-Mk2tK4RPW8M$ z*NFFisFtjfSe(z>V_8T6#%t?|Cyy#Thr*1@^$^@m;VKjbMt`}Etn#{Src#wAPc1Z- z$#=?NwOZjb^Jr)-G#10ZQ#?!|B+pwMyP$9#iX`GPeeD5$N^!>K9mDzx?;v*ya7t+@ z#4ZXSC0_~(u^a{Y2RpH{xa=7bZ&6|l8;m1MWh6M254%!PSiexiR1{YCEmEY;es+J$ zQGiwbX)dcKy(YGv&Zmk(mA6~P2!(f(!c!u1rMK~cu$1mRW+jwtO zm|RO?oQYApHmsYao92pRW~~kD3#^^*x+}bif{fd|Ahj||;g*!m_?^$B)z4NKOZbfE zy(M^kKJ2OkoN>Rjh?v4S{EV@w(-H&hb^0L%5^+t1+fg_Xw^bMmTZwp>!g%CdHzDsi z3J)X?V^gRfD~xwe8ISNw+&?OecTVe~w_(D83NI3$#b0^voTj{J4|6uT>%o?J=d_K& z?a0U2ymOka@D2(xc71Q%K`D%(4>&p2RPaiL(ReP`OK3dX6vvw!4HC4TbTURD*=nWe3^gTt+^|CUuI! zSVc}u{kXzJ*@>xpD7=bdiK#~^JfB<*QG=$B%~SaIH>pEItOiY^0A$Wr{u9rCP_nNn z%-C&h>Ukv}jxsK4?Qm9Mus#00Je!M^%R~?9>%Zt5Zo;v_A~xprZnMk`EZEw zz1ACeOY-3eg)xb=79d4qg7$av=z z8Q8n$!`Y28It|CYBEe7;pJpT)5*U9YDBA zt_x9C-Tj`>UinmxM}XV@Aalf93V%%=#*2^2C?8T7cR7qd8Y-8OU+2Ri#=WhLlz+{K zBaEkgDHT-OuLFobk{f{gQK%k>N|@d9seFvX&BViT`EZc&?cI{cl6*Lu@k#4*%$$5U z#(2+z;@QP~*wqwxU}BnTIbgVU#?c(kIFseyZ|B3F=DAJD&#K{RQc4H% zsX~miyUU1hD<6)CkvRY0nDfUt{BI@vkt6I5bs!((qt=Dr5`}9}knw+=Wpvr2Z~@9@ z-045TrxhMeG2o<3D)KlgX#HVvA!Vf9g?q>gj8C2dk0;m~tW={Z%=ouHQYI4>-bYc! z$Lb6IMBxJDcp}004u$b-k+Ex!cy?N090|v`P?@}mxRt^UD3FMUDEu*n8Gm|0JfEoWaf&kjxr^Xc3V%wD zmcR!(NtOJda8L5IM3dV{epdB#h>=1W_KN$QLX59JEkDfniZd=c zT#R>8cpAA|!G&+g*9xi@6J*?+kNWwgOaR=%H%ckPsF4P~?HFdbmkn(5MQUQ?>ohg#T4akji@ zjx?6SW9)7hBX@iD%gWfJ@ayCQPFh15?NKxZooHm4!WAgSM(R=#FN~aM zE0a=0scMqf3so~p_hMyhJ%#a?^ZktyaZPI?FeBY^iZV8Pv^G^3EA$vNVoAXeBmbr&I80#P!DvsfT_Fx1(&vqwbXw9;Yxq{(TxPVh*`F z;^#H;c7%A9^%nU-B`!(<#>+2>r@tvYkiv}3qrl46>c4Sx4@DVov6cqvDV#%&PQWi* zl(Olp@J#YB-eH|(lA-W^@-sGhFID(H3Na3zlmY&*!u2V_cxZ3wHf00$4snFyj30N% z*!!@;g~;6*_`LO=a3_VaaUgKgZcWnePV3lTc&U-`GJ$#(c~^Dq$)?m!-!Iiqex;NmlYmOamFtXmbPB#b$fgT$lVqA z%co?#t)%ca@-Z%*B#oev!k;}jixC4&w9#y4!4Eai5s#!PkSrbFp4q0W0O?kNQJR+ZTE!Ka}@4K zUdAJ=d)ZYA;{i}&>fH*Dq%dPoOeWvs3YVj3V(J1D?eRA!M-Q~Za^&fe;9(=BT10+U zy-p!kT|X!`1}N3X6k%*CQ)r?h=*p!AiJ;$SS^R_ptzZe6V8rWs1T$w1)AF zVG>~*g-1}xm(tqVz}k2Ib%hI1oKsIcB}3L{3V%%Q-e?Bh$=4gIg*By^&L|b0jRKc6 zU8=%lI^G!k<53tR9dO<-<5&3BE427| zRQfh+Yl(@9m!n8x=Ia&4$$7v@+o)pSgw}mVsaBA$FI;T2M~dgB!UZVEc+@<(Qgy#& z5AbEmW^B6W0EMek47lK#22`|PN-MlA>+J`R?xXa6@W@PVyH%pMD9kD>GD4NKimtQx z<`XiA-Z9ng0EVa+;DBi&_bHr0e#YCI%K*?e9}c~MJgQTKRnIh$Ag3wSA&N8ZX5F{1 zRXBy*{ejE15YHkCzfV5Krijic{3Qh$n-Q$&G<$p}D4X$tJ~CHVQMdrbfRkoXk#rQ2 z$z!Tg)g^B_jHHjY##n{18V8(w^&c4>_9}d#C9O-xY&VXgkR|P<>&T0aoxi_$`TEoC z-rhr=0VvNW$Ugx24SZLe9-~z6Q3x1Yz-B@0y!@AVm8DcZinFbv{&^NI}LYmP=@*-?saEH)X$wJl0c;Rd+WNe_JV4QF09go<2+*^(kD8yubyo z{!0S}V(H@Xza)=EN`^}(wvzmm;GYx@QFI_&DNl|;P&FJY%{{JEGsrUts#WA?)x!Jb z`tQMa>|r@5#MsORk1M>5B5dRU#l@C;FvKmbmz+XMe29F5b8`%`>gXp@kUuNcE0is& z7^|vS-_SXNcE6q?*N|LW-XTz}pC+BMrBbb-0Ao|7Jr(XxVa8^@ov3hCiZUKDUZ$ZB z75t$q3g1m0#`g`8Frx}rB0q4!Gqq{TOQ>qIHdHdx9%o&Ou$7-iiw}1z zjCW@kn=z}N!Wd8dz;~~b*7&T#bIIpNA>t!&R=r$N@|dbrSgmJln!rMZw^597#3_z% zQMfv}h9Zwb61DMtDzj1B^vT(6s?nyB!#mnd^M-nRdClvLCT#c%GXt>8)D(t+XZ#4FM% zqDqD@Nk(uacZd_eE8LsBjDPr6YO3TcdkB3g0Gzz(Wl5c?@c9a~ZUlVzlyXMEhw1~Q zG>0i!j2t78$#XADCbJb@N*>1hD@dSO3jauc#*PJo4=dc4LcrMfE^8zf;Vx4geCWkg*wI<|#abvKjY!O-d`QFy>sw zZ&ZT9Z*k)T?j zR1Wg9ss>Gl3Ufmiiv!2S`>RSknc@&9cgT?Ww89*_U$Hh+do-HsjA1hRG*Si~kJWQJ~R*sY7RanV5A>}YvSy@RQ z#`A}W4;vN6^(Ao95Ssid0y&Z-o%dg*`hX&Ayth40lEn>Ia8VJ!SHHnZk3g~w71n6?zcMco&Q;oPdRNV@VpDZon# zFC;H;vbpxWkLU;62vIPPG+YN?yh$Os~S&xskEMI)h-8!mTLGxWX{$=A`g&iZVXXQ}DM6k0Zx; z;1R9G^P>u%AP?jF*U3e0kp=d^_K~0Q@#QiEHC1>9g&5bGE_wG+7?V0M-cvq19$hkJ zu2kcDO4XFyujdYyzSm)^^D=StJEeMpf~<;AHml57UT~q^-$yCNs@CM109EfoGO|9R zR0GKij2BtbC%~`4w?q|Gs{1I+Mz*h%*gsKtAVrZnX&^b?fXY0FxUN(^$isN}Wie8D zk=@@(f^11IJ^okAP?hu-KD(_SGX(r8UNH@jK8Ze zzMo?Jq_qpuN`+BRiFqGZ_#(xDllwH5y#G=7_Fk$z743AcPs*j*QhVUl$Tt<4cWNqE zAWtZa)mO$Rz8CB13U{V##+Uw*CN@ps(i8(u%Az9EFl*tgifIt9TQ9}%hY~NMz_i>Z z6K0iZGEJ7*{jE+>R{6;>9Z|QLEKPsBQvI=o(xxNopRGmZkm6sEAIY78wlYL~r7(I9 z;|1NN%nm4w^;5>?CgN9xQz#CMttu+MozlACl?~MUZMZVHlo)&B1A9O@6nq=ToOPrK z`zt(#d4iZL!+K>}H?FfPH~0j@AfCd_jR_aiUkR->%TPlY>B;2o6p_Y`JT zU2BYLvfLg3&gEfjmOgqYT#_6?;88uK1r1gh>#&T?GnBU!u1kK#;|fT8A1S<_LW~Rc z7313!{*ofV$!3k-%u)S z)&`6#v;%DGt35LAZ&a#Q{$0ITQs>{`?{7Gffo!bqJN2iH2%?>!3JZf1jD)+X#iDd|L#JYoLm=P`D)qh>?p*)t`L8N$n{(3*rg10)Hi&i?8M@?S=Kv zV!AvF;kMW##=0nug_GIv$Sj-;P#6m*j0*&%p5IV-0tFbGA!4z@Us0Ix?Ecd6)+yYd zqO%c*haB%F7&)g@QSvY@{I(dmp)j`QU_3HghTHP1?C~F`5Mxu~wG^IC5#YSbpSB9$ zdXjFxi_(i(I}Y_$d?2~!z`ALQ!xhHu4C8cbZ^Bs$AEF>*V8sO0}uBob$djZ7e^5B>fZzLZuRtqy0 z;4_5sHDxF$z7~5y*2Ph4I~HKMSiRwcQmq*f_aRSJtLiXW=_OG52ZpohbnKa z&h@c9P7j3`*Xttx_9%>(9uu)o;RzH^!~un8l6wg}+)6E%z{B6`NWTGn!b`==fY%I=MiN!HHF?K zkD+Yfujq=%{N3Y7LT zYv^eFncd~F6oM+bt962P4~75zmG-Pa#HO-dQM?(&k-Xr=SybsmJmQ%6vxKxu$?$~o zLo~893VsOnt%daAhjcUjS-nc0Rd`}{%KCb{zQSm~tGMx4FR8W3ha;=t zNmGim%4{M&SE-7Vdo}P^F&QsER5*=%j7!asf;^&d6$&!GtGNtAe=CgFL4lJR(1Fzm zbM@DvYPP{1=6B@!2#(@Zf{!3hqjdb`+#M6~A|?KU!cZlrHIdrcsqmlQ)A5hcKt8aJ z3cjc~PK;awhxcVlBQ5!b-4z_&%D9L%!MPPKN`A&?tmmK|6~323j7JB=w^0h?1d!a+ zW2G$LQ+N->8ShULmsTp=pWJJK=NA{eSK$=$F*c3iSB3jikg>TmE3?ra_Ylfniz?_% zF;*o-#luIG>J+)c33)uNaDVbL{&%0)9BjE@zQyl*JnjDqXY^TL$Ps?LKX zfYw{=@jXW|Ry{(l&(KcmQNz#BMy~m!rI8Y2V>PIprlozRa6t+Kmr8FTUFG1Gf^>HW zoc?&`Gu)rd_&{vlREdZjpTmI&c|M0}Gaa+G@}7%tw@&h4J3B*`|tjrR*$Z(w}0SiBSzvs`KR9 zzz#PQxov1ZnH;{LXIzxN%ww| z`ay*&l83Pw-`gu(h5U?9S_ifcQ5ZGCxcnW`b>C5V8ATYI09Px#h~kWcRi$lgQW!JS zMqu~5(zE}kaF~3+1+T28(Hl`b=C-KnSN8aSq3n&QsS6ZiV_mEri+U^7I&y6SPVXgs z@ePHEyqoZx_0o?teiK^7-(4i$%}Q33!myG&$}3~>K83IErQ@93lt*0gvgG&@PRw;l zz-6}EBf-5q<6o|e^~MT^$VU$1De@(*3GX>4d48dAZ*p(O z2$4fAH)DjT)k2D?*w=Osy%dDX+1z?c^nk)RrGSmJp#w0IJk%?N*juSCFQIB%Fk=;^ zhFg%=J6$A?OeMo-Ia`p|HtR{oM+#S_FmSv3Dp7^~6k%*Cdx64*D9-r8+ftO- z3b!QpR^a=xq&6c8W95D;s;di$OQm<%U3-nPIrY(VV!VdJxE=$>+XF?mVM(k8dAB7v zI$eol6kt4efn>2zVZ0^GIK7EvwL{^jD9U)(DjBnXRTw*idN_!csk372ZKn#v43x6%kdq4>`U8UTfjM6vmDZ zjQdzGmsQ$nj}Pw*GhQ-J0&Ar3lN4fXDz~%3^C`mk(SBmoukZ&HXIy8!7@w*z79Mv1 z@BUNbUZL<~1g7sY^+%kLD|UQ_sN zSE`nSX<%2TG`w|+;~1kHSnm;%@$rVp1E-qIp z91HO+TpYMST>MtyGhb2Kx9sBE(y)u~wrBD)`8oL~MWl4y3dfqzVorYIT?wJ5;`=DV z$s3H8;+>=Le=F%Wk|*t_iaRkXmz*h1-r9{-_*S^0?7tIzZojqhSKaUJt`()=P6Xa~ zrUX7f;bh8YJkB~yZ;iswQjBpk>tMAUg_n|R7x23tF@8efjpSwA-Fkv}Q(+GUfRodE zNZ5D&VE6pY>$Gkc7QDJql&w58L8hHSO7;yoz5_mFyXnVg||?IaiMb3Z5Aku?=2WFvevctDm;Yo&j zk~b0mo(~5Yw>mGSTINT4WO&Cj5xeu@DB~Bb&m!6@`~o?CNWeq#VGnTfwFjk5PFMKa zgEaI9EVCNEEd)*ebFw z6dp|x#>;z3Z#bhc77rLZ>sw=^!k?4-C*YE)f|ISaGq%MKT$_^br(8#aP$iY574p{s z{5W@x6n_IM%^`B_<#$cbQ-{51FBhz-bET3EqQG9{{QJjJSsN9`EfV7o#>w!sSK-$w z%6PGLUqfma#kXCg6WIa8_TP@J!#>>zA@@07B8Mq#`;aR|n;$a@H? zWzEINYNg7e0OLok$?rRb4^o(otfDA>3SL@DWe&rm^47|6twVN?@XEtss2?W(Vc0YW z=A-nEbZ(Ug{P61aoQ;vU;j|} zCkim`{=N8C=!o67VH9S(x{OrNoeFQEC}VThms{ag2CW*0@;(F*FJ_){GWA&cv*4m?R^Z946<&l z3jb^`hr1{UoNP9+en8>tskD`?cfV6Ap{?RrwPfpmz9>~VI3IRJfyu%%6s|;G#$T+F z)F0==0mh%-Cj;jH6vh!yz{wv!B2{=(VQdR}JPOzUx!YlKX`t}q z_||c(t(b3)Pbn4ljy#c2^>Kw!^}SD^>LYhZ z)jN;bBLL4lfvf!Tlnpa^Rs6J)&7>ITVyZYpVN`LolPISuBc&tFRUD68PQv=f>tw*o z%7+7tzqG#a`dQ&h6lVPAa%tVS^5H1sAFhh=yQB69cah^1T;KSo{QF6Td0+2S302%f z@fXRDh`&VvUR( zKE*LCUC1r_0RLc^k)J64VA!|_)8E`Lg;Dw!d(J#;Tuc}?YAAjO`H?(t*l4ZrvlL=% zhK-jLUPlqeW@ebB@EsJt2p4gj?zm&K-1sPL087K;!u?O-HWiuX7 zOp2(Q!nG;JxMXFi^hXr#O|IX7w@(%POg`*o93Lxqq{2fe@EZcaR#>cZSZCF*Q!1RW z!FYcUar}pT*bxKnT1n!&sqh%`0O#FlIL_L`KldyRjiDaRokoh{cTtF~n>&rC6s|}S zU|eONjiFx#T1sP?tyJa7eHp4M)bcV^4Z28a{G?QKCKsDdb`N$~?iH70x6-<7d7V&-*Ftq!8m*_eyn-R5*i&g(v z=S-A8Z!f$}1|M)&$SN~6Em10* zQ}hRL|9ix>uN20iHHrA7!a3w;Y^Jgz7wiF|M7hgC#>vyN*d8NCA&z$KT!;ODI2P!kLUpZRhEie$CPC*v>(4{_xrk!I$TG| zFR3Lx?-|8$KYkrqZXPaK4$X(dj4OwvX=N&WkfMy!%1Wl|6voZs4Y*jFJU5^+7bL$a z6<&{E)ms!|m1&0$T(Sp({G8_%(&`1~y~!oV)RFc1N-I{NJc+votV5;j=xc!{4Y7vo`Ry;%*8c zdEU~%hYHW4Fk`bcut8xLMH!o=fo~N)L5`ciW@+G{!js6u*eng4Q@9NI8Jnen0x^5w z_@bDxspiTG&!Gq~UaLKO6BRg$D&9h~HA@38EAiRg)cY2$w9EuIRq@;XC=(p3O)Fp~ zZ=(A~$>vk+7V=z0MgD$LvGDKQ>qN|04G0xNLt=Lg|P%T^k0NMri}E~{}lgiJ}m}E*jfL=RZ}{( zf42uzh2orxnf^N{e0eU_j>F0-Y8i)>Zca%(PsuPb#B+;fMI3j5b0~(t^1{EU#P~4h zc5e9I+fdb+B$pIvSL}{uPyjf&!XzmjpTY=#-EH)Z4fSL+ny&aq6lLqCYwb|D2|4}) zHa+XO!Y9eY*etr;R5*+Lj7`rfan=Ju6jVyno8r^sGk|ZZp@N zdRJ13xh+%wf3<9w(xlG~LX$Oj1vIAO7c0%2xv|v$zwFzp=*#3vf{9hsFbOs?mPmlb zuh|2|$5X7TLUUQQ*V+}al~T>2C{%gPp@+i7$x$$sdxNJSR1arK7VDG>hw1<)zjs!e zLquUThs6a`v7=~1;g=N0VLNR7i1jsWi9hUt;1C|hmH(2r?AmQ(=6U&G@h9#ie5k<5;pnD4w?DDh!nwF_W#u9_~B*fT;?3 z3qyqpVU?K}pHr$m6b4Ruh;mq5hpyu%Z({sXiCd7T2yB^&@rc5>ie=pHT`7~l6vhW2 zjLpo~?7F?c%Tt80>7Jt%u0?UirhCp*coVscB92UISrh@7Zn#;gHd2sPX|#e>rn? zWNB8Ve^h)6xk@4vvnu_k!pq3Z*sMJ`|F%24lLCy*+C!Scizr+YE_S6T|6tqFQV{?6 zi}dYzN_;1I7@I+Mt-@~dC*qw7m!S}2Gx`3iFi!Rb#vpvQRBCH@;x3K9aF1OYZE5Ek zsqA4l?ZM$58>+m)c9O!_br-48^<%91=vk@KLrR5vYzM06-MV7?hQb(ZJ2+51*Q~8; z@4aRBVGIS3Jg;;66rN0B#-?+>qVRr-GB$JXY=s{uM;R1@lWLYhAZgSUKY5+|YbD05 z7{qyi>J12xtMsZk6x=0o8K#`jsTr+NWX(9Q5vEyctfAHYv4tNk=DC;S2DKSpo zWo(uk7Aw4uTz4kmFBQhiqKr)wIjJyS&S31cJ~AwD+wSNp3NtpV6qOXlad3>yDn%oO zo06kK0`8{p9pqtbRw>3Q+?@Q0c%i~gCSZJ{udV`R>$gm!qW zhD;6}l?rpmT~Jk_ns-6Sm?Fl1A0sR+`SLxV4+f zO{Kz;22^>i)M35fZW`7}iXt^yslx@;{J2EfSE;b10i68aWoexg6h`YE>O$*{_LAlq zR{TQ>v2{~e+ZD$Criu8N!f6y|YzpgNh4BJ=wcNsLSuOWsE69IUp%wfW7BuizUhwm* z*RW0Sb;xyhZt&i_q59_w8SH*jDlBLKC(r#u%BECNdrLs@>+VMIl?O@kRK+Jyl#_=K z$_U$8;olBWnR_skZ<(1|y!>zlv0u+U@N8&DNxN6!CFEyZ?H9@UlEPCc#JHig##z)F z$4vB@6k+VP4iTuNu#@79cTbZ`&HEKjBX@P+O|7k~3x#p^3geRh$_U#^;nfsmyzdoh zP~8+hP1%gioy{nP%TtW8xm$i);V8Lkpjxq!Rt>0zzA1&5qg0zHz}Q?r986gkD{gNTgUE3&a22ooJ56DnEeTx8Tt9RvUWoc!zzh2?-??W3Mey>zV2gOHGHj+E<=qe-4 zD1|RljB(?rbuXpxUUJpMbboy&HL96fJ83SZ*M#HcX)b=8kDQi7#Y);;!ibMV&Pl(> zkWnKacH9p_#k;0_pB-Hr=P+&jpBZ|P@h7qGL^JMsj5(fRY??Qm1#}K zm1+;UYhgrrlUmk7IOfg5Dy8h<)TSV-GH3;>%-TyIrNWvJRL&KD@Ke>`zce#?#cJ$2TppNCO-s+awrQw&VPDJWxTD# zTPV)9+V&N^T48L&<_0bmkSr>cwP&@2e86qqFCZPTw!-Ezu%Y^Y3F};=HtPSGl+C%7 z>mj*xSJ+80HzG;S5tuTm)5Su^A$c#VaBF$Zcw;9 zMH!pw-J|dva@2u`*vO&|R6VS7m5W>Nu9!J>6ZsjNN#$;ZAE6L%-Xrv;3g3L2_SC^J zZ5m=<#RpLw$?3P!xaogGu~p=*i=54rVqU5-jvXf-V{=RTg-VSj*F=0sVIO5PHn*hz zD%_A_iMVQcdsAvdu6jsq=B~#TZcAR^yt(Tog)w)HuZKbzTu<8ZEX7Arn60<&Dh+jm z!WSvZ`0pW-`l!Nt$?05_8@RO_b|LPuZ?w47|TI>9>#J| z!~QaU4$seTgF7!gA#To89E*hY(X$6p%lf!&H*NF>rNXjLW_?&W2d- zVYwhIeWyJJywA)yQc!R`g)5P(0q|o@1$WAay^JS4DtNTQyC?vh++e5Vxlmy&4X}^v_y-R$ zSX|$__L!)|Srlh{bcR$_C?9q=0^WT^X6bB&50a1ZwI^kkjw+00#YS*pC}p$C^zLkudHzLPqTB*1K+|+@B*qW3%!wLgDTd0!}vX@Xc2ERx#Ss1a0R0ZRu2N z^YhzHaK(v_>K;KZqoztBUQn_jXtPvU&3rhU@!2)vLuZ9? zkThd+Z#zKYPULzt0l%T}Y4S2Q_qIzF#wX0cxJ;S*C@OeEOkB96RG7I~RfVoUntRXd zX^Jv6p9Og;+oL@D zHMyH1xfv~QDvZ&xcQaIM^T{%fRkXf0GR+1&6Wn=fuJDG6V`&)X^A^wBDSR)*ICnFO zj!+n*Xf+R8za|Z0mg0E%)&uLOwn>}*G#?HyZj>$fpu%`rmvIB@!s$jn9A!N3wxq6- zY_FbO?Rei_{Psddiu1jX^#q4)ZE+F$CD;~ zE-Cyxxt~a=vT`nav-yC0PryaIQO!R%1C_;Jz9sE@gc28}7^_f}Euh-nOKz|}QYw7p z*8(cMJjklY>Pt^Nt5o=yk8#U%DU>4B?0(^OPBzk>98W@JX1f+jg}a_7q575ltTMCR z8%l+5{DAq8PKfhvu(m2yX^OK7pZM{MHfB~Uc(>iJ4Dz)^R--1$n17GL=@evarmb!Y z<9%7i3wuc?eO+OEKap$vAt|zu!uW`?6;cN$$aU0hg_n@G6$)bt1z2_LjCff89(w?p z6lUDNgj8`0g`E^--1~+M-_IzVMvm6NQ^$+(7ZmPJ9>!VL9pfm4SCgOdKC4MgQus85 z7@ID*L}6TfF*dclQQ-v?Z;kNrLDExDz4(a)a80Q;k&m&t&ni*fUOH=Cg@F0pYURpp(XNbb9$khhpfVtCpL*bh*Q-?Mf2h6S3QpM|10Lk<4c7kB6s=b{Nl-AC`9BBR{{~ z4p%c6%i1GrGcC+ivRBCqoHr|MP?%?h_K15(Rk@lus5oW?w%)p~G>9AdaFp??uoO#` z`|L4b7V#p|O62iEb@Gy^o>wZ&F2MA|oevbhW3pmAwRlkqX4YS*_zfTJ0neLTzEb=} zigVUxZaJ&)R&sX$Hup{?Yuf!UK)w#}{{aeiNd5n>J^e~`h+=HSTnE3Q@L6&_oq!i9 zJea(U&2{h=g|VX|Fkc5hjX}M152=Tu_uC!Cbug=N9n7j0);j2uN;QW(9g&r}K7LN& z!sPFWXmNSWsvi!^5WiNbaCr=z{N+R9$@dEL<#9)Dwj@))1;zg!N3}bpR!Vw|T6Th~ z#TSaKZY_I2c&rPYgzqi+2j5ll55Ax549||gBie&14Zff33>ChUWL2v|GP&PSDtsr& z_+k$UuV{)rV|*vc`1JoIbtQ%Io#ZpXW`wV=aC!1DHY0pHg^Q5?8F<*6Lach&+Aw0W zQf;CLV>7}pQaG97zy&crRO*7qv}Pzju4IGA*9Cdurn?J_nIXG^wSZ_Y-LU-_V>4nm zP`DJu5^)!WUnN&pq&6e=7=^RRn~3Kt+=l{;&4|5K;f@pr&Kt2WD2x&NcvtlNx0Xpw zm3hEkk)z1b4c2#BJ3rS~_#$~2cRVSnpHp}*`GN61&g5>XbxQU8LTrZ~C`7*>d!P~> z=$2YGZ@nx_rJYT2q|F=H_bQBvtNko`NJ?GFI+maJ26uk^kX%?g9<&FB7uTPK=Vrja zSK-=}4V*XNw^0}a{$;klXS;N~L5lY$*K@G$w6-swmJfRw|8zvI;MOTzi2{sAR+2eu zPd*%GT+qUQD7=fJz{xjyiSf!0*#pO1P^NprTu@u_WBn-&JZ~;|M)95G?~XdXNRzu` zH?{&|CAVyVi^0biO0!qyT@4+WSs1mvF1^Q@hGN8 zZWoR5&s=i#gxK`wc}k2&F+K5i#+5EKz9)h-L(D-X!?PGz!NOP$)OoiGch9#gRv5>EC*rXRZ>9)i(}0&Kj7K<( zAN*S4`$}Ov#d$vA#ejo#3(>Z@4`C<2=kdy%nV)W`L}Mw4M0vPUJ$uwmD4VgFpPDNC z2*na{PlfT-XJ2%sUDU8|!uy14l!_nH^u={J9>zfJ%y~eH_PUbcVGQFxI*W(N58FM( z!4$OhAM4WVA>b*<57k2g)VTinRogqd?S^HrlTFbM4@yv0jw3UF>f2WXWFjRcu>Q*X-An^ zj^)Gd0l+N}%P{w^!gx@_xRmwTMAe4&Kyb}CfbVy#eW`jVj3+b$;Nfm^y$B;_#F?j5 zctQh=S1Z$BOqhrcC{<$$vk@~9-BS24MH!ok$l1v5Xhm`i1P(Nk;kvQH#mU3C<8*0D z&nsMv{EW>swL;-e6k=>%3O%9lQi?D(Zv)&^*iUibWb;yJg~oQzZ#_u02cfB%w?gkz zd^Y(8!Mb@Xw1L7nQ-iU2EA&Z)yHhqWMw0`BQ1)gSd#F-jHD@r4m};J)@Er02C!M48 z!7yUp2HmDqgDDJE-dJ>0VT?t`2V*SSXD#~wm7kXxf^ulNS1w2IYGN-Z+)xdHk7g`# zD?F3@zu~bosN9~?&BF9i*bJ1{*!n4Seh?^U6@HD}BY``;Cmx^Ahkd|FhbUtt#;$hO#}0Ko_V_SN zj!anB>#Oj)v9!cLr3I4ogd! zqEvOsmyxRq^3OWTmcL@0rk`8;J8#|cXH0eN1@&C$=QFRg8U*DFD()+t@s}PRV3PQ zTHLGjnBC2n$@i)h0IMP^WITRKsqUg|QN^H2{=>Ss9jjE=>Ql8bxfSRg17qt3Nmgr> zY!n5?w1szwa#uOEmV=S_qxLB@f%RO#)|Hd^+8!K%FGHkgd{y(8)E((p! z%`(EOt=B~LvQpuwPEonXLDl;YQGKXX_yS~HYMpv!Q~U@&?`!BtQA&ReUE1XRtWsrDm{r9oCs8#`sk)FOfWlZt9{$01 z`uu}ebOUg&ZCvs_r_vOsh^XSMYI;+y%PY6Ad)bEE<8y8K#zXbL_oV>aD%CU!iYl8` zQ+tbz*OV%aVxn@r&bC@h{|PHq2l6s*zgD{UHwybH0Gw?0{5`1fwIQ_bbu7pCp`6!I ztmV#1ST&!tht-iB6Oc*gZ)7ZgQsD;VnZRpPDKvBf=B(Q{r2$M+GMwhXRx+LznPZxa2X0S{$h@lcvppw zQo#byQpmDLjb$lTcr=nY4Hk>dW({^vH;krBeh} zcuyOsot>=r;NnWvnA~q7FJ~92kczGC#enA!z{v;Vg53&VPNvK^;lqe3!rLnT6J>Mq zC3B?p_fz;f&LQRG>t;#vv5F5O*JL=i`b$YZTj8VRW!%wvcJh(J8z{iI%?~m_f35Jt z6lQ$olr;CB6@HPTjQ8G%{0smFftE z*vRh%q>(+N@Ggol-kc_-<5&0*iZkwReJb#l!W+o_7Vu!}wB4l&2gnDU{GWAUv033i z?xf7OP&G@&N?->RKT6qbz5XNO`tJ%qK(V*b$qJKeDpZBir61he#$HMh@-j~CCsp84 z_(KXX&bUj;_*sQ>D9rfi5^-UK!aXR;c+E-4^BslpD#NA;!Z?OT&Gltv&8e6k(ihZP8i0ogJU2IB-&DsyH2u=e)IV)N@LO z1B<4^NX2myz(|G9Q*b&aY-#Npu|e^43cn5Kmp7B*{X^m26nz`cA8RMpyL;`qJIV77 zQt#g=soz$(8TlEfTW{Zfukd#iV*IrAmRX?=cH@sy1h~}2)?&PAheA|#36`=82eFhr z{1>Uw5h~FcatC2EX^AxSwF++~ALIX?7n}c6coPK~FB>ZJ!S4!ZQ8sXLn~Ty-3R^QU zi+L-a+mF)aAj*1eU+D-96vw7-nXvw=UkWo_VJ!7A-eYY&`KH3>DF95z-mO)<{HKbY zp)e;+E-hglSNJW8a?+}I;gpTe=Wlr{q~4Qe4VEl|8W`H|fD z)n;j)#}wX0A;v!ylT1r>vS&V-A~P^LO`|xgu634z@hMd!a?gb7De}#PYW^&-@ugBt zr6A)|O{H>LJY&xa`=2l_Ut02bUg3`@2Aoukip;{4eq$XqnuWIlwvLuoRsx&LPKa;JS;&_HczukOw%q|3Gngn!>*hqoK1= zF^#OVY!)g0Dupl)>HSC zuJ!`*k&kh?x1<|(SNIqO85cV(brn$fP0D6`f3_HXUtxTO!uZ8YQZiWzPaxME;CBZ| zC*H2`5b`o^P+G?0JqqVgU=A8v0}8Y1W|CCxUrO~PMHyF_Dn<%-vxom4IpzZA1SI^2 z6uyf*j0@(7@zx4IPkzQ74@tY}r||m}nhOtcdJ3yHO_nlTs8mfT&iJ%-SkWeh8<6`w zV8;=u{(G%vVurHDw!eS1Ww(28|~)&{%niKTC1EMbF9q7$XsESNPT@I*#NB;W{CN zw>OFtN0e+bdFH{#JARi4&njGs{PR#1l_|ukl8;Jjh%43e6k%N94)L_abN0saHN_dX z-zIrfRQM-y&qrA=pqBID=;gT*k6WpRQV=TVA1_IhdPL#Dl+AeaMyc+W3jahg#t)8= z)SVRelWPH|ZX@ye6n>bzjMrJGtqoGR9|eGuJJc8B84CZGN$VD%B0bhJ$s39vr6^nP z?v=oU3b!Q3Lf~uPOJwsEo<<(Vqi;#-6$%d_KjYOdiR@E_%TkE(nFW$MTjA0aVO-!r zN&TI|Pf;8g@2*!|ghk5}`MY`MDP-}`Y zp7FE%yS&0j$rVBsJWyC1btxR5Lmfh>f|J&Gm8$sr6hQK%6*M=LyZRc%U(Ov3r9Qn% ze25&2fuETnW!7C`+>kBC414tl8oC(s&v&275E)dmKdaMXaA%)3GK#NKd>%zOmloEQ z=l2S?q&VZ}4~P?mdf1DrEVk(9fdEFYYE1as^nb))phGV=p9ORgaV9*Jts}&WIh~*ky48q z%k)vQXCW$=(XcRGT9R7A`M*k%sB%wxiHs-5QrKMit#qRX3S+wj#{XF#%Xd_G1o;_1 zV7>nQlESZ02smjoWi7=JR@mC_a=B9dOmQ~iwa(A}O5qXYUIrsyQ_E#2qE?i#3~g~4 zW%EBX=>Y!e?E9)TrnbH8!SyBA2e4fCVX5u`3j4^*c58y8HGoG9&wc}Q}1BDoy z%c=GXH>3#T7Bj@?iwa{4RN#^(^%NfsJ&*ll8mz!=*7PkhVk}i@rjTz1f<8?dD-iTo zeygcjOR(lDq8MdE1cj z51jm1NoilL6^0LsS7I#NYPIZi#fwpdtsCDm74AXtMBmmbe4gB^5`5dOaDDOt=lOPC zVfdE0D#5p+&)XwM6|!~XTOEaaP>iuDH?P9y$+bGcw;>AGCogcGZ_^ZpZ{t@d__k8< zViacUnbwoj6AI6!=xU4Qzn4@E6z)M0#<#6!YL6+rnBu@#hpV^-!`624t%3M`>v(}-O1y-Ej4N4hwvSV| z4P`Ul`KC0tw-m;q$c*oJPsXcv6|P3Ewdfe}7pcQqOu%kyYp69!_Io)R5AG~eUb@5= zin}Si7P&lRJp%hi;R6(9{AUqK{iDKnk|PY<<*W>7M-}cz9>(2nNLBo*@W#5{k2Yh?26z07O-$y>ishKivG*%cJ6*68> zLgMf$j70}veED)<9R{C61;vGQrCLa?k74AiB*7yTo=9HCJDQ6N0flia2IHw|f~P6` zB!wAQUM?QaRrqI$GTy#S@KS|wYWyd_pH>#*VTBiwhw+Bzr0_N=jN>vGe^W5lC zh_UMjnYH&SyqY46-)St}HL7qYiUXI}XXSl?eE5?Ze2Q7?khLH8b(Q3G@_mZxXh9jD zqB=HMw+xOK>@8vwWkcnh+)Y|nb%je%jB&izA7T$`pD_nuRjHecqsIMwK zfC7xC`J`eT>2`lFP#8F=C*@?pp(p4%ew@epi})2K?nRyru+?Rh)X!Xnaex*uZF&2_ z;^jY643~18bl{KDW%epui6R@2KR#aKpJL?x0^*_8P5}=Nu={+Je2gbn6E8a{jQ3L+ ze^*<)d|Tnol+AeTE0TJ(!uu%3c(-5hPK6JXYa<%biy314n!>ksQiqM0eg6Jik~?3t zyZ+}G8V~O5xmeOSR(uSFVcwZ-?WxgKVeAdZxc@e>I!fVB$gv4{%?-h`6y8rB#;?64 zb?}+Oe)2OeXPvnAqr$x?#Q3geGW}js7|#+JU$KrEDK^j^INr5me0HUDzIzoON$xLE zta~1jPS;%F+doq8FHvku{*)oLr{W(|5XqetVr=}!N+Aby7PYJJ9rL--`=SC^XXM*Ctk$(&FxqqkB%QA&aQ;2b< zwd4Lag=Xf6kL*8^qK5$cXG3VlNFGLjj!J=(0HcfWkMwrJ>tUkw2`EydGB^ zi?VF}OeeAKRTz5(GCpoS3GA-$y%cBsN3zsZy2ACy{T1*=>lwocg-4L@D?B#6-BsG) zG=&>bHm5E)P1^EYg>gzbIcV#BN(f)A_&wywfsdoDu`^5IQRHVl z_&JGiyTU;VF}`<~7>_9Y2t^o=Tp4onZt#KYyYitQu!w@6y`V~P5z!mpB# z@l!jc4a5~rq9Ef)d1*l<{Pvbqm$Dg`w%!7+s4!6sI62rrQdL*@-_ulWCn{zNHQb4c zne~Iz-y=%aivl~*sE5*ARt2pixjHEoHuHtbIexwruuoyU;<5`yvZ&@R7-`f?R2fRu zjr^?oi6*n^N>k}SL8bbVB2YQ2%@HH>6@HcCY@{|-{6D(RJ20p7i{ly846&kli9I3_ zL~0bVX9%@N#fUvZ)#wtbnr#JD94lH%ONqTJsP(f#Yb!xjQEki)ZH3=?-t!#Z`>phk z;`=$z^PF>@aqoTZeeXS7p)%zz8!-(JoOPJ97ax8> zYmRU~d`}11Ebx-ueF*}yFUjvHH~CGBcvJx}KVyHC-@@3v0}sLmz&@lTQ}p*)GQ6V! zU!zomN6eOmvMb<~lwoi=`fICu}!Ogysw$lKgBERE|8!eGAe*w%Nq+p!0bX`gDAH!(aa6X!hI?h9|TvsXM zJ={4i7E+R_a$l&l=m&T)r5b$7OTq~R{0(Io9QVDHE(>@eg`Hp=e^S<^aKMEq#^C*B z#idBV1t`(r#`cKN0`O@{G5CHb39KXF6iPRE*BJ4TfqFWbAt={$U>9~_(akzY4}hD4wkXx962`n*eS@$)=K~bih>7W}}Rt7_f>V zztdbvPkUWI2yi+@8eGBt=5;jS{S;^L9s3m8c);T*$zZPt$yFlY{*-F)iD@!|<^%3W z83r$zF1@`R@C6Dx!+7~W64-jc{3xu!eRj)GN&#Gj5)H0l?-v~gJcUvW-Z@l8!5P3~ zD4nrul3fyh1pM#{6+2s@lFx(n)cPzRk3OeSlZqV*qf3J zzQ0{^eiU#xrT$Q%Cw~_*>>^uDULf6m7pyu{jKQ&!#f5(Xhf(519={7Hh5zt*G?DIH z~X)r{_^GGl&LvaSD*aKt&;BJ(}*t;`rPUCw+ z7bqi*!~geVs&tvdzi)p+wi61KrI^cHr|X=IvCRHCCKxw9uKX*w43jrS?zn>UK*~hcD0ZybygBMklQE?M+d5SZ*^ye}tO1$k1Fb5?W zytAYP&<1dMO7$%LHsB?cVepP6()Jv{rzz|@e+E3S)$PNJZp>%_v{wYK7B;ZyQ^fTjbcBA_jz~d;|;0s<7S>AV?Y2#Z( z2J7vEP{6Gz`Dfnzt6pCwNgu%eXMooz>?YU#_?9HMJm3QqV{ke9n*SDn zr%B|YN-_o8%zSI(CCkOVj{1>Iu2xP{>DfOAl^!C8Z)-_HPk zi{cGVu=0Jt?J4;dcg=T{W~|0Ol%ZGQJ!f|Mkl!zC#UBj#g{{su7pvZ2^%lh$ywz@Q z#{<4XNd|u(C9`8b;G>kvn7=>tGdC4jtDSW7_h7~M3vP2It5!=tr33CmF$Ra&Q~4ZY zopI!$M1$wqGlX)0`L${WZ)zhRHU_+a(hdH|KJyd{n2%<^a*}?f=wI1t&3N%}F<2d> zc!M_$kT!M#9!kjuR|=P5`~%?SlxDEcStjzCx)6>tX94V7|LxaCQ59!Y#l{C@h_Ev|XM8$2mRc zr-uw4(Agee0q>zigV(o~v~&bqmr@ve7pF7ne92O1xzzm$Sly4KVt06n_|iUOuoif8 zioU~*{PB@=O)B7;6mRg1dopl;1zePp4ZgETT+ET+4A6(t3~p{eO!5Q}Fg84r{&yx(MjdIwj0(c;$8r(5hTpIy6 zCuJDC#~#!604_&i4|z__p(YP`x$byEDtQD}w<(dWT+8mg6Mtm9{{gBu!z#GZ$55^&bWwH1S@EVFVcnZlvy%X@a6lZXxy=i_3@MTIecyy#x zej4yxN;SClA{jMT0Vh+2!H?}*V$%V?N@0I8e#5>;FZ)DimzAa%gLm6EHIxM$ONos6 z3Do6(^03(1NcuentXfgJsif2@8TQiv=b)g!82eCuQruYaR@N~oXy}N zHaj-}^Lxh(Zf>uZvrKZvH?{$bp8ySRP~FyG%d zIAfC>L+%64N%00p+h@;mPjN<;PRRxbzbu2T5@3FfkimQH`C1g2Dh>MBwqmjfRYSeHCKkqTEP6^)W3ZE`X6N&tNixmu@$B|U%_zm-*X$|dWWYNp-QXO)62LORJ`|L} zxNo8?RC@uhrD%g6O_c$C6>uqvH~0g4_wNZ{7bP29Z>+Rk^h0M_u2Y)9TiQ$IwE*)j z!xP4(YsrzP3*ZwJX>cz4bEz?aYg3%TWj9INvjNYhB!hLXZ3A4IQW?AE_{%bI3h-Z5 z>B$qGYrp;_wf_ygErmVh+5^6qfD3=*44hA?3~qWsYOe-38zma7Gqnp~K38VUAMQN! zlo#-5`|hm;U==ziD5S9WojKJ)Dtq^t(=Vj*vsnKD%hGd_LwJDL6S#nnoxWC?lg2cE zP8qu4KrfS@H{&lNq);?qUTh6cZ6kOP;K3Bf*n2Te@@D_G{ww2P9a!<>Yo?MKKS?FW z0P|&w!4oS<>05yLR)P=X!keY^OVi{}Gu+L6wEh%haO1+#6-5E_v%Ur=*`KIZ031gt z23I;HOL8~B*(lv$?Z}CMPf(CAv1d`koxeS_9^(XR!9z z+kiJwiowP889BhsDc#`Q_Pw7=0e?n8FY$06PSsutsqAVRDpTqVSUufM<6a60;7?)5 zfW8l$FK4(o|L!%7D+|1AznK{_!sck8)4S z#uM|m(sFRv1y(7PYAVTJQ`)!$I2&acthsz?rqjc%6qcQF*GL%!)d7D^F^s(n(&+5$ z!Z!QefN5aGCpD%LZDR}I8kBBuj|r0MlYn|92XB<>n*Kc0USK06d4naxuPV ze_7N9a5;)$>~o_cjmZ^K>6s7n!E7a^m|FB%{v&`lQM$o-?bY2)z||=zH_wt+C^|Q1 zaoR=kH270zAb;^(%gtFVe^usMW8nN9I4(|$g34vj-y7J^)#$P*yQ7qJ;1uBe6F)z8 zaOE~>ax35@ie&6M873({1NdGa8s--g;F|n{4BdyoZ=R>c%mdS6Wp3u1?Tl;&rJB~e zuNUVk1HMEV2IsVA+|hvfpqYoUPOI^NlPSjFt@gE*Uji;ii3Z;|ElJ%A_&lW;eAwOx zxD0qFrMug%BZ2<|_YctpW2}-wf7S zGX!urr5U{1X6;kJZ<3!sjfNxz0EjP=;yihP}tu32-wC%g1<{{qFrJz|jpb2Mn7?@vz*y(;Rlrp#(%|8_#kCB;A5)ycThavw zE^y|hCnXu2E5CSN4e)A8W$e1JMW%UMz>oatNdV`iV}KMN27E7t73Kk+i<%VX0lu9^ zn?LfYwtx~1)^*k=$r&JTz8I|QY%##mly0!Dv$X(ErJy2=b)D@5xHCl??6O}CdJ{0e zdylcJSbuS8I^s`hO%d+dMJ?q}_%-m!lxAvw#lFwwAmB~pSCsK`yDxSPZ~=-mxK$}h z+f%@wQJlfc> zdH>Vkk~1ZX^8oXgAr02bw*u}%Ne1_@k0Dca|Is&oZf~Oo8sE~FTi;Rl#2%*v#-(1 z^@Y>-`IKR5PyST;rWN2PK~$-bA#HyJcsHdOoY+cA9{{|D(iwYKqO9dZ zn)&<|Pp!-IMe3~^;!5!^opIi}LgSbRewJT&B=BTPF3*i!943S4b-<-4jj{I#`lCEA zu47Ax#{^b1{4&+ctHUP;6C7)6dl47tOm^q;S{S2O;0e?CA$hr0D}QfC%;h6LRN|l z@^KSwUqEv&+T@inMS2{hZMHvRq+AFv?;MEjXk#YVi zQmQs!KZ-Hcgr5k*$i*!UX;IAntjFZGa zl`?+Al zemx#r1x~RqtUU^tUyo;SZ~Lm0TY$fyRD)~TAF^jzEX>U!wF|6Hrk&y90#+zlw|OycAM%qzym1N;Na_WVvsZ08Nv$6VC?$hfXKms z)5lPysvN?$)l$4EaDEA2Rj$2#vf#deD^a4syGF{c{}jM^DWxh;5B^>ZTe<3NmNcCP zt6%C;u?Y5I@L*X69svK4q9eGG0Q<<7-b!npXeh4&}GeJIsnz52+y z))`2C%3$o>oeJ??-oSKk$yPJ4dWT}FaV4+X+pGNm^JbsHH||L334pg!iop*D%7|V9 zn4h>cSdSbB0Pmup>WmlIXKAkjK1I>hIo075&sN^&X%7GESzXQ7Iiuy%Wm8vHyY1Kq zu#5a^a8K-LB0Z4+_|K+Pw+5e5UZ##UxXJ7^iT?;(T0^W)fpud_<;uKw)6d4LvHht= zq4iFWhEP~d_UOmyew3Q0Ux4hgCA9vld7A5V<_I>*Y`+i{|(N--=JiJ_0tNK z0OzGNgLRU30z8@gYB3&QZ(U9T>`Rdb>y4k4fcegr!4>T-n*)H4P?Eu8<7H|15%4NX zHF$D=NqYW`&cN1ChQU{Uk;za6Fi}`-#;ZC>T3Q2cKrsdv`%MPbP{7HQXz*$KHsy~1 z^Sw-i`)m={z5>i&g=FkqhO*Y-Az6L3#P>5;t)}QYT#0U}d2e#Y*M#B?zFSV(2m;)n zk_{gEg~azNVE#xhx6Pli^^0VyiCv}ckHLz+7-g_7T5ACF2Z{{#wKvI60_JDf4b}za zPry7e4SspAc$jaqGd|u{k7N(|-f~^G`rAJIFaWIHq8Lv+{XaOdE?449DaLBR7@1(H zVD%-XGxi=#S?h6soZBVqW7aKBhZa#ZW4@acUympAEc-xYG+3P-NNeixW+Wf~*(~tz zchWtdfEhpOR-f_ur_%Rp0k@(^gEe)h0PmtWgLl6qmEQsU4J8@;$4xo+$hp-SNDoS7 z?7f42uFv5Xv-?2}!HRDjHsDIO*e`GN0L;JtG}zz1r+Nlpe)_^-T{pG^ojfjK+y(kk}3esPw@tq|6RJXDd5?ZY;f2s(gW=P zAEh+Lu7P&zzX#yU9VkyDzFxi%BV8~A_>YUIF7v=y5#sX{;QYqrM%=nSZkG(WEF~E{ zse$-@6mU~YZNx({mNLvA+bFCt8*3gyw>#6s8#D&5J0kO}Dd2OIXs|vO77O?TN-;Qm zo1|$RV18#CV^_Mpv$g>6-+xiDCY**(|Byho0MACzO}O@)LnMnQ0rTs=46d_44sE_W zoRRT!83qq)D~ohVz?~`0;MfnPbUna)t=p8dx0)iGvQ_C*_GAOB`18|@UEki602Tty zXhDmca)8C`C_4uH45gadwQsz>aYnF?(EIXYp-lU-Bj5pfvWE2O?XCH1nO7c@1@E(dcSZ8== zz`s&5WBTo0h3xr80&7lb%)FP-AI*7<=x5(ez6z`^P-F{kU_oISpN9aCqBzE`h4$xu zKLLKwffl#m1h4Ru$?+6;0ZKKsPpTrgNQyHz{9F`c{y=Y`D0b1yzTJD^f2?AnxDrk9 zEWlSO(cl!D;AFrBDaGJ6_Gjyd0bizcgLQ!2031(2Eg5_LDQ7`BcR2&#?-LuWr7Hn0 zP4SFf|JcVGTL8XUo7S}C?Dan_2bzAs8&I05UC&^~1I|W%tr)j>Dy5SEPoPM~u6K9I z+Hf53{Y^Bi6(4AaQj)1fL-612jF30K4Gyt;=T!lxP=>)@?UxR24LFd(q8YETzakzC zxD>@0yri)Vz8QdfQzBzmhuc#5D!>o-)2?VvUjzHYrR@z3b7VEQ|Ni22)YP8QS3;@> zd<3PM+PB&_b-xan*HMGl^pNaN0nERWYR~vwR$0WB0d7GtjOn+w{BpLvz$R0oDLT^r z%=RkaA(Ue9v7yrN6Tt6MI%C&_c$vUO_d7c*<3}piftR3u6y1SqX)srC7clEW@dn5C zm3|!qm^Y~yyK4U^(_l8>>oe(c2Ttw%F;aX3@V4aFk!wFvMT&n1nETb>E%tNHcK{!u zIL59a*0{Y7ee+Nh@OxG0IP<`&Ph?2H0ek{waP{8(sZb{#`1(eJ zt^cu#>BLr1G@7lvJJE7utiJ-tf6$rqEtGDIr%~3;kz({*m`wQR?D9x1CU$tfXpVNhJ$gd0I)An~3WdZZWo59!HNU27E4^kXseoOqM zE*!x7_JQUEu)0L4rjld(B(X_=uTTc#78>8Tfc0GCEa(sHUc*nIzf3V*xwWo`WQIKj zoIr^NYimUhIrGtyQW(?f-sbIyz|K&*DVlq(9L2i>4xylKjECD7!A=9r*9YBrNc=$Y z#!B5g{U57jgIlbWDR2+)Qc5$p-Ev9gONX7_^N*8WXH41UG9f?U_bJlg5%wpH#Q`s+ zID_A{=l!h#CsC5YzV^9@p@8|*ECy?L%>_K0G7KK|SOQxQ_-hL5&Ukl<1eOYz@4XmI z^JU?<4frr68XQ|$`rQABGc8|HioplJm$fexaDGZRxJ8JRiUz!yf?^m)Hk9MVV8Hxt zErYv$DWhUC;QACF!#Ce=CeoT1UR_$)uTJj)Gyd|gsYQon8sOUG*Mso`A4$(6z}+a4 zv8zW`!3B>xO6|cT_dI2=6~BC`P*0xhz3k6q zmw++81q-M(o9|F?b|+gffXNvC?=MzR(6-V2Z7Zg zN;FnJlwzz7&KFO{gH;(yH#n!QWES9>6x4@tb^8?08o-AsnlYdB_Upq5OpTUPii2R) zgOW`pCG081Il%lWU4xs4OD8=9e2x72GM;9C$MO{L4vI8*hkYPB*Kud2^H5x0&caMe zGFE?V77t$mt3i}%aJwK`7a9WYP8p0Tck|%v`CbDygTnf8(XZOeQrZJBe;wK2`3I%u zp@6@jME-H3cM7Gjm3KKhV}9y5<$q#47mPolp#EIfLi-cxWq_Acw83jF-Uyga$qark zRtCZ~z&y$syC&OLJw5?^|14eZ&r8Ev`=F8Qgfq|lwXXqOd;gWPvQ!7Wmm(SS2|&jI z9ByHnG=Q&9zN1uA=DvLo@Rv}AKcZ%EHG8XjFW@5-HjuGy)L#dDo?-@uRHoG>g0s`? zfg%2ZLuW`<%YNtdJcd$CJ$l2Y8DPF~VX(deq&MLD6f}qfYem%tanC)rySa0~swc&> zRbZrj1MOPCy(rn>wf4&MFyNe&X0VUlaQqqYYVsS*c=;`f&-;64e48n9Fz5Ub#jzEi zLr&s<1=sIpvI_HTlIc{@7l-z6zK>lWOpO`)QrdfV)wg!6D7X zwb6imDaqhztEBBu0rN?e!Fm&G4`46KF!-rGJNyA~Fog|cT&}B(m_Gp*rWk{D4=ev^ zXWV=v&|p0as05gw_+somo6Zd5o@sYL;u{K9dnsr*SMsg>+|MU~_ffRL!FE3F0n9HV z^~Bc!Po(7GJUEgm%~+|UrOr6x;9q~g!B)E{@(s3%vUgnapLJUGq&UW|RQr*XvVb3K zqs4E8j0ueIBXRZuo=RaOI2&20$p~(%J&oo+0=F!X`7;ZQZ%_&w2Wnf(0e7TyQ^{)- z^d|q&h@#(Q|?FJl1Ne1t3Bc9#^ypU22US&@@i=KD77DpK)L*5FU z__LG_zu?6D9Q7zJ?YCVfN?*WHl)~8c=%BdvG2llB>CPy=*jN7be|fRdeAx5vD@V;E z!2KzDG`Ft!_J44^!T&ohC$~9%aQgl~O7_IT|G{YnugNK)H3z(g{Kk0Tf&amg2Jagq zZ3kU*wmq5R3|_Qe54aPhGS1c7KBE+U&6kFcDqD!MycOc_y4pv& zsxK7!>l3Q?nk@UDV#{&o%Yr}^bDbPx2xb!0$20sY^PC1JULa;Dp!UL<%G0T4He_Y?WQ z@}OU?DoLsZ`l)W>Xlu~#)|Uo5gYIu%Kh@W*CwRF(Y-aW^^E8#nMnHjg?R#Fvfu8Rj zY2ahfV;actoCo@^_SwrXJ@o``c&eWi*yIUV5BX72w-@x4_MOh(fnFnr^z>!WXZ<9B z{RVpZ_r1KR*SjHE68-@aVsFN0zwYd`KmEni0MLgN7QGDUMK{Z!s0#W4`%=F8q9;7- zgBA0olUqZ9&XXmy?w}91-^3UUdN2FH@!O!UEg>nL?9h1-yq`nBYzOf2T4DE0mxA7E zpiJp?pa;#BdUk+H4z0159^r;=qs^R6eTJ+~*s!^hhogGkMwOt4ffj%l)GIkd9Gb5yH zuY+D_piHj^4&98Yx20jP8_q8AsVEiY0e#^_u`dex7<)gaI_LxKPHjEV|2D^FGp3>e z%q}F6bq77n{?ukL=)e9gJ^B{tx-d-yU6q{xH&H=oZ==ttS*WCa;wV>z^K##c30hspx0kF+J z%UkM}vkU6{F8{6s`bT!}usY}w9mGBg^re4ErrWU|WBS?*A#)yZe6@_3cc8$b0}{b_ z(ED7G%&h_a^q0~weuZJfAFSI98KY)H~qm1!%&_CQGlks=Z{W{6m&;5%tPs`3p z7zIQx^DMsJiQ;d0D6lWpi-vy?QmE|*dBvbT7}WS&#@ZmzE7~8QC4m09{cbD2C}{#G zU@zd1J|^p4UWY+1*(?ye&=Alokc_x@K+k$h z9GVQe+Rq04$uh1dntfdYKntt_{d4JJNFFcg zx~ibRnNQ|mUC>M9lM&bi^mV-@@D8GPdp4%0Rh0s-LxEXo((nY(r`c~~&jUSllGv}H z^hrEqcLJVTT>RY&dY*C8frmiEdb7DQGJSdH?!@)5Lf-s}*bjMkp{}K?}7EV_THVBkF)V)m;5`>>Za9jk5;RI zz1ANM`a{_!_Tkq_#(l)gKs<0QH!l-?3Fw;CwV;Prld-nd>c-#79{yewz2LL4wrY~} z&QCsBD6i>-EEM)J52Eb861b_r42nu6`G5RhajWZC9cwq5Dudp(yD91A)tC~wx`@7j z>whbF6zH!vl*M79FAs{Hp#d)7{-ed+mCUdF6jmr|4;Xkom1r-4t_}VMx;FUOmn!uS zElly#IQZZ!&QYM1HU?cQ?Etz~+LzL}I^TD)WTCa}toI7?OXOr60`mj**}HR~>!8Sz zH47z}V2fmZv0pVnSHGHpu6}jSN|&eclY>JkmHqLZ!1d>?8(b)S8rbKHl@($R=!3>e z@9~o&)4BY&T>kFm;D7`$i#{rSantIiP#KTG_yp`V%`W=`6dhw4P6+54PA#j`^=bSz zB>pg!ajO4IHmKoHN}Zo*b>o#?Sj~X-T1U|{csu(76bpV|X4bWrXxxmDfIbg^ll|I> zPc~;CEz2zt7qPl&&c4pZ-CR|$*G_MgEeq|w7FH;5C>W?CqbZ*K44(v8{g?x~`mu)M zW^#B30Bf^nv(e(2{9>tzGei7y=)kN=saz(iO?GE!+FwIJ*Zz7BbnUN?v%80%@8{XG zP)`ogcPszJ3_#Z&D4~7zLw1_}Nl1Wio*Y@IvMEuP|6)o6R?6Y@Nrx=I*z*%Um^1@i zqn8|XdQ;FW9wc+Pnx{YV%vue08rmVyHMH}fYiPG}xI^>F$U$pnvBL#(^3+eP7~rxu z7<5Q$U{#r)Fb=c;19hMu=<2{|(A9xSIjPbDevl&WQx0!E*KV@ZatByz^A|wZQScD- zqOB#%|8j+&vAg_(+zit|zg&E9<$wE5Hh8` ztaQQ=uE_Y`{_}Le`X!3O`6a#&3J@G3dcNVH=qKe|b zxJOxgu+;nwr1&|UhS|oB3nZ)pJB@S`=o)DX=o;xk&^6MtplhTzM5mvoh2*2(=Y;r| z)EKkdI{_NI#u!9#bJ_D({3OC6kzl70wqt`USGmW>Q7RX3eFb*v@j5^EvKX-kxGqQE zfv*1j!u7A^`eVK9*JadE9g6v^Zr0809tV$FV6Q2P0$o$oEsrcZ!}IXLlp9Q#0fxHR z9R^(;xdeK(d~$HSZgu0J{o$^AVK1H6ITQLM7z;12Dx&9qb_zDof`$}7kGrI6Ue5UI zd^C=Q3N*qIplgJQl*Z))mjQn17rBz$L4NbO1HT8n)ZUJ`nV0I$=R1el>6 zwH5^}_Qc zqL6^9eg&O=X}v+9YrSCw-SrlU1g`bAE64|6b~s@q8g!HMJ+itPAokao?g6p}?d?Hr zE9kn^?*UyG&cmXIK3fhnq6<(!Bl^Wg^fz!_QS%q#V>Cw;UZIdPRoaEopg*w>Uhpf2 z7V`{$7qAxln35SMYyjM`h75qcp#NiE`E}0fCV%%lCcIaG(>o2@A9M}7gy`-=TwqNw zI<-tL8>11x;EE3P=;U+;F`5DfqcYF<1@iTO8J7v%v`Y3A+;3r z`u1H0>p>s8P|iyZgTD5j?24vY-DLl|#~Axv^v2J|j3y!jD$;;++dVu@oCaLNm4%9P zK(RHzKr5^dx@NWo=-N;h(6ylfF3R&-XyKOuYhpj9$mQI>O987Ft3X#THi52Q>;qlB zIO&r9y#`#}_>0P3jvwF3w47x6Q{WHBDk@tEXVTT1(x7YY z5uj`BjY_zuT0$)FvvD$*-vs@e6QWN5JJnQKOJ=K1QNaBvm;dPUnH<)P@t~8 z1-1wD>XpTzLzJ?b@4#IFta020UE}a7>CB_X@e=47N1c+qdB+_P+Z_xvps`jrlj=K< zN%bk%YsY*6x^~RQl5z;z2VBo`ud*ZcE`|kEEhPb%_Uv=r{5LPJ8dk?q-@Fu`$#DP) zJ;6X1@qwW0B0d6iJ^g$abPeny&^53HqMPxYKMHI#xP4YPK^^l*;!j|&N%t+yYw{0# zDeWrl>`rwi1ax(#R%toDMgdnx22kQ!UJJhB`qy&(3A?~f9XMfiSGzoOQNLol~>-gZX z0k9U^M}F&hvAhjfFOvQNT`!XImVG{o_j}~8oYi#{YyK*OuKBAe`hWA(3<_wTI+c|H z&<}V+`}@6jD1+mPoe5a|m=C)8u@rP2hwDLCH};4d2`7N78#k?P#@Akt{5%1B?S=~F zoby2SMxehDCOZ->MW=@s!t(Kp^MW>V7f%OUy&v=yMKey=1-PnxdggziYtyGd*K3_? zpzF2H6RVq$?fU@vZ(d%7%DY4B{%pu=UlbGYOxM0B54!e6b@vtCqd^p9}B@i55B8F z*MskVO4`BsxCmI|d0df>@8H`BMZ=r{slOFLSAXk-x&2LO1zc|@^tQSguPZ#p>)T+j zmo^`Ot`}M#gRU1^vqk^!xxg|gpbl>mhrJI|`Zs+1%T~!5@9i|X(kMbfJ9$12VM68#!xc1*JmmSE9NpJpR2aJLA`L(VUgtx362cfa~q+5YY9Mv!2yWe=qas@3$y5#hh+HF&%!N zQ3m6vLx49dl`77G{*Bddfd0g83;a`=dhFua>#E|6PIoPMM{O7P?wl%obM`D>QEUb~ z?X3f#>mWK)MHa)Kf$OOMrwSF@&9liB?rdM{4FO&2trae_KMJ_k+cTW^r`X|yF<_w6 z=Y7z1`g{nwPM=wztAk5HR|hwU?%t>HK1Pvy_z{*edqVtab>q++7_C0;mZK`4^sv`a zC8|2pp> zKj8+ioaP=ZRKw|*_F!4iwFj%!aQ9$f6X4o|{mJhjA1&emtG}}-(%_YuV18{oW7nBX z@Sink@xhRQhtWynBj=>-evGEJIwvNBNO~XEvkE% z55D(-Yd3k}oTNP5c3SjM}x>h&o8|#rieh!em37iAP)Y&g7gK>crz~(~X z%3+TSh4Wyb-rfRTy?s<$j)8?J@d)o-RjlI-O0WN_fv(pj%|O@YI)kpw4XER8E_^z0 z4RZ_Vxms|V_`h8geU$t9&pLdWf0Fy!FVg9!mM>;?lie{M*^Q=TE+5!8lVa~s8sk1Q z0qZu^e9*PE<)G^})n?Fjo9aj;AF9~>*dM__(|j9rP4i>WHO;x}I@6$OE?U=}<`#{B ztK&mJ|IuzgjI_E*-$?c zYJEO>eb1fR0t_?@?LgNo^aWkBFbZ_d!o>R0sjGl%0H;9T^P60QUbMOiXs|~>1t{(W z&xw!*&d$*4YEu$p-@y%d^Pj^@7@vvVEUTO9`+HQs66`e{8$j1|><3-baa#2MZY5oB z;Lb-xu7)oTAOiFeYvpXZc0)b@b41?!n(*&90Uv>#Cg3wlXWVB?CU`ICv*w$T;pKJF z>Lwqt9{G3x_S#IgMtpqyjvp2%#(#1Ds-S$MOacO3uS=q>Zd&Z+(PCd)p(_pw>Y;v2 zBln>`a58W`)GwsSlYCIv09bqS8_=~UQ$g3BOaom9c6uXsM|$U^RBkTfwZ<9A8gVmI@@%|jPOc0mE%Yp0Du9p?aR5D!7uAbguT zgVrDlG5LCv9p{l=32dz&K9@N}91Si}3A;u!mGo62jXU~JK&fXMfd;bMoH?*=fa|YQjw?tA9^daMAjVuYeZkW}kn6u{R zHD`HmqG;XV?5@|rP^VJgX6~sJF$%a&r4Oxca@D~jtDiTMbR?{Vf|{8PplfFKfv%Z3 z4Z3FJXV5hx4@7^yylP6aGksEmhRoA)C|*qaP{Ps|;n)bl)KudwH4 zVJ>nD>~tn(u)%N+jlY*2c7a#05iOi4(QBL+CzySK>t^jJ(Djlg z(duRZwDK6+%fMdKusMpy{Ba%$$G||BuCt))_Tv@Mb^Gxa=sFS}fvzJVdrNl$Wc!hS zv2~Gi{)%YN_TJQ&*Fe|0dx5TXztNKF@-1JVmi!b5#~8H;?6lr(pliK{K-YTDw{$Ph zKItu~$EA>fs4T6Vov8Je0A1^?0=m{)zm>aQ-;S;LJdYjr9m;<>F}6a$%TPcE`*aFQ z<7Iw1VC~%96wR1kNel7MsoHO?Xj~d^^i+!GyXD+Q@7B>y=k-#30O(r5#!U2spr1b~ zPd6SXzso#vpKyD3Q~7eSP-|yw_z8D2~eq_6MxR-lHUgXJvxQP>q8kF5Y}ie3j@eHsY5o{lEAanF69#ce2$PiR2wTCjWATin;}<+e@_bh#=@em`>lBLHh6yHF%!*YHg6;m1l=KivRbt1nEcru9ngoX#n3L>Y{ux&hW&2Z64|#(=K9zp$P3{_1w_-tV0PcG~;L zLD$~D47&FI9niJ+`RjDoIJ#o(UmRU!3i^pVKg&-Zoj;eNS@S*8o{xc?Q11d1&;Je# z>G0wzYEv@fs_g*ln1}^k$Hbc*+{;|c4}j~SSZH-K_9}Xey$xWm2|wR~k6}l7xxCAN zF((JEM_{REhTa|JA}e1F5rDN=Jm^|%8R%-i z8}zp8<%I2jRyU27^6>X>(W%kRkbDXLU7UTOl@S1-`L1pWqH1M%tVOo(o`<^^51 zTPuMc_OG07R~Mc3-3rOqA{va;iAkWV6Q6_rmtE)iv){k)ssB~LTI^rY+u9Gm`F7*Y ziz9p-sol*PoEGc^`g>jEij}`iV%nPvSc|O({fT{v>~?OiC%5PGYd6YsJ0zfm&+9L4 zHxKAK%Bq2`4K}B^+q{gw_B!8^Ht|f(#BM(5D_hFUTSBQ^KH?l;t^PLXD@oGufZKa| zm=7DpDC}2mzgl;>p6*?@yECpkf61tC2D&aSok7>7WdP_)f@RPrP>N}9Hn(?z+mBrZ zcKUjNqo8X*r$N`tn7-w8sUvD zZamE6;h|Sgcfik&UAi*m5b$hy)@{wklyZkh|EBX_O#ej@6wvds&q3FI+H7^>eRhxjIM$1Xt>760#dM$UGU)2pUC?zu z&dXkR=^2O)2Y=85?fF4jtJ5p@L;PdwfR*l$Gyz?ANLqug+3W$jdOfVS`*hiR0;SyN zF}0w#jH!e#z+R(Y4Z7C96LhWr80bYC%PMyXbj{X%(W(8RuzbGRW9=z-zF6njQEyza zZtnv-0oU5zrnCp#lQRGhsU_zv^FSYC^(CO|j86vr9sBX?ouDUJ{j}&b@?l86z+b^g zE6q(w4>|Lt``F`I#Xc{NwHoM}`6i%i<~xF}IT=i0zjJ%zZF>nHft}{|Q_!`&FF^lt zyBu#fg06n-16}<%C3*obGylAK{?+9_&42&&p*z3xn{4y-btXcWMHlFL1S$=>?sirL zT?45Dx;orSboZuVV0SRm%gE7`{0HANoCa7sbsgxs-*nLGCgvw{V&jfE4eYg^2Yvah z@qfILmZP6D8EW9Nx~cH7M}-Z*ULW^v3%Wk;J(!aIZs%wpJJDj4 z{NvfdS0D7A1-e$c5OjUP=t>HD#7DpN78@V`^ziWt6w~U`L3dq}#QiaV#y#S*!_ott ziPUo8pbxPh#dy`~rv2YN+K-_$b}wNR6e~VNY~n#LWA(|P>y3-KpzDo`FG1HE7h6Ps z{v>SK4<)Xnwt(^Xfrr1>2Ff8J;#a6qkM_TVu19;nL451xAm589Gw8*cYhrcN;ysTR zyMw(hL;XP4WoQ`ax(vM~`hS0UFa-+eIz)rqKPaNn|Agdy_By)lV61nrj#K(SysH1q zQJRyX@H=3qY49B^(VHmmctly5qW|S_(9~i*S<#cU*Fe|PkglNXX-F*Sy5_zKy2ko} z=N*R~3iw zHD?xn`K0B>q1zrw>%u&tRdB$|P+pV$E@eFCgTyC*b*^p(T@MmRJ(|1a(cCq#*Lofr zHxBTnY0ja}__UV_fUdn%6m-o;MbI@Lb%wf6x1!owZt`)%!@+l@;xGk~?3+i^7PDKF06!(Qx0rA+irptrK`)bBy5rn!|C8}BcBc%L?m zo^W%48BkpJaJ$XnW$6aG-enmKI^SiX z;y$5;YU^#48P>o=f6^nowNUVx_iyr1jl&DiJ<{o}8WaIt!>daf9Dwhbk-Q6H(vt{w zT7D7eT7D(ynx5k$^*T^l;a4HZ9ErclB~F!*GbTvgr%J$AW7 zlI^V*N8}H>{=B!m)lD}X^cXhHM5jJ~hUTvdWi{AYpwF|nLl(Tn$1RiPqZFNuCzJ2n z91QbNN1<0BiewK-XlC1YMIo0d#HVQ{x{eJA5e^XtLLXuE{<^ zaoKrP-hSIXD#J^?^WyNTfj%%u>>??Zi~A0Hhkw8EEvJir;=upzlLF=%?qSf?{ac`` zz0bQ&cb=xo7E{i5`P!M=3$G6bTCf}FO~=Y@qgYDG!T!$U@;!~e$0(iu9rY8K>rcaf z1HEN_8DD>Z-Xlu>j@U*#~x?&XEJ}G0?TW3!v-h`vr6zeSd>~$iBfL=U8{R&tKbox|n-S^m>Jo za`BSbLHM%^?oB(S8wXM<OyI3hOx^xLsVJFc0 zkC%M(u)1k*gGYliC^2_v;e`Kr;B_AOGE}F{+y-4ob&hc_cB?e#lXA#{7%DoI_6yC| zqBj_6WAA~!siutV305~Tt?_VrJH`8POn*T!tu9}J)5lx(R$idhO?9h1s%r!GTF)TR z3(Vqz{ND)CsX!i%=_`*)zxJr~XDFfW7&v^09w6@FxziV~94%cSp zWTLMF{eAoSvTfse$=}Vh;MREBl{YjX@F^H-#r~Ae{`i*vKrXTAbly<^wt6e|)eoFG z)Fq$==(+@S1zm5Y4x@N~p30K|>y5VQpzEEIuh^;GyLjo^1qQlw{SR~v>NM!;_jSK;@9;5CKRHP0CPjvRbI@AdC>YZenX=!y+|H7AO@UF0&-tSRL zem;oKf+AW~awhsA&{x}cZGShBiWLYAi13>9d;-n$2&J&qaRLQT;=^DH-!`nre{ny~ z)f_B!BeCryIZXEku7~L{lvaQ{HxaOI1AYd&-d0%wx_06=(6ti}fv%I{g6I@lFf>Og zy{B>;jP()!zb47UW7#G@&zAWra((U~^WV!>*KGaaCC9*E(DhyqUp?|QaEp$Bb-eTd zU1N*`U1OX?F@<NT_P+lPm1$E>kgRb7CfUe%9 zg06!k&FbnvX)^-&zbsST(Nm+sq4|7^OtrTo%ZU1HZBuW;Kv!?-g09}Q0bRZ6MX7~D z3%49^v2kh!XT^ST-fI>V)8W6;!+yF)7WY`c6AnW`_4_2~>i0F!)$a$OtKYsKI>*Y6 zS;lpqN}|)gmpO}-KeT;X6Rg#n2B51qZ9&(G*Bf;8as=q=nbp@7b{ zBgW&Mychc;7^r9WL01pFKXQNn?d6Z0Y0>+omB`PAo>cC?U z2gZ0fP;`bk&}s%h@y8W-Poxavz`_|X9z0)xt`6+s@}C(8u7ZI&@Tb+y7W_*5JR|nQ``2^#@aWGH^u3OzW(BH#>ET4)4uYAf2gK=OeWf%u0eEMPsW`M2^tl;v+ zjRS|kKpnVjb>l#+hXYTn1C?g;IEb>mM`e*T~RZU@F_UQojvcylw68^9y>>THg$IQ zi1AaaDJdiE>g-5t@XeOc~^ z$HdFxR(?%T*?CUi^+AbB^W08{*9ES>PHhdko?;B3w6c6LJ`S+<@2BKfj`7!-;4Ku% zIN@w2_&Vqf|C0Igo7GK9U-L+*YrZo$^`bQB`j}9-=+D0^?7K%Qcy&H6;+(F80Z>wF zd;@f?aUAGPuF3}DWUCvGTYGrC3GB806w#kQqN5EQg#uf0iN~kd7#K1Zy-fR7qmc%qG>py1HLRg=J6&qR|!*E7+S1$3F8WvK#KpPv4~>L&gu zj{jx;)BNX6$)>fCg-)lnwOXKSYf%f`&qRcG1Fp>tu)1lkg-3JzPO=I-99Kdy%{sr6 zjIrxXCivHdw73G_=<``*cQJA;a=NX%7zG!(cQJ~T0j|3kuW|)#IN1rWfq^~&))jPp z0xTAEeFE%F(Dezh4?x!^z({ntLTT(V9@jtt^>`n9T%0}j{ek~tE|>#<0!vMOVG0W6 z@zgMh522em#I8xs9O-sNEaN7JiMR7{Coa+F%;L0oUIg8iKpmsz?$hRpHb^dJVlFt&etKEc=%QS-08L&HUhoW zd*+makIi$Vilfb)d6dDT`0xi;efT) z_bHvRZ|YJ$@bkFwxxSQ&h4WT-$QLj6q9*9K?~7giFZkHN6@(8118rz5=$mti`x7ZS zoE=!t<*#hy@`u1q%U`g%>9Y`zKFdmeRry+}+A{IO;9w8j%IbLHJYpGNtZ{q2r)FZX zIurdg=&qG=Zg$D)#({Dk4g^su``6-??@aU$LI1|yz5Im2A~;Fi)cj<24#U&5pP5?06d zt9`{=NE>)ltW_oky*(-{=279>nb;?Cg)_Lqgk@l$Pi3Wmu8|!Ez1Cb=p?p_7kEp1J z11_uoCnC|GXGj}pLy^_E3p=miYeaU?dkV$zzXKO%QqMk0V(j`M6Z~`q9k0gsS_4+T zc!1TQ3@#q^p~Yr+26%Y?ITX|EtOZ@2|9&O)sLsvZ%7o{j#OfT}>tFMA*Lu$Wn_s`! ztwovW%R$#)gKq-8Mtxa6_JV%;H_^|Cp5MI}ZJ&|h(7n9;D7pq8hsvyS`lWYw!$8-# zYk{tZ`<9^V;l4ZQTYAdzbeQN=`dpcOflI+i8{0&FHQC3bfYry-plh)oL02E|gRVY$ zuXg4@eatU9y*CVPuuux#EyCVOSj7yc-V;j30Rqpgd_c0zl~;K2HHfns`+ zGYItJ;WG8cfd2ha(IkaJ@V^dr+EssB-8hib!vX&_&i2&4 zDCpX?6+zdojTHU);-mAZGo`VEw7*uU|EpU0dr*n)ynGD0*6}$-*5(yyD_~9TsWmjL zHgC*5T;oorcK{`^c|_P+XK0$rdZ246$FAjzMb4r3cFHi#T>v}v{?1yeR3|hbA?rG4 z{mS!!uBj^tx~481bj?PT)lHZAcyw8B(VzdKS{shbq@oWfy$-MU^8su6Hd9a}@1~tu z=gywbqjl6elD~YPcfB(_Oq3bJ56=Wo zq!h+27G{E1fUW~_8|XScQz@uES9cw-ZZxEWt{w3hbnOU#iZ|8u-{cHkV;cqfJN8Xp zW36ub?}10EKc_UV&b1Ya>F7VTiSjfsi^nEiJR%!#>tUOnt?THo2fB{_u~s*&-|=XD zJ0+RwEg{JXYoPH%N?m1BP81zhJ=8|KA1nwI^c0(Im) ztDC;Q=F!))GO_=HE4;g!_w;t~U))b+?E_17?btT=erCcY;Og3akCv}`w48mrGt@J$ z%Vx&^={onoo~t*Gf47Cg+&8uvB9v{kO(_{tE+a#3B_k%+hDsu4h1@bCb%eP`r6Huy z+%JW>=k_z#LS-%$3FG&i?>TS#eBSNrkNWQQJm)#j^PJn~b3V6F;uv~0h-2v0H9T*h z9yg@4T_a~p5<+TUDv3kHw}>NG?-7RwQ;5TZ`NVOExXN(vVXXhTHL5}rIVZS9%BZxs zYS~2kS+%w9tU&yXN)d6=i$26%h{NUn#NqM?;+QVgTA9NoXDybJ0{qxwx$Z~D9j$rX zhyGPDSWEY#LhEclDzVNTA^K6sI&*j5VaONW%EjsC#uX{UEPaxja^qrP=2s)d|*9w0GZVe&uXc!kL?#9{6#alFFh9&xU1g4jas%Q-@kalqigm)_a2El=_Ln^s4;?bb)t4RUPyPY_i_b~CT^UVryo;cpab9;j-)>0PBQX6G4l*>%r z!Zx~F829i!LL83NCJslQCysr+msNU8$>Km;U+PfO%gQu8Y9w*^@gZ^eF_Sp_SVH`> z4|N-OJnIb4J5hy$yHsL=9DSUiamBhH*y0Wc^@eVdeOie(G}?#4t6RLclSilekk26Axv!c3=c}|f63_v$-&O2K z|4Di{Rq)%Izhki~N0;xlRaSW^-(m#mVUCz(xeoYyN5Ct6=d49qJIof}fF07&wSh5Y0H>DIiKD;#EC$-?nde8Dsu#;y*0U<7oeZpQ zKe`=3ByXzl_97lnV)*&FYAIs>Z9kgro{K-K5$$EW=N_rUtCBytYk^k@mg{gAIl>*O zvc-JtT8DU{Lwuaf!RbGKl9Mh8F2;YSyFR#G!E#;Se22mMJ574K?UZS3k#vwDWB`Fo zAdWzGsH_gsL2gU=4N_h{evm7FhqT@0_5+UgP*EL4JdDI}Q>jD|`+v8~WcTMp`6>;$ifea^(K-Q@2mn6G6Qhtt<_p7P`UzYSW-s6rNj&@LS zTAWN`xH(=Wi`f6mJzlTm(dBgcGyWWD!>8-S;Zw}sykI9eg6*kt#a!%chj^kxyxwwz z4xjh#m2tUHl6#&M;I;q0y!s|M3|8J}lG}KnY*>ha=+0IVH6W1w#1Y66mD5R*drHcu zN_juICFm8&UY-5XGSDEr> z{0`EFPsfPEr{JISk~`QDY;zUfMUp$xAs*xq&$pbDyYgolmGdRJJ4pdvpLZC1(_ygS zVUyg)4$G=KKPvd~!|tRYju(j|j>#&ptK@cz6mKB)``UWh5ov&B^cZEn*M8Hn?wsqgvFD|a+6eSIC_yr6Qm`3Y8xG{O7=74@o^KXO!tnV65c zOnS&x;bVE`dpgY5IA*fd@|c{0YyWy!MO1`z4JM9styDSMfeTW;qLlZmsKUF6zYUJ( zpRLxarHEDSZV@FO!ZSmoRf@2H?~luHnk&bGd#Nn$7CcHE$8cwe<8HyTmJz{=45IjpY96H{SjBtV-@Kp1<@z$-caeER@u6DR;2QCrf0ZUy}m* z(6|3n^{Yh$$7~{b+rs9=^8oP^6ZK*!J9Gb2HIrls4?mHAwyP1xJz2GhFZt4xucy+I zWXq#3iQ(oD;y)EKSH9n~Tszgt(YcnAKJ5HJ{MJrWXsh9>N)Ndu>~B&+;auW~sYtdv z2hZ*|&dJ9vddPJ4EQw*RIdPbKiTHO-%`y9{DqGCOj<#YQvVHbiH;88;6~iz&lr0A- zbL4eTe~oud)lYiQaQzyp^w(s(btE-}H$-KLxcOufqt+$FQR_P5 zsCCy#m2g+yR%pdK`WGDy{tp$y$n~6Z2ZxdS5OGvrjyS5XZn^qpVvQ0Zbw~@NvX#o| zDSPNWNsN?CAddTY=UT3VYV8Q>JJN@pA5X~&Ax#>4iWHi>r6*61=OXb0%dbg6y^)rB zixhAtcj43Sbm30!P~y0gy9RM=ur;(?M`S+;?scrA;d!qoz%A#mk|Er3-iJ6G9ZDRI zjwcRBXIrivYFR*q&XLy>WT~v)GN68;BFJ)yGwxjAqD$p7vf#)omE=WRQGH}ZDbq)8 z;y{1vOoeb?y0To?-`vr}J5-w32)RJT;6ovmDdLz4XWg!#x7H+%-dg{xcZh~1kQ|#( z{m#m=FR3`>u^twp158p2R4o zh!;O*GBxL%WL(^hIYkO6m_xk8NHY$upHuz&$tJ<$zevANmw0=t^nQ}=)L-)V`y-Vl z;?j#rEbr7*%lbtG)x}FR*N_6*<0s;1k7K`h+r$6zFRIJyvf7sY)m=ZzS0|40b$&Hd z?h7jOb;;jwtEM|sJx6DnMa7Yxjlas#x`f~Dh!2HJ4uf?a1_RE!{e;2d#Buxjqbem? zAA*q>#oDP15r_5jA%5??oR80n3T{SntYpiG!|WN$bvmAOcps$V`pf#;??V1T3?h#8 zcO>z@A2K#4sB|$Gu;PN89?X)R$e&0L?wqt-yA$JZ=eiI5(2H`qAO@qOFXr!P9PzQ0 z&GAJCl{i4MolIi*F;u0AICeaVyVp0jC(Iy@HEgB0(?Hxw-AM|td!G34XUyO(@LT@w z7bA{5mnVMYpb6^{!y9?;8LjC^;EPlM4!ug;Q`k7vTV)KCBalx?jA9Fk|IfbR>TAn& z`$amcKlGa__J*8}{XykmFGj_^AoVlLp+ z?=q9ml$ou#%GI@3`y>C_lU3B4A|CBS{FzD=ar5Oq#Jha(^TgjO1peJBK6 zb0=qrGW{)FWlMc(>)?nIRbZ@*58Zy(WVV({x{V|S6#UL|ZMvAl>ped7FA;}R1y%Yx z;?(GOIxe_ZD;*tZ6y--sk?7eKau`-N}c-5aNh(s>&X!yW3DlciZkm_q0?}Q7Vb~hZGQ2 z+3R^;`#Zh9?tQ>NHqOf7{iPVwaxV~n*zPm+xh_ZUN{&XxlL9K7;i%B#sPG%o$8O?U z;uD6N8E*@5%*Y1}&wD&IZm@1*kLR!Js>?8$0Sn)7cPd0wMWqdsz3u02m^T{?BQ^Lx ziFn^9b!zm3nmJNDb-NYoI`5c@yy9#s26Mj=$8BbX{&9O5yU|2Zgm_2$NXesy=Y7Jh zT4!V6Nh)x#s^N`^Zw@hQVLb6NHBG+TtL))2RNo=-n>UPjG;zc+jX2_-ui{c9UEf== z4(_%%w$qy|k0*=a+5e7bt!n$n+0_+MV@OdYyP-@w1CPUC63CT zAdbo!5l3Y&S+0Y;WwP%LbAaJ$)Z`i^V@FV7bjvj27-(PJlp8GcK-)yl!%}Gih!~Z+b z-k|~*Xk&#8KHO;;8I1%XN_U zn8F*}a>LC?+dzfUG4~M1Nc-cq92b5nBdv&?(2**nxV+`MR(t5^tu>bPG1BT0$4F~T z93!or;r|_JZ>zXbGSVheIRx~%N*1yIwmW7;%Oy3qUn1At1KPc0R)TUWONyr^kQl|f z5pVH|8K8YE*V(Y=bKY#sA${0cLA>D;W*n?FTqTW`j`O?2s6D~<8uh#D_8mq8iDQ&R z5XWe*MSOcPbJqTX;r|`&ou~jtdmrK$?a9P5rkDzbs+J$fvO1H*80}vWM;zZ1N8H<0 zhL}q|Va2))^zO$_Z?Zg|Yg7#5&;On~jTnE$iDUegCywz~!*KQ77-_R-NC}m_Kpd65 zOdOT>t;VW|1N6;w~YMUED4A_wfH@)f0gz(4XMb#jfMq=J5C3?m@SBtgV6HO5%3o4{Uj@HWAVqz{LZ{0gWm(Bk@zM zOa{BEEU_Q^35ikc3*wK(dS741^*=;ecGIE`KiPSGSk-yaJLVNHCJgO z4tO!3faIZ{6M7>Qy267kr^CJTQ{eYJFbH6F;{uQ=i{15Af+ ztWrLd`i7Ah^-Ur^_+yiWPai0t?tLt0v%5(F1y2#5*U;M?J#q=4*hFdXvIPpLy<#A> zW`X=2Zfm*j(1*;N=(W(-hyGyVn4hN+$2v3J@Vx7(Kdm+%eoF;#`nH8Q)|msuvCbSO zKFdDbc-C?qnA{6iH!Y%Y`~!BI0-YXS5x@dM%ZfCW}sED>hZ+9btB&Vps?I z5yv_(ggDlL4~SzO_}Fk&Ws)p93rPu;eM=mbZ6=P&_7X>BSBN7AHx18woE>w1!9wny zHvJu)A35$;*^^|*K3S-M8X!F~x+Uqs@XN%pCoXSWoh&oLcoL)7Y?UnH=HL1dZz7JR za366jg})V2dnU`~3AW16Wl-J2Dp#rtcZ!a2VX_FnE&mafon14C)&$T3jUsB*fW`*&4Ql(6h47HTMy>F23Kn3uGP*>upcmQ!!oJt%I0?j6ll&vv5?_{Fj zEi<`pQgKto!E4%Koze&GPAnqDl3SKI3_n5~9W}mi0ePKxji7)|@}szXNbk9Rq>1m% z4JVH8%}pe(zc+Vks^fce-&zITZMHjFc{de=tJ&g7D~VBc{#d@Cg20}$uh!C5wmPhI zvK)zkm7c^KoivNv2$l1(OoyM47{%rhN3k`Q>*_Z|8ZmjhYrwvPB`g zoe$sfJ**PM@ja{%;`km`<)Sh!rql=ui6I4y+@>n<6FHCRLSl@oUc}L>2NOrHo}iMo zxp^dpxvz-B+#2FACwC5MbH9)n=5mO`+#TXDS3*U7DlJ?+&^?R6+~dSyt^skFOC*jK z?ngZ53F#X0?=8dCmQUqXy)y&lm~V<4Qm-IwSjq9hZxF|V^?<$Vgf6pjx#`wLRZAtu zY;{SDYMK!r+QDoLw=O2fh~i)L2vR`7iNuG#Z#w@pl`ZuJ{2=A;eI)T6Bt4WbR@~hR z;AM#;zN*C2o-*-8spRPr-zy}Bxjw{u&NptpQCtow#lPq|q=14M#OwU3N4UrHt;&`9 z0XeU(7~Q zK*2r43*GXD=Q&(LRhS{i+;_!5107&c$@~Lp?SpqAKB&Ao>*#5@PUBL?L^(la%#ei6 zD=AY|!HD2!Dvoo%4a9LSd!nQ&Hd799?vNaD2CBH3aNVaUU)1 z&OZ#+A&!K!Q)yB@WDtpwj}KI)h)d5RvChYwS+Y1IA4^FA`N$-We4G@2TTPY$b)6L8 z?*sPU0G+VUC1ExJo?0p;UE*z3#>W4y%FusLv42O;wdK%qu(ymj;@_&Eajt)_c6p(-?h$8_VEZ6bPb##bi(ue=UN&kL_Sgdj-fPfuA zCL#Vef>g~p(!&FT-5w*NXq7leW{74!#7V?)f9;@P*+$a$*QTjVDIc&<{?@xmF)OJ6 z9NtVE2|pFAD$EuC?vWh+l~66`N{_2v*6qGdc&)jP9``gUAmPo3BjJ6@$`Un6dfa=Y z0EZ`Au3O|YM~_>p0_RD<$ECauST?uf^xx&nnZKhW%DFv-y}HDafQ~9%%7?r|V#GgA zWr?`-91`pJm(6o@xNk@S@oyxK_|I6b!<**la5qUG?iUI%VL|_Xhl^2Z^CkWlLu5$| zmzQ*8>c6JRU*7Jpz!u~2w}Lpbu{T6jSRmcu3dxZUk7~I<(or_lon&u!Sm5XmkC6h> z@f2~SxO29j%ybjp^dZ?z`LN$l+p3myGo9w{IJ%ZVca`z_b;O>p#wi=+?t{~`VR z{h_i-`&<&zsJw~aFIi>kzen4@qd&H{ym611PaOH!pu!i)jC_j3$j8<4Dq)e#$c4h) zY4-MrMUEa3LJCO8qr{Pr_;6X0CQ6TZl@ySH0ha5Gec!McX41Ri^%Xko;X-W{k%xx?2wRrV>XwmZ|VBr9bLD_jZUc9UbDKO741*k8;G3kEbiiN!N$cAzG6H9PVnlPS`L&qIQYl|c?N3z6zxF07L&T*MNvyLu`D;ga z8bAuj<_O}*=A0_B;!KcptktA|c(z%t(>=h^ovv0<{WGNdlz7CZuYpR>kN`S7l79dn zs4Nl3&mu84EW@o<0;%*#8G|Ws_tk|eW>By zr*K1RkP;r9dQRntkFlLdj20h39FO=-t17#e<7FFk2`Ql9M$2`R^mdGZBR=#miosMd z7+t)YI~sg~p(1g7g5fEZy-Xg$X+>iA(WjcMP2;12)%9f&#UBElq2iWH%dDkB=!koW zqge6kZr{Mm5npaUKT(7D#`nzi#2CZX!Q~MpW4l`=ovH4QObw;NsO*dCasoe2?pZ%w zUDf<1A~^ORABtg*y1hl)ML$|VZ4d*g%}4f-QdkPrR$h~t9TC&Zg9FvjK> zZr-9k)y{QNmuI^QUm@c!o65njTf{4FFpnWT^q4!)?_SrQdpyx9Ma+dXBQebNQW+vn z8bM+V&#}ZYJU=3iVK|34hT+o3WIKLhjiA^}Qos{R`z_Z_cXFirq7>9G5)Jv63bx#3 z;x4ArSIT#1tJZLbk4KW9B@Rd15Qn4PYKWuTY6OQ`x%THJhd*f|_xkfG8NfxvB`R^1 z9BynTF%oyWhMKfWo@4lj+oY&lL1`4+dv#?IV1(=jFtOH{?I?3mzxbq5e9OJ!$7G> zlNjyMiw=(-vm8gq=(#b((E!g_9)SW#NpmWIl)M}%Geysc;Bq8ywAXB24_8^Mr3JpX zV(njRhktvi7#@y3N*oVIpONakk8}S{3V2HTHgP;9T{OzwbMTaOIPuV}X5iE$j;oOk z3|CvelXTmd?AV9#U|odwe}Ims&%uLTEA8f!izud_8#_PRF3v0-iNrq z3STGU4}6H_33(Bxp0Z*cfqf`Zw}j^g6~ol=V6@vA%pB#2W9E32_~r)YD$-Mi=e>Ix z4+6G~mR(Y5%z*y#W59}PK_Tyui4_Hni8(6n2U%rSlNjka60Q3G5E0y>e2no}N7&FY z+F~u|Iq*5+h@@?dS-wM(NC8LC!&R>M6Y?>M;m;Zsl_{NdpO_iYT;6O$YMA@aidAb>#K64#@Gp@hlAVM#8LidDc@Bph%Q_^ z{|d?xAKKdtn@TEWz0{XLV%Y6W{Qd7tJNBq8+saa(-#C>my|zqfUXK^#4;F>#EUPKK+bjdBCm1goT-c--N{JSvQMmJ-LS4K@(Rm-+S)$Cvp| z8=iLqS0(#tzN=IKU*_{u;hUsal&a%S4!+D+nK-`8_f#EOMMq07>`Dqa4;(-o=Yiu@ zhSV4Elaw#6%bzAaB;=aqI)Ran1lCo7o26g0dCKiCiuF`+TAboTJV_;sIDU^6YvYeP zjQ>i-(6jy~j@nAAENw3KX}2>dmP#DOJ|q6i7upezXP%1MBDvZBw44i%lH6P*J(Mp~ z*Igf8g%G9EqXRR3-I@|_QP8I>-@Ln7+sA5BA*rNte6h?7;Whyya} z$s{h$wAkuH@0jJfV}v?-=v5#3)#GHA7K5qv$}5&)p+6^pEIWn zuMl4{#dMma`f~rx`_lTuymn*Lt)31q*pc5=R37#HCgt}^`Djmr{2dCmTpKLoFxWvQ z|0q*LvX5fZeejjU2TazikTJy!wq)Ya ze}nkxd&Z&B#PLADI2Z5d@oX4mDwyjMcs%da(FgQ$#}o03ON@RdaXb*PiTIIZlk%Tb z;%>Q?ah}BT41j8|TdoY@T+;u!{4-pVI9j9<@u%z+Ba)vgs&05 zH`io%9C1`Ik@(-m?P(Tqw8#Q4PtAKGwy!c7UPlGcB0mvFiyS467CAxu;~$OvUo6+{ z^N(;rF6%pLmcJuNiMYz~Ils5z%?#80dbD-5Elw7a(4B zjLATC!~Z+bBdEZ*$#%jcjtX8RzH*f5R<999x9a2K(!I{UY^JdHU4p!UKAAYW)okME zR`ZE3FK620E6a5gJ%A>X`aL_S03QE2NE|c4IpS!7KZ&Es{F=C%1~Wl<;ky3&+jvN6 zB`Oeb#H6$lap*T8{?kKxX;=Me9m!r)_tE~NU0c946G4Q`4 zjuu)&94(Yd{F6Y_1GY7h(-s+J-OiE%TI4cuWImTTGGDZ*JM$R+;VSchEYg)pjL{ya zaz666i-fyB{qQi-GEj3WM3 zwCT4Ws;on@hJQg~y-F-Q6cN-9BX=t)Aj1cVqeadV$H>hkj)eKe%R%+SHG)#B#Jf8l z6si;VTs0YOP8|9P#2*YYBfA@Mw7_eI=QaHoD@~tBp#m7X9}-6k%pi^ym`%LOBon|Q z%XMvj52y);BMO(^Lb|#+x*nG1K-y1|0@9vC9K-gmgX>lMl%720UqEwrwlR(?G?%Md zsj_N6K?)d&oh;X0-!)y;Yw!&p`eVf4WHDGZ-G{<=4uf~plp_&gMKCQKm9l!p?{?Nl z*(=164NnVqbjV&9arBvrD)FeC&^+ry+?aTUEv5x~6NkCiRi>CrO(ijU+$iGDbT>V8 zCUJDQFNveWeNP-6?gzv3di39w&GE=qTR^wnEl1m(AwyU@a)@J2$R&>S7Jb2)c3G#< z9$_wl$Ad}XN#aOgUE+)0F$W)=i9`QY;>i~zV11l0iUcSymUzT+85{C%25~gmY~ug+ zG!CsMjwahGys0**CtH2EfHpfw1<+5Pq#ayfHr!tr8DOq589$E zaWq9W;+QDvsI>pd0$z{Am=`*#OfBwDV$2GYRE~%PK9|>Rd+*o&mh|r5j7A(c*Bx)E z5>Ch_<~1>};pvE=Sib~!ShyS-Y`N~j_Vr;p&7LO{Ou>LI@?-A^*>jRt-JOt&6(>$a z6jfi0h$u+%6%e1mcJ(Nu}%Z?@D=Z zNE1j8A^KH2jprG%iJAxaa?HXP8=7SMya^d zGI!4)F}(QJ2VYMdJ8!#*mnmx|nnRZBXnt`d$iJ;O%DflQpyDD%aDPHU1tG-OylX0W zxUF1IkOW7!A_W*sB>vJvW=eZaC7zK!GG5AG87|kH=jtEwOk8u)M_<`U9DU_y%XNgO z9T8pj6a+QVzZ^LFM7{$?ihX;c87 zFC$+1s5!>?PNkodfcKCX<}S5Yd(O#yV*wr9apH@@MTsNM^28Bmw2JygMpH8qH?F3e z(c@`D9Ok+ahq-rEnwSfjLSh8HNM(vRG}DLpKnHdC7r83*n-6(075=MSl&ad%9XqT? z6US5T@g3z>vtd!esU*jjy!#M`y}`s0{8-`$emZd+)_!SuY0Oo48g899rk{o@b%07P zAFD3^8WCLi`wY|Tez9`hDA(*Zv~Hfe9aaDHat~ecm)se_<)2E#@g|cf;&_uuUE+9? z$?KNu`VTn9_9(;iW-rXbpO7J>?sMWu-S(H{tZxfC(e)(ocPmn z?Zj?}6AyLDKNDfZ;Y0*+IPrqv>fF2X?b0Mtf)gWr@QEt!H`xW7X2sgaoem#2`zW@H zI2OBO#J4s!yL@Ll$1(}qn)}WhPh_MCl)X#lC3S*>DlUN&k>{#J7bB%txpWkOIy~1W|d6uEHj~Q&|Op# z77r1J#k0gKuQl%dZn^e&v%}+ZiSER}el^4MUUhS+pea>TC0~*T=E1O<-6n`S34g(k$9EjCfrow&wOk6 z9K-YS^V>`2z-OJx%#kJi0F{GZ=enrNIdXt@tBXCWD%{oWC=M$_iQ}-cmTGxf4hWlc zHAj(Q9Y_yHk^MxWt7ItPL#r9O(rW51V0(qP2`+S1Cojtr$0sgF6pj1d(Kl+n>UIq= zJVPAYBCS;16>+WSt2VU3q=(SP5JzY;Rk|*}Ldxp{Z(3ryeg5caPXN{9|s_aY%y^}woavqoqz+~Y-DFi50U*z9FY}LIl6p> z?l!WT-QAf*WY390107kC)eQO2YU;?AIwIJhQm*OK#%mJU*A8AN$!!^tl_rkJs;g|V z6Hq_NMwUQ&h^z~7MD~`7`%}tKkn-L(n?ZVrY?&x5dq*Bj+MA^AUXLhS&g$v7zHs;- zp|ZrD+Wn`*waCHW>XCn3sl*Z2G!^xi__d^mi7RFu=^?IN#1Yr&9%|BGGEV;y1Kz+2 zz2cKFBG^B$ zmr9UAkN0w$gi}$(;Z!4)F4p~D?xmJW=}^)_@<#NM8_2Zlv*m|&J#@R()b31oxO1zQ zs(B+KIIMbaX6s(ZL^nP6)?2nXcyve^erj4_ib@ug8cAiZw6_?*<~u{hJ>`Y zx3>e!=hZ6wBj;ujeexW#ACwW-P>&Bem@b~$Cwkg_CK?L4MCH^ZOjJJAz z->5YG_pkDIs(93`{OfK<5NTE7i1bO~FBLY&dG#&V4vuj+*jI($lKS3%-2@&zh03GT z%_EM$SF03VK1<5$E*F+fdWiE+QK+a>Tq@aSq;7Iv6OVLw)L#YOmL~q(in)oG5=Y=0 zh~KSdjz4#(WHA@;kFNGD`S@nB{`n^~+H#$s5e|2n^|!ORpo}ZselfUDi7?78scO4$RZaHTrm3Wynt>N*ERXJiVbfv@G z5Qn*Y15|}v*>?&a=uQkybt@9bS!PY*ILmCJQgUUZs3(chamT0(5yz&J7*;cg!)oS0 z8KSpq1V2u4Jf8Bq<+}Ooy>s5+YpA%p;?1*fxPyZ?FREk_#||Sgy!ntgyqWoid0HlH zB`F+SXolO5qA=i1Y5Y_2LqAR#dXY4-k(2v|s(DYA=cqSj29y%f&%c?!tG$WiNskdK z?Vd#V35gNmS1MD)p__b&54@=^OZDo|J^36eZgy_*R{k#ZB>r_vv$NU%la`TXQ$Hsu zJXlG5&H&Rd*IBNctgoX({zm$+bBFlCWxAx?&NRsD?I-6VOU6EKetSPc*xO;VwdEKy z8TO{|9)o0bzajJNT2erzdx@jqY2uA`np9l0T)WoO;Xrwn?iX1$zWdwxXSN@4oNNvy zUc-J>`hArv=3~Ec7EPsz7Af7SE6vPosAvj{15LM}6W@E4V#IrfIO@Mj9Q8k-S{9UW!iKt|ML2bc!(3D1FxPRYT^C-r z3c7_~GHvK><58mEeYwCyvVi#JslY;!Ws|-qG1_?(am0O)I2=7k9FG2F9rcsPaiqSG zh>f>n9%1_wUN|Bv(yR z_mBc^_BcSiMTD7V{w5Cno5V-GZ##{;1YN|jW3x3!z|YwtevBSO(%WaT(WSOeeiY_Dd54| zt)k$~{XtSdSGeYb-y)7{V}*vhbBqJ^5aJaIn91^C!_|TTQ6>FeR_TSMTMi^$_#$sG z5^>TjAL1{F?>%WUw9#^%wAPNK9U*;Gb7{C7lMRrggMbuwEKn#x9Lr=S;#ejhCyr&Z zp~@^0SvIDh6>I+z9R7`@VyJ#nimD(>T*PdWV})Ew_DcDA)V(5+K}E1e9!rtwNCIqe zl`No!0wYY|+M^d79+kHo$5YUc9w8H8f7#7$=0hRbVX(Qw;AkKEQ;1{9{f0P}+>M6k zefSY;?%olqe_&*A=xHj5CHCJDYPQHjN~GrB)X^#{P-enrB<|AOT*qxgyvP$KxNgLE z{cC2dcU4p|F*k+8$m7>O_y*#ye6L$Z?&4QzVlLpXRJn&-(%-G{d+sRe&ovWsdE!_n zB8g+2s7D+RYj;rL#btcHL*f#h%ZRxem0xBhY;#Rn3ypi60nc z%4vB$hx~DsSWa z633gPaxK@+Jmsi9ZnQT_)wYzJM6@%1+`p>|ZTXr?DJ4tAa1vucOd<|nW)sJNSV|lN zV#{dRe0^O;-f>buGR_f4GOiPc1C>8;H$9T^q)IL=Id4hg?~a>!r33N$Pnn$eCXQ-` z5J#Njh$GH|^^)-19xGFV4xkY! zAb>W+QE-&X2$K1Gos>V-PkPY-A9@!o*ACTiICR&Cevxr*NAVt-M^s#}%-_$D81Bg1 zL$tV;5Aj5mF5>13e2AA5M_=1a9DVKlICVEzX02S3!<$kns;qeP*m!p=5Z70UB2H@W zLp;z2A4(isE@O#rTVqDn@BQVcZEuhuF#!|!M%4T$fD9$I{PFa3M(B3D>w}9^r3%B3{Dn< z(Kmc36#CEvtUWC6FxXTjhe&&NvEu)%LMmO0C-@N0QCT7mUF}2szYo>jkjUVqKYhq+ zP0YU)o+6I(qIlx_5={9v6Xl7PK60cxmK2chkBFmLXA@s+KWMSYa-A)^?IXYB19YSh z``Ly^-e2)h!5>uM#%;3%{3Ram6_2AIPRl<9wTO?};dQ`MN2P?x$Yo0z-pr+ivYmep40Z5WmO zdV}us9?xh|m|Uh>Q1p0Gfa%YP`^_;^bB4;UAXCCt62orRWL2z=Y$;l?uB@0$N6oyI z$`k7?}qV_EO0pwLfA6Q<@&Q3+2=KEfZCIsK?r(m8(6kz@I$hlo?FPj!2X+G-O=suL{N z=Il*<-Zp)W^kL_H;%J7chUabjp&h=V0x-0eIND(caqM{=BR=RA6Z{#=bpQndRHxoi zg~KX->`np_`RK=XbVQK?oQfyj^HXy&-bQ6rmbUIqV%UAd+6|d(6|^%CIL60UDyoW% zkFyT3zoYH`CA)B^;52s}XtYWyP0Xo5RUG4^E$O0RdJspuj3SOYClbe!ID`0x7(JTh zxx)EYpkwwpg4#y~P{A?cX!!HQ(eO8kH$SQ?l7FA*!lYbpi1_R^~^DZp|sYuWDul~_$ygSl2u z2YbtrrlX&#N!8@i=M}O82ksC@zYSILi zk?E+Dh>u%l_#EQ5^`nsTZ?WY%fPef|;a*XN{ZA>iw7MkY29-hG{?pyfhzD;f5r_U` z#L->q5HDcga@xRf_1vS8CF7Gx2}TDKhtbi*pUyEITTV|OmDAI;B!;;y#9?kf@vdFX zZrriy>h7a*{#NKScP?PB1aa7_K>XG|W3QS@d`!+)+mRUN5{YAq=}R0_%y8nBXPIM& z(Vxj-YEL;|-AoFoXdm&r8Kzes{Y+J;A-gvPXXGDm8RDVsj9&Q}a(pKhroKQ5sIWb8 zBr1t`$ES_KewOQ2z3doqpOHT7FE%{yPWG}h%%rqT1xCo>MYfM}e-NKk!<{<+}b$ zj{2+2%s(-a#1UUz!}E@aAA7+xQKOl%-Se89kqxAhh-d`y=D(RGeT>SLfMQpX7{xXd z|FNyf!%nGhnbenhixf~WV3s>FL{O4=*>=W{5X*IjE;=&Ql=NZ0z2SK+baR_Al&Eqd zrG-B9QSLM1xtV5Bm}j}J|GcCA{iKijj}u3H7Y)yAp~08TSiL$+E~rSx{K~0}C^>+w zmF`Xu3^!KUA`a-BZZ7YKy+(R?|8aj&(Ct$MJw$xWkH~R@vfJ47phoXNc1$a_$zB}^o&Y79Cn97co zcCSie*sVEVCbV+Zf>W(rC+Mi7*;I z&xx0MCn)J6DZrfv7PzB7dP4^y8#k8gzYaUvy$b20qR0id-J7e#C*&lzFX^Gaw}>Om z4~S1}Wcr_c1Xaw1Z6PtL-EFH)+D{6oFNb*eCDU)NTdw0f-Y{h;=4}z zsOauORZQ=;rOW7$x`izJP*u=y=gC!dznt741ukFG3nME4l+ z#kGwe(JHR4%;1Aa4EM(pKUdULJK1vW{%(i++ejbo?^$emLCir?Kt)%GKho12g#WWx z-K{G-B*ngP#|y({zc7YVpRfwrqg~<=R_69p5EXVIjzkS4eksay#~}{;I~@_PGd%CY z5-Qk3hSpX#5gitfTUD(Y9QtMc5e0o|2MjB~@RL+9{C#uuUEgw@fgc?nwkLh0u8Xb6 zZ@9{+Cj({{>7l;Qi6c|r5nuJOsdR%1j1zPIU%BIhxgg^6zBS`4+;Z*yc8B{dRkE0C z(SwS?+$iF>X1{(Kfl#D^RwmJKa1p-oa>T4D!Ohf@+++p>q|aj zm*k(1dc=|51mf@BF?s5sGR0i%7%SH9Y<8q8or)o>%}eB5s+*k69`m74_-o^zHn`DY z@L|hw?2lV?Vu|Cvh3AOlzJ*r}S6jNt9jjlej0Q5PZX{heyZ>u-vVm->TqHT_xJev! zJeXnbC~r|N!<}qA_!Moq4)O;_kj+RRj`SCUT_tM)AIJ}VD|*-@(!`mZ5(Ry(8nT!a za4xq|G&d25+my?-@IF0T7fnCURM%3*Lb>EkA>1H^F?)`exN{&TV(S6`ktdR92>)wdj@ z2M%^8jzHy8L(j=x!ekPo*g};h;?Q+I#QT=3yW&mi1t0Rl-?-C`E>(dzs*5K+FWrRJ z#&X>pOC8bnHvEFQW;V{DUk`eIhP!^eHqFB69!-HD^VfyAF2ZZ3WdSt<9}N`0w|Na5Tw=CE-Yaa6RK z_~+jk{hgNU4ztM7Va|{~><6s!2B_M0jVc)%YW}$2sZd#j<=Uuyl2m?qJdIY_xw-`v z#9ZA@6ufhF4^qHfouYDNSFZUq5~Jd|#BrPbM&h{5e%~sU&`j>8KSOd)J+Hr>+pE+F zk*glfB1=?3B^ADPw=pVd_^mkKMcSq#DWG5v;wU(VIJ{HDKU-+p>V0f< zo;2o26NP6F6~Lj`Da&;`Y5h_9hy1%r`qu-^5pv+7#vR=2EQZ@gPSea9?y1oe2nyA|5wBFP8v`_f$!XnjtVM# zCr7Q?<0nV~7M~>!gWZV3;JcPBG(n!}BhH!O&*7_&@nEM_f$$lT5(H+r-gCW!JewLY0paM~zRfGf7EGunIbc zsg4+4qk=e8=uaGvV2vP-N3fJsG(aMXSxO4^zpB}<^Nf^A9V@xR_Rahe#jxPaFQvH?L!sDa zcVl8osID?Q$oyKL#PH)~AAAt;l#}L6dbkSjD4SL*NDOnkiAR5AygFpL4tKaC+`?Pj zUc=5K#N+x)LHQSHxLVm!9*XR4m9)`!9Y#M@+1kepveB@%(OFF#&no^%9838{;&@oF zz*ghCu6~H4`tpY79c|zp=ud8yCnq{Z1*z9xa;!c{4l{!tX5JNT?+)fDtAH&joE1+L z1@Bq$EKZc_nO3E zuO9I?2OIt8cgT^+%km^;XI8KVhZBdv3Bb@ldx^zutSj&69~2g?!1D`W_~kIL*UcdEVdqb%Z*pXfP0 z^i~jm;%BpwwpN8FO8N6rzLk{sE2Ub>-${@C7!xx5Qk%@iNmpyJG}ws-MWaDsiu;Hi!!_Occ7`|It85^ zDd^=x|HIv~JE1+A??Yibaa^)Ev0E*DRW8>3MRH8+{#p4u_;8jiUmfKolh2X@3XZc} zN6^6$!A2=~>SE2{?mo($CytaB*kc^g_S!k@Rka*5JL>PXM^56!!I;lU0mnk?9R^=? z7`(AZ-R&kTVc_2UBd@HYy30kLr+tVMRH7EY=0hys77=mM6d&SsKKNGRSicSsKi}Rs zeSEJRFG%#=9@^)Q;-fZZZYxE+=>RkNmL-n#S0$cN&-Cahm69a!JWpa&(~>x<=|ddV zyhHqp;+S{h3~%H;-F)7WrFK*R4!ueo6%19$z2u&Rk4TJ1vu7MM zk7lPXBn8<0hB%&rK13Y)*~F3XKZuX_Gl}}ka24A-vSdKmAvr&3FLwdQ9CD`-?$#3p z?}xIRkOHc2OC0VFCJy~n;&3;Oc!|AcXn$gODQ~+pbhJyR3hyI%K1Ai<_(?c^krd#_ zb>eWm+|TYzK>uOlaJ&}r;X};aR>yF4u8-uo>(6p%qVqhMwBhc1qTtQ*1X4itia6X| zOC0)Jh{N6e#9ypy+&yNv$#XqNp8Zr-U)h`}cR2sFR3+YOjG3&SAdYd?SVi@VEL*w* ziDi;j#rs7D^~J3G7Aas>evde2Wo5bUHFX{CFC~5CXWd~nyJlptfA(Q@xu4wqaF6uh zN0B4$xZy`x;_xF%wR~N=j=G~p@sdZa`(dO21M-qOsXnQh4{)6P73g2sVK~8Cj)L9DZs*BYoWz4QhkOBdO$xCl4f+|L+mRkIY5AjzjMZ_&Okr-!W`-sD8HgUXy z(Eo(Jsj{^E&~G2?_Q(l$D0ute6U6cM!N$bp?Ss-(9#4DXco|_|mHd`WX%k3{0QR3y zv)_sgZc!lHn9=S2h@;)hTaHsv?0-ZO$NopXY&of!D0iK{Knl3wvX6=yBsaKy>8P)= zqrQz)3<>>N>|S|MHoPwRP`K+bSjk~9L}f~SA&;MQrx|viRXJKb)`$2L75=syV5gsy zBM_-QW|t4WW5jD*G^d_tPO1@a%ZYcfQ~6h4No9!r)P^K3o@I{j^@W}lM_+j~D7K1K;E@?a91$i+!M$x{f9^F>z!vNvgLDyvv)Nn3Lt3a>Z}7IYYVQwn<1HjD})ZKFlOd&zGaDIjebDsH$eXIn`O z&yM}7`VW^AlB+)CMeJ(H5mhA~TFP|0D3vAErFOAmoppalJX0Oq&%sxaIb5CCN*uG& zFT}BzpKG{EN|C3m%Up1GHN^bb1<6^fsNixw3aC zo}W~fn2Y^~#4uOjcei)78k+$e_`947B*+2LGo*lm@x-s#XPeuo#P=j!Z%g^TQa*Je z=^OZUyA$shB+9j_lK-EI^s7; z0R<-#_b+BrH%+CyFA;B)@&k1F3#5lfYW^XPM{0_yY$+cfdCA=pNJxF+NJtmr7}W2m zxRG)%|0EJ4iW$Ulf8ke_>(uHuCE@42k#b4?B9%isULy{-19IHqT(nP86eW&u z;&Wu~mh^Rdl@w6Xo5WFYByo(}sl<_=B`R%{%(v~1K5u}WHW(a7bO$1|A_(M}13)hbc4Ht+rf;{);32EYgSl zD~7AKE#({K1+V5GTv^Mty|WIZy;QCQ5i-_Cu_Y>Mj4b_|eTWZURb9r&k$?GXrdDnE zq{Diw<-GJayC&=03o|pwLvD^kOG?WRpN>ElW_wr*Ipfy|GcLwlYfg;;&_?ac9R%qD%Z#yUR_w~ z@4T?|x$gVMnx~F~#|d9i$y_~XO8j6almA|ZtG~v}h2Au)1RooiIz02KFs9cn4z8V; zW}W!a!L<```WSIswf^03HEM!PuO+UVTH!>3*-h{~Y&pg%oQNTg-9~wT*91vy2NI*$ zFyd&x(Zn&EP9-Y_G@j$2pz=}Rj!DW`jZ%4bOdpPKHX8kE9U!i)azq^4g2XsRc!fBQ5&Hcjli#u$!OcmI-Nb2@>&W&w z!dpW6aAUXF8zA8YoRc5kGto<=i8ImbqToFfEpXEv5za&_sK7}Q@Dn6PP0dxDh{L-1 z5Px*jYy`(I^P#Ylc*OI@jRThJV0Swr_E%X_Uwq|%-QJ?vqKU)JB+Ip>oepy|Rn%nZ zZYz8gTTgs!Wiw?TahUtjVeT^NqxxI_%Esz|h@j}gx7>bruWzP;Fyi=*iu5P(FSP}U zVYe6Y;m??Jh%v;WKaKd{iKhBlmg`WqJL1`Cc*Oma6c{>6hIY&}6`#JPmVP9+pFDWm z#Hnpx{f5Tz8MozLljgD& z{tYR>gSEurLGEp}XNt^!W$w6J8ku`cD#+F~8jWBdkgs_bWbQx$X|@9ev_O(nqFx z<;oFjyu3?dgb#(u4ud~946Y`9ocL}hjuYQgx$5M{a%<-eUEuJe~`r4?BMohn=GLyjjURa6a9^q^Z0Sc*mkXmg?g*@9{kB;Ck`AS<&b}ZaEw} zWc8mV{aTmJEZoM$TY5aWAES#);PK#ojDEy%KgM|C60y4XNo3GN+ukrP$d}?il?FTh zUp=ophxm8)s?BxFbwH~f9ki;-5OX2*JZ28!$?!#$t;KJV7#otaRG^ZLm6asMRPY0F z^qyVB(RS&s2qz^mk#BmJ0#PGZu+e-}8&FS&1 z^e?CyG?NA743&h%E5wI>WtLER>3PCuG8pQ~A&$r^6aQd?DKFo$pCP^XB@!d-o+??y0sS8+sFpRAyMjMe z>GF4Kh7a{!#KY|y{7+b}<5(pBX`pj1|E`ffP7wSH81JB;Zqz-c4bN-8V;`9gQnNro zl`0OVHnt^sl)mbN_b1+}gK5{nmTM0d>i^h(3rQb|T5ovXqa5omnhlKYDrctNNq5+r z@38koL3cYM0|^BSs){<}V^qsoQa+vZQ12SzD8EO_Uuh!!@sUFA3Q#bLI6BHR#Gef@ z{qZ@=wePbX0rXRW>C%BlQZZDcRGf&LFZCfl=7XOl4)3lOQnS-#xZNyNP)(Nb{3@v| zu^(UO!Th6q(Fac^{>sZHq_oIBkmR}oWHxZRmvRk=XERA zu6*S1XOxd(iwhT21H_+h>wPF3^TGcn{@`!si0qE#x^8&W* zboe*iavtmRipX3n{-u8JL*bwgeunsD`%uJhmg~AFI2^2-!?rguvkIWYHLJLK)C$S=l1Gvspc7+(7#a39X*`tMErI$vpRIw=EPaQ z2`YVo4ETAZhw|H1mKJCG5c{cIEiP9)|Jq|!)I#Yk&yyJU@U$iV*`p@bH;T*D|D5cW zjUxqkwU9V2=B-khQeWyXBu23ZOXTlnN#Zc~G;!E@&2rtGBOGly-0-|J6BJNn2q*P( ziKEl3A`Uy5#IdVz%EgO%JbxcInY>U!o%~!5SMRzMyf=P{?;cN~lJ1Paf!4&~z{|w3 zs`VmX{TEaJ0K?T=i{yTobW(!RCB)yf-)dP|QhK^{1ONY(RC^Z57v29PMHmP!<&Hvb z0#m0JMFu^DyS|=KQH$ju@P$$Zy*GJ9x2FO)iReKbClT+dG$|jVNQ_&&GE}CBZiIb*r*L4zILC`yHYp+`+=cT{k)9dS6>qqIaP_lU*}A_Z)uOtD;7HONul z{?cmc7xLP=i&PHj%`L4?iaexD8Mi}_Kc)h|lu_4^#4&brGM+e!wI`0~lXT%|DJu z%F22x)ki;13aGa=ag4j(D*0=1HBS?&-jwKFrpAfII z*qk}0tH5P)3b>2JFn5SJ#?3Y2U#3X%<=?*{s{bVeiLFvz&TFMYzZNRv8<{h@lOF1QM`dgABp>1hDsY7?_-lQL4-?0p)D@|H zfYjciV7L#rE!PQ8aE#{|ANozhWe-sdCUxks~ zoLV7&$BPoj2NolUBfm|EzZ+y`y#&j3)y*CCqh7UjrF?I7JC%mjGsOR_YOMa|u-eRF z_0fv?N7IOSwY}zgLUY4a+g0+Z(RZzqw%5dAbP5%QbD6|(DfVzhwRDv{Etx}dl>4`$ zIeiRysFK@ToJoeLz;9*lY))d7Z%Z75vK#T14NS87sAMr0Fr|{5Z`PN-`UUC1Zl>ir z^hS>O5BbplO$=5PgR!26-EqKRNz1jZh7N;|J}iAtzu`Zc3gQ-px}xB{MWHz<;1-1> zm9|<&^SdNQ#gkR07BBK4UZ-+I9D2Zq_`<`g!gq48ebr~+PIu;Tm6BjD0`rqqVe8@|yWGS9nqe}j%{TyhXRkdgTcL2 zLBw%~QB}k97Bg&p)_+9SmU?nN(4I=dgMOB4XJZ^5kMyBGne=0H4&>il((m_)F}Bul zwV+;9$!_~e2~OPc!3$J%rvYOpn0QV597_e2u~w#uR#jz5lc434B3u4Wnoa7ccBc=1 zkT_`Y1%dbXI($iK!=Pc6E3caWx3=Sl| z@EbEvzEAvmIkSY0mx_w(jI2>nKgiJCM|!Y(+XsKBx;wB``vRkqDoxDAK5fO?^GE+r z*OkD>bp79C#=a!hU?vM{mt+u$J!7j{6H3(*iM5uJsa9jpplU0L{i0z|MbSi+ph#L( zMG66$oqzgHs$+F|~8XvoapOdfF#=}=rY-z7Ld1pcf zR?v9aNA)_`X-(>s4+#BrK;SOv=Z95(zUX;q813Z2%$cqt>UD|mfPS_b2^g%Mjn%*QYT2Kqf${crOz{H*b{#ETAx zSc?M~(hJ0Uqd@(Nw!CvLPi8eWUQS6bwi5A!9GWa&)E%esGHklW%foB2#>>O&I~!K6 zF`X*_+;e|ebIQ3t1q02!<+^5&bN`=>CH#h~%`)}!j#RdWI~xCnJrJIc+?_pu+-5{R za-7D?0nE_&dwynSI~Z8LiY)t^W|${F)On0eK8Qz)lJ(!-tySZDwd7YU?+BhYR{>>* zy~i#iojJO`n8u-6yqv~QU~q5YDVjk}<8q~dNhz>Z^ULv_MZy5AV5j@}7(5#o$AtTi zS?HYpR1~~^OawJRhmDZ1Z9azHO2QnT%l+>s`S@obVLB3;S5oFnb$l$EQO->Y>9obt zHG`a+^9@+qA#AZMO_y^~fIT>bEoKdQ`O7f%)(sYy6vw{N=8(8ZWox z7aDImz}rdWyz$T^uk^px0=gID1$Juu+?o8EG(7|lx0q1Rs;uOZzzQXsH#AoG1@k-- zSk|d8YOJv6{8){b7bDX&UcPp}MB@wm#$QWWDR|nj&pkX?vqnKhO{W^N<45puz}H%k zT&{wldDlr6FRSs^q13hqE;@t$z#-c~lV!U1HD0Fcukmeb@r&4DY#!1%muj+1=hAq& z?3*=SF8fZ6m&^XE#>-XD;Joo>d%5iQw1D^iaF5>ONhpgris|ebW-RwpNcF^7B2Mu7 z8c)~wohA8Gp1JJ%qj*{RCry^)Kcw*^7V>F3A$Y3#n0My>_eB`=^1wJXSN+TT`MfdC@aV_$Th{M5^6%ArvaRclS;BElN9`tW&)=5qLwKdmLZVxjof*dF58IDSn9;ij%#qX+CWVp8C6~G|)F6|0hTo ziG%}Y=3`i!55HOC<6ww@+~)$HD11jeKzNfJEqI`urJX9i+GUSkJ`N$76eo`fVRaU449uXVj#X7$hdHa=R>j<94{TKc=5o2$r`TJMk z+o6-j4;6f0jh83?&pFR;6?yQ6YrMR}^miIB?=YRL@iNa| zji1+;KW-i1JbQv32VK-mve-?Hm&H8nZ=Vn^jjvpQ`+V$pk{yEI$+guCvdbW@Yt_bX`AG(%!NKJ{~0$#ZyyaRxpY8mfLz^T~!@3!YZ(1gn28&{|wR z+3egBkEMw9oX%DvSBI}#zI`%M^WhI@{DqnPLiH$ngLEN}giMu>D*L5ytGs38LvZa@ zcqm0Xomy%JITVNBDd7<%;S9|$pC5dUgqaO+8rY^8GvdlojaM^fY(`6r?%k<{~gkJdBd*r8ZWP8?kGHc+VEYm6&@=*ecG_X?|h~Tw4?v);{I~@j{-gv z0VUl6=hXmz_U2Mxg*rA(?pmHtlwISSv|!1X0)x%C(qoyIFw^qVZn9>SS9WtWUS8Ry zXuMq7T^cX1Xb)=qn`HMTjLG9T+jki!`5aA``3j5QbI7NQGGBR(XHWQm{g~esr0b%| zGF?xNm+1y;{QN>x(8FUSn~Zek`S0PE74>n--k|y9gTz*im#6G>jhCnFKLt;x2l?F* zRPUkYmwnf6@7^EA+b*ThhztKaWe?iGFAeSOajl7t>yOe5GH{m0yR7`=JfE%1#PjWg znk>UIG+s{NWsUFAmR|<_-Ja!S;^ly{9o~K_sG{+w*775^w%}=kQfX$yAKXFhDz40j zX<@Rxd2Al!LF@97)AQjEX}lcOIgP(3KGSxk1FpB~;T8Fk9p65z;Ewz{seV(RpIC9h+$W_99C zQjQ<+SA2fhV>@dB+4G9~Khv{LEcQB9D!6lAcR^8lu;As9C`*2-@dJkQmmnsvW5{m) zwKJ~fFjdYAnok}&H#A-zI*&D89y*1(82u&FoQOYBg4g>S!Fl6TO2x&g;!`&724=^V zPaNK_580Bb$;X@X1MFoN_V5PonSJI49%_4C{ zWy2-f`(os@7>K86e>;W{PZt$h5?kuZ`HdUegaMi+1KGgSqR zm)9VbHNN0fz5!}?#kFI4t?~l~Y6khz>8Bbm5B>QXFQ;fjKKu^0?-m}?j%ulO>8i=Hz1|ux(+$=5v6c85IM`)M=h9@EZllJ_bg3HO zHl2?yjkUOkboVt`rhBIGGM)K@ypyv{+zq%mTZwd)nrO02_Z~Y2*&O)+E?$Cg3!6## z_*Un`f2Z;L_wX~}L5+6}!rzZ zc%#?@$Q`HWBd6!XAJTX^$>(~qhzIx#{*|7%fWdUtFY#gCc4b|Q#?KOuKvmiI572H` zO_pKN>@sBYM<3!!k@@=(0vK9|{QR8KSM2&y%4}RpPXuS0Qo`?U~!$ZC(aUzdk-2Uz_ zjh7c+w=`Z}d=>1ScZL#1@t;eweOZ|BYMLy|_tkjWZ+t%dOpW(A#Ge7I(Ri6>6X%Ty zKO=4~d?25IfAZmT^Wls1$vbX&cvsKEJMpAgylOork6=vrSNZVYI;U(BSq^ndeiq8U#WfpZS{D2wGhE~4b@8WB{CzOaX_`U4&b?6Mxq?y{GYQV)&)-6C{kJ0auBB`+#j4pFWX4LN{VT&#(c9 zXtL}hR^w$KlQjNDeSRS@oy|i!=Qd52=`Lve*1K5d4g6k*s68$8iYfOl%0*!c$smA#-I1&15FS-bsVpByhroP{HHi?oV%s)JfDDq z{qqj}#UB21b&Z#Kn&-n0$it5^&e4uM0zT?rjPLRJ8ZQeh*LXQY8#G>g8>2@`f4rTJ zru?#IkO^;TyiE91;{&q!)2!EmrzxMLOnIFFd1p%I58=G=im5EnN(*=~n-}OX0I%_) zc*?*%U8QV}16c+=eh?BNT1^0m>xw|CZ3<7HzJ8vp$u9`De2 z+0SH+7q?mUSjqX3|9g~@0o%0z$sf&!KdbSw(Hj~cG#j_5e2HHs$b{aabNLV>1N}69 z*F3(EEi_){`5+%YTI0ndi__y1O{hJJwu^_y5}g+p468I=KIHtQ@v@;`HC_(vq?;GN zwxM6o>}jof;c=%h-xCEt$~#q(FRJm~%>2QozQ*4v%p%_4{1QEj=V_zqa!DdIzT6Ky zUw4fU5Z?jVU*lz-SdAB3q=CmcO(>VjmtwZY7pTk&FJS$0aDAGp$t%C*6PCv2L3Uo$ zI^S?tuCTgrDYFvyL z=%VrR-Ap4iUe4nV;#3!eI+z`Nr8gG)5Otn{tM%RDsKw0 zZ0j`VjbCLYh*#ilxcjRAM2nMsnMdTE7ui=y*2RS3gbGvc;JxD{v-@?62-mvJq~DrTg7>y$j5xp za#Y2{r~(8pFHYpBY#P7rqPxpZ9(GMAScfN$)cEJG`F4)c_{~lEa2+4BXwM*@`c6%k ztCXnma^TBZP=TNdmS2P{$8*ujSLr;`7QkIHZfoH+zvb<`(c&^KJg(fxyqltARsMik zP2*1;<#`%v{Ly##R1jcH7_emy}TL4SH zekKoOnqgxD-s%R8Pa92>gEy54UQShDMLy)qnm=kfKW{wHc(Ec*k2ji-Qkgg8C0-Jg zd#G3^{+eZg#!r623)Iv2FIw?SfmRyd_$D7%H#c9>c%cbX#R3Wim47E;KcDr{TI9>Y zeCSh0;TN$z@g2YmG=tntU$bL{aLgYQvYevr75Eh0)WT$^Pc?qH_)3fdv3YlqEaN43 z%1@`fjr_saqdw>R{O?gHToi7vC6WbtX}oM`n8wS(pR#?0gDMRCQpj?A=P{Y|CrJxq z;%zTmG+wU6UX3@Ea7aA1!w@{@zf&6JEu#_##0*m5MpuK5ymN z_eHQgewsXB17F@C!OLMqdh=nuuknAC;`~r8&)7@6>^RMDDb4-MIL{x7spEHquuBUF z6#QYWK)F?X{8u!;t2{4|qwyOB-{TYB7#|p3)vqlU>|-IwLrpH&M2(*^jvqQ-X}p~H zuk#e}@Q4-pe`Z0&FyVh{VY19W8ZY<7bB&kBUxm?cU)L&vr}5G8;K8?%M_bObUyB8m zcJ|eRWfLE3{MXa@Sf^|J#LGPE8jW95hHt*KeE6%JH!gi;z!NP%o_$Jwns=0P^g$Xg z56VXD`{J17mYQsu%{NO|jo);HpX7!JUhej*oc5Tc`Q<##(|A)LZ*v3Zjpu-Jq7G;Q za@^PQ;mx1r9k=xRXuO;!TOJ;}T255AJc5UZoT$Enm)m3*UpSA!nqSV`=Nd0(ZZ!)k zi3#7S$#SB8*LZpGT-A6vPj56{j@vTk?eo!`^Z$QCMQQ=G2EKH@x}snS7b^jp5S>zDLkb+FqR+sBQ^e# zxYf%fjenEF51e@lPx%{&b{BHqSis2>X-{}~tW^T2@acW{2YvF@uQQ_ffx4xeXv z_NGiwg#p#Z<((91Z!CCuSpLq}!Xq*tf3(IQY{v7BV#iRX(o`+ory|`lcNdj5XwkBZ zR33dqiXKO{{ZBxHhw2HN;Am7 zi5mZN59DoxOQGVfwm(i((Y!C8VzjgZ`K%{zWJzt%Y* zc$yPBJnxBlxv2S%@=xD+Jka>RU-P5j#ZNm2Pkj5%*7zD0zBG#kFNf1k3}>_Ee{p~xXZtk1srXvNL!4)ee1l4d zWN9WjCa*8@j#XaC*ZcxE6xtPBen7Zpkc-hfAAX?5%QsJr(fEf>-u)!j#Sa^C3+iR< z3@&f|RrASu*)U|*z^S_A^t>HQLv4+paDx}X7we%wrQw<^!WwsLKDmD7@?StsWj*;xp^U--wr1A5_{axE?{6fJGnuYUZYH)ea zM7FXDemk*C^T}V=pPt2zSHU^!uBOZUuQXofx6J1K(-hHbobriVD;880*U`O%ESF6F zvUHfn%U_mGo{cwJ(2{@0<{{pE4nOBs!{f?>*(|MUkdL{{96Ydrs2?&X@5IT~Yp3zP z`?xQH`MraL6A|yC_(aWDpeR3^F4cJNV1C+M!6qX<;`#F_)N`O7 zzJ}y7;%is_>g{a@YW#?qe$|3@`c(_IEjHUrdoXV+Zh6)ZAk%``m{^*{*2HXV1QAKZ z!P0CM2+ITUaxX21`mkQS3_DH%t;=|@#7amt2*3tlO>n=;iBB#fLcK280z+;^7>+0g z^}6OZ3>jo7RF=;WWl*n+s+IL%E;4jf4C-~&Conk3uvjsuSBkq~NT~qB1;wCV&jyt9 zU;!|g8v~^KU?RGeV-dA6&=DYPAk0euGRgz|2;d@c62Jjq%_?U!u0ACxS>A)$VX%aX z7rkj@>QkT-<(XF<%(l0WkwAS?7vjUhN$;!Z{khfsuhWOcLT4pr*@~2<Id1#z|F?l`R?OC$ZNqQ|=x{?E&b>>+e(8S(iWil3tB zjVfUX&oGwv0c-%Kag|s^AX-=f!uu(RJ(XBI2y3>IVuq5Uf(5-k4lHjC7rz*#8nYBb zGz>Nv%##3e{{>h@Az1*w0@xp-$TbTK4?@*k5GfBpykljtM1)&0HTPj143JJ>8bAzy zX|0tVhlNGWwH0CO?gf@I{{zW>4;~L+9FTVbDgihNGyn)7&+#RMd|>48{~y^)phgRw6q2q4+932NHoZ09h9RUIL^8nEb1;hz2NQuV$1vpp+S0jm1N^ zURCsiie9KX%Adz{)xe97^oK@v$c^|v?^S14sK5wCKceV!sxz+;6xgEZM-}~d6v#b? zmj4ED0ho%{V6lj>w5Y*tRPlro@mUSF3c7hg4IHu*@MjHnoQOvtvd(}gRg0~bQ)t?tr)};SGVnCO%~k{2?J|k@Tbt*K!8XB^8f+}`~r}55-Xlr%P4Y1 zDN?OAwgeeItZf*sDu#x2(8UR)>H=T~FpaOnB0@3n<#mjRn@Ys)IxHT#^-o2=rRa~5 zDC;;%mcm<0=?~4^Z8zfogx1A=g~8k%AO^rRr7rUd!$?e zyMh|#Yam<)KzPP84OkB8PZV9f?|11C7TgqiNQjYNzQRpR&kz<(`awlk zZ?1kVge5>X=Z0W5($TPALzYGXjT;&X)%(GBZ^#}}!03k9hiMqCfMynbZx>`QHIaO#VplSzfj}1 zChRzL>wk)_enm)lQyh@H(9<9Q2Z31tb^_}Gya^ltNZAQ+9l%MzqZy7d0@VNl2y_I< zN(C4LkWOGZKq7!8OU=!?;H9BhDb6zRSfF4993_D=6-~sjkt2Ba_W~Wje)@igJrE^=&UrgzXc1&mp@tl zR`du(FA&aRp_{9QWAe74>DB<5KL88@NC7a-3TMa3vH?US5x<4A91zy4;l@PtRB{%y z<1D%rDf|I)QxMU}&Z1l58g0@>T%(Oi!8O_}NZydlYXDM`;W=z)Y4BM85zj#=q58#m zgLjKERR5BZiZ5-70MH6 z0N?~L^=!qiz+xHK$|$3L1>~|;%&Rq0{DgqSO^7@XU?Y$Xkoz4{lxxjmVX-!7ZKP1Y zMYC&b4E{Tu6!CxNMnoDiLFpv7LhY@gAlY zz?9aWMYP3qU2born69Mwqyvj5eL)99SHIyowF66rZf(%f&}S*}ksUD%d{wk%m|~ct z7-n^3Uhg8odPSeB=!cNNz8VQ`DTV~aPz`tNp#;&Lj1J~2dVDAB3>U_n1P}>eO6$aq zQ^ZXrVzCn8-x-Us3K4dIL;@oLVgRgjIvYinDIuF+u#xi+K*mZGxz(8^w8Pwcc0vCj z%ryYK0W9si7&%rcIR@cgIu!8*jFCx5v8fC5e-C{gQUca00ncH~`WhK4h^O_Wty2um zB3L{Un0rTHwO1hHPZ2Dch_fKdGM6L8JCR0Ho0JsqMKZ7Uh!_=#reHM9jbz~< ztQ(YoWF_Di7-N(;JDAE`>(BQQjg z;ih8Pr5HAJ!^AH}s>=Wl0{Gn=%Up!9O?cnPDPDDV6YJk+X&o?>1B#xeq`Zy4|v^MdEerQCTQ6gG=h$g;5MB!eTegczwgPDctKhfI=Ij@A=>CK`$ zBjt_0hJHcOt3;uR8A#AS$}n6~3{#?58YTEi(XS}_c_fHI0`m(18-b91SidikGNPZ6 z^12cd+mA(b!Rc;$kAxC@Xu6&9};7E6|@r4}j z6uJFb8b$aGz#f^5h!y~e1O@@b0EA2(U=;H-aZLYytMDd;{}q85laS#)fP+BkftVZs zOV~gomG~kwH!)x!OYVvV_)^h}C@H@|g2;(DI(|_M#T3IG7}6)8f@6?Tp`>D1F^GkC zLxtUn?ycy54nou8(d#n+JAmo&V73YomT^OjjOCPwr9;?p%J_q#`zZR!A=vq2(Q}q! z5WlW;XDs;KkL4*b6v@Uw2?R(7uyh@2v{hLt z8#|OeM1(a_(Z#3Y+yOr#fei_)rximrCBYLIT%Vy->0wwt0u2D1p8{+Jh$L_hAb>!L z;pl5LKx=?R0L#?jMqhzS+Wo_sR}V~Q=@Et=tmyqmuyE2-6uq9J=Zs*nq<8t)h;N|i zNguOS(5?3ry`iEv9f?UEg-#Oy90YCxcoS$k3e!FkU_L-3fc4fWqexRF$?#Yt8G%vW zi8Tz(6@$sa5OrGc=H7;E(0U&+8=bVQ@4or+`cr77<2og#6OB*gi^vZo?W4gmB(XsU^KS|$n1j!9X#Gh8LLE0 zg&~CuD-^>gieVQF0c1F*7(P`DPhm*xjam&RV4Vqk2w(%SOqyU6jZ;E4Okg>EFwQ>| zeVn4-LW0Z>QPX>(kzj&i2%3nl$MSm}zU4d@SiO25ghLJ6FVq{$bo&m%Vs5u4m4q$nAiqXS-CC8vCEVdtNOjGoQ zioS9RTSfX=MPIDwFQ%~Lq*t730RZ@h{#zAXG zifDio0MjJAjQ|mrq}fKq&q~DJ+3X=@ysqf`6}{9P?C@|5J9v(f;DBNn41=Qu44V|g zLB((Y25&N4R}6;~L&dMK7|md4@Rd>Gh+^mpLvB+TW+;ZEieWVjb~2F)T@L3t+9DXoOr>Lgv7b83gAJfD{1JUx_SY2#P#bB5o-W#ph$a0 z$fAd$YA%ef>PTI25o!Qf>n}1=icfgBiHKGqhM|aJXuO0aBY`<~2_~;H zQm+PZ1)zyrN<;}I!nzdWgu&bdAk&|gbSVoTjvTWI5}VJw!2D-2d&5VM!DRYWvg zjuX8VM33d{I0%blxzU!7QY2wH%b|cH2*|C3V&N+=VgeHZTm+T_H~=g=#TyG~?7m8l z^D9`w2-J9`=>Cds{hFmgw>JCQ=%KQrM}3WEE27fp0097|WnVM@kI~fu5HS^?+yt-@ zD3F9ceE_NgxCpcWa1fXXUCDF*H{UTVSxkU^$`~!WF}97fTz3ffikDRA{N_ z+gG!P(9IWCV`jY3^b3GU0zPZ7Bmky{Ygj}qEImLZdO>jj*a$2D$S4W06~F~xIlIOv z(@`libS=Ar9G2N@4ZX9Xzg)|_9MGG8W9Siz{_Z*!4&9o(&d|Fm`q6dhq!>DR2;c%R zmHC#fqKJmy8WBB|h<@K9qA(&>1Gore0(b*hbCr-@N{HWjOidv;!vV4iqDcSsEcz2n zO*{x25w7(tfrtYjGR?5|+<+HyQdcMGx8Ju_O~CiBR+rivAh&NEBMM3BBajEpOfqkWSzf zKq7$Y(IyuDDVnOY8ABtY{bm+R#77_;Ik0{WU{KG=C=r*E*%gYgq+qFEAR-LF4q)k#V$?`bB0f!F;h!U7A&e={5wQ~> z62SUQiCCyal--K9$ypyDD;smwZ7VyD9M-t4MvbLP#C8~MFj`J2hGmN3(N-25hbBt> zfVQ6@btr%x!1~z_M#>~5VgU@^_iVEtE#Sg%Bs`Vj~FW26lJ(MY*bF?9ZsB~!|gFxp`>F968= z7b!E8h%HLQQy82uSjucSQYI^gdfQp}IHc^l9h3hEDL)5D1hD?7L~K(c&ck4X!IG^Q zwkw8mJJ@kb*>DGDKMN^)1K6|b`dD@tJ?v5f_Cn8mh>RB$!%vFg#SRud9vLg9VlTmH zZUK<>0AM0OI)G_;DoZ2FE)W^_povXl8wzyi14X>@f!(Fg3r z0^dWXNdW100oDP;09bxiLJlb*S9Y>wq_h;;Wu!c!=+$>g~c>mUa0VF^S`1rZ6t>;eb?u%z!XX5y;S$<00N zAw^W(iz&T^6s`6$|H)X5sJ%wOO(kGDjP|QYy%r!d6A}COvUo(8%j`oJMAX~Il0jG^ z_8BSeDk)<3vG|t36-@9aUV;DQKIRpV1Xa>7QX=eWEF6TjUz(BNk&<9CjIPVn1AraC zbTy5wq7?Pg(bOdn5$WtWr5KrRq{voM%!M%$M)MBmvCz$1ktpL3N@f8#04&~zjEv=! zhaQ^L`h!IfF&Tsn zgn27K#(vD@$v=!fYAJoxIEo@LnBN1i6POC%4PbE{H9`WFko2R>YdVU&f-&V6RPA(( zg@dq;J!S;dQv!w^$6Ei4CT1Kr3=I^+9vCvxQTsfAi-2ba+5)f!WEde~N=Pplyvg}F zKxP`cSf0UxzeHO*K{$yxo57-qcmg78ABd_aSOO9APhfUHnD+qW?nRYXCyXjBl`58# zXafdwQvf@FY3NDjKLca^@}v>bR*BdPW8@x0TmT3lkOPqQ6F~J-IDQFq2Z$lC6~G2y zI(>>=K~{6o(-{A55dBUwubJ3Bb59#(B9t;gXIMCNYnL;I-c`|`oWYEyViC)pH4N`7 zhQ?>vDoW5>(R(QRgtO>+J9=CJkVxPcfEWPlB_*Vn67mWL*N-q*#Cw?OakP(OXnYPE zW*bsX0B{o62oL~ZDfp++X0#I0>`#_93lr1(Pt4R0n3zR>vWFn7Ta|!;O2BCtGqxi2 z697Ab>gTaj2($snOhJwT=UM!0Ozyn%M$utPj?L#;GIaA{1Y{*6()<^y6Q~A|@jXCq z02hHt01g1tn!i~190ctLk+KEK-vCYm<_p*o1gZdJZ3g%lAf3QkfJ6Z6p$kSUaY`$9 zV93}6XNij_NT3dYoxm6XZvfMZi!AypRNez3@;fM300IcS21wrs(C!lI09Z#}GU`lG z>db>7V?$jZ6aIH?K*VtXJAsOqQ3k-&;xdbvi!#w5BG*Hi3J^fR1(5zNz#V`@0IT;E zqs$zoOuZ{8vkuPg04@Tf0qg|!0C)qKu3cf_^H9f>i8|jvsSXf8pbbF!T7Y=~i2&9g zGmScnl{#l&$XEmCa{w2C@>fxZKn#F4fa%MtEI0vm)`NdpOE0D*r1(p>=cuVKp* z_z=KGAPyjR6)GoPGb*oED({2A4uknBfH#30fRvR0?XP1)0GML0vxr1gP6Uyj1Z5jQ zB7qYCHUgF#sPi@Iw7g-|*`(AN0D~O{^K<}j0&4+MR^V8=uY@EkA*F7z@cAekb`#@- z(bVH6izQ+lh{WX}7Tsj4h}aDxcNvI3Z?fY={0G88gwNkBhlu8X<5*%K`uxp;7l4Qd z5lO`IzgaX9=^)aVqOUsuHUhvV=!bb z!r&e$h69SB_CG9QA&%*e{}}UiP|+R#uz2X^d;ehG7NTU)+bFpJ85`d=B915#3vaV4 zlyR$~A64|Tx0%->ym|W$MwLjT0&ox*17HU*Exf~G7op}h5Sa;3jse)_p=Q;4M$I!y z&i41%af+CG4-+#NDc0X(IYj&n!ub`53-?&?Vh~S3WX%ELb)Q8OQR_bTDiN*kvjifd zKxE8D)v*8$0;>V+0H$B=vxl%)Zr(TAxURHedcgdbAVuc~*eSCRFyaA=AR+-o;!F_V zJz()5tQilC47ZgG|H2sgB^GpKmSMQ77#3!s-RUrFQ4IGL!$BA_zChR402~C0Jwp2c zmb#COoR5@{h(|1TDViFo=#LdW6$vt?pl0#MMuMk`q5fkmloO>o12_qM4iE`oS*nD* zP(pS;X2A?K|5Wr>ieBXjQcgn6q^Cwrao+5#mvh zWBRw_GxiWQEyEPur0Cn8G5=*)t&>QUIUcK3F`GqzuzZ|tBrK!^%*|%;(5?Fwy@;aU z%*L@i4uh!s+(;nq7VReDpQB|mFvUARfR*zy**y z24(lXV$my5_VO#Etglk`KNuY_S}Of#82lAOqyJbMC5TpZai4H^z|7Y;ranX8n_n9V zswxQzyg|F4qNl0=F$7uy*a$=ey{%igf~uQ6MxATmIh&j2_GJO;26D3ya#2!OR? zj!`F2sWS|Qlus~{M8y!S7&hgw@FWyD4`Yl2Ro}^Fu^=qna*d1)lz_Ngwu%Clkx2E3oCL~xda{g<0m1-W1bP5uA&L1@00%LP00LHlNe0Lq0p<*VlfW~8 zNCK5iV93)1AbmKP-T;XJ)^R4I+m6Zrm%?Bp=U#w}VYt9Ddophq+7B}u5fMs6FBt4( za4CkaieVoNSs$V1bH(t!VrW$WrG}v9AOIJE1;kL!9}5^odnzH9V8|Q{=Q98&0k49X z4*+XT@jbZ|*hdLz2}9x_IC}%w2uvYnHKu13fMXz-y#VRNcost10bu+AA_+7H2q4gh zz#4eQ0%Y|EvxGcgth);t-F~E${tE^tg**qaQAqj1o-8*8-L@-igp5!^2E&j^A&UT9 zaGHMra1gi(U?-46U@bh>B3L70ngBS!So;+*(tfI>oeYDE3|}jTF^XX~3<1$-?3`kV zQw&dGNbiSQ6^ml_2s8$WAf45f=1 zhAE1{Rt#fADr;xOFikOxfFY$XY9#(E%?;#j*rV5$S8fU$Nc zZq%Klq#X`JCK+ZbhPjI2TNrYCqp|&pAwe-*g~0`bxj+f54uNU_b^@&dyb1INaD9u$ zCIe*l0`oOM1{iC438S&4O4>{qa>?*UF)ULI){+?GhiI&ENh8Aw#n2OmL>SBy0AdKN z0I(6*1(4el;2c2udNlR~AcL6FUPueZ8Y(_ONy*nLX+MA=U;_-FDTZ~5VF3)8AE2>h z#jsv69EHINgZU9aB!N=i$Vng=Agc#JXMjvpF%JhwCuSyq_eRv+>}`xUSxNf`40agI zcK~v`BcwnntOzmH09?e_2@n$lU?*k*KnA5UYRl z86c}0a)txM5HlDck(g-&z*rxZHmam4Ny?W&t6kx231BDS1jwQgm-t*N1@2cu_QBwc z#5`YC3n8VYE5wJ=m5`?}WOafwpd6;1KpOxXfHk(9 z(fLs&WG)Qen=#l;02v(-atOdd;1)>)3YW)W*a1nJlsA%`Qj!dWApi#ROn|KR09ybu zD6OXt8X%@JK<;}0?*e2H7(vn&Owke_Bkctx?QR%iU@-p);B1GG;uWyv2-E`zAn*Y| zIwe_I!ANpdNsk zqKZ_)G7(cBAd{Fr0J*Ked;#DBu&$|O^!89GoeqPYoHqcx379QN(h?y-79-@b64D+9 zCk*Cc009J60;JmkjsYYRcnlB&V69*^lDtrow6iS}?U@%7l1Q2ilWHm>~awWu6$bDJm{%02qHWPfY z$RO|~fQ!H;00)6%05RLp>OCciuacxh6_g`GL=~fozhd|dhIBG4Pz;q7LkbL8A?Wjr zVyLPZ23Ezq{fMDW0kFYo-UyJ<03k=J8bxa;Az3gu5n?U*j$x>!80x-*iKPr36hj@w zFcgMNDmon?r9O(fC}caBg8%`<+ybx@Q=l4#P!CKsfOG<_0TKxe0I&gACsi{#X{Z!h z1%t~5!vn<-rWh(!$1+isVl}V_f|0WhKmdTXeGMaLQzhgh7-E88n5h_=D~63QxB`*t z41j~cV*opVwNyF14bBMwi3D5#F$DGjWV{2A3t-!YBz|>`Bz=@5 zZR#R~3dx06w(X8P9gCCwmk?*QbNQXiQQH9!w|D4$j5~LoxX@DR1b?x5!LD$MZ_&$-4PvO zNQc2ZjDQs(2>@9XvPB6IH^g*@oPr@>FAR?qgSdmE+fb%HR*4J^>l;PI?GfFEo-jDc zFh((md+)goOJGQW!Mq#5+k&qC0?4G0mrBT7Wwy#SK>rnSpf_${6irYJ!(gyifZ@1e zn6DU2A!yqNhRPvEhJ}iu6%4L@=qd&vraZcu3Xoe4U>!haS%62xz+<&GG?FY+k~C?E z*(2wN0O@4_J_m?NL&zc}BuNR`1B0tHoEHEb1ac@AA?D_xn8{LLVgRzd0j2?@6Icxp zkdCxzp++a`l(d&%u)%44r5M&LhOjW~P%jvIgc%t&DuyvIILNS7F>F!{$6@d$!$ZZe zMKRQAg#Jsy(7usTB3UsEgCT$n>lDLQ#c%+I#1b%ER}9+}L)FHZy`M1;(T$A~+ZDqU z7&3}u##WM(z#f2HgqU9fWEKNcp$YmV5DJi06rdMC%rEf70i+YN6d;k9QvkU|z&s|2 zm{Ltqf|zaq4g&K4QVIjy0tna-PoZYme#BHG0LD6`nbGh;rQtO&I4R^6fU6)vEX|RP zn8pAOV#Wh_6W9TeSpeWNF~1^hPIDveaV70LEpULqU_J(rYeL9900)KC3O7PdDIp!g z(Eu6J6~h_D@HY&Ro>(2T-N1Plz2XKnR z&o=ywo6E4=+&bm0Ra+Vrt|%E=!jJ)jc^H6$zzhI8g{)ITt}7vzVF>sQMRNgCau8x^ zg>itfHg089xut~kg~3UNc*SsAF(ko|`x-^hDu%m?;Ry_OGL&s?l(?@L>bFJ@|H05r zF+5ZZ4j8gt!7xuTJW>p&U~n8nlP?v+W5r-;gU#{+8CtY4dU&cB`oiEOgHthND~1&? zq(6t@uwrn%D?s|cVEzNJ0a*RtGYS6F2Ad*0Z4%qX^X>I^uy9eedKrS)=kaQP}sUxH#VEh2QiD?ZGL(Ecu zlsjPV0wfX>-U-7YW+6cOZ8Wp9lQEpiN;9Wmu>S+YbHz|qF?8yTq_dHsnqpW2 zL)PCgoL3Ar6hk%)iDY=Ei;+QmJ*azKT6Mu-Z=%~2fD8g>05bo;B04v zXMlj?V7>rwUIw!UAd)~jNdzvFM4tZuVlIL4?T)D+rUiiGBA6I}Ofc4|-Hjo1R)*k$ zA>aa>2LTfQ0(b^s&p?t=Jun1ff&m=FbOy*c4`u{_3yd|Thmp32lGgJBv~&*6Kmf;C zfR6#}0M^70jF4VRNGc4@GjRS1kaZd$7a-;Y>Q?EAPKap(kVwoRfQ(aMmIBxTtf@VX zwEdN|*I>v(h_%p%hGC#$sPiEikg6jo-bBoDy;XhFl7{4iHHph5FE$1fT{$?qPs-02u(* zp?!?HlawSgVX%{P1AsSyg8=ELk@h}7${{et`qC<6bmRIONv0`DR>F|@JDi6AVh9wD zLQ7{5QZvd3nW2Qd3xn$*oI?N{1Qr6=32X)MCU6oU6G_bf0yuvIQ@kIfvta52WE}t# z31A0f-Pg}3G+!xn9fpiw;Vc=AiUc|nppcQ#M#y3%WDX3O`{CRKkV4>304IR;nG&*0 z2`L+c^*x8iLI84qMo2e+7-B{P*ojF5NF*i&ARrygEr4`lYV?Pc2Bs}Q41pm4x%&WS z0%QPKzwK{yyG|*+9|k))?*Ihs1^99RCT9;qwhu5uHYy=!V959h&RhT&ff@rbTT#ekJ4t47oob=QG7{KrvW8!q8waw*$!B3NRSJc>y_B zeq^+9NC`=UAq56=CO~2eLUJjVLIQ>wAxD*vrbAKXA`E>M!*Rth35Lw?(PxrkIH4H! z!r(v#^F@I4EhuUphGinAIzZ+oFz*3m5HkcIg%~G5E-}ji0*Lt$z;+4DUjT{Ufq4!P z17NK<+-UxiQaWrnoD}jsK*|P$WB>#Z$RcSyfcFS21bIFLuzw3?4M4zU4Ef#&BkfHk zt=Gp`O&H9x0CLwNO#)2QAW;3iXjGulvPOe6@Zh#cK|NRd0h#4s)U$hu@Eqrs}M*+NH2g~ zVwM5eiTMSkAmwW?1s#|%0BaqG(TVu7YWHK@AQ%!6Vx6HFa+JE?!H`Zl&jYxY zBj+;!2LZoNP?x~F0Nw-!0c0)%hzD>2SXX^w)GbuRUDEx}E;3w2-G3BA5yen!G=>0! zxfVdiQsj&T$RuVIfP=m6c(Rh9NQ$6SYh+h_B;zPgE)lSqU(lQ4H0T3{PRO!C)@)Iog;95CY)5 zfyTN6coQ=oAcYu4(p)gR0WyiX2$1*{m_l(d-$bib;*3^pN}=X3IOd>}0g9o%V)%*- zl;ON$2vH2#FgRzUmd{v>nm|K<41}1w0Hn{VQ+{WOI9t~up66M=cv}UF{Dx?c;(X`O zodW3Z_6jT^-sWSG-|pQ~(=#nB4SFT{Md?#Cy%>9d^p)hd-T$n~MVOxxa+*J{D!=Jc zR^P?i9KY zo18^@WlHq`1&;}#EEncChfw(;YFw2yvO-I-%FQSr(bp!ixUA3`Z0lEGR)Z;eUu5vc z_i%?*W|tp^Rxtf1T)tVM6+H{F&$B{nvM9o(3EPYMiW>oy;Z-j|DjF=f>YVd^1g^W_ zYH}`$xCw$gz`3MHp_MSo)JGU)cs!qlaFOC)w-oj-q)9?5%O@!5UoLfo`9PwxcZ{^C+@Uy zPmp$7Ug;8-vPrrrq>p%?QBQf)Q%D`>^JW5h!b>DAV%d;9<5=jk(3bcq?iq}0g|Q*e zap@VlK9`sC%?_eIqRb9kVUKA|PzRC(M&3s?NRYTnG!&fv!Tx-GE_{=4N^Bl)^yu{+q5>jcg_^;f3 zg}p*w%Y_sqqFy1>LBZ8#E!H;1;)A0#Ap0XB*+t?1V7D#KyMKs#H!pXIxW0Kg-`C(q z=jEb^n<+SP+$0gVTySEaU3$%D_BC2Ml2?j)3m?FypACE#jAp1-mIYxes#TtGtva4d649 zl#B8xn~Qoa^GHj4!=Nk)3kxsWKd+GF7E&Qh5khD7rZi^W&ohiV4D*C^R7mAT9Y{s5 z3(kjgmxz0jm-96tg%=Aoh1rW%X1vvQB83Tcm#|b*Sa`9IgtXes(%#@??Q3>xVPA1VHJw@6l9PnP5z}U8~&oxg(PRGfLn?y0O@BVYB-%n3!phfL1K|M zuOgnSS&M>UjX}i~gnM;To~gZ55Q!MehE(EbAvMGU6!RR9FJRgGqF@o$w@_H6qE9#S zFmaAeDuh|Fh+9vL679lAsS2UWEFsn9QdD8L6jwMb+_e2WmRdN>?zxO*{|@& zpB0=qB%+ABEjZD4QZaY-)M7|cZcE<6#d+c4kQxf9ne+v{gtU?9FhB@JJVsIyOC{;9kh+R-m2yjAr64s;;S(jK zBrc_rG)G9o#W}Myk17r6sgN3pagnr=rIHl5l_wOB3ch9BQdk*C9fcIiTKLnr%3#Qd zB58_{oT9_BJgO|DTp`JmVOd0#VLQr(we(!YvdPil2VSxP4~{B_y)jsDxLlztr6l6U z2(Ag|E|o(Oq$r0J$wI;-JK3Yk!~V12g2jZEciU6T!~Rf6;*{s>=U+ z{b`UsXm=G$C8@cPs`Dbg6?jwyNCSl=w-=XENtz)fS*s$Cst9R)UMY!7sU#f~Qg6mL zWhJ!XVqujaRsNB8ctcE0B_wpQRFcfw<>I~h9FGrv7DTOPVHQYLg(T1N7DTOPsU)?| zEBRX8QkWIeKp{0{Zzj=fSltOzNlMb9=)nQCd?D=>(m>H6mr_ac-@!W+3+3yFg{mhw zu~1Qd?o4rhIDbX&VBRm~g~KH-WRtLJ2MhDZiETBD^GDkAB85De`y*|kR9-4fELQ;1 zu3=#Tus0Xd5z!!*QX%0o_*noRY4Gt3_aAw_s*Hreg4-yfD!UV=Rz|{eLK0ipw+f`S zEUXHoBH|VmI6`mJ6js3$u4Snt^%9cUD(uUJREJBKxRg!O z0U-tR)}r1))Hf{d9X$9w7E&Wm{=j&NYuTjL`H7G6u8C_=)p%Srq%60OYm0cwOC+sl z*(7ZglDNc+st#!bi>nUlmXMl?C@y7_R5^_&6r+u*K}(;POCqkN;OdAJHQd>=Yaqo4 zAz8#QYr;NVaN?|xRMTxwtqJ?S|7Ci!h0f8nF!dW)SS?7mg=FKIl4|iNNS+nhvsySg zZDe7!VeFO8yOze)-`~0D+_CYIqE8; z0+>H*6I?PjK;K(gDzu_K{@`Kqj2?opA6Qrjq%lJJl=qXwrBsq`2}wSBG~`hYA(c4F z6N-Z-sUa@Q+6k__JZ!l?oBUD7xIaRyL?}{iV{xGv;ih9OH54P<#{POsD? zHOIy~A~4{qlWG^SU2|RmJ3wQR^7O*D>Nt^5bsTQ;8_MJ5!t;_W$eZ%maO>-anqJxZN!wgWlC)4UNvYraInVpt@9&d; zuFvy&wmEa=%$YOioT<58bE;}uJ}o08P)CqdP#Yq)UO^kRYJ&>4bi0Z1H?xK+?jpEY zQ@j``$wrZ&S4|9*`!~^NJlkGd%lx)5+xEHU)5)|fi+qaOBA?exEXe!9A=|z4+QDj# z@!J6nBI;)*mz9B#cCcDwVnOSOVxGSCYSkWjgxs$}nn!tBjD)>zVz5lZM1#FZvkpLS z7{3G1E~2hHWr|`!4T{yu_0c=3RY#yHM6IFO@lrfn^)l*U5N>o>q2|8O(VP~MjM7#?o zic+9b^-Pm4xLv+!!Y)u;^0j8uRi6=xyWn)ZX;MMI5xKk7rEm|cOM%+%R4bR1qEyf{ zBKE9;u4>g4XeH6bns1^g6_gUyFq3=BU8ftax60pWko`P)-Qa1xiMv6)>@Gz-uU>bH z{O&+KiQ4hx33|)Kf*vMnY9_BhYm#>vj`c0$Uk3Cckx#43)JjkpZf{YZr~Go9l*-w% zKxAiA*37i5E0+Ug68Lhs7(_ITF0QcN{VRaB5V7(^SHRP5%3SAI)l*SFb+;ZkZ`?r- z>nZGkOQa)F2X_M!w!x%enY+JJvy=7kf-4c_5z4BV$=^x7SNfH5Ui!|&SK@B;wn?vq z*~e6=p?L>A;qh$~_5?aeWd+$)^#xi#iy=Ba7|thkmF_@0+k6&@`f!4Af7p1g#@-fdY%d0I2l= zb;zPl0u*%*%AQhBUIElM8@~YRM~GZQRDcdnyRH2_w#h^m>R4N;-;u7%ZB<6jH3jL043wXoW1VnLr14c3b}Z=hNY z1Zs6CE9+>WS_zs&HwdvlGX5Z-K196TL_nEI zl(EG~M0P)A6<9Ra<9sclteSgjfDnGe>*04J*`=&R*CWx7Oe(1SADWHpfeyAP91Jvr z=n7g5M&!>a>&M7Lthzr0>K7hXPpos%5U6*gjOvN1r=q@ysDpY6hQiawCL9X1mx#B_ zL{TcJDtF`Hc)6#ux@z6t%g4w#t#wkUKJ^d1#KcaOW#Q3-GIXT z*!VX9{X)d&!3Zc*hue2xX!JDPT8dRY74;rOt~nfm_@9_?1kjjllqgCC-A^=yrE#NL z-3V0fFD+L(OcbSp8fK$lq*{#xx;z^tic&$Nhzw)h1gmW(ya}l6-zBl^@cB(BhHWMl zRF8gtt_ z9gcx|1Ipak;TU-T)Wl<;9uT?nf3rpY&FC9XIBLS1al3;ier6t~rt8IzRn4(L>xt@X z5k-n(K|c{)Xj=X#4NM`5=u_ht0#*Ma;}H17f3u1$5m{Brc!T%GL)Io+FA!M| z%6gfWzavHwWKwA35q>FA9W5E}79_ph__qLUA!7eDx&@vNQHJ5#s_;|{8ProzuXT)0 zm0%w%m|#7H6L2YCZB|V{zX6K)mARXWe0>~Dgx|+0V-F`1+4Gd4ha>%qL}c$#=4!(v zO?ML9?j<^f=Xes-4`<5~$V!zphbGx%{K>EyTuQTc9k|J8dM8o#8~PB#eB3G_l;okG zJF>Lu-*_DR9#fFPXC|BimT=RKllV?75%z^ih3z{*?HanFzgxk+G~untp$a!*;ES0= z&{rk}%I!$BliitMDp+E|sW7WkPF=c@DnZ326*P#*_5E+ND7+0GR}#5Lu|!!4mKn*N z3Rv%gX(+;}lyRst64`Rf_+BuX2KQf^bQ)Y7B&x~A=yr?3+kq-_Q-dao5=E(?ONnr= zvCr$%aS`;VEaLf`Zau}*p?-v@w<7Nji~Ku)F0Y`4!bTuc6bqU_#2cD714n}05$t8f zoPrse?hLdp>noUe23nV$CdJQ8&C^wLq6y3l!+;G&kQr+ zc&G7aLLD0=*qEpDYMhCKZ9s+Qjq1&rwo&b^}X~Q z^)UxNj&PR-*FwyJk6doU;7UzoXHa&hX6W4u7vCEHUbt9D#2H1Apxq`GREAqEv}dK9 zYmq+}?OzvDI2TP06!9w)QqdLfeX4jL&_hJ7_9}`6tt&zL0`z{I%I}PSKhQoRHza>Q z9O6k(P%ZAvzlal!Ue@QWOiS%#9t~d45Q(9zyffmZ&w`$w*lYmcfn;_QF}f5;idV-uM`(%T%wf zsEIjRPKKonN@uT$fpU8j^>8)fVVLbT{=+a^T0_nF&NdRX&%}bt*HnZ{thw|H9>G;w zn=(Ga1dpJyw4lt@h)2}LBXIFJ(GWAar(AvWk<>op&j%`7%jK(uGaptznpjXPBKMs1 zD1!8+Y=$0r@TgS}AI0G%M4fPWz2s&EeYi@&O4T+^BGkK|Oc=p&`?EA=7j=?EaPpH$ z1SI>je+=qFiE3z z9xsA=BW{3zE}fm>@PrNGKY_E=ljt8;y`O;D0TT=Bah@L09qd|oi@|<3{$jZNypgiW zS`d+-KTRyC_l1gFbMhq65#v7zk0H@TWjXAsEC$Q0xJb>$sz+}L%t{%52~eFDismtx zpd1qmdX1=oUT1kv;m~r7{}dXHeJxD*6dDa^;%Daamg*aytKqrE#+6t z=~UW;%V08x*xdxgWC3OD8Fvrr-$ulQqGzDKmonT=?R?K?P?^$*6 zEY8dlqFawKYn$MzEqWFOi30%3oYh84j>qOb2eV_1{~XX&L>xbi6vcvO6BY7&E?2AN zXa-7|!sTcNjx{lUWjbH1?$PGSWtsOpA|Ge`=Ydubx!ce4@Nt}p1tmndI-Zij*B8|4 z1)%b6)nQ-LvbH>3D2fG*AmU^}??vm-e-UUt5vy&aC>Hc85%2Zh3Y70pl<^b=kmdZ{ z)`Tli6@uWF)~;Biukddozf`5}XPD(cILTAG$Gp@<4r zS`@AX`jM!rIobeida39d7BJY+4$iqpn60+qC`TX> zW2LX+S~*DcxO)bA&9d+{OzU$ClN+OB@c*Xuef64OrBtp-p^~$?lkwM}mYiV1HAwHo z&YC%&(vvlCc7jO-`9u{phv0Q&-jy;8Zk!;M`*pukZa~>k_nh~-`gk45Zs5vcB-?5a zF6@G}s5>W{a4nJ@+Fe8cH`%pFwwy_!lEI2!+r@D+2H!vm&r{}}jYal4W%c#^CvPBw zQ%(8?TZ3Ht%s}Tl;Ik+H`nzzuU#l>rDYn4-b~6k+LNqD$kR-^9w#fl!uW6DWSwTh zw-9AFH7l5wYvdYz3&#RYL0EHaONs**!3OIj+yGRyhawJKBpVR317(cqy=~R~x1oMB z5pVpFqFB(=L@Y3GBRsuE8HOxdNcloms)7kOqQDLl?Qmo4%2Ke*_MV#5U{wFwcbVgS85>St2aY zq{7-1l&~pfG3ldVGm5gR2{(ha?O($F`L`*$wZf{IR9O3KN?5Dg!3sVAt8T&%aOfQe zD0|Pmz7l7rSWpd<0_B#wR*{cOv#MO0TPzE=;1=1@tlENGWG$28SMH?iN;GXD1s@{m z+9v!EY{j5#mIyn`q{8-Iuk3tRfLp=pm~bmtt3Av>w~>u1r3K-32E66m0DnWo6vK32S6h zu*`;=m9c*iYzMl~gxi63XQM<>D(Kj;*;b#a)n`Dpvr(cb1;TsHCZFT%!~N$_EO$$m zkK}XsXlhbH4T;9^M15gV_yy1+q6hd2;R_T2tOWTJ)FHZ6cIfC!pnMa42{eERjrCtr zT@|H*ru+}tIksOR7OcJkiilV?iJ}xJ=d}sOPoVMvRWQo394%*2Vq?aFI!@GdIBw__ z!*Mg?7XwWv`bdv2QWOj7HA$^pQ@8_7;SkE;DHolg0?0}=H{lMbFD9a=WCwyYH>sd- zvU+k)ZeIgkWWuk3))TR3oqUZT+bQEKB5$Wv_jf|Q!W8v%3e(*Q^;(qOsZ-gCA%pi+ z)Rz(QQ9bwup77A}jo+$txm(d0Iojkblc+F-Fw^%|b$>C>_Aa=8l(I$~3)y9T#JiyW z0TDar-nSO{-vZ@KRZs2~{w+L}qii&9;i{gB`fWt6C%Ib_-3_#m$d%A;cv?xB>o0!? z*&fO`8W(&A7cEWr9bDwyrpcgFK3AU0p$?P+VW6tX9=vnwOAXgI-(!vAJusd?)L6^J z``#k|d!XgnC{h#)+C}6l&t7DBkg{6l=ppH3LnaySMH-dNs=c@#kraMq{Arr6D~%uY zP<{aFnT--fsh}}LAM)hwQ>%SIZEshHtbmE2RwflRhsX__|7cP8BhU^aH)%#tYm*A9 zI$a%N`peC@*b08ap|m#PPe84Sc;*wJOgGB#>P>oRc|Tiq|7WN#AYws9K$#aP<5OAk zvj!IRFNsF*Ab){+$2(jyI7LrmRj+FIQU(yeg|4c#Kkm;qEyh? zcdOMCEYX9oYG=ZOxLa)@I^ynD%2Ke*rhC-vcbXl7SqH2;gxQ)oim>2EdtAy=u*}wb zl?|d<3bT$TOo1BDRpd@tih}M)Sta(>|A4GNW$vxxAL`-{xVV#u4-<)~&!=pWM)VF_ zb^kEbTimA+FJsdt=n@kPx|_)Lp8vGS{}bqy|5z!C1(m&D9l8ebh*}*1YDH8@(}<2B zwceDW>n0D(clAP*1Ez!C&yy$%KCaeNOa+dP)?ff>u1JR@WO_jSK#U!_FrB z8>sR;hxF05Yt{ zlDeWS6?X0;%06*DqJLr6)r9|o9rLKNlJ2>%ZYBlGl!}z00m5+dyn?2cOLd|^U zM>Pf2EYghJ%f8YUg{6Vo6S+o9&}CTe2Q-q%_3VzdC_ENuPBuyur9ipMiB5Kx~ZL{SQahruRgo3_r>Sy&RqE~zSuq*_tNmMkf29j0aB z@ChP5hX)yrl>y3qTs^tzK7x9fR8ViC{j7qy7KOP$9TuroPxdbaU1?H5^NC#N-~@}p z6M#M(P={!dY&Z7Arj;^PDC3B3bfWbXp9uB#M6S&^$s+$GpfN=5)sv!F z(6dBi^nkpRVbv4s{D7)1*7&Sak)l{oC!&YU>oafz&N~Gs8&;<@ZB=^5V(fw;YnnD6 z#Y)}i6zeYr$?SMC%b!;csJHRU0hL{ng(5|nqUFYX}CzCiJzG=OS7DK6;!hV zP(T2Ux1oD<;TPcbKbtH0DmDH*d zP*P&m@-2B*sf5DmYhpoVp2Y_64F;B(>X@FYpr)GD1X`Gl5=E(? zb=fGWrB=0oc4nhQQ7Y(|m$DD6Hmt5SVQrx5L@#I>iK0}{RwAstkQXKeXCZl5odr~R zr8;D#PR@eEfhGkqjn8UY&jfX>AglwyN)aR~NFm5Mu+sQ-o3=X6Uj-+o#>{4?vC*sB zv~uoX5#nFQbwlf_YZzok#maWG$m#)IXTo|wJy$E@14&X3^21|_%)1cmW~|r)+xAWgYqd!B zhPV)iQ)psg=e}3MbnZ@L*o`-SW8^S>v$Bgche*%_6AM~L#5(6SvB+-%w3CQqN0Fjf zP}L9A;Rme5KCC7h-$x!l5mo1<5-E$pGADkhX1AN8^_$f&Rhu@gRBDp(n*z-x(r&nk zn!@8`6AN0Njl6t|{CuFzM0k&pCo@;_(WL)I*}1wjt2iHJG#Tsnpk8&W#&@&9npsa_ zGoUs^?#-5>RM7AeE4!||pt*GzHb6Aoh!40yOVssUl(pqqZfQNmEumif zV-4cwE3~r6Zw2%)ky{8L=vEU8+DL@yDYm!P+9JO-P@PZIAtve6)>WT4_Ha18qr~#3COLZ~OR1;nd)RSm1S5{mMhf_@|=vAVt zS)gszsx8oIpK2`k+@UBHG>OO!CbUzlc0fCcy6I?eaXXDA=)CRf@G5;w2-?HyHWRi7 znoiV+PY{YyK`{~Px=buD=m3YX>HxHj2>pIL?MG26DCaYcbvI*m)L0#X<`B6#u!5$U zRM0C#JR89!I2-R%=BA`wV%6hIp#DRadg=OIuru8sO-|4JRU&UWO$Mtw;mSS96m~*O zIL*YJ&=L+bhxC`<8GhD(smbz%UDO#N?l7^SdS5BxMd)=wMqMa#)mdZ#Wtc3mRvt7V z6Bk|JVgeD%*1Obt_b&x{mWV^V(WUUTjxtOyk;yIN0SS9Aot1bP0y zjzFR;1FRl{YPOaKa0&L}UIeWh3?cL|0n%_)4f(*`uD^?984P`8|Q!6S2}q zJ&}BG%IGOk^;Fb15H-=Q)(U!|rrl%0UMS@wMD9cU~K%{3`lX6et$_`W9SgM)fG zTNa7z9m+U#ko19z`>}=(E>a?{-4Cv|D7+e|;Vdj@@?^??YaJb?g^FeRqi`J2xW|gk9$ZS2GVPa@)dC{dIO zT13Rc4z5wFYk;;A`Nr;VQ+y4MbJOAmA{lI{HV|%qC%Ra#KJPk< z{Of=k|E7my`3`p@~~V8P45T z((H-sL&}&;Gz`gnLm76o8Uov5$YfKsVQ^b9)rd?c7>;C&35Vl|uQIEKqxFR%er2{( z(an&$0e*j=%*7JfUzE94`UW_}wrn@RMZ-U`V~wyV904?%=vLi5sCWc2gq5HJL@w}+ z2vYj6dUAn9b~AZoZ+qY!Jp2}c1vNrc)Za|4P;!5CJ8Y9GmtH5##+QdVBK zlqnjGv)h?6caWpu{ZW&ShKnggcx&EID#I9ff7FCyfZiZtwNA#Um7rFCY2Zq_46op3 z1nET?4ty)hq)22#DdT}BHzUCblrb4^EZpK9##p$0o`|IoDT)OhAYw9Jp;{FJjrv=Y z!6rJg=(wm5hfriW02@-UJOi0qB^2UD@bk(*!ugc4&gmBSKCaq-mIl_-!b2O3T{OiA=a%xV~E_t z%&pd8DriBr!(b}V<5L z!aM`HRRz=3Y8ue9|FKe(0_AMReE!>^vV$t@7eu$idXb3*omg7aaYa8JMPHRN*NvEN z)x+sf@0zWihM1L}CZBDBA@XQn6>w2{coSDFc{B_^B+RKBcQ z;gne`MX8{HMBJ4#xJ#|>0=kb#i>mZX4`W;PQvT^V4`aVK;p@mbo)FAZ(^){j5N%*U zMX8__8O?>Gk-^=t!b_sNfd=L(Vq=lqjS?-S438?Zk~eQQF4j9KpoDCOi zh@I|R;P7da3R+53&Db&Df;q5y+Jtj}HW9Jj zCUewEP?ZzaA!}Z6FOK9~%3MXg*Q&?&LcK51OIlpsT#NjL)pey2yAg z95$lNwVC(9YMJrxgTo<2EQUx?ENCf_yPw>zR`&zdJ6VG;jYtr7rxWxQ5l@Zx0OJ2b znQJpecFZa2!nK(XsEY^Sq6v{}Gat0be-J1na`zTN&ze|JO5}=Wo<;sVpr^}eEO&32 zhxltKbN5}5ZK2GS(?f9aobew*>0)#JhtL;!&cyhYX@9CZ#CCh{;l`9_aIT?faP@A$ z)O7sK?4!ysR%`=b*a%Nh&+=-0op#0x9)|UD6F!WK{beE#JHecW=htFoDOhG(MK!CU z9)m}uWGUlFb|kW6E2*9v*n9+$Uoz<2zXRV+JX0MvC z2xc$T$POlGtw{xWH5IvF3xM9hvOS;~MAzwTuHpsA{tc4?h3sD(1V09i8@24UM0g{C{2aB?0-s6z1plmqL-{aO{_&DS?U1$LI#r z#n6{ckH9j`$=sZjMKHsrM~i?0qSslBic&#U>Z`~44EBUtJpt5?$gS>v0=W$@k=YaC zEw<|ZVyMq0az?3ffk3H`3; zDEm|s^_C#=J6N^{RP$U#yctD;HeuNw&=?{fgZC7YdN^A>c*?4WPeFZeHcAwwg7VMP zAg*|qs?}1QmA*uu^3_4{Ql!1fq+q2QnkG-93cPE=r{N@MpiW$$H@|0* z>HEfi7V3+LK2lH7v({5A=;lW1$(7=B@HC$?juHpYL4C6cpM&}_7pnT{Ojp!Tr_7D` zEw}3aa;UcRIDf!G?&OtrHYZ$M<$Gc-XU^RsT8GxjuN4fu%kk&5ertUf$CkPvDh*vtF6OS z(0xSMK~jcK3SL&Lmw}!qa(jUQWqzUzeI*%e%Xj=SXNMZh7}MX<&)e+^>HXsxU#%>-fR8lc=SiKcKPeeZS4{MTXD=VCQ; zZv+KxH!)D|9Yl+q*;>o|wJ@vOPR(3TQqX5620~3dv=%k-bK}1O#aUFW!J)%9p!m6o z1wE6Eymc1&>wq>B@tYKpqFB&TqAU5Sls9o+5bI5#%iC*Gt~UmhxsEc|8xvU}W%TZ? z*TC!HVhK@2rn?^MYbfi>v#08*s8{Tu5j*orc*`aezJ<~oK;-H}@)n|effac;>0>+o z|C7D}F~W}O$er{JQ2x@y8xZ3l5l6zkx1oOGC8}PiCp&oCs)uhw{WcF6%=-kd4gr1U3@YISjcdYNiQ*YDcUDT%ptMXvAff^jS zPu_*Y1dH-e@y;<#-c!Z*pg6RPy61$32_DepM0k&3d!3u%a0gc40gcQ?!3P$F9{|lJT4s(uAfp%`z#*&z z`CT;@U&aSp)M^XRLquIz8wGuh#dttFiI{xwp+(_`Kqq%|$?L=q5BdNZOLAGiTL6y6!C&mvx0@{fcct8V*T;VB71 zT;VB71sxz_8o?)O^$D_`f0>Ct!C1yFlj3J)_hp(DLSGa!hI-(tNTP#+>!0*X>WGl*OXd~&krb?ofgbEt68U>+b_DG;sh}N1?n>B! zSbMSD4(P<**#)2|71W)`Rfn(D>T948M6Li7rGhG6Rg#7+fSs`V!Gt@31`xUGpePkI zhsc%2H?Z1=6?Q;diCk$YN(KEwgfwh5--Sbl)h?ii`)C@RDW2?tLu_s%=wl)*A(7$I zf^X5i`GGR_Mx$@7di*WaTV1W5n6jf~yw!^zoi{Cz;XiI9d} zW2z_?G^aq*XvBN%kC>FauE6*|qQJ1<&W}(zLKWAW{}Jiz$9g)TD*c_cE-3p6r?x9) zr z4rhB0ezD%eU*MwAHJYHyT~R8i2N91v*bh(BDdUhwB(eu7bGh%=-1o!97NYaD@PY$S zKT6rz#_m>91exp`bO7pg2WT>9>ut^Z)q3)O1-c>|MT%lU6HAbOyXH6R(EklJ`^f=V zT!#|{|M;2NM$O?m0X6S;)%+c()wLR$!zR)12>q*x1q~(Q@QruSBL5)J$3)m(MRr~( zItYib5>#%WI=tMpTqw2ekVXC>>3R~mjSHhg8Vn4Z6dXE)!Q6`msrAk50;SOS9n0xp zy_^Wk(Cx=16J;q_Cca+H*k=p=KzVPXtgH6^iXba>(8Pa0y~1EsZ_V;Pj3@_E>QRCw z%Wm&Qf1_-$8I_<(C8*`Qa{i85Yj}vK}Yb7JyezP=Fq>meIJ?U=VLf_q`J__kMp8@sLhK3UL?S<+)Z*E zrSdDwrdp+dJ|=Q)WhpT-v7ib!sXKSK$N~Bbi|K$G5wXdR6vcuPA~Ys;vPo&g`rG)W zf&M09V-f*n8jR8)JpGBtT2aQv#5)#&;o?}h7)Qj`AyO0r=knpu5Ze#^{KGFLUqrPEYWpM<@;A46~%Zc2{$f#8YXfx3=Ow*GF zD5F+Dx#2jCg$rql!B!S|xnS5AEf;3%C%7`v8k`G{*t1Je?TL!qp`8GPJ-bfGZ-tFe z3Qx$lyKmuF=H^M+$8w@7o(S|Hk*ipOu(g$-?L;^h*;yy=BqW7ByG{Z+NaQNkNooa@ zyI``$!ui$t^e2O1N34@!*7mmSV-Zx=#DW$Rxnns6D1*gxK+!a{;$-1SQ7q_pBAld$ z)aO8)vxzp98^k#ooG_9%(5BE++g8pxPmrN#uuy6X;422YwMss^G;P~Q|wg$ zI@$OY5M?cq%OFw~3)?m`I|J`@*qvhh)8X>mS;}~aj|81+VxZiB=sGtVR?#xQBG|gS z)vP3(u+vN|Z2Rp0gsTKr!T6OBuE88-?%)KSjs^#H6J4e)OK>Kv&NShfu!@P$Zqi>ty(HIoXO{fHu7EI~Eov5c~c`T^LYYRF?< ziA?(rqPLy0HEesU&dGDPg}BOK@ICEtO50(i0tcC zlywaxlk=#0cY$ka;F?fhOT=DuB&ddo1??c}!i|e-p%iKuzZOuvNFBP`1(eCB%;?c2 zwXCNU>N#666RdWAYm9P-wP76;sWk_bliJX%iO=i-y+GuK^3MXQg=Kj_dx`StUr{Qk z`T}*xg9z%VRUM$#M7Vp)Ot|7YI0)=8C1^Aex}4I#D5#5)noe0e4HDJ0p5nSt-$cam zY_Fb0em$U+h%+*G0kE)>C*k)W0F(t`Ui%R8Yf(8lNaQN3G5Qno5LM8L|Yj_#7KQ1uDH@VUGEu z0mg0%&PAcTKt*1v(Yf$(7FO%Q$CpH`2;O-}bRT70KN*~7)x-0k-so}7#!Z1%lnUxY zR9BxZ3mPEst(3Wk_68cb0o0!(;)@;ce2e_^fp!zs;yF|l1C>605svFR99LdL9PC+G zrU(7A7HLwgv}+SJ)F^@m5sgz<-UUE)uw)PDE27J3r6>l%aPgrF(3n865fpJt zF_2Gm6E77-sh}tSW7R~hngDGla<35;rGm~~qOsfs=Bt%--@BF|eXs5#!+ItaG@=CA zmMdtgR!xCsXQM<>3S=7l`B-C{58e7E%!lq~>b}CGQIrb0<0;L{T@%gJsu|D|MDB*s z3^j8VWrgg-Hn-}2bEu!aR6V(SPIIWYpsbpzC!&5fmgqq}Aab{Xi!2H+0-BKRDY*!q zW@pR17LYBVtfP7lTBwT_XfJm!HE|2Hmk5TRnKPbtrEhNzK}*$a36xLdjc0`Wj$|94 zbB*5ysN6GIo}xDJR5M$ah^#SXEEMlzb#XCVOdx8ahZQM`1wBuM>M7en=Cwr~MBuhS zTZoub)YdwTfpUI&#-yV14^>!(K|AD8?pe*3c|`5htR2*Q6EP33J8d1;?BGz8-61BPnXaw@GP7{3e9R3cY2K$-iqWr@fZ zQ|5~1QjK*fTZ}-867FxY$VK>P~kJ+#TpIBIXn+iUn19LDOYU-es_Ah~;}g`9!XqE<;XT zvSkTmvfTVK6g;dhht(o#xT3k-I*bK-eq0w^VNMRSE(399g-X6TBh z2hymMEek}JPnj#49_pe8TudQyMRO(41;)P;=p`aoG>T$D9}~Hv>8VydfesKMCwpo1 z%&$~BXGM-_n)ujZ2){BFR%q79My|EIUN}~S>;>b#M94;7hZHG_1>H;JDo<|>*&7%6 za(t1tH`?t+CYGO@S750gEOyX>r4w9*k~r|c*m99XSHTO+u7bM%lBVTKqK`#>AM{^t zcnR}E_9FkHKFAgN5N2jk-<84Ds(&@mQX*G9u14fnvt^0MHdE# z=t2_C1SzDf5pSoeo{IX?Z1o_3`sxyO`z7ll$Ruz8^?fDk zcC(ti0-Vf0OVstvWPw!=3!r|^Dm?^zS-GurbfJ#D1`ieBg1FH5{h=|jL_;6H`Xm0F zY*`|*$0{1TULK^_}+|`OW z$vqO(*u;W*6Y+Bj-nBqY@CiPk`9yqViWJ3yJ|c3R6?B-Www7x!7zgCNrk>iWEE;Upe2zWC*(BGl+QBq9O3Klrk1qBC=O0@_{Fr%tHL7yaaFh)k3pzkli52Sxq*!*X zs=H+qHy~s)6W##zoHkLxZ3w?VO$) z5x6R491IUc)`v28kT=?7;u|F*5tH#o0yQ`ONQ~MXB6`#j(JB12#W)n#jg&PqN9_lV z$H7x;6OO~3^|7~2JPtS7)+WWz(#hL7#_liIb$ot((HRey$wrNa(=1nb@pzcGF{z+> z?wYA%-ze*&*F!QvT}*(BE}PsL zm@HphFPMm&E;ivrpoK(y$6u@{6||Pfoq+MyC30s#Q7mXSk!wDtAjo3MIOG;gv7W*yP)~?lg;A6WIzohWW%f+LtvHt_zNb04 z3UjOV6yFN<9z-tPsX*%x2wY|d2P=`ELhEy=iBXAjfX1|dm-XyW+ydy=k@M_|Er9D7f{X5 z)Jb#Q#HZ*kIDwU*fXMY^XW{rJQ0A6h&a$4uSx{d>w1XF#q7*21`sW(tvSW0M!GgOH z1(SvDhS@eUEId%tl~%m<{i3zEJOxJAcYjuuSr$ zGI|g0f%o4i!!BvJt?v1=>X9R#)AN@H|lw^Zh4hA7Z+)6qPeh>6U>F4N15x$Lx!Q1Rddl# z8cu}okjfW&^6mpd>h~dwhlwh%=G|u#j0HVQ)JTzczvg~F&<-NkC%qr>4^YOz+(gw= zQLj*}=`yw80jSrejP*KtKm$Jj^{a{QXW$1l@Pj}<5^*kZq$mc;?YTpPlq}$w2eZKV z^I$e^r!qG@ttb|>gviz8hhT-NR}TSgAmT+FJ%qRV+jnA-9@Y zXFP(y{Z04?Q2B42cl$(K{0J&cZOZV#V3(-RhdTDOoDcQxMA+b7)}a?EiUmz13e4oT zxC!Pxs#cEzeMaPZZI2?gYfLPt;%<%4yRR4FNSaf|yKf+}%P1SpsweYF;39&HSF({; zWRYJ4RO`EvqqC3WMeyWP<`&M1IyTc3^?^hf=#wsQu)v~l0njue&h$wXrGj=7xfdgk zsnugZ=kC$?beJeg1$8BAuao}@7NWQ?Icy=&Tq1W9UI>TR;v;)N%Zd7FF$9lW6h4l2 zCG&lbX=8WeZIOSfDSjN|BIO_&C3mS47v9Ttn%q~Om7NcDikqy>$aeloFe%aOivsptITetCIxP6d_ zSBm!}PRbI>y70K3ggUm#d=lyhh+JtXN`XqB{KNmxB3Obf%0Xnan7ss9;Frx}gJzK| zv2N2PaJ!9&Sp-iZi#?Pvi|8q+UypC@LA~KV_2jPnr55>1kwy1?|38apDYCd6BAdnL zrN{!mn1#JhQACU%EVC$F z1~iALKDRVn2KTTMw3^5rG#pG6RC?fEQFZ6Y@v zQBe$pJ=709i~Ghk)NrTpIcpp~2jgYgeiKEhpiS9+gXLe>qHDP95fr9`f-y#zE2U)uxPm>nci6bmY~U*j`~ zw-P~4qpTM%tCiMMxDsb=s9CiVt-&y?(1Y;|Dl++Cl`5_RdNbQ^vI>4b$@c5Tnqds} zdIz%VP$X!$i3N2eLJ&JRvl`_(-1w`3ZX?1*II^^*Xmx(2oCh#Tb~Wyv!%ZqGd$Sz} zFI&gq%Rps*)tHU3;R39SU$%}@LCuLSV3YoeTD<}^f{2}pL{Tc}aiVH0w^w0x1D56i zts`>px)r5@_7LIYXl>;F{u(anlYZ0GTxa4n>nVN>>K75YVZ1dK`D=j25V>iqYf$EQ zP}Z5losh}iwxYg;Xgkw=UDJIX9i7F$YyA3da;~ruCI!oUa8TKJnym%85#Q4T>TpPr zyY|*1fvYGRsp{SvP#=j!dr*IysG_3i4X7uSU7*7!#gIWg74?%+_3j?C)>%*CI-s^h z_~41$u@gn9pz?pH6?+lEo3Ogcgl_`%AYzXpc@y!6QpWKJq7>MfvA_@o}tG$PljeJj6m?h?u>x;bYXtiHbix8OB@ zns5UuIQI6%&rI1P>e+of>TPI_HvZeVSUZ}+x6#D*p@tiHejDjepp1v)ZG>!giOd#a zAhHFNjnKR!k>&oS5pkAfP^Wk!4&9^7P2hS*vv>yyb|i8x-hqo1|8rr_m&i8!$HgYN z7-RfRaPiB3Tx^1R-@i+;ur5S4f-;xIyXxXyxOj-jW$`Z5bB?Nu`W%*n3=vaNKZnS* zz3<_qw4y8@9}}#HDPu(tLO*^F`r$w7Y8-3%`-qGUmfx4;i5jyA6~%&T{+o3S-ex4# zm@?OhY_^`l&GPs`gjzA>ZEV$C41GjN!7{^-DQ$ZTJjuZaa5bAU_Xs7j1(dO6Nj`x4 zLaYXai_InKdj7XSeFtT3w$B!;9&dqq*-{#Dgw7bs`w-P&EM>f91|M4W@I$B<5xKVE zLpzc$a`q zef$Jgw_uGR&|O5X>TE*-5oIocXd7JJV&ZMk-&fWpV2j=R6bRpp`xIzkMp48$-=8AN zL=y}8hsa&_+hH})_}hV6ItWy>U9Es}XA@oOb|Cmn%|3(KXD6x|^Nv2l>EA~g zhkp`LpJGx`zyBmvX9B_J7KNW9%2uK$-H3>?6bu{Ss2Qig1z*5ystLaUN{Czy`2q?2 zLRnwdfiJDP|0UErl`F|tzM59_CF);a%3Qvpew#@}J?B)XZa-#J@D8qTOMXD3h}_LNQ7b_Uh(@s)D7MHiMq_-kDJ(`~T)n)e!NKmXk6*N8v7ZRXM zRmwQH;O(+O{9RDLoygU;T~MD#87HwNqCOpK3!%P|h+T!?Tc{`5>e07WJ^mKzC!Maz z@aVkV7Wun@&LMJvcf(Ul$_n`nX~-n7sIMS$BaYuey_m8ZtTx|i;P0UR50M+c-lKu{ z05z_tIq|7JQWOj7Nz{n7{CfnML75xSf-GlVMH7CHQ$F3q-;2je>TwLs_9ECF#@`FH zBpXGFVnLNLm?{69)eo?mVf-I}W|bga()R<(VTOqX{Y}K7CU2iw?E@NohB|b&nSIE9 zJY|)+R(~I=++50BZTJx`?!*d2xHv?_<@S-HSWr+!y|3ce(SJftu=)w;)H4+g;Cc87 z4riKJ&=?{Y>t~DnpMgFna_@l^#Xz}LJat$Pclfok*5nriyUX~$z^rYavNa6$3p~y; zv7mp5+`HfX7Ww;ux>Z%HgjRy?#)tcW>Q__5TI3x7nr-|8KwXGsQp6cdFsTeW)?m4qH?XWLpQnS?lmOpa#`79kd_zJH5Z*&|w8sYLIF2 zJDRSU)Np-)->q@{JB(KlJi z$B^I<{9+gFL-5AB5I0uy3N?Bw5-cYfsr%=y5wth(z-FWN>vcq1^N8qaV*~-`l zO$0rJFZluW$wt9n7KMMIKQ{Yp6aR(E15NzQTy%~)Vapl(jeNROR;VXF`rBH^e?xr( zk$aLl3iUmd?N{~SDAcj3@KLC5KUckXRg?&N*rbALo~H=&@MTM-f`3p(5970bK!b@m z-zE7+tppVj@j*HG*P`%Wplw8Kv66o!HOjOvFwbj-@bmm;7@=w44qJKx^NN~P%G9Jt z`#$p$=sq$ph3)_X_b$1V5PaXSS*zR^h|uS?rzcUCf@KCY)DW&ylmjzt4V(kBjYMtn z?rOaB`E#1d?!75krtAf3=1Q|P%pNsiX`sVIO*vhlG^`?g?GNbuMr!4AuZLqT3XcW4 zp2+pUfHLDKa~;j&5CkhYj)VG2BG=J8&U%W0a*w@GgRFKBuw~S&4A`2+JX#)7Q5o1R zFfmxBW)o$s^WO2uz^BZuKsp|-7T}|QP#;U=Ivt`un=($I_sUvzzihKsIY*k9uxzu| zvSBTLW@`Hy?0vRc8E8Ic{0z{3BG*gEz;RAfRd=;UWECiLgKoKSu@H+Bo3+A(yu#dO ztuyVZF;ZLQL^V=qWL9LO-~?+No&Z!mUt{48AaC@GPe2hpZc;&4{13^4Z*U^4uwm_q zK+}j^yQ(M^w2%m|0PK7CldQw=B%r^DxOgEs$vR90b#10;xK7B)IOKkmVV_djJF@6x zTo5->hSei7^R*aylJ3cHad(NjK2@Fq7e$nzzhyte0U6ZeQ=neHxkfz9`&&6Avk0pe zfpRZW=7qk&QX>?^=CaCA$sa1rXgi7>!>s=PQn1L{L5bAiu*_oqxM>K_ofz*Q^? zs{rL(tU=rWY!w`FJ<3?|y)&)4eazu7)N>M6kED^Go0w~DC!NMvJt{&8k3c zh){}BixQyB5X#)aRI};$)u8?|kvo`bP=AjySBj#Jjete{{Pr5y9awdX!slQXbzDZ?5u@jeStFGC%xKM-LDPxg&j2rdmWJ=Yy>RmCnB~O-dPs;X8|?1M6KK` zTSc*;>xpNk#RL6qcX}T0zu7i_)uakzXI^Fwv#l;HAEG z7z1Gn)uH;hw+-&BdFbC1UlfFT`R?k;-OU%Jfu+Of6Cr3%ZC1b7|z>;x$*R<|yBx zL_X)a6*b4HdI?_>gxLbJzUJsK)Q7x_Eb=b`I{cqt7g>+7p!0fZ9xhl54b}pvFA;k( zk)V}WsR%Te=xQEVON;!LKtB+<15*?Ws@gj{Rx7n?g&NS+6t+SQfP4JPOrxS36K<`F zt$`9E=U!1PsQgvxz88~fqgHKzh7j>6BSEW7Ea*WZ9;J7&MgGM=?-4PLNKq`PcAu=% z=e1RVZ#`tO=P(tLoKJ5`CHmRVTzUq*7=AeT`VF#dwM81BGptyr|mI5{Lh&_WyQ7mW<5pHMF zSmkv_)~k)*8R!!tH>lPb4qwLFL!e^=O@qkmVv*kks0k6;QP~){s0-SZPL%O-PgFe> z^)cBfxYT+IFKyPUbQF{}b{l6qgEUc+f@BgJU8+?x=&D9tf$A1$X6}i+D~h@qW$uZ* zn`YY$wJS7*-I}$|ok@+p?)AN>U{`ynWOns;$NKsrxsP^731NHs?m(wqO`CsC9NI&XkFoTzP8a5=1A!}kG!mS&?wQ7Wj`wQ9wSIJg2< zYw$@xv~YchdSF=L%w`x3xdPd*F)3JP*+4a89zhS7y^aqA0u8(_`@jUP#Rmd`9w2h> zL9PUP!-Q7?y-4KB{z{bnTa*>D_3dfZ{hlcMd{fvHSN0nw#;?qxK^l^muh$F4uToaP z^V~~g^@4h(>s8(DH!ElzJ_!gkg~;7xd&ARQ$}sm@ZURwns~-1;`nN=`Nx8}*|0-=p zuR_;k&|r<_S`pPqp^=c;7T(AE1Uq)QSa_^nu?u@d-en?nLaN1Xo)W zUJdjj5ql_!qEt}5q3Vzga?n?;`T|WR!XeA6z2d&O=;l(^p6z!(sINDEKd5gbYN9Ao z6bs4>(;(P2%ib*mwF-c4AaWfEMX{h)vyoSzRs|@-j43R@S$@mJ_?4M3T;22Bc>Qs1 zW>d!JhM+%;-!fr;Gyz+NvkAC+KPHhUN>Y%_$v3DY?kOEy14lI|z zw2;V6C>>}~I1uQs5-V*)6s3aBxG}4=g6nWV=TPQ`f*?bX_&PifFTByD*Wr11Bfj$o z>$Ta|(I8lFEwR>MgOJBYEF6S-hmjf#+1m|Wu7~4|SU3oD9g(}RfifXwoFC#1hHO`f z-qFjXsT_=Ic#tv<=S72U#CUKs>{T(iSv}(oX;#^cmH!1pEDDDJ9TY(VlsR~lro}-l zZzz=Txrm`i>%vj4cyz;np$ONZM5YHg6fUl!j461-)Wt9q+1r>?Gz>+CuT0=)>73D} z%^#=cV~3OBIQmUkHHa|PM{AgVMwikmiUmy~;u-gDfM;0U05reE$|e#iiUl1iv9ib; z0jqb7KLY5qG47DmY6Q|hi!wYJ$x5zb$mClSqTZXRqV7Xka3e}!1Z8+lX7@C`(W=Kc zLj9f+Pa1fn1|A8tmWa31NKq^(bF=1jI-7)>kW*F4+~dzp)>C*B)Gy0MiK0}{R3dln zjDi)uj4=u)V(ZOVD2NmB9=_s-R->$GG8(N0;As46V^+zp_wji?{2E}IjA_<7XX#jc zk`ET|n|KTytQ(8PeQJ5L)eUdPuj*#i&CnTY4yn)|3)QKGShk11n+i=l)_O?g=T6M3 zDTGZuQ&py_4iravi`5Np!7t={3v`gL2=RrC2~eGiIW+Qj(|CNP z4)g<)%Fmtnu>3^WAm52rIhJ3@ccSEbi}5E}-Eb0g7h>*={N0N=H!AigLmBx_h7$6f z3=dmODnjHt1s*=1U_$(rk7`V@s)z6^(|Dp*hKqSiz7?l%3%(hLvl|kfuP9NJ3R*(M zSIEIsSmBcxQ-Ssp-A^k;sh|myG}d6ox(!xaO?Vs7P9oRTDoTNJ{+Wa|X~-Lz)1X;z zvb&;=RzrWZcp5H|=9FPIs$Fw?yLIf}E-{H}@xzI?%O@ zCp<}uE7c;n6N9hgu}Sfr2wCy4!t2MCGH(oOTGbTa3De5hTtVo>n@+UB`aF><37u|w z&TLja_mlFKtn|!`IIL(Mgs}91Gb?ej{mf?da%SQ~?=w+ehtE`1`#@C5^t=n2b-YUE zo0IZRGqd(LDQ}{?npG}c52CrUL}K$@Fz)2xGjUR)Q;k0hf2W>pLi{~p=BZU|-03$R ctHm?-%#)8bJ7+bkaKge~=UUYGzS0)`AN27ng#Z8m delta 553074 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