aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch4587
1 files changed, 0 insertions, 4587 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch
deleted file mode 100644
index 5ba0cb31..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1692-drm-amdkfd-Clean-up-KFD-style-errors-and-warnings.patch
+++ /dev/null
@@ -1,4587 +0,0 @@
-From fc0872ed7666e177af85412cd69d22774fc8340f Mon Sep 17 00:00:00 2001
-From: Kent Russell <kent.russell@amd.com>
-Date: Tue, 6 Dec 2016 13:10:34 -0500
-Subject: [PATCH 1692/4131] drm/amdkfd: Clean up KFD style errors and warnings
-
-Using checkpatch.pl -f <file> showed a number of style issues. This
-patch addresses as many of them as possible. Some long lines have been
-left for readability, but attempts to minimize them have been made.
-Also clean up usage of do..while(0) loops, which are mostly for
-debugging anyways
-
-Change-Id: Ie8511447981a051f01b16a06833a70d9df0a85df
-Signed-off-by: Kent Russell <kent.russell@amd.com>
-
- Conflicts:
- drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 7 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 4 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 81 ++-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 47 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 84 ++-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 16 +-
- drivers/gpu/drm/amd/amdkfd/cik_int.h | 3 +-
- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 280 +++----
- drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 187 ++---
- drivers/gpu/drm/amd/amdkfd/kfd_crat.h | 4 +-
- drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c | 803 +++++++++++----------
- drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h | 12 +-
- drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c | 288 ++++----
- drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h | 292 ++++----
- drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c | 6 +-
- drivers/gpu/drm/amd/amdkfd/kfd_device.c | 12 +-
- .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 +-
- .../drm/amd/amdkfd/kfd_device_queue_manager_cik.c | 6 +-
- .../drm/amd/amdkfd/kfd_device_queue_manager_vi.c | 6 +-
- drivers/gpu/drm/amd/amdkfd/kfd_events.c | 137 ++--
- drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c | 1 +
- drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c | 8 +-
- drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c | 3 +-
- drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c | 2 +-
- drivers/gpu/drm/amd/amdkfd/kfd_module.c | 5 +-
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 5 +-
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 1 +
- drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 3 +-
- drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c | 1 -
- drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h | 16 +-
- drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_vi.h | 10 +-
- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 58 +-
- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 28 +-
- .../gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 3 +-
- drivers/gpu/drm/amd/amdkfd/kfd_rdma.c | 2 +-
- drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 71 +-
- 36 files changed, 1312 insertions(+), 1182 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
-index 30e5893..d41cebf 100755
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
-@@ -34,7 +34,7 @@
-
- const struct kfd2kgd_calls *kfd2kgd;
- const struct kgd2kfd_calls *kgd2kfd;
--bool (*kgd2kfd_init_p)(unsigned, const struct kgd2kfd_calls**);
-+bool (*kgd2kfd_init_p)(unsigned int, const struct kgd2kfd_calls**);
-
- unsigned int global_compute_vmid_bitmap = 0xFF00;
-
-@@ -43,7 +43,7 @@ int amdgpu_amdkfd_init(void)
- int ret;
-
- #if defined(CONFIG_HSA_AMD_MODULE)
-- int (*kgd2kfd_init_p)(unsigned, const struct kgd2kfd_calls**);
-+ int (*kgd2kfd_init_p)(unsigned int, const struct kgd2kfd_calls**);
-
- kgd2kfd_init_p = symbol_request(kgd2kfd_init);
-
-@@ -404,7 +404,8 @@ void get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info)
-
- cu_info->cu_active_number = acu_info.number;
- cu_info->cu_ao_mask = acu_info.ao_cu_mask;
-- memcpy(&cu_info->cu_bitmap[0], &acu_info.bitmap[0], sizeof(acu_info.bitmap));
-+ memcpy(&cu_info->cu_bitmap[0], &acu_info.bitmap[0],
-+ sizeof(acu_info.bitmap));
- cu_info->num_shader_engines = adev->gfx.config.max_shader_engines;
- cu_info->num_shader_arrays_per_engine = adev->gfx.config.max_sh_per_se;
- cu_info->num_cu_per_sh = adev->gfx.config.max_cu_per_sh;
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
-index ac167c8..0c797bc 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
-@@ -153,7 +153,7 @@ static int amd_kfd_fence_signal(struct fence *f)
- *
- * This function is called when the reference count becomes zero.
- * It just RCU schedules freeing up the fence.
--*/
-+ */
- static void amd_kfd_fence_release(struct fence *f)
- {
- struct amdgpu_amdkfd_fence *fence = to_amdgpu_amdkfd_fence(f);
-@@ -173,7 +173,7 @@ static void amd_kfd_fence_release(struct fence *f)
- *
- * @f: [IN] fence
- * @mm: [IN] mm that needs to be verified
--*/
-+ */
- bool amd_kfd_fence_check_mm(struct fence *f, void *mm)
- {
- struct amdgpu_amdkfd_fence *fence = to_amdgpu_amdkfd_fence(f);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-index 5387fca..4adbf0b 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-@@ -68,7 +68,7 @@ enum {
- ADDRESS_WATCH_REG_CNTL_ATC_BIT = 0x10000000UL,
- ADDRESS_WATCH_REG_CNTL_DEFAULT_MASK = 0x00FFFFFF,
- ADDRESS_WATCH_REG_ADDLOW_MASK_EXTENTION = 0x03000000,
-- /* extend the mask to 26 bits in order to match the low address field. */
-+ /* extend the mask to 26 bits in order to match the low address field */
- ADDRESS_WATCH_REG_ADDLOW_SHIFT = 6,
- ADDRESS_WATCH_REG_ADDHIGH_MASK = 0xFFFF
- };
-@@ -93,7 +93,8 @@ union TCP_WATCH_CNTL_BITS {
- float f32All;
- };
-
--static int open_graphic_handle(struct kgd_dev *kgd, uint64_t va, void *vm, int fd, uint32_t handle, struct kgd_mem **mem);
-+static int open_graphic_handle(struct kgd_dev *kgd, uint64_t va, void *vm,
-+ int fd, uint32_t handle, struct kgd_mem **mem);
-
- static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type);
-
-@@ -101,10 +102,13 @@ static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type);
- * Register access functions
- */
-
--static void kgd_program_sh_mem_settings(struct kgd_dev *kgd, uint32_t vmid, uint32_t sh_mem_config,
-- uint32_t sh_mem_ape1_base, uint32_t sh_mem_ape1_limit, uint32_t sh_mem_bases);
--static int kgd_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid, unsigned int vmid);
--static int kgd_init_pipeline(struct kgd_dev *kgd, uint32_t pipe_id, uint32_t hpd_size, uint64_t hpd_gpu_addr);
-+static void kgd_program_sh_mem_settings(struct kgd_dev *kgd, uint32_t vmid,
-+ uint32_t sh_mem_config, uint32_t sh_mem_ape1_base,
-+ uint32_t sh_mem_ape1_limit, uint32_t sh_mem_bases);
-+static int kgd_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid,
-+ unsigned int vmid);
-+static int kgd_init_pipeline(struct kgd_dev *kgd, uint32_t pipe_id,
-+ uint32_t hpd_size, uint64_t hpd_gpu_addr);
- static int kgd_init_interrupts(struct kgd_dev *kgd, uint32_t pipe_id);
- static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
- uint32_t queue_id, uint32_t __user *wptr,
-@@ -312,11 +316,12 @@ static int kgd_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid,
-
- /*
- * We have to assume that there is no outstanding mapping.
-- * The ATC_VMID_PASID_MAPPING_UPDATE_STATUS bit could be 0 because a mapping
-- * is in progress or because a mapping finished and the SW cleared it.
-- * So the protocol is to always wait & clear.
-+ * The ATC_VMID_PASID_MAPPING_UPDATE_STATUS bit could be 0 because a
-+ * mapping is in progress or because a mapping finished and the SW
-+ * cleared it. So the protocol is to always wait & clear.
- */
-- uint32_t pasid_mapping = (pasid == 0) ? 0 : (uint32_t)pasid | ATC_VMID0_PASID_MAPPING__VALID_MASK;
-+ uint32_t pasid_mapping = (pasid == 0) ? 0 :
-+ (uint32_t)pasid | ATC_VMID0_PASID_MAPPING__VALID_MASK;
-
- WREG32(mmATC_VMID0_PASID_MAPPING + vmid, pasid_mapping);
-
-@@ -502,12 +507,15 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_WPTR,
- m->sdma_rlc_rb_rptr);
-
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_VIRTUAL_ADDR, m->sdma_rlc_virtual_addr);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_VIRTUAL_ADDR,
-+ m->sdma_rlc_virtual_addr);
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE, m->sdma_rlc_rb_base);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI, m->sdma_rlc_rb_base_hi);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO, m->sdma_rlc_rb_rptr_addr_lo);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI, m->sdma_rlc_rb_rptr_addr_hi);
--
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI,
-+ m->sdma_rlc_rb_base_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO,
-+ m->sdma_rlc_rb_rptr_addr_lo);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI,
-+ m->sdma_rlc_rb_rptr_addr_hi);
- data = REG_SET_FIELD(m->sdma_rlc_rb_cntl, SDMA0_RLC0_RB_CNTL,
- RB_ENABLE, 1);
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_CNTL, data);
-@@ -638,7 +646,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- pr_debug("IQ timer is active\n");
- } else
- break;
-- loop:
-+loop:
- if (!retry) {
- pr_err("CP HQD IQ timer status time out\n");
- break;
-@@ -728,8 +736,9 @@ static int kgd_address_watch_disable(struct kgd_dev *kgd)
-
- /* Turning off this address until we set all the registers */
- for (i = 0; i < MAX_WATCH_ADDRESSES; i++)
-- WREG32(watchRegs[i * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-- cntl.u32All);
-+ WREG32(watchRegs[i * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
-+ cntl.u32All);
-
- return 0;
- }
-@@ -747,19 +756,23 @@ static int kgd_address_watch_execute(struct kgd_dev *kgd,
-
- /* Turning off this watch point until we set all the registers */
- cntl.bitfields.valid = 0;
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
- cntl.u32All);
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_HI],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_ADDR_HI],
- addr_hi);
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_LO],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_ADDR_LO],
- addr_lo);
-
- /* Enable the watch point */
- cntl.bitfields.valid = 1;
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
- cntl.u32All);
-
- return 0;
-@@ -883,43 +896,35 @@ static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type)
-
- switch (type) {
- case KGD_ENGINE_PFP:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.pfp_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.pfp_fw->data;
- break;
-
- case KGD_ENGINE_ME:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.me_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.me_fw->data;
- break;
-
- case KGD_ENGINE_CE:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.ce_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.ce_fw->data;
- break;
-
- case KGD_ENGINE_MEC1:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.mec_fw->data;
- break;
-
- case KGD_ENGINE_MEC2:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec2_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.mec2_fw->data;
- break;
-
- case KGD_ENGINE_RLC:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.rlc_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.rlc_fw->data;
- break;
-
- case KGD_ENGINE_SDMA1:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[0].fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->sdma.instance[0].fw->data;
- break;
-
- case KGD_ENGINE_SDMA2:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[1].fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->sdma.instance[1].fw->data;
- break;
-
- default:
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-index 833eba2..9f80b1e5 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-@@ -517,11 +517,15 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_WPTR,
- m->sdmax_rlcx_rb_rptr);
-
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_VIRTUAL_ADDR, m->sdmax_rlcx_virtual_addr);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_VIRTUAL_ADDR,
-+ m->sdmax_rlcx_virtual_addr);
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE, m->sdmax_rlcx_rb_base);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI, m->sdmax_rlcx_rb_base_hi);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO, m->sdmax_rlcx_rb_rptr_addr_lo);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI, m->sdmax_rlcx_rb_rptr_addr_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI,
-+ m->sdmax_rlcx_rb_base_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO,
-+ m->sdmax_rlcx_rb_rptr_addr_lo);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI,
-+ m->sdmax_rlcx_rb_rptr_addr_hi);
-
- data = REG_SET_FIELD(m->sdmax_rlcx_rb_cntl, SDMA0_RLC0_RB_CNTL,
- RB_ENABLE, 1);
-@@ -660,7 +664,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
- pr_debug("IQ timer is active\n");
- } else
- break;
-- loop:
-+loop:
- if (!retry) {
- pr_err("CP HQD IQ timer status time out\n");
- break;
-@@ -840,8 +844,9 @@ static int kgd_address_watch_disable(struct kgd_dev *kgd)
-
- /* Turning off this address until we set all the registers */
- for (i = 0; i < MAX_WATCH_ADDRESSES; i++)
-- WREG32(watchRegs[i * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-- cntl.u32All);
-+ WREG32(watchRegs[i * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
-+ cntl.u32All);
-
- return 0;
- }
-@@ -859,19 +864,23 @@ static int kgd_address_watch_execute(struct kgd_dev *kgd,
-
- /* Turning off this watch point until we set all the registers */
- cntl.bitfields.valid = 0;
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
- cntl.u32All);
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_HI],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_ADDR_HI],
- addr_hi);
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_LO],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_ADDR_LO],
- addr_lo);
-
- /* Enable the watch point */
- cntl.bitfields.valid = 1;
-
-- WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
-+ WREG32(watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX
-+ + ADDRESS_WATCH_REG_CNTL],
- cntl.u32All);
-
- return 0;
-@@ -945,42 +954,42 @@ static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type)
- switch (type) {
- case KGD_ENGINE_PFP:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.pfp_fw->data;
-+ adev->gfx.pfp_fw->data;
- break;
-
- case KGD_ENGINE_ME:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.me_fw->data;
-+ adev->gfx.me_fw->data;
- break;
-
- case KGD_ENGINE_CE:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.ce_fw->data;
-+ adev->gfx.ce_fw->data;
- break;
-
- case KGD_ENGINE_MEC1:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec_fw->data;
-+ adev->gfx.mec_fw->data;
- break;
-
- case KGD_ENGINE_MEC2:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec2_fw->data;
-+ adev->gfx.mec2_fw->data;
- break;
-
- case KGD_ENGINE_RLC:
- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.rlc_fw->data;
-+ adev->gfx.rlc_fw->data;
- break;
-
- case KGD_ENGINE_SDMA1:
- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[0].fw->data;
-+ adev->sdma.instance[0].fw->data;
- break;
-
- case KGD_ENGINE_SDMA2:
- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[1].fw->data;
-+ adev->sdma.instance[1].fw->data;
- break;
-
- default:
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
-index e315dc7..53a0e52 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
-@@ -644,7 +644,8 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
- ENABLE, 1);
- WREG32(sdma_base_addr + mmSDMA0_RLC0_DOORBELL, data);
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR, m->sdmax_rlcx_rb_rptr);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_HI, m->sdmax_rlcx_rb_rptr_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_HI,
-+ m->sdmax_rlcx_rb_rptr_hi);
-
- WREG32(sdma_base_addr + mmSDMA0_RLC0_MINOR_PTR_UPDATE, 1);
- if (read_user_wptr(mm, wptr64, data64)) {
-@@ -661,9 +662,12 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
- WREG32(sdma_base_addr + mmSDMA0_RLC0_MINOR_PTR_UPDATE, 0);
-
- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE, m->sdmax_rlcx_rb_base);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI, m->sdmax_rlcx_rb_base_hi);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO, m->sdmax_rlcx_rb_rptr_addr_lo);
-- WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI, m->sdmax_rlcx_rb_rptr_addr_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_BASE_HI,
-+ m->sdmax_rlcx_rb_base_hi);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_LO,
-+ m->sdmax_rlcx_rb_rptr_addr_lo);
-+ WREG32(sdma_base_addr + mmSDMA0_RLC0_RB_RPTR_ADDR_HI,
-+ m->sdmax_rlcx_rb_rptr_addr_hi);
-
- data = REG_SET_FIELD(m->sdmax_rlcx_rb_cntl, SDMA0_RLC0_RB_CNTL,
- RB_ENABLE, 1);
-@@ -718,7 +722,7 @@ static bool kgd_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address,
- high = upper_32_bits(queue_address >> 8);
-
- if (low == RREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_BASE)) &&
-- high == RREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_BASE_HI)))
-+ high == RREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_BASE_HI)))
- retval = true;
- }
- release_queue(kgd);
-@@ -927,22 +931,30 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid)
- * TODO 2: support range-based invalidation, requires kfg2kgd
- * interface change
- */
-- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_LO32), 0xffffffff);
-- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_HI32), 0x0000001f);
--
-- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32), 0xffffffff);
-- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32), 0x0000001f);
-+ WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_LO32),
-+ 0xffffffff);
-+ WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ADDR_RANGE_HI32),
-+ 0x0000001f);
-+
-+ WREG32(SOC15_REG_OFFSET(MMHUB, 0,
-+ mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_LO32),
-+ 0xffffffff);
-+ WREG32(SOC15_REG_OFFSET(MMHUB, 0,
-+ mmMMHUB_VM_INVALIDATE_ENG16_ADDR_RANGE_HI32),
-+ 0x0000001f);
-
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_REQ), req);
-
-- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_REQ), req);
-+ WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_REQ),
-+ req);
-
- while (!(RREG32(SOC15_REG_OFFSET(GC, 0, mmVM_INVALIDATE_ENG16_ACK)) &
-- (1 << vmid)))
-+ (1 << vmid)))
- cpu_relax();
-
-- while (!(RREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_INVALIDATE_ENG16_ACK)) &
-- (1 << vmid)))
-+ while (!(RREG32(SOC15_REG_OFFSET(MMHUB, 0,
-+ mmMMHUB_VM_INVALIDATE_ENG16_ACK)) &
-+ (1 << vmid)))
- cpu_relax();
- }
-
-@@ -1034,19 +1046,13 @@ static int kgd_address_watch_execute(struct kgd_dev *kgd,
-
- /* Turning off this watch point until we set all the registers */
- cntl.bitfields.valid = 0;
-- WREG32(watch_base_addr +
-- watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX +
-- ADDRESS_WATCH_REG_CNTL],
-+ WREG32(watch_base_addr + watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_CNTL],
- cntl.u32All);
-
-- WREG32(watch_base_addr +
-- watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX +
-- ADDRESS_WATCH_REG_ADDR_HI],
-+ WREG32(watch_base_addr + watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_HI],
- addr_hi);
-
-- WREG32(watch_base_addr +
-- watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX +
-- ADDRESS_WATCH_REG_ADDR_LO],
-+ WREG32(watch_base_addr + watchRegs[watch_point_id * ADDRESS_WATCH_REG_MAX + ADDRESS_WATCH_REG_ADDR_LO],
- addr_lo);
-
- /* Enable the watch point */
-@@ -1121,43 +1127,35 @@ static uint16_t get_fw_version(struct kgd_dev *kgd, enum kgd_engine_type type)
-
- switch (type) {
- case KGD_ENGINE_PFP:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.pfp_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.pfp_fw->data;
- break;
-
- case KGD_ENGINE_ME:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.me_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.me_fw->data;
- break;
-
- case KGD_ENGINE_CE:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.ce_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.ce_fw->data;
- break;
-
- case KGD_ENGINE_MEC1:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.mec_fw->data;
- break;
-
- case KGD_ENGINE_MEC2:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.mec2_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.mec2_fw->data;
- break;
-
- case KGD_ENGINE_RLC:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->gfx.rlc_fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->gfx.rlc_fw->data;
- break;
-
- case KGD_ENGINE_SDMA1:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[0].fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->sdma.instance[0].fw->data;
- break;
-
- case KGD_ENGINE_SDMA2:
-- hdr = (const union amdgpu_firmware_header *)
-- adev->sdma.instance[1].fw->data;
-+ hdr = (const union amdgpu_firmware_header *)adev->sdma.instance[1].fw->data;
- break;
-
- default:
-@@ -1199,9 +1197,9 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32) + (vmid*2), 0);
-
- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32) + (vmid*2),
-- lower_32_bits(adev->vm_manager.max_pfn - 1));
-+ lower_32_bits(adev->vm_manager.max_pfn - 1));
- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32) + (vmid*2),
-- upper_32_bits(adev->vm_manager.max_pfn - 1));
-+ upper_32_bits(adev->vm_manager.max_pfn - 1));
-
- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32) + (vmid*2), lower_32_bits(base));
- WREG32(SOC15_REG_OFFSET(MMHUB, 0, mmMMHUB_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32) + (vmid*2), upper_32_bits(base));
-@@ -1210,9 +1208,9 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32) + (vmid*2), 0);
-
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32) + (vmid*2),
-- lower_32_bits(adev->vm_manager.max_pfn - 1));
-+ lower_32_bits(adev->vm_manager.max_pfn - 1));
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32) + (vmid*2),
-- upper_32_bits(adev->vm_manager.max_pfn - 1));
-+ upper_32_bits(adev->vm_manager.max_pfn - 1));
-
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32) + (vmid*2), lower_32_bits(base));
- WREG32(SOC15_REG_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32) + (vmid*2), upper_32_bits(base));
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-index 3129383..1b84fc9 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-@@ -42,7 +42,8 @@
- #include "gmc/gmc_8_1_d.h"
-
- /* Special VM and GART address alignment needed for VI pre-Fiji due to
-- * a HW bug. */
-+ * a HW bug.
-+ */
- #define VI_BO_SIZE_ALIGN (0x8000)
-
- /* BO flag to indicate a KFD userptr BO */
-@@ -663,7 +664,8 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- va, size, domain_string(alloc_domain));
-
- /* Allocate buffer object. Userptr objects need to start out
-- * in the CPU domain, get moved to GTT when pinned. */
-+ * in the CPU domain, get moved to GTT when pinned.
-+ */
- ret = amdgpu_bo_create(adev, size, byte_align, false,
- alloc_domain,
- flags, sg, NULL, &bo);
-@@ -719,7 +721,8 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
- * back-off the reservation and then reacquire it. Track all the
- * reservation info in a context structure. Buffers can be mapped to
- * multiple VMs simultaneously (buffers being restored on multiple
-- * GPUs). */
-+ * GPUs).
-+ */
- struct bo_vm_reservation_context {
- struct amdgpu_bo_list_entry kfd_bo;
- unsigned int n_vms;
-@@ -802,7 +805,7 @@ static int reserve_bo_and_cond_vms(struct kgd_mem *mem,
- {
- struct amdgpu_bo *bo = mem->bo;
- struct kfd_bo_va_list *entry;
-- unsigned i;
-+ unsigned int i;
- int ret;
-
- ctx->reserved = false;
-@@ -1158,7 +1161,8 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
-
- mutex_unlock(&mem->lock);
- /* lock is not needed after this, since mem is unused and will
-- * be freed anyway */
-+ * be freed anyway
-+ */
-
- /* No more MMU notifiers */
- amdgpu_mn_unregister(mem->bo);
-@@ -1527,7 +1531,7 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
- {
- struct kfd_bo_va_list *entry;
- struct amdgpu_device *adev;
-- unsigned mapped_before;
-+ unsigned int mapped_before;
- int ret = 0;
- struct bo_vm_reservation_context ctx;
- struct amdkfd_process_info *process_info;
-diff --git a/drivers/gpu/drm/amd/amdkfd/cik_int.h b/drivers/gpu/drm/amd/amdkfd/cik_int.h
-index 9054068..ff8255d 100644
---- a/drivers/gpu/drm/amd/amdkfd/cik_int.h
-+++ b/drivers/gpu/drm/amd/amdkfd/cik_int.h
-@@ -34,7 +34,8 @@ struct cik_ih_ring_entry {
- uint32_t reserved3:4;
-
- /* pipeid, meid and unused3 are officially called RINGID,
-- * but for our purposes, they always decode into pipe and ME. */
-+ * but for our purposes, they always decode into pipe and ME.
-+ */
- uint32_t pipeid:2;
- uint32_t meid:2;
- uint32_t reserved4:4;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-index 0c4ea11..8b35b70 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
-@@ -557,14 +557,17 @@ kfd_ioctl_dbg_register(struct file *filep, struct kfd_process *p, void *data)
-
- dev = kfd_device_by_id(args->gpu_id);
- if (!dev) {
-- dev_info(NULL, "Error! kfd: In func %s >> getting device by id failed\n", __func__);
-+ dev_info(NULL, "Error! kfd: In func %s >> getting device by id failed\n",
-+ __func__);
- return status;
- }
-
- down_write(&p->lock);
- mutex_lock(get_dbgmgr_mutex());
-
-- /* make sure that we have pdd, if this the first queue created for this process */
-+ /* make sure that we have pdd, if this the first queue created for
-+ * this process
-+ */
- pdd = kfd_bind_process_to_device(dev, p);
- if (IS_ERR(pdd)) {
- mutex_unlock(get_dbgmgr_mutex());
-@@ -599,12 +602,10 @@ static int kfd_ioctl_dbg_unregister(struct file *filep,
- struct kfd_dev *dev;
-
- dev = kfd_device_by_id(args->gpu_id);
-- if (dev == NULL)
-- return -EINVAL;
--
-- if (dev->device_info->asic_family == CHIP_CARRIZO) {
-- pr_debug("kfd_ioctl_dbg_unregister not supported on CZ\n");
-- return -EINVAL;
-+ if (!dev) {
-+ dev_info(NULL, "Error! kfd: In func %s >> getting device by id failed\n",
-+ __func__);
-+ return status;
- }
-
- mutex_lock(get_dbgmgr_mutex());
-@@ -646,92 +647,90 @@ kfd_ioctl_dbg_address_watch(struct file *filep,
-
- memset((void *) &aw_info, 0, sizeof(struct dbg_address_watch_info));
-
-- do {
-- dev = kfd_device_by_id(args->gpu_id);
-- if (!dev) {
-- dev_info(NULL,
-- "Error! kfd: In func %s >> get device by id failed\n",
-- __func__);
-- break;
-- }
--
-- cmd_from_user = (void __user *) args->content_ptr;
--
-- if (args->buf_size_in_bytes > MAX_ALLOWED_AW_BUFF_SIZE) {
-- status = -EINVAL;
-- break;
-- }
--
-- if (args->buf_size_in_bytes <= sizeof(*args)) {
-- status = -EINVAL;
-- break;
-- }
-+ dev = kfd_device_by_id(args->gpu_id);
-+ if (!dev) {
-+ dev_info(NULL,
-+ "Error! kfd: In func %s >> get device by id failed\n",
-+ __func__);
-+ return -EFAULT;
-+ }
-
-- /* this is the actual buffer to work with */
-+ cmd_from_user = (void __user *) args->content_ptr;
-
-- args_buff = memdup_user(cmd_from_user,
-- args->buf_size_in_bytes - sizeof(*args));
-- if (IS_ERR(args_buff))
-- return PTR_ERR(args_buff);
-+ if (args->buf_size_in_bytes > MAX_ALLOWED_AW_BUFF_SIZE ||
-+ (args->buf_size_in_bytes <= sizeof(*args)))
-+ return -EINVAL;
-
-- aw_info.process = p;
-+ /* this is the actual buffer to work with */
-+ args_buff = memdup_user(cmd_from_user,
-+ args->buf_size_in_bytes - sizeof(*args));
-
-- aw_info.num_watch_points = *((uint32_t *)(&args_buff[args_idx]));
-- args_idx += sizeof(aw_info.num_watch_points);
-+ if (IS_ERR(args_buff))
-+ return PTR_ERR(args_buff);
-
-- aw_info.watch_mode = (HSA_DBG_WATCH_MODE *) &args_buff[args_idx];
-- args_idx += sizeof(HSA_DBG_WATCH_MODE) * aw_info.num_watch_points;
-+ aw_info.process = p;
-
-- /* set watch address base pointer to point on the array base within args_buff */
-+ aw_info.num_watch_points =
-+ *((uint32_t *)(&args_buff[args_idx]));
-+ args_idx += sizeof(aw_info.num_watch_points);
-
-- aw_info.watch_address = (uint64_t *) &args_buff[args_idx];
-+ aw_info.watch_mode =
-+ (enum HSA_DBG_WATCH_MODE *) &args_buff[args_idx];
-+ args_idx += sizeof(enum HSA_DBG_WATCH_MODE) *
-+ aw_info.num_watch_points;
-
-- /*skip over the addresses buffer */
-- args_idx += sizeof(aw_info.watch_address) * aw_info.num_watch_points;
-+ /* set watch address base pointer to point on the array base
-+ * within args_buff
-+ */
-
-- if (args_idx >= args->buf_size_in_bytes) {
-- status = -EINVAL;
-- break;
-- }
-+ aw_info.watch_address = (uint64_t *) &args_buff[args_idx];
-
-- watch_mask_value = (uint64_t) args_buff[args_idx];
-+ /* skip over the addresses buffer */
-+ args_idx += sizeof(aw_info.watch_address) *
-+ aw_info.num_watch_points;
-
-- if (watch_mask_value > 0) {
-- /* there is an array of masks */
-+ if (args_idx >= args->buf_size_in_bytes) {
-+ status = -EINVAL;
-+ goto out;
-+ }
-
-- /* set watch mask base pointer to point on the array base within args_buff */
-- aw_info.watch_mask = (uint64_t *) &args_buff[args_idx];
-+ watch_mask_value = (uint64_t) args_buff[args_idx];
-
-- /*skip over the masks buffer */
-- args_idx += sizeof(aw_info.watch_mask) * aw_info.num_watch_points;
-- }
-+ if (watch_mask_value > 0) {
-+ /* there is an array of masks */
-
-- else
-- /* just the NULL mask, set to NULL and skip over it */
-- {
-- aw_info.watch_mask = NULL;
-- args_idx += sizeof(aw_info.watch_mask);
-- }
-+ /* set watch mask base pointer to point on the array
-+ * base within args_buff
-+ */
-+ aw_info.watch_mask = (uint64_t *) &args_buff[args_idx];
-
-- if (args_idx > args->buf_size_in_bytes) {
-- status = -EINVAL;
-- break;
-- }
-+ /* skip over the masks buffer */
-+ args_idx += sizeof(aw_info.watch_mask) *
-+ aw_info.num_watch_points;
-+ }
-
-- aw_info.watch_event = NULL; /* Currently HSA Event is not supported for DBG */
-- status = 0;
-+ else
-+ /* just the NULL mask, set to NULL and skip over it */
-+ {
-+ aw_info.watch_mask = NULL;
-+ args_idx += sizeof(aw_info.watch_mask);
-+ }
-
-- } while (0);
-+ if (args_idx > args->buf_size_in_bytes) {
-+ status = -EINVAL;
-+ goto out;
-+ }
-
-- if (status == 0) {
-- mutex_lock(get_dbgmgr_mutex());
-+ /* Currently HSA Event is not supported for DBG */
-+ aw_info.watch_event = NULL;
-
-- status = kfd_dbgmgr_address_watch(dev->dbgmgr, &aw_info);
-+ mutex_lock(get_dbgmgr_mutex());
-
-- mutex_unlock(get_dbgmgr_mutex());
-+ status = kfd_dbgmgr_address_watch(dev->dbgmgr, &aw_info);
-
-- }
-+ mutex_unlock(get_dbgmgr_mutex());
-
-+out:
- kfree(args_buff);
-
- return status;
-@@ -739,11 +738,13 @@ kfd_ioctl_dbg_address_watch(struct file *filep,
-
- /*
- * Parse and generate fixed size data structure for wave control.
-- * Buffer is generated in a "packed" form, for avoiding structure packing/pending dependencies.
-+ * Buffer is generated in a "packed" form, for avoiding structure
-+ * packing/pending dependencies.
- */
-
- static int
--kfd_ioctl_dbg_wave_control(struct file *filep, struct kfd_process *p, void *data)
-+kfd_ioctl_dbg_wave_control(struct file *filep, struct kfd_process *p,
-+ void *data)
- {
- long status = -EFAULT;
- struct kfd_ioctl_dbg_wave_control_args *args = data;
-@@ -768,78 +769,76 @@ kfd_ioctl_dbg_wave_control(struct file *filep, struct kfd_process *p, void *data
-
- dev_info(NULL, "kfd: In func %s - start\n", __func__);
-
-- do {
-- dev = kfd_device_by_id(args->gpu_id);
-- if (!dev) {
-- dev_info(NULL, "Error! kfd: In func %s >> getting device by id failed\n", __func__);
-- break;
-- }
--
-- /* input size must match the computed "compact" size */
--
-- if (args->buf_size_in_bytes != computed_buff_size) {
-- dev_info(NULL,
-- "Error! kfd: In func %s >> size mismatch, computed : actual %u : %u\n",
-- __func__, args->buf_size_in_bytes, computed_buff_size);
-- status = -EINVAL;
-- break;
-- }
--
-- cmd_from_user = (void __user *) args->content_ptr;
--
-- /* copy the entire buffer from user */
-+ dev = kfd_device_by_id(args->gpu_id);
-+ if (!dev) {
-+ dev_info(NULL, "Error! kfd: In func %s >> getting device by id failed\n",
-+ __func__);
-+ return -EFAULT;
-+ }
-
-- args_buff = memdup_user(cmd_from_user,
-- args->buf_size_in_bytes - sizeof(*args));
-- if (IS_ERR(args_buff))
-- return PTR_ERR(args_buff);
-+ /* input size must match the computed "compact" size */
-
-- if (copy_from_user(args_buff,
-- (void __user *) args->content_ptr,
-- args->buf_size_in_bytes - sizeof(*args))) {
-- dev_info(NULL,
-- "Error! kfd: In func %s >> copy_from_user failed\n",
-- __func__);
-- break;
-- }
-+ if (args->buf_size_in_bytes != computed_buff_size) {
-+ dev_info(NULL,
-+ "Error! kfd: In func %s >> size mismatch, computed : actual %u : %u\n",
-+ __func__, args->buf_size_in_bytes,
-+ computed_buff_size);
-+ return -EINVAL;
-+ }
-
-- /* move ptr to the start of the "pay-load" area */
-+ cmd_from_user = (void __user *) args->content_ptr;
-
-+ /* copy the entire buffer from user */
-
-- wac_info.process = p;
-+ args_buff = memdup_user(cmd_from_user,
-+ args->buf_size_in_bytes - sizeof(*args));
-+ if (IS_ERR(args_buff))
-+ return PTR_ERR(args_buff);
-
-- wac_info.operand = (HSA_DBG_WAVEOP) *((HSA_DBG_WAVEOP *)(&args_buff[args_idx]));
-- args_idx += sizeof(wac_info.operand);
-+ if (copy_from_user(args_buff,
-+ (void __user *) args->content_ptr,
-+ args->buf_size_in_bytes - sizeof(*args))) {
-+ dev_info(NULL,
-+ "Error! kfd: In func %s >> copy_from_user failed\n",
-+ __func__);
-+ goto out;
-+ }
-
-- wac_info.mode = (HSA_DBG_WAVEMODE) *((HSA_DBG_WAVEMODE *)(&args_buff[args_idx]));
-- args_idx += sizeof(wac_info.mode);
-+ /* move ptr to the start of the "pay-load" area */
-
-- wac_info.trapId = (uint32_t) *((uint32_t *)(&args_buff[args_idx]));
-- args_idx += sizeof(wac_info.trapId);
-+ wac_info.process = p;
-
-- wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value = *((uint32_t *)(&args_buff[args_idx]));
-- wac_info.dbgWave_msg.MemoryVA = NULL;
-+ wac_info.operand =
-+ *((enum HSA_DBG_WAVEOP *)(&args_buff[args_idx]));
-+ args_idx += sizeof(wac_info.operand);
-
-+ wac_info.mode =
-+ *((enum HSA_DBG_WAVEMODE *)(&args_buff[args_idx]));
-+ args_idx += sizeof(wac_info.mode);
-
-- status = 0;
-+ wac_info.trapId = *((uint32_t *)(&args_buff[args_idx]));
-+ args_idx += sizeof(wac_info.trapId);
-
-- } while (0);
-- if (status == 0) {
-- mutex_lock(get_dbgmgr_mutex());
-+ wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value =
-+ *((uint32_t *)(&args_buff[args_idx]));
-+ wac_info.dbgWave_msg.MemoryVA = NULL;
-
-- dev_info(NULL,
-- "kfd: In func %s >> calling dbg manager process %p, operand %u, mode %u, trapId %u, message %u\n",
-- __func__, wac_info.process, wac_info.operand, wac_info.mode, wac_info.trapId,
-- wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
-+ mutex_lock(get_dbgmgr_mutex());
-
-- status = kfd_dbgmgr_wave_control(dev->dbgmgr, &wac_info);
-+ dev_info(NULL,
-+ "kfd: In func %s >> calling dbg manager process %p, operand %u, mode %u, trapId %u, message %u\n",
-+ __func__, wac_info.process, wac_info.operand,
-+ wac_info.mode, wac_info.trapId,
-+ wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
-
-- dev_info(NULL, "kfd: In func %s >> returned status of dbg manager is %ld\n", __func__, status);
-+ status = kfd_dbgmgr_wave_control(dev->dbgmgr, &wac_info);
-
-- mutex_unlock(get_dbgmgr_mutex());
-+ dev_info(NULL, "kfd: In func %s >> returned status of dbg manager is %ld\n",
-+ __func__, status);
-
-- }
-+ mutex_unlock(get_dbgmgr_mutex());
-
-+out:
- kfree(args_buff);
-
- return status;
-@@ -935,7 +934,8 @@ static int kfd_ioctl_get_process_apertures(struct file *filp,
- "scratch_limit %llX\n", pdd->scratch_limit);
-
- args->num_of_nodes++;
-- } while ((pdd = kfd_get_next_process_device_data(p, pdd)) != NULL &&
-+ } while ((pdd = kfd_get_next_process_device_data(p, pdd)) !=
-+ NULL &&
- (args->num_of_nodes < NUM_OF_SUPPORTED_GPUS));
- }
-
-@@ -957,7 +957,8 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp,
-
- if (args->num_of_nodes == 0) {
- /* Return number of nodes, so that user space can alloacate
-- * sufficient memory */
-+ * sufficient memory
-+ */
- down_write(&p->lock);
-
- if (!kfd_has_process_device_data(p)) {
-@@ -978,7 +979,8 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp,
-
- /* Fill in process-aperture information for all available
- * nodes, but not more than args->num_of_nodes as that is
-- * the amount of memory allocated by user */
-+ * the amount of memory allocated by user
-+ */
- pa = kzalloc((sizeof(struct kfd_process_device_apertures) *
- args->num_of_nodes), GFP_KERNEL);
- if (!pa)
-@@ -1290,7 +1292,8 @@ static int kfd_ioctl_free_memory_of_gpu(struct file *filep,
- pdd->vm);
-
- /* If freeing the buffer failed, leave the handle in place for
-- * clean-up during process tear-down. */
-+ * clean-up during process tear-down.
-+ */
- if (ret == 0) {
- down_write(&p->lock);
- kfd_process_device_remove_obj_handle(
-@@ -1553,14 +1556,16 @@ static int kfd_ioctl_open_graphic_handle(struct file *filep,
-
- down_write(&p->lock);
- /*TODO: When open_graphic_handle is implemented, we need to create
-- * the corresponding interval tree. We need to know the size of
-- * the buffer through open_graphic_handle(). We use 1 for now.*/
-+ * the corresponding interval tree. We need to know the size of
-+ * the buffer through open_graphic_handle(). We use 1 for now.
-+ */
- idr_handle = kfd_process_device_create_obj_handle(pdd, mem,
- args->va_addr, 1, NULL);
- up_write(&p->lock);
- if (idr_handle < 0) {
- /* FIXME: destroy_process_gpumem doesn't seem to be
-- * implemented anywhere */
-+ * implemented anywhere
-+ */
- dev->kfd2kgd->destroy_process_gpumem(dev->kgd, mem);
- return -EFAULT;
- }
-@@ -1606,7 +1611,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,
- struct kgd_dev *dma_buf_kgd;
- void *metadata_buffer = NULL;
- uint32_t flags;
-- unsigned i;
-+ unsigned int i;
- int r;
-
- /* Find a KFD GPU device that supports the get_dmabuf_info query */
-@@ -2003,7 +2008,8 @@ static int kfd_ioctl_cross_memory_copy(struct file *filep,
- #endif
-
- #define AMDKFD_IOCTL_DEF(ioctl, _func, _flags) \
-- [_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, .cmd_drv = 0, .name = #ioctl}
-+ [_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, \
-+ .cmd_drv = 0, .name = #ioctl}
-
- /** Ioctl table */
- static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
-index ab35190..55c5e4e 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
-@@ -12,11 +12,13 @@
- /* GPU Processor ID base for dGPUs for which VCRAT needs to be created.
- * GPU processor ID are expressed with Bit[31]=1.
- * The base is set to 0x8000_0000 + 0x1000 to avoid collision with GPU IDs
-- * used in the CRAT. */
-+ * used in the CRAT.
-+ */
- static uint32_t gpu_processor_id_low = 0x80001000;
-
- /* Return the next available gpu_processor_id and increment it for next GPU
-- * @total_cu_count - Total CUs present in the GPU including ones masked off
-+ * @total_cu_count - Total CUs present in the GPU including ones
-+ * masked off
- */
- static inline unsigned int get_and_inc_gpu_processor_id(
- unsigned int total_cu_count)
-@@ -33,7 +35,8 @@ struct kfd_gpu_cache_info {
- uint32_t cache_level;
- uint32_t flags;
- /* Indicates how many Compute Units share this cache
-- * Value = 1 indicates the cache is not shared */
-+ * Value = 1 indicates the cache is not shared
-+ */
- uint32_t num_cu_shared;
- };
-
-@@ -104,7 +107,8 @@ static struct kfd_gpu_cache_info carrizo_cache_info[] = {
- };
-
- /* NOTE: In future if more information is added to struct kfd_gpu_cache_info
-- * the following ASICs may need a separate table. */
-+ * the following ASICs may need a separate table.
-+ */
- #define hawaii_cache_info kaveri_cache_info
- #define tonga_cache_info carrizo_cache_info
- #define fiji_cache_info carrizo_cache_info
-@@ -151,7 +155,7 @@ static void kfd_populated_cu_info_gpu(struct kfd_topology_device *dev,
- }
-
- /* kfd_parse_subtype_cu - parse compute unit subtypes and attach it to correct
-- * topology device present in the device_list
-+ * topology device present in the device_list
- */
- static int kfd_parse_subtype_cu(struct crat_subtype_computeunit *cu,
- struct list_head *device_list)
-@@ -177,7 +181,7 @@ static int kfd_parse_subtype_cu(struct crat_subtype_computeunit *cu,
- }
-
- /* kfd_parse_subtype_mem - parse memory subtypes and attach it to correct
-- * topology device present in the device_list
-+ * topology device present in the device_list
- */
- static int kfd_parse_subtype_mem(struct crat_subtype_memory *mem,
- struct list_head *device_list)
-@@ -195,9 +199,7 @@ static int kfd_parse_subtype_mem(struct crat_subtype_memory *mem,
- if (props == NULL)
- return -ENOMEM;
-
-- /*
-- * We're on GPU node
-- */
-+ /* We're on GPU node */
- if (dev->node_props.cpu_cores_count == 0) {
- /* APU */
- if (mem->visibility_type == 0)
-@@ -206,8 +208,7 @@ static int kfd_parse_subtype_mem(struct crat_subtype_memory *mem,
- /* dGPU */
- else
- props->heap_type = mem->visibility_type;
-- }
-- else
-+ } else
- props->heap_type = HSA_MEM_HEAP_TYPE_SYSTEM;
-
- if (mem->flags & CRAT_MEM_FLAGS_HOT_PLUGGABLE)
-@@ -231,7 +232,7 @@ static int kfd_parse_subtype_mem(struct crat_subtype_memory *mem,
- }
-
- /* kfd_parse_subtype_cache - parse cache subtypes and attach it to correct
-- * topology device present in the device_list
-+ * topology device present in the device_list
- */
- static int kfd_parse_subtype_cache(struct crat_subtype_cache *cache,
- struct list_head *device_list)
-@@ -254,8 +255,8 @@ static int kfd_parse_subtype_cache(struct crat_subtype_cache *cache,
- * Compute Unit. So map the cache using CPU core Id or SIMD
- * (GPU) ID.
- * TODO: This works because currently we can safely assume that
-- * Compute Units are parsed before caches are parsed. In future
-- * remove this dependency
-+ * Compute Units are parsed before caches are parsed. In
-+ * future, remove this dependency
- */
- if ((id >= dev->node_props.cpu_core_id_base &&
- id <= dev->node_props.cpu_core_id_base +
-@@ -298,7 +299,7 @@ static int kfd_parse_subtype_cache(struct crat_subtype_cache *cache,
- }
-
- /* kfd_parse_subtype_iolink - parse iolink subtypes and attach it to correct
-- * topology device present in the device_list
-+ * topology device present in the device_list
- */
- static int kfd_parse_subtype_iolink(struct crat_subtype_iolink *iolink,
- struct list_head *device_list)
-@@ -313,7 +314,8 @@ static int kfd_parse_subtype_iolink(struct crat_subtype_iolink *iolink,
- id_from = iolink->proximity_domain_from;
- id_to = iolink->proximity_domain_to;
-
-- pr_debug("Found IO link entry in CRAT table with id_from=%d\n", id_from);
-+ pr_debug("Found IO link entry in CRAT table with id_from=%d\n",
-+ id_from);
- list_for_each_entry(dev, device_list, list) {
- if (id_from == dev->proximity_domain) {
- props = kfd_alloc_struct(props);
-@@ -368,7 +370,7 @@ static int kfd_parse_subtype_iolink(struct crat_subtype_iolink *iolink,
- }
-
- /* kfd_parse_subtype - parse subtypes and attach it to correct topology device
-- * present in the device_list
-+ * present in the device_list
- * @sub_type_hdr - subtype section of crat_image
- * @device_list - list of topology devices present in this crat_image
- */
-@@ -397,15 +399,11 @@ static int kfd_parse_subtype(struct crat_subtype_generic *sub_type_hdr,
- ret = kfd_parse_subtype_cache(cache, device_list);
- break;
- case CRAT_SUBTYPE_TLB_AFFINITY:
-- /*
-- * For now, nothing to do here
-- */
-+ /* For now, nothing to do here */
- pr_debug("Found TLB entry in CRAT table (not processing)\n");
- break;
- case CRAT_SUBTYPE_CCOMPUTE_AFFINITY:
-- /*
-- * For now, nothing to do here
-- */
-+ /* For now, nothing to do here */
- pr_debug("Found CCOMPUTE entry in CRAT table (not processing)\n");
- break;
- case CRAT_SUBTYPE_IOLINK_AFFINITY:
-@@ -421,12 +419,13 @@ static int kfd_parse_subtype(struct crat_subtype_generic *sub_type_hdr,
- }
-
- /* kfd_parse_crat_table - parse CRAT table. For each node present in CRAT
-- * create a kfd_topology_device and add in to device_list. Also parse
-- * CRAT subtypes and attach it to appropriate kfd_topology_device
-+ * create a kfd_topology_device and add in to device_list. Also parse
-+ * CRAT subtypes and attach it to appropriate kfd_topology_device
- * @crat_image - input image containing CRAT
-- * @device_list - [OUT] list of kfd_topology_device generated after parsing
-- * crat_image
-+ * @device_list - [OUT] list of kfd_topology_device generated after
-+ * parsing crat_image
- * @proximity_domain - Proximity domain of the first device in the table
-+ *
- * Return - 0 if successful else -ve value
- */
- int kfd_parse_crat_table(void *crat_image,
-@@ -445,9 +444,8 @@ int kfd_parse_crat_table(void *crat_image,
- if (!crat_image)
- return -EINVAL;
-
-- if (!list_empty(device_list)) {
-+ if (!list_empty(device_list))
- pr_warn("Error device list should be empty\n");
-- }
-
- num_nodes = crat_table->num_domains;
- image_len = crat_table->length;
-@@ -465,7 +463,8 @@ int kfd_parse_crat_table(void *crat_image,
- return -ENOMEM;
-
- memcpy(top_dev->oem_id, crat_table->oem_id, CRAT_OEMID_LENGTH);
-- memcpy(top_dev->oem_table_id, crat_table->oem_table_id, CRAT_OEMTABLEID_LENGTH);
-+ memcpy(top_dev->oem_table_id, crat_table->oem_table_id,
-+ CRAT_OEMTABLEID_LENGTH);
- top_dev->oem_revision = crat_table->oem_revision;
-
- last_header_type = last_header_length = 0;
-@@ -527,7 +526,8 @@ static int fill_in_pcache(struct crat_subtype_cache *pcache,
-
- /* CU could be inactive. In case of shared cache find the first active
- * CU. and incase of non-shared cache check if the CU is inactive. If
-- * inactive active skip it*/
-+ * inactive active skip it
-+ */
- if (first_active_cu) {
- memset(pcache, 0, sizeof(struct crat_subtype_cache));
- pcache->type = CRAT_SUBTYPE_CACHE_AFFINITY;
-@@ -539,7 +539,8 @@ static int fill_in_pcache(struct crat_subtype_cache *pcache,
- pcache->cache_size = pcache_info[cache_type].cache_size;
-
- /* Sibling map is w.r.t processor_id_low, so shift out
-- * inactive CU */
-+ * inactive CU
-+ */
- cu_sibling_map_mask =
- cu_sibling_map_mask >> (first_active_cu - 1);
-
-@@ -555,9 +556,12 @@ static int fill_in_pcache(struct crat_subtype_cache *pcache,
- return 1;
- }
-
--/* kfd_fill_gpu_cache_info - Fill GPU cache info using kfd_gpu_cache_info tables
-+/* kfd_fill_gpu_cache_info - Fill GPU cache info using kfd_gpu_cache_info
-+ * tables
-+ *
- * @kdev - [IN] GPU device
-- * @gpu_processor_id - [IN] GPU processor ID to which these caches associate
-+ * @gpu_processor_id - [IN] GPU processor ID to which these caches
-+ * associate
- * @available_size - [IN] Amount of memory available in pcache
- * @cu_info - [IN] Compute Unit info obtained from KGD
- * @pcache - [OUT] memory into which cache data is to be filled in.
-@@ -674,15 +678,14 @@ static int kfd_fill_gpu_cache_info(struct kfd_dev *kdev,
-
- /*
- * kfd_create_crat_image_acpi - Allocates memory for CRAT image and
-- * copies CRAT from ACPI (if available).
-- *
-+ * copies CRAT from ACPI (if available).
- * NOTE: Call kfd_destroy_crat_image to free CRAT image memory
- *
-- * @crat_image: CRAT read from ACPI. If no CRAT in ACPI then
-- * *crat_image will be NULL
-- * @size: [OUT] size of crat_image
-+ * @crat_image: CRAT read from ACPI. If no CRAT in ACPI then
-+ * crat_image will be NULL
-+ * @size: [OUT] size of crat_image
- *
-- * Return 0 if successful else return -ve value
-+ * Return 0 if successful else return -ve value
- */
- #ifdef CONFIG_ACPI
- int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
-@@ -696,15 +699,14 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
-
- *crat_image = NULL;
-
-- /*
-- * Fetch the CRAT table from ACPI
-- */
-+ /* Fetch the CRAT table from ACPI */
- status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
- if (status == AE_NOT_FOUND) {
- pr_warn("CRAT table not found\n");
- return -ENODATA;
- } else if (ACPI_FAILURE(status)) {
- const char *err = acpi_format_exception(status);
-+
- pr_err("CRAT table error: %s\n", err);
- return -EINVAL;
- }
-@@ -740,11 +742,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
-
- /* kfd_fill_cu_for_cpu - Fill in Compute info for the given CPU NUMA node
- *
-- * @numa_node_id: CPU NUMA node id
-- * @avail_size: Available size in the memory
-- * @sub_type_hdr: Memory into which compute info will be filled in
-+ * @numa_node_id: CPU NUMA node id
-+ * @avail_size: Available size in the memory
-+ * @sub_type_hdr: Memory into which compute info will be filled in
- *
-- * Return 0 if successful else return -ve value
-+ * Return 0 if successful else return -ve value
- */
- static int kfd_fill_cu_for_cpu(int numa_node_id, int *avail_size,
- int proximity_domain,
-@@ -779,11 +781,11 @@ static int kfd_fill_cu_for_cpu(int numa_node_id, int *avail_size,
-
- /* kfd_fill_mem_info_for_cpu - Fill in Memory info for the given CPU NUMA node
- *
-- * @numa_node_id: CPU NUMA node id
-- * @avail_size: Available size in the memory
-- * @sub_type_hdr: Memory into which compute info will be filled in
-+ * @numa_node_id: CPU NUMA node id
-+ * @avail_size: Available size in the memory
-+ * @sub_type_hdr: Memory into which compute info will be filled in
- *
-- * Return 0 if successful else return -ve value
-+ * Return 0 if successful else return -ve value
- */
- static int kfd_fill_mem_info_for_cpu(int numa_node_id, int *avail_size,
- int proximity_domain,
-@@ -808,7 +810,8 @@ static int kfd_fill_mem_info_for_cpu(int numa_node_id, int *avail_size,
-
- /* Unlike si_meminfo, si_meminfo_node is not exported. So
- * the following lines are duplicated from si_meminfo_node
-- * function */
-+ * function
-+ */
- pgdat = NODE_DATA(numa_node_id);
- for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++)
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
-@@ -874,7 +877,7 @@ static int kfd_fill_iolink_info_for_cpu(int numa_node_id, int *avail_size,
- *
- * @pcrat_image: Fill in VCRAT for CPU
- * @size: [IN] allocated size of crat_image.
-- * [OUT] actual size of data filled in crat_image
-+ * [OUT] actual size of data filled in crat_image
- */
- static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
- {
-@@ -902,7 +905,8 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
- return -ENOMEM;
-
- memset(crat_table, 0, sizeof(struct crat_header));
-- memcpy(&crat_table->signature, CRAT_SIGNATURE, sizeof(crat_table->signature));
-+ memcpy(&crat_table->signature, CRAT_SIGNATURE,
-+ sizeof(crat_table->signature));
- crat_table->length = sizeof(struct crat_header);
-
- #ifdef CONFIG_ACPI
-@@ -911,8 +915,10 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
- pr_warn("DSDT table not found for OEM information\n");
- else {
- crat_table->oem_revision = acpi_table->revision;
-- memcpy(crat_table->oem_id, acpi_table->oem_id, CRAT_OEMID_LENGTH);
-- memcpy(crat_table->oem_table_id, acpi_table->oem_table_id, CRAT_OEMTABLEID_LENGTH);
-+ memcpy(crat_table->oem_id, acpi_table->oem_id,
-+ CRAT_OEMID_LENGTH);
-+ memcpy(crat_table->oem_table_id, acpi_table->oem_table_id,
-+ CRAT_OEMTABLEID_LENGTH);
- }
- #else
- crat_table->oem_revision = 0;
-@@ -974,8 +980,9 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
- /* TODO: Add cache Subtype for CPU.
- * Currently, CPU cache information is available in function
- * detect_cache_attributes(cpu) defined in the file
-- * ./arch/x86/kernel/cpu/intel_cacheinfo.c. This function is not exported
-- * and to get the same information the code needs to be duplicated.
-+ * ./arch/x86/kernel/cpu/intel_cacheinfo.c. This function is not
-+ * exported and to get the same information the code needs to be
-+ * duplicated.
- */
-
- *size = crat_table->length;
-@@ -1014,14 +1021,13 @@ static int kfd_fill_gpu_memory_affinity(int *avail_size,
- }
-
- /* kfd_fill_gpu_direct_io_link - Fill in direct io link from GPU
-- * to its NUMA node
-- *
-- * @avail_size: Available size in the memory
-- * @kdev - [IN] GPU device
-- * @sub_type_hdr: Memory into which io link info will be filled in
-- * @proximity_domain - proximity domain of the GPU node
-+ * to its NUMA node
-+ * @avail_size: Available size in the memory
-+ * @kdev - [IN] GPU device
-+ * @sub_type_hdr: Memory into which io link info will be filled in
-+ * @proximity_domain - proximity domain of the GPU node
- *
-- * Return 0 if successful else return -ve value
-+ * Return 0 if successful else return -ve value
- */
- static int kfd_fill_gpu_direct_io_link(int *avail_size,
- struct kfd_dev *kdev,
-@@ -1040,7 +1046,8 @@ static int kfd_fill_gpu_direct_io_link(int *avail_size,
- sub_type_hdr->flags |= CRAT_SUBTYPE_FLAGS_ENABLED;
-
- /* Fill in IOLINK subtype.
-- * TODO: Fill-in other fields of iolink subtype */
-+ * TODO: Fill-in other fields of iolink subtype
-+ */
- sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_PCIEXPRESS;
- sub_type_hdr->proximity_domain_from = proximity_domain;
- #ifdef CONFIG_NUMA
-@@ -1076,8 +1083,8 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
- #if defined(CONFIG_AMD_IOMMU_V2_MODULE) || defined(CONFIG_AMD_IOMMU_V2)
- struct amd_iommu_device_info iommu_info;
- const u32 required_iommu_flags = AMD_IOMMU_DEVICE_FLAG_ATS_SUP |
-- AMD_IOMMU_DEVICE_FLAG_PRI_SUP |
-- AMD_IOMMU_DEVICE_FLAG_PASID_SUP;
-+ AMD_IOMMU_DEVICE_FLAG_PRI_SUP |
-+ AMD_IOMMU_DEVICE_FLAG_PASID_SUP;
- #endif
- struct kfd_local_mem_info local_mem_info;
-
-@@ -1093,8 +1100,10 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
-
- memset(crat_table, 0, sizeof(struct crat_header));
-
-- memcpy(&crat_table->signature, CRAT_SIGNATURE, sizeof(crat_table->signature));
-- crat_table->length = sizeof(struct crat_header); /* Change length as we add more subtypes*/
-+ memcpy(&crat_table->signature, CRAT_SIGNATURE,
-+ sizeof(crat_table->signature));
-+ /* Change length as we add more subtypes*/
-+ crat_table->length = sizeof(struct crat_header);
- crat_table->num_domains = 1;
- crat_table->total_entries = 0;
-
-@@ -1135,11 +1144,13 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
- cu->hsa_capability = 0;
-
- /* Check if this node supports IOMMU. During parsing this flag will
-- * translate to HSA_CAP_ATS_PRESENT */
-+ * translate to HSA_CAP_ATS_PRESENT
-+ */
- #if defined(CONFIG_AMD_IOMMU_V2_MODULE) || defined(CONFIG_AMD_IOMMU_V2)
- iommu_info.flags = 0;
-- if (0 == amd_iommu_device_info(kdev->pdev, &iommu_info)) {
-- if ((iommu_info.flags & required_iommu_flags) == required_iommu_flags)
-+ if (amd_iommu_device_info(kdev->pdev, &iommu_info) == 0) {
-+ if ((iommu_info.flags & required_iommu_flags) ==
-+ required_iommu_flags)
- cu->hsa_capability |= CRAT_CU_FLAGS_IOMMU_PRESENT;
- }
- #endif
-@@ -1150,7 +1161,8 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
- /* Fill in Subtype: Memory. Only on systems with large BAR (no
- * private FB), report memory as public. On other systems
- * report the total FB size (public+private) as a single
-- * private heap. */
-+ * private heap.
-+ */
- kdev->kfd2kgd->get_local_mem_info(kdev->kgd, &local_mem_info);
- sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
- sub_type_hdr->length);
-@@ -1180,7 +1192,8 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
- crat_table->total_entries++;
-
- /* TODO: Fill in cache information. This information is NOT readily
-- * available in KGD */
-+ * available in KGD
-+ */
- sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
- sub_type_hdr->length);
- ret = kfd_fill_gpu_cache_info(kdev, cu->processor_id_low,
-@@ -1224,17 +1237,17 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
- * NOTE: Call kfd_destroy_crat_image to free CRAT image memory
- *
- * @crat_image: VCRAT image created because ACPI does not have a
-- * CRAT for this device
-+ * CRAT for this device
- * @size: [OUT] size of virtual crat_image
- * @flags: COMPUTE_UNIT_CPU - Create VCRAT for CPU device
-- * COMPUTE_UNIT_GPU - Create VCRAT for GPU
-- * (COMPUTE_UNIT_CPU | COMPUTE_UNIT_GPU) - Create VCRAT for APU
-- * -- this option is not currently implemented. The assumption
-- * is that all AMD APUs will have CRAT
-+ * COMPUTE_UNIT_GPU - Create VCRAT for GPU
-+ * (COMPUTE_UNIT_CPU | COMPUTE_UNIT_GPU) - Create VCRAT for APU
-+ * -- this option is not currently implemented.
-+ * The assumption is that all AMD APUs will have CRAT
- * @kdev: Valid kfd_device required if flags contain COMPUTE_UNIT_GPU
- *
-- * Return 0 if successful else return -ve value
--*/
-+ * Return 0 if successful else return -ve value
-+ */
- int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
- int flags, struct kfd_dev *kdev, uint32_t proximity_domain)
- {
-@@ -1269,8 +1282,8 @@ int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
- ret = kfd_create_vcrat_image_gpu(pcrat_image, size,
- kdev, proximity_domain);
- break;
-- case (COMPUTE_UNIT_CPU | COMPUTE_UNIT_GPU) :
-- /*TODO:*/
-+ case (COMPUTE_UNIT_CPU | COMPUTE_UNIT_GPU):
-+ /* TODO: */
- ret = -EINVAL;
- pr_err("VCRAT not implemented for APU\n");
- break;
-@@ -1287,12 +1300,10 @@ int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
-
- /* kfd_destroy_crat_image
- *
-- * @crat_image: [IN] - crat_image from kfd_create_crat_image_xxx(..)
-+ * @crat_image: [IN] - crat_image from kfd_create_crat_image_xxx(..)
- *
- */
- void kfd_destroy_crat_image(void *crat_image)
- {
-- if (crat_image)
-- kfree(crat_image);
-- return;
-+ kfree(crat_image);
- }
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
-index f01aea2..00de41f 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
-@@ -46,8 +46,8 @@
- #define CRAT_OEMID_64BIT_MASK ((1ULL << (CRAT_OEMID_LENGTH * 8)) - 1)
-
- /* Compute Unit flags */
--#define COMPUTE_UNIT_CPU (1 << 0) /* Create Virtual CRAT for CPU */
--#define COMPUTE_UNIT_GPU (1 << 1) /* Create Virtual CRAT for GPU */
-+#define COMPUTE_UNIT_CPU (1 << 0) /* Create Virtual CRAT for CPU */
-+#define COMPUTE_UNIT_GPU (1 << 1) /* Create Virtual CRAT for GPU */
-
- struct crat_header {
- uint32_t signature;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
-index 5fea0d3..0fdc147 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
-@@ -64,104 +64,112 @@ static int dbgdev_diq_submit_ib(struct kfd_dbgdev *dbgdev,
- union ULARGE_INTEGER *largep;
- union ULARGE_INTEGER addr;
-
-- do {
-- if ((kq == NULL) || (packet_buff == NULL) || (size_in_bytes == 0)) {
-- pr_debug("Error! kfd: In func %s >> Illegal packet parameters\n", __func__);
-- status = -EINVAL;
-- break;
-- }
-- /* todo - enter proper locking to be multithreaded safe */
--
-- /* We acquire a buffer from DIQ
-- * The receive packet buff will be sitting on the Indirect Buffer
-- * and in the PQ we put the IB packet + sync packet(s).
-- */
-- if (sync)
-- pq_packets_size_in_bytes +=
-- sizeof(struct pm4_mec_release_mem);
-- status = kq->ops.acquire_packet_buffer(kq, pq_packets_size_in_bytes / sizeof(uint32_t), &ib_packet_buff);
-- if (status != 0) {
-- pr_debug("Error! kfd: In func %s >> acquire_packet_buffer failed\n", __func__);
-- break;
-- }
--
-- memset(ib_packet_buff, 0, pq_packets_size_in_bytes);
-+ if ((kq == NULL) || (packet_buff == NULL) ||
-+ (size_in_bytes == 0)) {
-+ pr_debug("Error! kfd: In func %s >> Illegal packet parameters\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+ /* todo - enter proper locking to be multithreaded safe */
-+
-+ /* We acquire a buffer from DIQ
-+ * The receive packet buff will be sitting on the Indirect
-+ * Buffer and in the PQ we put the IB packet + sync packet(s).
-+ */
-+ if (sync)
-+ pq_packets_size_in_bytes +=
-+ sizeof(struct pm4_mec_release_mem);
-+ status = kq->ops.acquire_packet_buffer(kq,
-+ pq_packets_size_in_bytes / sizeof(uint32_t),
-+ &ib_packet_buff);
-+ if (status != 0) {
-+ pr_debug("Error! kfd: In func %s >> acquire_packet_buffer failed\n",
-+ __func__);
-+ return status;
-+ }
-
-- ib_packet = (struct pm4__indirect_buffer_pasid *) (ib_packet_buff);
-+ memset(ib_packet_buff, 0, pq_packets_size_in_bytes);
-
-- ib_packet->header.count = 3;
-- ib_packet->header.opcode = IT_INDIRECT_BUFFER_PASID;
-- ib_packet->header.type = PM4_TYPE_3;
-+ ib_packet =
-+ (struct pm4__indirect_buffer_pasid *) (ib_packet_buff);
-
-- largep = (union ULARGE_INTEGER *) &vmid0_address;
-+ ib_packet->header.count = 3;
-+ ib_packet->header.opcode = IT_INDIRECT_BUFFER_PASID;
-+ ib_packet->header.type = PM4_TYPE_3;
-
-- ib_packet->bitfields2.ib_base_lo = largep->u.low_part >> 2;
-- ib_packet->bitfields3.ib_base_hi = largep->u.high_part;
-+ largep = (union ULARGE_INTEGER *) &vmid0_address;
-
-- ib_packet->control = (1 << 23) | (1 << 31) |
-- ((size_in_bytes / sizeof(uint32_t)) & 0xfffff);
-+ ib_packet->bitfields2.ib_base_lo = largep->u.low_part >> 2;
-+ ib_packet->bitfields3.ib_base_hi = largep->u.high_part;
-
-- ib_packet->bitfields5.pasid = pasid;
-+ ib_packet->control = (1 << 23) | (1 << 31) |
-+ ((size_in_bytes / sizeof(uint32_t)) & 0xfffff);
-
-- if (!sync) {
-- kq->ops.submit_packet(kq);
-- break;
-- }
-+ ib_packet->bitfields5.pasid = pasid;
-
-- /*
-- * for now we use release mem for GPU-CPU synchronization
-- * Consider WaitRegMem + WriteData as a better alternative
-- * we get a GART allocations ( gpu/cpu mapping),
-- * for the sync variable, and wait until:
-- * (a) Sync with HW
-- * (b) Sync var is written by CP to mem.
-- */
-- rm_packet = (struct pm4_mec_release_mem *) (ib_packet_buff +
-- (sizeof(struct pm4__indirect_buffer_pasid) / sizeof(unsigned int)));
--
-- status = kfd_gtt_sa_allocate(dbgdev->dev, sizeof(uint64_t),
-- &mem_obj);
-+ if (!sync) {
-+ kq->ops.submit_packet(kq);
-+ return status;
-+ }
-
-- if (status == 0) {
-+ /*
-+ * for now we use release mem for GPU-CPU synchronization
-+ * Consider WaitRegMem + WriteData as a better alternative
-+ * we get a GART allocations ( gpu/cpu mapping),
-+ * for the sync variable, and wait until:
-+ * (a) Sync with HW
-+ * (b) Sync var is written by CP to mem.
-+ */
-+ rm_packet = (struct pm4_mec_release_mem *) (ib_packet_buff +
-+ (sizeof(struct pm4__indirect_buffer_pasid) /
-+ sizeof(unsigned int)));
-+
-+ status = kfd_gtt_sa_allocate(dbgdev->dev, sizeof(uint64_t),
-+ &mem_obj);
-+
-+ if (status != 0) {
-+ pr_debug("Error! kfd: In func %s >> failed to allocate GART memory\n",
-+ __func__);
-+ return status;
-+ }
-
-- rm_state = (uint64_t *) mem_obj->cpu_ptr;
-+ rm_state = (uint64_t *) mem_obj->cpu_ptr;
-
-- *rm_state = QUEUESTATE__ACTIVE_COMPLETION_PENDING;
-+ *rm_state = QUEUESTATE__ACTIVE_COMPLETION_PENDING;
-
-- rm_packet->header.opcode = IT_RELEASE_MEM;
-- rm_packet->header.type = PM4_TYPE_3;
-- rm_packet->header.count = sizeof(struct pm4_mec_release_mem) / sizeof(unsigned int) - 2;
-+ rm_packet->header.opcode = IT_RELEASE_MEM;
-+ rm_packet->header.type = PM4_TYPE_3;
-+ rm_packet->header.count = sizeof(struct pm4_mec_release_mem) /
-+ sizeof(unsigned int) - 2;
-
-- rm_packet->bitfields2.event_type = CACHE_FLUSH_AND_INV_TS_EVENT;
-- rm_packet->bitfields2.event_index = event_index___release_mem__end_of_pipe;
-- rm_packet->bitfields2.cache_policy = cache_policy___release_mem__lru;
-- rm_packet->bitfields2.atc = 0;
-- rm_packet->bitfields2.tc_wb_action_ena = 1;
-+ rm_packet->bitfields2.event_type = CACHE_FLUSH_AND_INV_TS_EVENT;
-+ rm_packet->bitfields2.event_index =
-+ event_index___release_mem__end_of_pipe;
-+ rm_packet->bitfields2.cache_policy = cache_policy___release_mem__lru;
-+ rm_packet->bitfields2.atc = 0;
-+ rm_packet->bitfields2.tc_wb_action_ena = 1;
-
-- addr.quad_part = mem_obj->gpu_addr;
-+ addr.quad_part = mem_obj->gpu_addr;
-
-- rm_packet->bitfields4.address_lo_32b = addr.u.low_part >> 2;
-- rm_packet->address_hi = addr.u.high_part;
-+ rm_packet->bitfields4.address_lo_32b = addr.u.low_part >> 2;
-+ rm_packet->address_hi = addr.u.high_part;
-
-- rm_packet->bitfields3.data_sel = data_sel___release_mem__send_64_bit_data;
-- rm_packet->bitfields3.int_sel = int_sel___release_mem__send_data_after_write_confirm;
-- rm_packet->bitfields3.dst_sel = dst_sel___release_mem__memory_controller;
-+ rm_packet->bitfields3.data_sel =
-+ data_sel___release_mem__send_64_bit_data;
-+ rm_packet->bitfields3.int_sel =
-+ int_sel___release_mem__send_data_after_write_confirm;
-+ rm_packet->bitfields3.dst_sel =
-+ dst_sel___release_mem__memory_controller;
-
-- rm_packet->data_lo = QUEUESTATE__ACTIVE;
-+ rm_packet->data_lo = QUEUESTATE__ACTIVE;
-
-- kq->ops.submit_packet(kq);
-+ kq->ops.submit_packet(kq);
-
-- /* Wait till CP writes sync code: */
-+ /* Wait till CP writes sync code: */
-
-- status = amdkfd_fence_wait_timeout(
-- (unsigned int *) rm_state,
-+ status = amdkfd_fence_wait_timeout((unsigned int *) rm_state,
- QUEUESTATE__ACTIVE, 1500);
-
-- } else {
-- pr_debug("Error! kfd: In func %s >> failed to allocate GART memory\n", __func__);
-- }
-- } while (false);
--
- if (rm_state != NULL)
- kfd_gtt_sa_free(dbgdev->dev, mem_obj);
-
-@@ -170,7 +178,9 @@ static int dbgdev_diq_submit_ib(struct kfd_dbgdev *dbgdev,
-
- static int dbgdev_register_nodiq(struct kfd_dbgdev *dbgdev)
- {
-- /* no action is needed in this case, just make sure diq will not be used */
-+ /* no action is needed in this case, just make sure diq will not
-+ * be used
-+ */
-
- dbgdev->kq = NULL;
-
-@@ -186,37 +196,33 @@ static int dbgdev_register_diq(struct kfd_dbgdev *dbgdev)
- unsigned int qid;
- struct process_queue_manager *pqm = dbgdev->pqm;
-
-- do {
--
-- if (!pqm) {
-- pr_debug("Error! kfd: In func %s >> No PQM\n", __func__);
-- status = -EFAULT;
-- break;
-- }
--
-- properties.type = KFD_QUEUE_TYPE_DIQ;
-+ if (!pqm) {
-+ pr_debug("Error! kfd: In func %s >> No PQM\n",
-+ __func__);
-+ return -EFAULT;
-+ }
-
-- status = pqm_create_queue(dbgdev->pqm, dbgdev->dev, NULL,
-- &properties, &qid);
-+ properties.type = KFD_QUEUE_TYPE_DIQ;
-
-- if (status != 0) {
-- pr_debug("Error! kfd: In func %s >> Create Queue failed\n", __func__);
-- break;
-- }
-+ status = pqm_create_queue(dbgdev->pqm, dbgdev->dev, NULL,
-+ &properties, &qid);
-
-- pr_debug("kfd: DIQ Created with queue id: %d\n", qid);
-+ if (status != 0) {
-+ pr_debug("Error! kfd: In func %s >> Create Queue failed\n",
-+ __func__);
-+ return status;
-+ }
-
-- kq = pqm_get_kernel_queue(dbgdev->pqm, qid);
-+ pr_debug("kfd: DIQ Created with queue id: %d\n", qid);
-
-- if (kq == NULL) {
-- pr_debug("Error! kfd: In func %s >> Error getting Kernel Queue\n", __func__);
-- status = -ENOMEM;
-- break;
-- }
-+ kq = pqm_get_kernel_queue(dbgdev->pqm, qid);
-
-- dbgdev->kq = kq;
--
-- } while (false);
-+ if (kq == NULL) {
-+ pr_debug("Error! kfd: In func %s >> Error getting Kernel Queue\n",
-+ __func__);
-+ return -ENOMEM;
-+ }
-+ dbgdev->kq = kq;
-
- return status;
- }
-@@ -233,7 +239,9 @@ static int dbgdev_unregister_diq(struct kfd_dbgdev *dbgdev)
- {
- /* todo - if needed, kill wavefronts and disable watch */
- int status = 0;
-- if ((dbgdev == NULL) || (dbgdev->pqm == NULL) || (dbgdev->kq == NULL)) {
-+
-+ if ((dbgdev == NULL) || (dbgdev->pqm == NULL) ||
-+ (dbgdev->kq == NULL)) {
- pr_debug("kfd Err:In func %s >> can't destroy diq\n", __func__);
- status = -EFAULT;
- } else {
-@@ -260,13 +268,16 @@ static void dbgdev_address_watch_set_registers(
- cntl->u32All = 0;
-
- if (adw_info->watch_mask != NULL)
-- cntl->bitfields.mask = (uint32_t) (adw_info->watch_mask[index] & ADDRESS_WATCH_REG_CNTL_DEFAULT_MASK);
-+ cntl->bitfields.mask =
-+ (uint32_t) (adw_info->watch_mask[index] &
-+ ADDRESS_WATCH_REG_CNTL_DEFAULT_MASK);
- else
- cntl->bitfields.mask = ADDRESS_WATCH_REG_CNTL_DEFAULT_MASK;
-
- addr.quad_part = (unsigned long long) adw_info->watch_address[index];
-
-- addrHi->bitfields.addr = addr.u.high_part & ADDRESS_WATCH_REG_ADDHIGH_MASK;
-+ addrHi->bitfields.addr = addr.u.high_part &
-+ ADDRESS_WATCH_REG_ADDHIGH_MASK;
- addrLo->bitfields.addr =
- (addr.u.low_part >> ADDRESS_WATCH_REG_ADDLOW_SHIFT);
-
-@@ -276,8 +287,10 @@ static void dbgdev_address_watch_set_registers(
- if (KFD_IS_DGPU(asic_family) == false)
- cntl->u32All |= ADDRESS_WATCH_REG_CNTL_ATC_BIT;
- pr_debug("\t\t%20s %08x\n", "set reg mask :", cntl->bitfields.mask);
-- pr_debug("\t\t%20s %08x\n", "set reg add high :", addrHi->bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "set reg add low :", addrLo->bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "set reg add high :",
-+ addrHi->bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "set reg add low :",
-+ addrLo->bitfields.addr);
-
- }
-
-@@ -285,8 +298,6 @@ static int dbgdev_address_watch_nodiq(struct kfd_dbgdev *dbgdev,
- struct dbg_address_watch_info *adw_info)
- {
-
-- int status = 0;
--
- union TCP_WATCH_ADDR_H_BITS addrHi;
- union TCP_WATCH_ADDR_L_BITS addrLo;
- union TCP_WATCH_CNTL_BITS cntl;
-@@ -296,68 +307,67 @@ static int dbgdev_address_watch_nodiq(struct kfd_dbgdev *dbgdev,
-
- struct kfd_process_device *pdd;
-
-- do {
-- /* taking the vmid for that process on the safe way using pdd */
-- pdd = kfd_get_process_device_data(dbgdev->dev,
-- adw_info->process);
-- if (!pdd) {
-- pr_debug("Error! kfd: In func %s >> no PDD available\n", __func__);
-- status = -EFAULT;
-- break;
-- }
--
-- addrHi.u32All = 0;
-- addrLo.u32All = 0;
-- cntl.u32All = 0;
--
-- vmid = pdd->qpd.vmid;
--
-- if ((adw_info->num_watch_points > MAX_WATCH_ADDRESSES)
-- || (adw_info->num_watch_points == 0)) {
-- status = -EINVAL;
-- break;
-- }
--
-- if ((adw_info->watch_mode == NULL) || (adw_info->watch_address == NULL)) {
-- status = -EINVAL;
-- break;
-- }
-+ /* taking the vmid for that process on the safe way
-+ * using pdd
-+ */
-+ pdd = kfd_get_process_device_data(dbgdev->dev,
-+ adw_info->process);
-+ if (!pdd) {
-+ pr_debug("Error! kfd: In func %s >> no PDD available\n",
-+ __func__);
-+ return -EFAULT;
-+ }
-
-- for (i = 0; i < adw_info->num_watch_points; i++) {
-+ addrHi.u32All = 0;
-+ addrLo.u32All = 0;
-+ cntl.u32All = 0;
-
-- dbgdev_address_watch_set_registers(
-- adw_info,
-- &addrHi,
-- &addrLo,
-- &cntl,
-- i,
-- vmid,
-- dbgdev->dev->device_info->asic_family
-- );
-+ vmid = pdd->qpd.vmid;
-
-- pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-- pr_debug("\t\t%20s %08x\n", "register index :", i);
-- pr_debug("\t\t%20s %08x\n", "vmid is :", vmid);
-- pr_debug("\t\t%20s %08x\n", "Address Low is :", addrLo.bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "Address high is :", addrHi.bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "Address high is :", addrHi.bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "Control Mask is :", cntl.bitfields.mask);
-- pr_debug("\t\t%20s %08x\n", "Control Mode is :", cntl.bitfields.mode);
-- pr_debug("\t\t%20s %08x\n", "Control Vmid is :", cntl.bitfields.vmid);
-- pr_debug("\t\t%20s %08x\n", "Control atc is :", cntl.bitfields.atc);
-- pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
--
-- pdd->dev->kfd2kgd->address_watch_execute(
-- dbgdev->dev->kgd,
-- i,
-- cntl.u32All,
-- addrHi.u32All,
-- addrLo.u32All);
-- }
-+ if ((adw_info->num_watch_points > MAX_WATCH_ADDRESSES) ||
-+ (adw_info->num_watch_points == 0) || (adw_info->watch_mode == NULL))
-+ return -EINVAL;
-
-- } while (false);
-+ for (i = 0; i < adw_info->num_watch_points; i++) {
-+
-+ dbgdev_address_watch_set_registers(
-+ adw_info,
-+ &addrHi,
-+ &addrLo,
-+ &cntl,
-+ i,
-+ vmid,
-+ dbgdev->dev->device_info->asic_family
-+ );
-+
-+ pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-+ pr_debug("\t\t%20s %08x\n", "register index :", i);
-+ pr_debug("\t\t%20s %08x\n", "vmid is :", vmid);
-+ pr_debug("\t\t%20s %08x\n", "Address Low is :",
-+ addrLo.bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "Address high is :",
-+ addrHi.bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "Address high is :",
-+ addrHi.bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "Control Mask is :",
-+ cntl.bitfields.mask);
-+ pr_debug("\t\t%20s %08x\n", "Control Mode is :",
-+ cntl.bitfields.mode);
-+ pr_debug("\t\t%20s %08x\n", "Control Vmid is :",
-+ cntl.bitfields.vmid);
-+ pr_debug("\t\t%20s %08x\n", "Control atc is :",
-+ cntl.bitfields.atc);
-+ pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-+
-+ pdd->dev->kfd2kgd->address_watch_execute(
-+ dbgdev->dev->kgd,
-+ i,
-+ cntl.u32All,
-+ addrHi.u32All,
-+ addrLo.u32All);
-+ }
-
-- return status;
-+ return 0;
- }
-
- static int dbgdev_address_watch_diq(struct kfd_dbgdev *dbgdev,
-@@ -386,131 +396,135 @@ static int dbgdev_address_watch_diq(struct kfd_dbgdev *dbgdev,
- addrLo.u32All = 0;
- cntl.u32All = 0;
-
-- do {
--
-- if ((adw_info->num_watch_points > MAX_WATCH_ADDRESSES) || (adw_info->num_watch_points == 0)) {
-- status = -EINVAL;
-- break;
-- }
-+ if ((adw_info->num_watch_points > MAX_WATCH_ADDRESSES) ||
-+ (adw_info->num_watch_points == 0) ||
-+ !adw_info->watch_mode || !adw_info->watch_address)
-+ return -EINVAL;
-
-- if ((NULL == adw_info->watch_mode) || (NULL == adw_info->watch_address)) {
-- status = -EINVAL;
-- break;
-- }
-+ status = dbgdev->kq->ops.acquire_inline_ib(dbgdev->kq,
-+ ib_size/sizeof(uint32_t),
-+ &packet_buff_uint, &packet_buff_gpu_addr);
-+ if (status != 0)
-+ return status;
-+ memset(packet_buff_uint, 0, ib_size);
-+
-+ packets_vec = (struct pm4__set_config_reg *) (packet_buff_uint);
-+
-+ packets_vec[0].header.count = 1;
-+ packets_vec[0].header.opcode = IT_SET_CONFIG_REG;
-+ packets_vec[0].header.type = PM4_TYPE_3;
-+ packets_vec[0].bitfields2.vmid_shift =
-+ ADDRESS_WATCH_CNTL_OFFSET;
-+ packets_vec[0].bitfields2.insert_vmid = 1;
-+ packets_vec[1].ordinal1 = packets_vec[0].ordinal1;
-+ packets_vec[1].bitfields2.insert_vmid = 0;
-+ packets_vec[2].ordinal1 = packets_vec[0].ordinal1;
-+ packets_vec[2].bitfields2.insert_vmid = 0;
-+ packets_vec[3].ordinal1 = packets_vec[0].ordinal1;
-+ packets_vec[3].bitfields2.vmid_shift =
-+ ADDRESS_WATCH_CNTL_OFFSET;
-+ packets_vec[3].bitfields2.insert_vmid = 1;
-+
-+ for (i = 0; i < adw_info->num_watch_points; i++) {
-+
-+ dbgdev_address_watch_set_registers(
-+ adw_info,
-+ &addrHi,
-+ &addrLo,
-+ &cntl,
-+ i,
-+ vmid,
-+ dbgdev->dev->device_info->asic_family
-+ );
-
-- status = dbgdev->kq->ops.acquire_inline_ib(dbgdev->kq,
-- ib_size/sizeof(uint32_t),
-- &packet_buff_uint, &packet_buff_gpu_addr);
--
-- if (status != 0)
-- break;
--
-- memset(packet_buff_uint, 0, ib_size);
--
-- packets_vec = (struct pm4__set_config_reg *) (packet_buff_uint);
--
-- packets_vec[0].header.count = 1;
-- packets_vec[0].header.opcode = IT_SET_CONFIG_REG;
-- packets_vec[0].header.type = PM4_TYPE_3;
-- packets_vec[0].bitfields2.vmid_shift = ADDRESS_WATCH_CNTL_OFFSET;
-- packets_vec[0].bitfields2.insert_vmid = 1;
-- packets_vec[1].ordinal1 = packets_vec[0].ordinal1;
-- packets_vec[1].bitfields2.insert_vmid = 0;
-- packets_vec[2].ordinal1 = packets_vec[0].ordinal1;
-- packets_vec[2].bitfields2.insert_vmid = 0;
-- packets_vec[3].ordinal1 = packets_vec[0].ordinal1;
-- packets_vec[3].bitfields2.vmid_shift = ADDRESS_WATCH_CNTL_OFFSET;
-- packets_vec[3].bitfields2.insert_vmid = 1;
--
-- for (i = 0; i < adw_info->num_watch_points; i++) {
--
-- dbgdev_address_watch_set_registers(
-- adw_info,
-- &addrHi,
-- &addrLo,
-- &cntl,
-+ pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-+ pr_debug("\t\t%20s %08x\n", "register index :", i);
-+ pr_debug("\t\t%20s %08x\n", "vmid is :", vmid);
-+ pr_debug("\t\t%20s %p\n", "Add ptr is :",
-+ adw_info->watch_address);
-+ pr_debug("\t\t%20s %08llx\n", "Add is :",
-+ adw_info->watch_address[i]);
-+ pr_debug("\t\t%20s %08x\n", "Address Low is :",
-+ addrLo.bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "Address high is :",
-+ addrHi.bitfields.addr);
-+ pr_debug("\t\t%20s %08x\n", "Control Mask is :",
-+ cntl.bitfields.mask);
-+ pr_debug("\t\t%20s %08x\n", "Control Mode is :",
-+ cntl.bitfields.mode);
-+ pr_debug("\t\t%20s %08x\n", "Control Vmid is :",
-+ cntl.bitfields.vmid);
-+ pr_debug("\t\t%20s %08x\n", "Control atc is :",
-+ cntl.bitfields.atc);
-+ pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-+
-+ aw_reg_add_dword =
-+ dbgdev->dev->kfd2kgd
-+ ->address_watch_get_offset(
-+ dbgdev->dev->kgd,
- i,
-- vmid,
-- dbgdev->dev->device_info->asic_family
-- );
--
-- pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
-- pr_debug("\t\t%20s %08x\n", "register index :", i);
-- pr_debug("\t\t%20s %08x\n", "vmid is :", vmid);
-- pr_debug("\t\t%20s %p\n", "Add ptr is :", adw_info->watch_address);
-- pr_debug("\t\t%20s %08llx\n", "Add is :", adw_info->watch_address[i]);
-- pr_debug("\t\t%20s %08x\n", "Address Low is :", addrLo.bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "Address high is :", addrHi.bitfields.addr);
-- pr_debug("\t\t%20s %08x\n", "Control Mask is :", cntl.bitfields.mask);
-- pr_debug("\t\t%20s %08x\n", "Control Mode is :", cntl.bitfields.mode);
-- pr_debug("\t\t%20s %08x\n", "Control Vmid is :", cntl.bitfields.vmid);
-- pr_debug("\t\t%20s %08x\n", "Control atc is :", cntl.bitfields.atc);
-- pr_debug("\t\t%30s\n", "* * * * * * * * * * * * * * * * * *");
--
-- aw_reg_add_dword =
-- dbgdev->dev->kfd2kgd
-- ->address_watch_get_offset(
-- dbgdev->dev->kgd,
-- i,
-- ADDRESS_WATCH_REG_CNTL);
-+ ADDRESS_WATCH_REG_CNTL);
-
-- packets_vec[0].bitfields2.reg_offset = aw_reg_add_dword - CONFIG_REG_BASE;
-- packets_vec[0].reg_data[0] = cntl.u32All;
--
-- aw_reg_add_dword =
-- dbgdev->dev->kfd2kgd
-- ->address_watch_get_offset(
-- dbgdev->dev->kgd,
-- i,
-- ADDRESS_WATCH_REG_ADDR_HI);
-+ packets_vec[0].bitfields2.reg_offset =
-+ aw_reg_add_dword - CONFIG_REG_BASE;
-+ packets_vec[0].reg_data[0] = cntl.u32All;
-
-+ aw_reg_add_dword =
-+ dbgdev->dev->kfd2kgd
-+ ->address_watch_get_offset(
-+ dbgdev->dev->kgd,
-+ i,
-+ ADDRESS_WATCH_REG_ADDR_HI);
-
-- packets_vec[1].bitfields2.reg_offset = aw_reg_add_dword - CONFIG_REG_BASE;
-- packets_vec[1].reg_data[0] = addrHi.u32All;
-
-- aw_reg_add_dword =
-- dbgdev->dev->kfd2kgd
-- ->address_watch_get_offset(
-- dbgdev->dev->kgd,
-- i,
-- ADDRESS_WATCH_REG_ADDR_LO);
-+ packets_vec[1].bitfields2.reg_offset =
-+ aw_reg_add_dword - CONFIG_REG_BASE;
-+ packets_vec[1].reg_data[0] = addrHi.u32All;
-
-+ aw_reg_add_dword =
-+ dbgdev->dev->kfd2kgd
-+ ->address_watch_get_offset(
-+ dbgdev->dev->kgd,
-+ i,
-+ ADDRESS_WATCH_REG_ADDR_LO);
-
-- packets_vec[2].bitfields2.reg_offset = aw_reg_add_dword - CONFIG_REG_BASE;
-- packets_vec[2].reg_data[0] = addrLo.u32All;
-
-- /* enable watch flag if address is not zero*/
-- if (adw_info->watch_address[i] > 0)
-- cntl.bitfields.valid = 1;
-- else
-- cntl.bitfields.valid = 0;
-+ packets_vec[2].bitfields2.reg_offset =
-+ aw_reg_add_dword - CONFIG_REG_BASE;
-+ packets_vec[2].reg_data[0] = addrLo.u32All;
-
-- aw_reg_add_dword =
-- dbgdev->dev->kfd2kgd
-- ->address_watch_get_offset(
-- dbgdev->dev->kgd,
-- i,
-- ADDRESS_WATCH_REG_CNTL);
-+ /* enable watch flag if address is not zero*/
-+ if (adw_info->watch_address[i] > 0)
-+ cntl.bitfields.valid = 1;
-+ else
-+ cntl.bitfields.valid = 0;
-
-+ aw_reg_add_dword =
-+ dbgdev->dev->kfd2kgd
-+ ->address_watch_get_offset(
-+ dbgdev->dev->kgd,
-+ i,
-+ ADDRESS_WATCH_REG_CNTL);
-
-- packets_vec[3].bitfields2.reg_offset = aw_reg_add_dword - CONFIG_REG_BASE;
-- packets_vec[3].reg_data[0] = cntl.u32All;
-
-- status = dbgdev_diq_submit_ib(
-- dbgdev,
-- adw_info->process->pasid,
-- packet_buff_gpu_addr,
-- packet_buff_uint,
-- ib_size, true);
-+ packets_vec[3].bitfields2.reg_offset =
-+ aw_reg_add_dword - CONFIG_REG_BASE;
-+ packets_vec[3].reg_data[0] = cntl.u32All;
-
-- if (status != 0) {
-- pr_debug("Error! kfd: In func %s >> failed to submit DIQ packet\n", __func__);
-- break;
-- }
-+ status = dbgdev_diq_submit_ib(
-+ dbgdev,
-+ adw_info->process->pasid,
-+ packet_buff_gpu_addr,
-+ packet_buff_uint,
-+ ib_size, true);
-
-+ if (status != 0) {
-+ pr_debug("Error! kfd: In func %s >> failed to submit DIQ packet\n",
-+ __func__);
-+ return status;
- }
-
-- } while (false);
-+ }
-
- return status;
-
-@@ -525,26 +539,30 @@ static int dbgdev_wave_control_set_registers(
- int status = 0;
- union SQ_CMD_BITS reg_sq_cmd;
- union GRBM_GFX_INDEX_BITS reg_gfx_index;
-+ struct HsaDbgWaveMsgAMDGen2 *pMsg;
-
- reg_sq_cmd.u32All = 0;
--
- reg_gfx_index.u32All = 0;
-+ pMsg = &wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2;
-
- switch (wac_info->mode) {
-- case HSA_DBG_WAVEMODE_SINGLE: /* Send command to single wave */
-- /*limit access to the process waves only,by setting vmid check */
-+ /* Send command to single wave */
-+ case HSA_DBG_WAVEMODE_SINGLE:
-+ /* limit access to the process waves only,by setting vmid check
-+ */
- reg_sq_cmd.bits.check_vmid = 1;
-- reg_sq_cmd.bits.simd_id = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.SIMD;
-- reg_sq_cmd.bits.wave_id = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.WaveId;
-+ reg_sq_cmd.bits.simd_id = pMsg->ui32.SIMD;
-+ reg_sq_cmd.bits.wave_id = pMsg->ui32.WaveId;
- reg_sq_cmd.bits.mode = SQ_IND_CMD_MODE_SINGLE;
-
-- reg_gfx_index.bits.sh_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.ShaderArray;
-- reg_gfx_index.bits.se_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.ShaderEngine;
-- reg_gfx_index.bits.instance_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.HSACU;
-+ reg_gfx_index.bits.sh_index = pMsg->ui32.ShaderArray;
-+ reg_gfx_index.bits.se_index = pMsg->ui32.ShaderEngine;
-+ reg_gfx_index.bits.instance_index = pMsg->ui32.HSACU;
-
- break;
-
-- case HSA_DBG_WAVEMODE_BROADCAST_PROCESS: /* Send command to all waves with matching VMID */
-+ /* Send command to all waves with matching VMID */
-+ case HSA_DBG_WAVEMODE_BROADCAST_PROCESS:
-
-
- reg_gfx_index.bits.sh_broadcast_writes = 1;
-@@ -554,14 +572,15 @@ static int dbgdev_wave_control_set_registers(
- reg_sq_cmd.bits.mode = SQ_IND_CMD_MODE_BROADCAST;
- break;
-
-- case HSA_DBG_WAVEMODE_BROADCAST_PROCESS_CU: /* Send command to all CU waves with matching VMID */
-+ /* Send command to all CU waves with matching VMID */
-+ case HSA_DBG_WAVEMODE_BROADCAST_PROCESS_CU:
-
- reg_sq_cmd.bits.check_vmid = 1;
- reg_sq_cmd.bits.mode = SQ_IND_CMD_MODE_BROADCAST;
-
-- reg_gfx_index.bits.sh_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.ShaderArray;
-- reg_gfx_index.bits.se_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.ShaderEngine;
-- reg_gfx_index.bits.instance_index = wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.ui32.HSACU;
-+ reg_gfx_index.bits.sh_index = pMsg->ui32.ShaderArray;
-+ reg_gfx_index.bits.se_index = pMsg->ui32.ShaderEngine;
-+ reg_gfx_index.bits.instance_index = pMsg->ui32.HSACU;
-
- break;
-
-@@ -636,91 +655,98 @@ static int dbgdev_wave_control_diq(struct kfd_dbgdev *dbgdev,
- size_t ib_size = sizeof(struct pm4__set_config_reg) * 3;
-
- reg_sq_cmd.u32All = 0;
-- do {
-
-- status = dbgdev_wave_control_set_registers(wac_info,
-- &reg_sq_cmd,
-- &reg_gfx_index,
-- dbgdev->dev->device_info->asic_family);
-+ status = dbgdev_wave_control_set_registers(wac_info,
-+ &reg_sq_cmd,
-+ &reg_gfx_index,
-+ dbgdev->dev->device_info->asic_family);
-
-- /* we do not control the VMID in DIQ,so reset it to a known value */
-- reg_sq_cmd.bits.vm_id = 0;
-- if (status != 0)
-- break;
-- pr_debug("\t\t %30s\n", "* * * * * * * * * * * * * * * * * *");
--
-- pr_debug("\t\t mode is: %u\n", wac_info->mode);
-- pr_debug("\t\t operand is: %u\n", wac_info->operand);
-- pr_debug("\t\t trap id is: %u\n", wac_info->trapId);
-- pr_debug("\t\t msg value is: %u\n", wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
-- pr_debug("\t\t vmid is: N/A\n");
--
-- pr_debug("\t\t chk_vmid is : %u\n", reg_sq_cmd.bitfields.check_vmid);
-- pr_debug("\t\t command is : %u\n", reg_sq_cmd.bitfields.cmd);
-- pr_debug("\t\t queue id is : %u\n", reg_sq_cmd.bitfields.queue_id);
-- pr_debug("\t\t simd id is : %u\n", reg_sq_cmd.bitfields.simd_id);
-- pr_debug("\t\t mode is : %u\n", reg_sq_cmd.bitfields.mode);
-- pr_debug("\t\t vm_id is : %u\n", reg_sq_cmd.bitfields.vm_id);
-- pr_debug("\t\t wave_id is : %u\n", reg_sq_cmd.bitfields.wave_id);
--
-- pr_debug("\t\t ibw is : %u\n", reg_gfx_index.bitfields.instance_broadcast_writes);
-- pr_debug("\t\t ii is : %u\n", reg_gfx_index.bitfields.instance_index);
-- pr_debug("\t\t sebw is : %u\n", reg_gfx_index.bitfields.se_broadcast_writes);
-- pr_debug("\t\t se_ind is : %u\n", reg_gfx_index.bitfields.se_index);
-- pr_debug("\t\t sh_ind is : %u\n", reg_gfx_index.bitfields.sh_index);
-- pr_debug("\t\t sbw is : %u\n", reg_gfx_index.bitfields.sh_broadcast_writes);
--
-- pr_debug("\t\t %30s\n", "* * * * * * * * * * * * * * * * * *");
--
-- status = dbgdev->kq->ops.acquire_inline_ib(dbgdev->kq,
-- ib_size / sizeof(uint32_t),
-- &packet_buff_uint, &packet_buff_gpu_addr);
--
-- if (status != 0)
-- break;
--
-- memset(packet_buff_uint, 0, ib_size);
--
-- packets_vec = (struct pm4__set_config_reg *) packet_buff_uint;
-- packets_vec[0].header.count = 1;
-- packets_vec[0].header.opcode = IT_SET_UCONFIG_REG;
-- packets_vec[0].header.type = PM4_TYPE_3;
-- packets_vec[0].bitfields2.reg_offset = GRBM_GFX_INDEX / (sizeof(uint32_t)) - USERCONFIG_REG_BASE;
-- packets_vec[0].bitfields2.insert_vmid = 0;
-- packets_vec[0].reg_data[0] = reg_gfx_index.u32All;
--
-- packets_vec[1].header.count = 1;
-- packets_vec[1].header.opcode = IT_SET_CONFIG_REG;
-- packets_vec[1].header.type = PM4_TYPE_3;
-- packets_vec[1].bitfields2.reg_offset = SQ_CMD / (sizeof(uint32_t)) - CONFIG_REG_BASE;
-- packets_vec[1].bitfields2.vmid_shift = SQ_CMD_VMID_OFFSET;
-- packets_vec[1].bitfields2.insert_vmid = 1;
-- packets_vec[1].reg_data[0] = reg_sq_cmd.u32All;
--
-- /* Restore the GRBM_GFX_INDEX register */
--
-- reg_gfx_index.u32All = 0;
-- reg_gfx_index.bits.sh_broadcast_writes = 1;
-- reg_gfx_index.bits.instance_broadcast_writes = 1;
-- reg_gfx_index.bits.se_broadcast_writes = 1;
-+ /* we do not control the VMID in DIQ, so reset it to a
-+ * known value
-+ */
-+ reg_sq_cmd.bits.vm_id = 0;
-+ if (status != 0)
-+ return status;
-+ pr_debug("\t\t %30s\n", "* * * * * * * * * * * * * * * * * *");
-+
-+ pr_debug("\t\t mode is: %u\n", wac_info->mode);
-+ pr_debug("\t\t operand is: %u\n", wac_info->operand);
-+ pr_debug("\t\t trap id is: %u\n", wac_info->trapId);
-+ pr_debug("\t\t msg value is: %u\n", wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
-+ pr_debug("\t\t vmid is: N/A\n");
-+
-+ pr_debug("\t\t chk_vmid is : %u\n", reg_sq_cmd.bitfields.check_vmid);
-+ pr_debug("\t\t command is : %u\n", reg_sq_cmd.bitfields.cmd);
-+ pr_debug("\t\t queue id is : %u\n", reg_sq_cmd.bitfields.queue_id);
-+ pr_debug("\t\t simd id is : %u\n", reg_sq_cmd.bitfields.simd_id);
-+ pr_debug("\t\t mode is : %u\n", reg_sq_cmd.bitfields.mode);
-+ pr_debug("\t\t vm_id is : %u\n", reg_sq_cmd.bitfields.vm_id);
-+ pr_debug("\t\t wave_id is : %u\n", reg_sq_cmd.bitfields.wave_id);
-+
-+ pr_debug("\t\t ibw is : %u\n",
-+ reg_gfx_index.bitfields.instance_broadcast_writes);
-+ pr_debug("\t\t ii is : %u\n",
-+ reg_gfx_index.bitfields.instance_index);
-+ pr_debug("\t\t sebw is : %u\n",
-+ reg_gfx_index.bitfields.se_broadcast_writes);
-+ pr_debug("\t\t se_ind is : %u\n",
-+ reg_gfx_index.bitfields.se_index);
-+ pr_debug("\t\t sh_ind is : %u\n", reg_gfx_index.bitfields.sh_index);
-+ pr_debug("\t\t sbw is : %u\n",
-+ reg_gfx_index.bitfields.sh_broadcast_writes);
-+
-+ pr_debug("\t\t %30s\n", "* * * * * * * * * * * * * * * * * *");
-+
-+ status = dbgdev->kq->ops.acquire_inline_ib(dbgdev->kq,
-+ ib_size / sizeof(uint32_t),
-+ &packet_buff_uint, &packet_buff_gpu_addr);
-+
-+ if (status != 0)
-+ return status;
-+
-+ memset(packet_buff_uint, 0, ib_size);
-+
-+ packets_vec = (struct pm4__set_config_reg *) packet_buff_uint;
-+ packets_vec[0].header.count = 1;
-+ packets_vec[0].header.opcode = IT_SET_UCONFIG_REG;
-+ packets_vec[0].header.type = PM4_TYPE_3;
-+ packets_vec[0].bitfields2.reg_offset =
-+ GRBM_GFX_INDEX / (sizeof(uint32_t)) - USERCONFIG_REG_BASE;
-+ packets_vec[0].bitfields2.insert_vmid = 0;
-+ packets_vec[0].reg_data[0] = reg_gfx_index.u32All;
-+
-+ packets_vec[1].header.count = 1;
-+ packets_vec[1].header.opcode = IT_SET_CONFIG_REG;
-+ packets_vec[1].header.type = PM4_TYPE_3;
-+ packets_vec[1].bitfields2.reg_offset =
-+ SQ_CMD / (sizeof(uint32_t)) - CONFIG_REG_BASE;
-+ packets_vec[1].bitfields2.vmid_shift = SQ_CMD_VMID_OFFSET;
-+ packets_vec[1].bitfields2.insert_vmid = 1;
-+ packets_vec[1].reg_data[0] = reg_sq_cmd.u32All;
-+
-+ /* Restore the GRBM_GFX_INDEX register */
-
-+ reg_gfx_index.u32All = 0;
-+ reg_gfx_index.bits.sh_broadcast_writes = 1;
-+ reg_gfx_index.bits.instance_broadcast_writes = 1;
-+ reg_gfx_index.bits.se_broadcast_writes = 1;
-
-- packets_vec[2].ordinal1 = packets_vec[0].ordinal1;
-- packets_vec[2].bitfields2.reg_offset = GRBM_GFX_INDEX / (sizeof(uint32_t)) - USERCONFIG_REG_BASE;
-- packets_vec[2].bitfields2.insert_vmid = 0;
-- packets_vec[2].reg_data[0] = reg_gfx_index.u32All;
-
-- status = dbgdev_diq_submit_ib(
-- dbgdev,
-- wac_info->process->pasid,
-- packet_buff_gpu_addr,
-- packet_buff_uint,
-- ib_size, false);
-+ packets_vec[2].ordinal1 = packets_vec[0].ordinal1;
-+ packets_vec[2].bitfields2.reg_offset =
-+ GRBM_GFX_INDEX / (sizeof(uint32_t)) - USERCONFIG_REG_BASE;
-+ packets_vec[2].bitfields2.insert_vmid = 0;
-+ packets_vec[2].reg_data[0] = reg_gfx_index.u32All;
-
-- if (status != 0)
-- pr_debug("%s\n", " Critical Error ! Submit diq packet failed ");
-+ status = dbgdev_diq_submit_ib(
-+ dbgdev,
-+ wac_info->process->pasid,
-+ packet_buff_gpu_addr,
-+ packet_buff_uint,
-+ ib_size, false);
-
-- } while (false);
-+ if (status != 0)
-+ pr_debug("%s\n", " Critical Error ! Submit diq packet failed ");
-
- return status;
- }
-@@ -758,23 +784,37 @@ static int dbgdev_wave_control_nodiq(struct kfd_dbgdev *dbgdev,
- pr_debug("\t\t mode is: %u\n", wac_info->mode);
- pr_debug("\t\t operand is: %u\n", wac_info->operand);
- pr_debug("\t\t trap id is: %u\n", wac_info->trapId);
-- pr_debug("\t\t msg value is: %u\n", wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
-+ pr_debug("\t\t msg value is: %u\n",
-+ wac_info->dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value);
- pr_debug("\t\t vmid is: %u\n", vmid);
-
-- pr_debug("\t\t chk_vmid is : %u\n", reg_sq_cmd.bitfields.check_vmid);
-- pr_debug("\t\t command is : %u\n", reg_sq_cmd.bitfields.cmd);
-- pr_debug("\t\t queue id is : %u\n", reg_sq_cmd.bitfields.queue_id);
-- pr_debug("\t\t simd id is : %u\n", reg_sq_cmd.bitfields.simd_id);
-- pr_debug("\t\t mode is : %u\n", reg_sq_cmd.bitfields.mode);
-- pr_debug("\t\t vm_id is : %u\n", reg_sq_cmd.bitfields.vm_id);
-- pr_debug("\t\t wave_id is : %u\n", reg_sq_cmd.bitfields.wave_id);
--
-- pr_debug("\t\t ibw is : %u\n", reg_gfx_index.bitfields.instance_broadcast_writes);
-- pr_debug("\t\t ii is : %u\n", reg_gfx_index.bitfields.instance_index);
-- pr_debug("\t\t sebw is : %u\n", reg_gfx_index.bitfields.se_broadcast_writes);
-- pr_debug("\t\t se_ind is : %u\n", reg_gfx_index.bitfields.se_index);
-- pr_debug("\t\t sh_ind is : %u\n", reg_gfx_index.bitfields.sh_index);
-- pr_debug("\t\t sbw is : %u\n", reg_gfx_index.bitfields.sh_broadcast_writes);
-+ pr_debug("\t\t chk_vmid is : %u\n",
-+ reg_sq_cmd.bitfields.check_vmid);
-+ pr_debug("\t\t command is : %u\n",
-+ reg_sq_cmd.bitfields.cmd);
-+ pr_debug("\t\t queue id is : %u\n",
-+ reg_sq_cmd.bitfields.queue_id);
-+ pr_debug("\t\t simd id is : %u\n",
-+ reg_sq_cmd.bitfields.simd_id);
-+ pr_debug("\t\t mode is : %u\n",
-+ reg_sq_cmd.bitfields.mode);
-+ pr_debug("\t\t vm_id is : %u\n",
-+ reg_sq_cmd.bitfields.vm_id);
-+ pr_debug("\t\t wave_id is : %u\n",
-+ reg_sq_cmd.bitfields.wave_id);
-+
-+ pr_debug("\t\t ibw is : %u\n",
-+ reg_gfx_index.bitfields.instance_broadcast_writes);
-+ pr_debug("\t\t ii is : %u\n",
-+ reg_gfx_index.bitfields.instance_index);
-+ pr_debug("\t\t sebw is : %u\n",
-+ reg_gfx_index.bitfields.se_broadcast_writes);
-+ pr_debug("\t\t se_ind is : %u\n",
-+ reg_gfx_index.bitfields.se_index);
-+ pr_debug("\t\t sh_ind is : %u\n",
-+ reg_gfx_index.bitfields.sh_index);
-+ pr_debug("\t\t sbw is : %u\n",
-+ reg_gfx_index.bitfields.sh_broadcast_writes);
-
- pr_debug("\t\t %30s\n", "* * * * * * * * * * * * * * * * * *");
-
-@@ -814,7 +854,8 @@ int dbgdev_wave_reset_wavefronts(struct kfd_dev *dev, struct kfd_process *p)
-
- /* Scan all registers in the range ATC_VMID8_PASID_MAPPING ..
- * ATC_VMID15_PASID_MAPPING
-- * to check which VMID the current process is mapped to. */
-+ * to check which VMID the current process is mapped to.
-+ */
-
- for (vmid = first_vmid_to_scan; vmid <= last_vmid_to_scan; vmid++) {
- if (dev->kfd2kgd->get_atc_vmid_pasid_mapping_valid
-@@ -854,7 +895,7 @@ int dbgdev_wave_reset_wavefronts(struct kfd_dev *dev, struct kfd_process *p)
- }
-
- void kfd_dbgdev_init(struct kfd_dbgdev *pdbgdev, struct kfd_dev *pdev,
-- DBGDEV_TYPE type)
-+ enum DBGDEV_TYPE type)
- {
- pdbgdev->dev = pdev;
- pdbgdev->kq = NULL;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h
-index 82f48ff..75883e0 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h
-@@ -90,17 +90,14 @@ enum SQ_IND_CMD_CMD {
- SQ_IND_CMD_CMD_DEBUG = 0x00000004,
- SQ_IND_CMD_CMD_TRAP = 0x00000005
- };
--/*
-- * SQ_IND_CMD_MODE enum
-- */
-
--typedef enum SQ_IND_CMD_MODE {
-+enum SQ_IND_CMD_MODE {
- SQ_IND_CMD_MODE_SINGLE = 0x00000000,
- SQ_IND_CMD_MODE_BROADCAST = 0x00000001,
- SQ_IND_CMD_MODE_BROADCAST_QUEUE = 0x00000002,
- SQ_IND_CMD_MODE_BROADCAST_PIPE = 0x00000003,
- SQ_IND_CMD_MODE_BROADCAST_ME = 0x00000004,
--} SQ_IND_CMD_MODE;
-+};
-
- union SQ_IND_INDEX_BITS {
- struct {
-@@ -208,7 +205,7 @@ union TCP_WATCH_ADDR_L_BITS {
- };
-
- enum {
-- QUEUESTATE__INVALID = 0, /* so by default we'll get invalid state */
-+ QUEUESTATE__INVALID = 0, /* so by default we'll get invalid state */
- QUEUESTATE__ACTIVE_COMPLETION_PENDING,
- QUEUESTATE__ACTIVE
- };
-@@ -226,6 +223,7 @@ union ULARGE_INTEGER {
- #define KFD_CIK_VMID_END_OFFSET (KFD_CIK_VMID_START_OFFSET + (8))
-
-
--void kfd_dbgdev_init(struct kfd_dbgdev *pdbgdev, struct kfd_dev *pdev, DBGDEV_TYPE type);
-+void kfd_dbgdev_init(struct kfd_dbgdev *pdbgdev, struct kfd_dev *pdev,
-+ enum DBGDEV_TYPE type);
-
- #endif /* KFD_DBGDEV_H_ */
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c
-index 426f776..603cdc3 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c
-@@ -37,16 +37,12 @@
-
- static DEFINE_MUTEX(kfd_dbgmgr_mutex);
-
--struct mutex *
--get_dbgmgr_mutex(void)
-+struct mutex *get_dbgmgr_mutex(void)
- {
- return &kfd_dbgmgr_mutex;
- }
-
--/*===========================================================================*/
--
--static void
--kfd_dbgmgr_uninitialize(struct kfd_dbgmgr *pmgr)
-+static void kfd_dbgmgr_uninitialize(struct kfd_dbgmgr *pmgr)
- {
- kfree(pmgr->dbgdev);
- pmgr->dbgdev = NULL;
-@@ -54,10 +50,7 @@ kfd_dbgmgr_uninitialize(struct kfd_dbgmgr *pmgr)
- pmgr->dev = NULL;
- }
-
--/*===========================================================================*/
--
--void
--kfd_dbgmgr_destroy(struct kfd_dbgmgr *pmgr)
-+void kfd_dbgmgr_destroy(struct kfd_dbgmgr *pmgr)
- {
- if (pmgr != NULL) {
- kfd_dbgmgr_uninitialize(pmgr);
-@@ -66,21 +59,18 @@ kfd_dbgmgr_destroy(struct kfd_dbgmgr *pmgr)
- }
- }
-
--/*===========================================================================*/
--
--bool
--kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev)
-+bool kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev)
- {
-- DBGDEV_TYPE type = DBGDEV_TYPE_DIQ;
-+ enum DBGDEV_TYPE type = DBGDEV_TYPE_DIQ;
- struct kfd_dbgmgr *new_buff;
-
- BUG_ON(pdev == NULL);
- BUG_ON(!pdev->init_complete);
-
- new_buff = kfd_alloc_struct(new_buff);
-- if (!new_buff)
-- {
-- dev_err(NULL, "Error! kfd: In func %s >> failed to allocate dbgmgr instance\n", __func__);
-+ if (!new_buff) {
-+ dev_err(NULL, "Error! kfd: In func %s >> failed to allocate dbgmgr instance\n",
-+ __func__);
- return false;
- }
-
-@@ -88,7 +78,8 @@ kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev)
- new_buff->dev = pdev;
- new_buff->dbgdev = kfd_alloc_struct(new_buff->dbgdev);
- if (!new_buff->dbgdev) {
-- dev_err(NULL, "Error! kfd: In func %s >> failed to allocate dbgdev\n", __func__);
-+ dev_err(NULL, "Error! kfd: In func %s >> failed to allocate dbgdev\n",
-+ __func__);
- kfree(new_buff);
- return false;
- }
-@@ -108,195 +99,176 @@ kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev)
- long
- kfd_dbgmgr_register(struct kfd_dbgmgr *pmgr, struct kfd_process *p)
- {
-- long status = 0;
--
-- do {
--
-- if ((pmgr == NULL) || (pmgr->dev == NULL) || (pmgr->dbgdev == NULL)) {
-- dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n", __func__);
-- /* Invalid Pointer. */
-- status = -EINVAL;
-- break;
-- }
-- if (pmgr->pasid != 0) {
-- /* HW debugger is already active. */
-- status = -EBUSY;
-- break;
-- }
--
-- /* remember pasid */
-+ if ((!pmgr) || (!pmgr->dev) || (!pmgr->dbgdev)) {
-+ dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n",
-+ __func__);
-+ /* Invalid Pointer. */
-+ return -EINVAL;
-+ }
-+ if (pmgr->pasid != 0) {
-+ /* HW debugger is already active. */
-+ return -EBUSY;
-+ }
-
-- pmgr->pasid = p->pasid;
-+ /* remember pasid */
-
-- /* provide the pqm for diq generation */
-+ pmgr->pasid = p->pasid;
-
-- pmgr->dbgdev->pqm = &p->pqm;
-+ /* provide the pqm for diq generation */
-
-- /* activate the actual registering */
-- /* todo: you should lock with the process mutex here */
-- pmgr->dbgdev->dbgdev_register(pmgr->dbgdev);
-- /* todo: you should unlock with the process mutex here */
-+ pmgr->dbgdev->pqm = &p->pqm;
-
-- } while (false);
-+ /* activate the actual registering */
-+ /* todo: you should lock with the process mutex here */
-+ pmgr->dbgdev->dbgdev_register(pmgr->dbgdev);
-+ /* todo: you should unlock with the process mutex here */
-
-- return status;
-+ return 0;
- }
-
--/* ========================================================================== */
-+/* ========================================================================= */
-
- long
- kfd_dbgmgr_unregister(struct kfd_dbgmgr *pmgr, struct kfd_process *p)
- {
-
-- long status = 0;
--
-- do {
--
-- if ((pmgr == NULL) || (pmgr->dev == NULL)
-- || (pmgr->dbgdev == NULL) || (p == NULL)) {
-- dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n", __func__);
-- /* Invalid Pointer */
-- status = -EINVAL;
-- break;
-- }
-- if (pmgr->pasid != p->pasid) {
-- /* Is the requests coming from the already registered process? */
-- status = -EINVAL;
-- break;
-- }
--
-- /* todo: you should lock with the process mutex here */
-+ if ((pmgr == NULL) || (pmgr->dev == NULL) || (pmgr->dbgdev == NULL) ||
-+ (p == NULL)) {
-+ dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n",
-+ __func__);
-+ /* Invalid Pointer */
-+ return -EINVAL;
-+ }
-+ if (pmgr->pasid != p->pasid) {
-+ /* Is the requests coming from the already registered
-+ * process?
-+ */
-+ return -EINVAL;
-+ }
-
-- pmgr->dbgdev->dbgdev_unregister(pmgr->dbgdev);
-+ /* todo: you should lock with the process mutex here */
-
-- /* todo: you should unlock with the process mutex here */
-+ pmgr->dbgdev->dbgdev_unregister(pmgr->dbgdev);
-
-- pmgr->pasid = 0;
-+ /* todo: you should unlock with the process mutex here */
-
-- } while (false);
-+ pmgr->pasid = 0;
-
-- return status;
-+ return 0;
- }
-
--/* =========================================================================== */
-+/* ========================================================================= */
-
- long
--kfd_dbgmgr_wave_control(struct kfd_dbgmgr *pmgr, struct dbg_wave_control_info *wac_info)
-+kfd_dbgmgr_wave_control(struct kfd_dbgmgr *pmgr,
-+ struct dbg_wave_control_info *wac_info)
- {
-- long status = 0;
--
- dev_info(NULL, "kfd: In func %s\n", __func__);
-
-- do {
--
-- if ((pmgr == NULL) || (pmgr->dev == NULL) || (pmgr->dbgdev == NULL) || (wac_info == NULL)
-- || (wac_info->process == NULL)) {
-- /* Invalid Pointer */
-- dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n", __func__);
-- status = -EINVAL;
-- break;
-- }
-- /* Is the requests coming from the already registered process? */
-- if (pmgr->pasid != wac_info->process->pasid) {
-- /* HW debugger support was not registered for requester process */
-- status = -EINVAL;
-- break;
-- }
--
-- status = (long) pmgr->dbgdev->dbgdev_wave_control(pmgr->dbgdev, wac_info);
--
-- } while (false);
--
-- return status;
-+ if ((!pmgr) || (!pmgr->dev) || (!pmgr->dbgdev) || (!wac_info)
-+ || (wac_info->process == NULL)) {
-+ /* Invalid Pointer */
-+ dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+ /* Is the requests coming from the already registered
-+ * process?
-+ */
-+ if (pmgr->pasid != wac_info->process->pasid) {
-+ /* HW debugger support was not registered for
-+ * requester process
-+ */
-+ return -EINVAL;
-+ }
-
-+ return (long) pmgr->dbgdev->dbgdev_wave_control(pmgr->dbgdev,
-+ wac_info);
- }
-
--/* =========================================================================== */
-+/* ========================================================================= */
-
- long
--kfd_dbgmgr_address_watch(struct kfd_dbgmgr *pmgr, struct dbg_address_watch_info *adw_info)
-+kfd_dbgmgr_address_watch(struct kfd_dbgmgr *pmgr,
-+ struct dbg_address_watch_info *adw_info)
- {
-- long status = 0;
--
- dev_info(NULL, "kfd: In func %s\n", __func__);
-
-- do {
--
-- if ((pmgr == NULL) || (pmgr->dev == NULL) || (pmgr->dbgdev == NULL) || (adw_info == NULL)
-- || (adw_info->process == NULL)) {
-- /* Invalid Pointer */
-- dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n", __func__);
-- status = -EINVAL;
-- break;
-- }
-- /* Is the requests coming from the already registered process? */
-- if (pmgr->pasid != adw_info->process->pasid) {
-- /* HW debugger support was not registered for requester process */
-- status = -EINVAL;
-- break;
-- }
--
-- status = (long) pmgr->dbgdev->dbgdev_address_watch(pmgr->dbgdev, adw_info);
--
-- } while (false);
--
-- return status;
-+ if ((!pmgr) || (!pmgr->dev) || (!pmgr->dbgdev) || (!adw_info)
-+ || (adw_info->process == NULL)) {
-+ /* Invalid Pointer */
-+ dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+ /* Is the requests coming from the already registered
-+ * process?
-+ */
-+ if (pmgr->pasid != adw_info->process->pasid) {
-+ /* HW debugger support was not registered for
-+ * requester process
-+ */
-+ return -EINVAL;
-+ }
-
-+ return (long) pmgr->dbgdev->dbgdev_address_watch(pmgr->dbgdev,
-+ adw_info);
- }
-
-
--/* =========================================================================== */
-+/* ========================================================================= */
- /*
- * Handle abnormal process termination
- * if we are in the midst of a debug session, we should kill all pending waves
- * of the debugged process and unregister the process from the Debugger.
- */
- long
--kfd_dbgmgr_abnormal_termination(struct kfd_dbgmgr *pmgr, struct kfd_process *process)
-+kfd_dbgmgr_abnormal_termination(struct kfd_dbgmgr *pmgr,
-+ struct kfd_process *process)
- {
- long status = 0;
- struct dbg_wave_control_info wac_info;
-
- dev_info(NULL, "kfd: In func %s\n", __func__);
-
-- do {
--
-- if ((pmgr == NULL) || (pmgr->dev == NULL) || (pmgr->dbgdev == NULL)) {
-- /* Invalid Pointer */
-- dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n", __func__);
-- status = -EINVAL;
-- break;
-- }
-- /* first, we kill all the wavefronts of this process */
--
-- wac_info.process = process;
-- wac_info.mode = HSA_DBG_WAVEMODE_BROADCAST_PROCESS;
-- wac_info.operand = HSA_DBG_WAVEOP_KILL;
-- wac_info.trapId = 0x0; /* not used for the KILL */
-- wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value = 0; /* not used for kill */
-- wac_info.dbgWave_msg.MemoryVA = NULL; /* not used for kill */
--
-- status = (long) pmgr->dbgdev->dbgdev_wave_control(pmgr->dbgdev, &wac_info);
--
-- if (status != 0) {
-- dev_info(NULL, "Error! kfd: In func %s: wave control failed, status is: %ld\n", __func__, status);
-- break;
-- }
-- if (pmgr->pasid == wac_info.process->pasid) {
-- /* if terminated process was registered for debug, then unregister it */
-- status = kfd_dbgmgr_unregister(pmgr, process);
-- pmgr->pasid = 0;
-- }
-- if (status != 0)
-- dev_info(NULL,
-- "Error! kfd: In func %s: unregister failed, status is: %ld debugger can not be reused\n",
-- __func__, status);
--
-- } while (false);
-+ if ((!pmgr) || (!pmgr->dev) || (!pmgr->dbgdev)) {
-+ /* Invalid Pointer */
-+ dev_info(NULL, "Error! kfd: In func %s >> Illegal pointers\n",
-+ __func__);
-+ return -EINVAL;
-+ }
-+ /* first, we kill all the wavefronts of this process */
-+
-+ wac_info.process = process;
-+ wac_info.mode = HSA_DBG_WAVEMODE_BROADCAST_PROCESS;
-+ wac_info.operand = HSA_DBG_WAVEOP_KILL;
-
-- return status;
-+ /* not used for KILL */
-+ wac_info.trapId = 0x0;
-+ wac_info.dbgWave_msg.DbgWaveMsg.WaveMsgInfoGen2.Value = 0;
-+ wac_info.dbgWave_msg.MemoryVA = NULL;
-
--}
-+ status = (long) pmgr->dbgdev->dbgdev_wave_control(pmgr->dbgdev,
-+ &wac_info);
-
-+ if (status != 0) {
-+ dev_info(NULL, "Error! kfd: In func %s: wave control failed, status is: %ld\n",
-+ __func__, status);
-+ return status;
-+ }
-+ if (pmgr->pasid == wac_info.process->pasid) {
-+ /* if terminated process was registered for debug,
-+ * then unregister it
-+ */
-+ status = kfd_dbgmgr_unregister(pmgr, process);
-+ pmgr->pasid = 0;
-+ }
-+ if (status != 0)
-+ dev_info(NULL,
-+ "Error! kfd: In func %s: unregister failed, status is: %ld debugger can not be reused\n",
-+ __func__, status);
-+
-+ return status;
-+}
-
--/*///////////////////////////////////////////////////////////////////////////////////////// */
-+/* ///////////////////////////////////////////////////////////////////////// */
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h
-index 2b6484e..b9a769a 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h
-@@ -26,242 +26,251 @@
-
- #include "kfd_priv.h"
-
--/*
-- * SQ_IND_CMD_CMD enum
-- */
--
--
- /* must align with hsakmttypes definition. */
- #pragma pack(push, 4)
-
--typedef enum _HSA_DBG_WAVEOP {
-- HSA_DBG_WAVEOP_HALT = 1, /* Halts a wavefront */
-- HSA_DBG_WAVEOP_RESUME = 2, /* Resumes a wavefront */
-- HSA_DBG_WAVEOP_KILL = 3, /* Kills a wavefront */
-- HSA_DBG_WAVEOP_DEBUG = 4, /* Causes wavefront to enter debug mode */
-- HSA_DBG_WAVEOP_TRAP = 5, /* Causes wavefront to take a trap */
-+enum HSA_DBG_WAVEOP {
-+ HSA_DBG_WAVEOP_HALT = 1, /* Halts a wavefront */
-+ HSA_DBG_WAVEOP_RESUME = 2, /* Resumes a wavefront */
-+ HSA_DBG_WAVEOP_KILL = 3, /* Kills a wavefront */
-+ HSA_DBG_WAVEOP_DEBUG = 4, /* Causes wavefront to enter dbg mode */
-+ HSA_DBG_WAVEOP_TRAP = 5, /* Causes wavefront to take a trap */
- HSA_DBG_NUM_WAVEOP = 5,
- HSA_DBG_MAX_WAVEOP = 0xFFFFFFFF
--} HSA_DBG_WAVEOP;
-+};
-
--typedef enum _HSA_DBG_WAVEMODE {
-- HSA_DBG_WAVEMODE_SINGLE = 0, /* send command to a single wave */
-- /* Broadcast to all wavefronts of all processes is not supported for HSA user mode */
-- HSA_DBG_WAVEMODE_BROADCAST_PROCESS = 2, /* send to waves within current process */
-- HSA_DBG_WAVEMODE_BROADCAST_PROCESS_CU = 3, /* send to waves within current process on CU */
-+enum HSA_DBG_WAVEMODE {
-+ /* send command to a single wave */
-+ HSA_DBG_WAVEMODE_SINGLE = 0,
-+ /* Broadcast to all wavefronts of all processes is not supported for
-+ * HSA user mode
-+ */
-+
-+ /* send to waves within current process */
-+ HSA_DBG_WAVEMODE_BROADCAST_PROCESS = 2,
-+ /* send to waves within current process on CU */
-+ HSA_DBG_WAVEMODE_BROADCAST_PROCESS_CU = 3,
- HSA_DBG_NUM_WAVEMODE = 3,
- HSA_DBG_MAX_WAVEMODE = 0xFFFFFFFF
--} HSA_DBG_WAVEMODE;
-+};
-
--typedef enum _HSA_DBG_WAVEMSG_TYPE {
-+enum HSA_DBG_WAVEMSG_TYPE {
- HSA_DBG_WAVEMSG_AUTO = 0,
- HSA_DBG_WAVEMSG_USER = 1,
- HSA_DBG_WAVEMSG_ERROR = 2,
- HSA_DBG_NUM_WAVEMSG,
- HSA_DBG_MAX_WAVEMSG = 0xFFFFFFFF
--} HSA_DBG_WAVEMSG_TYPE;
-+};
-
--typedef enum _HSA_DBG_WATCH_MODE {
-- HSA_DBG_WATCH_READ = 0, /* Read operations only */
-- HSA_DBG_WATCH_NONREAD = 1, /* Write or Atomic operations only */
-- HSA_DBG_WATCH_ATOMIC = 2, /* Atomic Operations only */
-- HSA_DBG_WATCH_ALL = 3, /* Read, Write or Atomic operations */
-+enum HSA_DBG_WATCH_MODE {
-+ HSA_DBG_WATCH_READ = 0, /* Read operations only */
-+ HSA_DBG_WATCH_NONREAD = 1, /* Write or Atomic operations only */
-+ HSA_DBG_WATCH_ATOMIC = 2, /* Atomic Operations only */
-+ HSA_DBG_WATCH_ALL = 3, /* Read, Write or Atomic operations */
- HSA_DBG_WATCH_NUM,
- HSA_DBG_WATCH_SIZE = 0xFFFFFFFF
--} HSA_DBG_WATCH_MODE;
-+};
-
- /* This structure is hardware specific and may change in the future */
--typedef struct _HsaDbgWaveMsgAMDGen2 {
-+struct HsaDbgWaveMsgAMDGen2 {
- union {
- struct {
-- uint32_t UserData:8; /* user data */
-- uint32_t ShaderArray:1; /* Shader array */
-- uint32_t Priv:1; /* Privileged */
-- uint32_t Reserved0:4; /* This field is reserved, should be 0 */
-- uint32_t WaveId:4; /* wave id */
-- uint32_t SIMD:2; /* SIMD id */
-- uint32_t HSACU:4; /* Compute unit */
-- uint32_t ShaderEngine:2; /* Shader engine */
-- uint32_t MessageType:2; /* see HSA_DBG_WAVEMSG_TYPE */
-- uint32_t Reserved1:4; /* This field is reserved, should be 0 */
-+ uint32_t UserData:8; /* user data */
-+ uint32_t ShaderArray:1; /* Shader array */
-+ uint32_t Priv:1; /* Privileged */
-+ uint32_t Reserved0:4; /* Reserved, should be 0 */
-+ uint32_t WaveId:4; /* wave id */
-+ uint32_t SIMD:2; /* SIMD id */
-+ uint32_t HSACU:4; /* Compute unit */
-+ uint32_t ShaderEngine:2;/* Shader engine */
-+ uint32_t MessageType:2; /* see HSA_DBG_WAVEMSG_TYPE */
-+ uint32_t Reserved1:4; /* Reserved, should be 0 */
- } ui32;
- uint32_t Value;
- };
-
- uint32_t Reserved2;
-
--} HsaDbgWaveMsgAMDGen2;
-+};
-
--typedef union _HsaDbgWaveMessageAMD {
-- HsaDbgWaveMsgAMDGen2 WaveMsgInfoGen2;
-- /* for future HsaDbgWaveMsgAMDGen3; */
--} HsaDbgWaveMessageAMD;
-+union HsaDbgWaveMessageAMD {
-+ struct HsaDbgWaveMsgAMDGen2 WaveMsgInfoGen2;
-+ /* for future HsaDbgWaveMsgAMDGen3; */
-+};
-
--typedef struct _HsaDbgWaveMessage {
-- void *MemoryVA; /* ptr to associated host-accessible data */
-- HsaDbgWaveMessageAMD DbgWaveMsg;
--} HsaDbgWaveMessage;
-+struct HsaDbgWaveMessage {
-+ void *MemoryVA; /* ptr to associated host-accessible data */
-+ union HsaDbgWaveMessageAMD DbgWaveMsg;
-+};
-
- /* TODO: This definitions to be MOVED to kfd_event, once it is implemented.
-+ *
-+ * HSA sync primitive, Event and HW Exception notification API definitions.
-+ * The API functions allow the runtime to define a so-called sync-primitive,
-+ * a SW object combining a user-mode provided "syncvar" and a scheduler event
-+ * that can be signaled through a defined GPU interrupt. A syncvar is
-+ * a process virtual memory location of a certain size that can be accessed
-+ * by CPU and GPU shader code within the process to set and query the content
-+ * within that memory. The definition of the content is determined by the HSA
-+ * runtime and potentially GPU shader code interfacing with the HSA runtime.
-+ * The syncvar values may be commonly written through an PM4 WRITE_DATA packet
-+ * in the user mode instruction stream. The OS scheduler event is typically
-+ * associated and signaled by an interrupt issued by the GPU, but other HSA
-+ * system interrupt conditions from other HW (e.g. IOMMUv2) may be surfaced
-+ * by the KFD by this mechanism, too.
-+ */
-
-- HSA sync primitive, Event and HW Exception notification API definitions
-- The API functions allow the runtime to define a so-called sync-primitive, a SW object
-- combining a user-mode provided "syncvar" and a scheduler event that can be signaled
-- through a defined GPU interrupt. A syncvar is a process virtual memory location of
-- a certain size that can be accessed by CPU and GPU shader code within the process to set
-- and query the content within that memory. The definition of the content is determined by
-- the HSA runtime and potentially GPU shader code interfacing with the HSA runtime.
-- The syncvar values may be commonly written through an PM4 WRITE_DATA packet in the
-- user mode instruction stream. The OS scheduler event is typically associated and
-- signaled by an interrupt issued by the GPU, but other HSA system interrupt conditions
-- from other HW (e.g. IOMMUv2) may besurfaced by the KFD by this mechanism, too. */
--
--/* these are the new definitions for events */
--
--typedef enum _HSA_EVENTTYPE {
-- HSA_EVENTTYPE_SIGNAL = 0, /* /user-mode generated GPU signal */
-- HSA_EVENTTYPE_NODECHANGE = 1, /* HSA node change (attach/detach) */
-- HSA_EVENTTYPE_DEVICESTATECHANGE = 2, /* HSA device state change( start/stop ) */
-- HSA_EVENTTYPE_HW_EXCEPTION = 3, /* GPU shader exception event */
-- HSA_EVENTTYPE_SYSTEM_EVENT = 4, /* GPU SYSCALL with parameter info */
-- HSA_EVENTTYPE_DEBUG_EVENT = 5, /* GPU signal for debugging */
-- HSA_EVENTTYPE_PROFILE_EVENT = 6, /* GPU signal for profiling */
-- HSA_EVENTTYPE_QUEUE_EVENT = 7, /* GPU signal queue idle state (EOP pm4) */
-- /* ... */
-+/* these are the new definitions for events */
-+enum HSA_EVENTTYPE {
-+ HSA_EVENTTYPE_SIGNAL = 0, /* User-mode generated GPU signal */
-+ HSA_EVENTTYPE_NODECHANGE = 1, /* HSA node change (attach/detach) */
-+ HSA_EVENTTYPE_DEVICESTATECHANGE = 2, /* HSA device state change
-+ * ( start/stop )
-+ */
-+ HSA_EVENTTYPE_HW_EXCEPTION = 3, /* GPU shader exception event */
-+ HSA_EVENTTYPE_SYSTEM_EVENT = 4, /* GPU SYSCALL with parameter info */
-+ HSA_EVENTTYPE_DEBUG_EVENT = 5, /* GPU signal for debugging */
-+ HSA_EVENTTYPE_PROFILE_EVENT = 6,/* GPU signal for profiling */
-+ HSA_EVENTTYPE_QUEUE_EVENT = 7, /* GPU signal queue idle state
-+ *(EOP pm4)
-+ */
-+ /* ... */
- HSA_EVENTTYPE_MAXID,
- HSA_EVENTTYPE_TYPE_SIZE = 0xFFFFFFFF
--} HSA_EVENTTYPE;
--
--typedef uint32_t HSA_EVENTID;
--
--/* Subdefinitions for various event types: Syncvar */
-+};
-
--typedef struct _HsaSyncVar {
-+/* Subdefinitions for various event types: Syncvar */
-+struct HsaSyncVar {
- union {
-- void *UserData; /* pointer to user mode data */
-- uint64_t UserDataPtrValue; /* 64bit compatibility of value */
-+ void *UserData; /* pointer to user mode data */
-+ uint64_t UserDataPtrValue; /* 64bit compatibility of value */
- } SyncVar;
- uint64_t SyncVarSize;
--} HsaSyncVar;
--
--/*
-- Subdefinitions for various event types: NodeChange
--*/
-+};
-
--typedef enum _HSA_EVENTTYPE_NODECHANGE_FLAGS {
-+/* Subdefinitions for various event types: NodeChange */
-+enum HSA_EVENTTYPE_NODECHANGE_FLAGS {
- HSA_EVENTTYPE_NODECHANGE_ADD = 0,
- HSA_EVENTTYPE_NODECHANGE_REMOVE = 1,
- HSA_EVENTTYPE_NODECHANGE_SIZE = 0xFFFFFFFF
--} HSA_EVENTTYPE_NODECHANGE_FLAGS;
-+};
-
--typedef struct _HsaNodeChange {
-- HSA_EVENTTYPE_NODECHANGE_FLAGS Flags; /* HSA node added/removed on the platform */
--} HsaNodeChange;
-+struct HsaNodeChange {
-+ /* HSA node added/removed on the platform */
-+ enum HSA_EVENTTYPE_NODECHANGE_FLAGS Flags;
-+};
-
--/*
-- Sub-definitions for various event types: DeviceStateChange
--*/
-+/* Sub-definitions for various event types: DeviceStateChange */
-
--typedef enum _HSA_EVENTTYPE_DEVICESTATECHANGE_FLAGS {
-- HSA_EVENTTYPE_DEVICESTATUSCHANGE_START = 0, /* device started (and available) */
-- HSA_EVENTTYPE_DEVICESTATUSCHANGE_STOP = 1, /* device stopped (i.e. unavailable) */
-+enum HSA_EVENTTYPE_DEVICESTATECHANGE_FLAGS {
-+ /* device started (and available) */
-+ HSA_EVENTTYPE_DEVICESTATUSCHANGE_START = 0,
-+ /* device stopped (i.e. unavailable) */
-+ HSA_EVENTTYPE_DEVICESTATUSCHANGE_STOP = 1,
- HSA_EVENTTYPE_DEVICESTATUSCHANGE_SIZE = 0xFFFFFFFF
--} HSA_EVENTTYPE_DEVICESTATECHANGE_FLAGS;
-+};
-
--typedef enum _HSA_DEVICE {
-+enum HSA_DEVICE {
- HSA_DEVICE_CPU = 0,
- HSA_DEVICE_GPU = 1,
- MAX_HSA_DEVICE = 2
--} HSA_DEVICE;
-+};
-
--typedef struct _HsaDeviceStateChange {
-+struct HsaDeviceStateChange {
- uint32_t NodeId; /* F-NUMA node that contains the device */
-- HSA_DEVICE Device; /* device type: GPU or CPU */
-- HSA_EVENTTYPE_DEVICESTATECHANGE_FLAGS Flags; /* event flags */
--} HsaDeviceStateChange;
-+ enum HSA_DEVICE Device; /* device type: GPU or CPU */
-+ enum HSA_EVENTTYPE_DEVICESTATECHANGE_FLAGS Flags; /* event flags */
-+};
-
--typedef struct _HsaEventData {
-- HSA_EVENTTYPE EventType; /* event type */
-+struct HsaEventData {
-+ enum HSA_EVENTTYPE EventType; /* event type */
- union {
-- /* return data associated with HSA_EVENTTYPE_SIGNAL and other events */
-- HsaSyncVar SyncVar;
-+ /* return data associated with HSA_EVENTTYPE_SIGNAL and other
-+ * events
-+ */
-+ struct HsaSyncVar SyncVar;
-
- /* data associated with HSA_EVENTTYPE_NODE_CHANGE */
-- HsaNodeChange NodeChangeState;
-+ struct HsaNodeChange NodeChangeState;
-
- /* data associated with HSA_EVENTTYPE_DEVICE_STATE_CHANGE */
-- HsaDeviceStateChange DeviceState;
-+ struct HsaDeviceStateChange DeviceState;
- } EventData;
-
-- /* the following data entries are internal to the KFD & thunk itself. */
-+ /* the following data entries are internal to the KFD & thunk itself */
-
-- uint64_t HWData1; /* internal thunk store for Event data (OsEventHandle) */
-- uint64_t HWData2; /* internal thunk store for Event data (HWAddress) */
-- uint32_t HWData3; /* internal thunk store for Event data (HWData) */
--} HsaEventData;
-+ /* internal thunk store for Event data (OsEventHandle) */
-+ uint64_t HWData1;
-+ /* internal thunk store for Event data (HWAddress) */
-+ uint64_t HWData2;
-+ /* internal thunk store for Event data (HWData) */
-+ uint32_t HWData3;
-+};
-
--typedef struct _HsaEventDescriptor {
-- HSA_EVENTTYPE EventType; /* event type to allocate */
-- uint32_t NodeId; /* H-NUMA node containing GPU device that is event source */
-- HsaSyncVar SyncVar; /* pointer to user mode syncvar data, syncvar->UserDataPtrValue may be NULL */
--} HsaEventDescriptor;
-+struct HsaEventDescriptor {
-+ /* event type to allocate */
-+ enum HSA_EVENTTYPE EventType;
-+ /* H-NUMA node containing GPU device that is event source */
-+ uint32_t NodeId;
-+ /* pointer to user mode syncvar data, syncvar->UserDataPtrValue
-+ * may be NULL
-+ */
-+ struct HsaSyncVar SyncVar;
-+};
-
--typedef struct _HsaEvent {
-- HSA_EVENTID EventId;
-- HsaEventData EventData;
--} HsaEvent;
-+struct HsaEvent {
-+ uint32_t EventId;
-+ struct HsaEventData EventData;
-+};
-
-
- #pragma pack(pop)
-
--typedef enum _DBGDEV_TYPE {
-+enum DBGDEV_TYPE {
- DBGDEV_TYPE_ILLEGAL = 0,
- DBGDEV_TYPE_NODIQ = 1,
- DBGDEV_TYPE_DIQ = 2,
- DBGDEV_TYPE_TEST = 3
--} DBGDEV_TYPE;
-+};
-
- struct dbg_address_watch_info {
- struct kfd_process *process;
-- HSA_DBG_WATCH_MODE *watch_mode;
-+ enum HSA_DBG_WATCH_MODE *watch_mode;
- uint64_t *watch_address;
- uint64_t *watch_mask;
-- HsaEvent *watch_event;
-+ struct HsaEvent *watch_event;
- uint32_t num_watch_points;
- };
-
- struct dbg_wave_control_info {
- struct kfd_process *process;
- uint32_t trapId;
-- HSA_DBG_WAVEOP operand;
-- HSA_DBG_WAVEMODE mode;
-- HsaDbgWaveMessage dbgWave_msg;
-+ enum HSA_DBG_WAVEOP operand;
-+ enum HSA_DBG_WAVEMODE mode;
-+ struct HsaDbgWaveMessage dbgWave_msg;
- };
-
- struct kfd_dbgdev {
-
- /* The device that owns this data. */
--
- struct kfd_dev *dev;
-
- /* kernel queue for DIQ */
--
- struct kernel_queue *kq;
-
- /* a pointer to the pqm of the calling process */
--
- struct process_queue_manager *pqm;
-
- /* type of debug device ( DIQ, non DIQ, etc. ) */
--
-- DBGDEV_TYPE type;
-+ enum DBGDEV_TYPE type;
-
- /* virtualized function pointers to device dbg */
--
- int (*dbgdev_register)(struct kfd_dbgdev *dbgdev);
- int (*dbgdev_unregister)(struct kfd_dbgdev *dbgdev);
-- int (*dbgdev_address_watch)(struct kfd_dbgdev *dbgdev, struct dbg_address_watch_info *adw_info);
-- int (*dbgdev_wave_control)(struct kfd_dbgdev *dbgdev, struct dbg_wave_control_info *wac_info);
-+ int (*dbgdev_address_watch)(struct kfd_dbgdev *dbgdev,
-+ struct dbg_address_watch_info *adw_info);
-+ int (*dbgdev_wave_control)(struct kfd_dbgdev *dbgdev,
-+ struct dbg_wave_control_info *wac_info);
-
- };
-
-@@ -277,7 +286,10 @@ void kfd_dbgmgr_destroy(struct kfd_dbgmgr *pmgr);
- bool kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev);
- long kfd_dbgmgr_register(struct kfd_dbgmgr *pmgr, struct kfd_process *p);
- long kfd_dbgmgr_unregister(struct kfd_dbgmgr *pmgr, struct kfd_process *p);
--long kfd_dbgmgr_wave_control(struct kfd_dbgmgr *pmgr, struct dbg_wave_control_info *wac_info);
--long kfd_dbgmgr_address_watch(struct kfd_dbgmgr *pmgr, struct dbg_address_watch_info *adw_info);
--long kfd_dbgmgr_abnormal_termination(struct kfd_dbgmgr *pmgr, struct kfd_process *process);
--#endif /* KFD_DBGMGR_H_ */
-+long kfd_dbgmgr_wave_control(struct kfd_dbgmgr *pmgr,
-+ struct dbg_wave_control_info *wac_info);
-+long kfd_dbgmgr_address_watch(struct kfd_dbgmgr *pmgr,
-+ struct dbg_address_watch_info *adw_info);
-+long kfd_dbgmgr_abnormal_termination(struct kfd_dbgmgr *pmgr,
-+ struct kfd_process *process);
-+#endif /* KFD_DBGMGR_H_ */
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c b/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
-index ccf982d..24952c2 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c
-@@ -51,19 +51,19 @@ void kfd_debugfs_init(void)
- return;
- }
-
-- ent = debugfs_create_file("mqds", S_IFREG | S_IRUGO, debugfs_root,
-+ ent = debugfs_create_file("mqds", S_IFREG | 0444, debugfs_root,
- kfd_debugfs_mqds_by_process,
- &kfd_debugfs_fops);
- if (ent == NULL)
- pr_warn("Failed to create mqds in kfd debugfs\n");
-
-- ent = debugfs_create_file("hqds", S_IFREG | S_IRUGO, debugfs_root,
-+ ent = debugfs_create_file("hqds", S_IFREG | 0444, debugfs_root,
- kfd_debugfs_hqds_by_device,
- &kfd_debugfs_fops);
- if (ent == NULL)
- pr_warn("Failed to create hqds in kfd debugfs\n");
-
-- ent = debugfs_create_file("rls", S_IFREG | S_IRUGO, debugfs_root,
-+ ent = debugfs_create_file("rls", S_IFREG | 0444, debugfs_root,
- kfd_debugfs_rls_by_device,
- &kfd_debugfs_fops);
- if (ent == NULL)
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
-index 5d657a9..0abccc4 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
-@@ -343,12 +343,13 @@ static bool device_iommu_pasid_init(struct kfd_dev *kfd)
- dev_err(kfd_device, "error required iommu flags ats(%i), pri(%i), pasid(%i)\n",
- (iommu_info.flags & AMD_IOMMU_DEVICE_FLAG_ATS_SUP) != 0,
- (iommu_info.flags & AMD_IOMMU_DEVICE_FLAG_PRI_SUP) != 0,
-- (iommu_info.flags & AMD_IOMMU_DEVICE_FLAG_PASID_SUP) != 0);
-+ (iommu_info.flags & AMD_IOMMU_DEVICE_FLAG_PASID_SUP)
-+ != 0);
- return false;
- }
-
- pasid_limit = min_t(unsigned int,
-- (unsigned int)1 << kfd->device_info->max_pasid_bits,
-+ (unsigned int)(1 << kfd->device_info->max_pasid_bits),
- iommu_info.max_pasids);
- /*
- * last pasid is used for kernel queues doorbells
-@@ -718,9 +719,10 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry)
-
- spin_lock(&kfd->interrupt_lock);
-
-- if (kfd->interrupts_active
-- && interrupt_is_wanted(kfd, ih_ring_entry, patched_ihre, &is_patched)
-- && enqueue_ih_ring_entry(kfd, is_patched ? patched_ihre : ih_ring_entry))
-+ if (kfd->interrupts_active && interrupt_is_wanted(kfd, ih_ring_entry,
-+ patched_ihre, &is_patched)
-+ && enqueue_ih_ring_entry(kfd,
-+ is_patched ? patched_ihre : ih_ring_entry))
- queue_work(kfd->ih_wq, &kfd->interrupt_work);
-
- spin_unlock(&kfd->interrupt_lock);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-index 2a4a556..99844c5 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-@@ -1182,7 +1182,7 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,
- }
-
- if (q->properties.type == KFD_QUEUE_TYPE_SDMA)
-- dqm->sdma_queue_count++;
-+ dqm->sdma_queue_count++;
- /*
- * Unconditionally increment this counter, regardless of the queue's
- * type or whether the queue is active.
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
-index 341adfa..bf24368 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_cik.c
-@@ -171,7 +171,8 @@ static int update_qpd_cik_hawaii(struct device_queue_manager *dqm,
- }
-
- /* On dGPU we're always in GPUVM64 addressing mode with 64-bit
-- * aperture addresses. */
-+ * aperture addresses.
-+ */
- temp = get_sh_mem_bases_nybble_64(pdd);
- qpd->sh_mem_bases = compute_sh_mem_bases_64bit(temp);
-
-@@ -202,7 +203,8 @@ static void init_sdma_vm_hawaii(struct device_queue_manager *dqm,
- struct qcm_process_device *qpd)
- {
- /* On dGPU we're always in GPUVM64 addressing mode with 64-bit
-- * aperture addresses. */
-+ * aperture addresses.
-+ */
- q->properties.sdma_vm_addr =
- ((get_sh_mem_bases_nybble_64(qpd_to_pdd(qpd))) <<
- SDMA0_RLC0_VIRTUAL_ADDR__SHARED_BASE__SHIFT) &
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
-index 2629143..2f37b04 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_vi.c
-@@ -225,7 +225,8 @@ static int update_qpd_vi_tonga(struct device_queue_manager *dqm,
- }
-
- /* On dGPU we're always in GPUVM64 addressing mode with 64-bit
-- * aperture addresses. */
-+ * aperture addresses.
-+ */
- temp = get_sh_mem_bases_nybble_64(pdd);
- qpd->sh_mem_bases = compute_sh_mem_bases_64bit(temp);
-
-@@ -256,7 +257,8 @@ static void init_sdma_vm_tonga(struct device_queue_manager *dqm,
- struct qcm_process_device *qpd)
- {
- /* On dGPU we're always in GPUVM64 addressing mode with 64-bit
-- * aperture addresses. */
-+ * aperture addresses.
-+ */
- q->properties.sdma_vm_addr =
- ((get_sh_mem_bases_nybble_64(qpd_to_pdd(qpd))) <<
- SDMA0_RLC0_VIRTUAL_ADDR__SHARED_BASE__SHIFT) &
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
-index be5abd5..18198d8 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
-@@ -34,8 +34,8 @@
-
- /* A task can only be on a single wait_queue at a time, but we need to support
- * waiting on multiple events (any/all).
-- * Instead of each event simply having a wait_queue with sleeping tasks, it has a
-- * singly-linked list of tasks.
-+ * Instead of each event simply having a wait_queue with sleeping tasks, it has
-+ * a singly-linked list of tasks.
- * A thread that wants to sleep creates an array of these, one for each event
- * and adds one to each event's waiter chain.
- */
-@@ -56,9 +56,9 @@ struct kfd_event_waiter {
-
- /* Over-complicated pooled allocator for event notification slots.
- *
-- * Each signal event needs a 64-bit signal slot where the signaler will write a 1
-- * before sending an interrupt.l (This is needed because some interrupts do not
-- * contain enough spare data bits to identify an event.)
-+ * Each signal event needs a 64-bit signal slot where the signaler will write a
-+ * 1 before sending an interrupt.l (This is needed because some interrupts do
-+ * not contain enough spare data bits to identify an event.)
- * We get whole pages from vmalloc and map them to the process VA.
- * Individual signal events are then allocated a slot in a page.
- */
-@@ -101,7 +101,10 @@ allocate_free_slot(struct kfd_process *process,
-
- list_for_each_entry(page, &process->signal_event_pages, event_pages) {
- if (page->free_slots > 0) {
-- unsigned int slot = find_first_zero_bit(page->used_slot_bitmap, SLOTS_PER_PAGE);
-+ unsigned int slot =
-+ find_first_zero_bit(page->used_slot_bitmap,
-+ SLOTS_PER_PAGE);
-+
- __set_bit(slot, page->used_slot_bitmap);
- page->free_slots--;
-
-@@ -139,13 +142,14 @@ static bool allocate_signal_page(struct file *devkfd, struct kfd_process *p)
-
- page->free_slots = SLOTS_PER_PAGE;
-
-- backing_store = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, \
-+ backing_store = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(KFD_SIGNAL_EVENT_LIMIT * 8));
- if (!backing_store)
- goto fail_alloc_signal_store;
-
- /* prevent user-mode info leaks */
-- memset(backing_store, (uint8_t) UNSIGNALED_EVENT_SLOT, KFD_SIGNAL_EVENT_LIMIT * 8);
-+ memset(backing_store, (uint8_t) UNSIGNALED_EVENT_SLOT,
-+ KFD_SIGNAL_EVENT_LIMIT * 8);
- page->kernel_address = backing_store;
-
- /* Set bits of debug events to prevent allocation */
-@@ -213,7 +217,7 @@ allocate_signal_page_dgpu(struct kfd_process *p,
- my_page->user_address = NULL;
- my_page->free_slots = SLOTS_PER_PAGE;
- if (list_empty(&p->signal_event_pages))
-- my_page->page_index = 0;
-+ my_page->page_index = 0;
- else
- my_page->page_index = list_tail_entry(&p->signal_event_pages,
- struct signal_page,
-@@ -284,7 +288,8 @@ static void release_event_notification_slot(struct signal_page *page,
- page->free_slots++;
-
- /* We don't free signal pages, they are retained by the process
-- * and reused until it exits. */
-+ * and reused until it exits.
-+ */
- }
-
- static struct signal_page *lookup_signal_page_by_index(struct kfd_process *p,
-@@ -292,7 +297,9 @@ static struct signal_page *lookup_signal_page_by_index(struct kfd_process *p,
- {
- struct signal_page *page;
-
-- /* This is safe because we don't delete signal pages until the process exits. */
-+ /* This is safe because we don't delete signal pages until the process
-+ * exits.
-+ */
- list_for_each_entry(page, &p->signal_event_pages, event_pages)
- if (page->page_index == page_index)
- return page;
-@@ -300,7 +307,9 @@ static struct signal_page *lookup_signal_page_by_index(struct kfd_process *p,
- return NULL;
- }
-
--/* Assumes that p->event_mutex is held and of course that p is not going away (current or locked). */
-+/* Assumes that p->event_mutex is held and of course that p is not going away
-+ * (current or locked).
-+ */
- static struct kfd_event *lookup_event_by_id(struct kfd_process *p, uint32_t id)
- {
- struct kfd_event *ev;
-@@ -321,27 +330,30 @@ static struct kfd_event *lookup_event_by_id(struct kfd_process *p, uint32_t id)
- static u32 make_signal_event_id(struct signal_page *page,
- unsigned int signal_slot_index)
- {
-- return page->page_index | (signal_slot_index << SIGNAL_EVENT_ID_SLOT_SHIFT);
-+ return page->page_index |
-+ (signal_slot_index << SIGNAL_EVENT_ID_SLOT_SHIFT);
- }
-
- /* Produce a kfd event id for a nonsignal event.
-- * These are arbitrary numbers, so we do a sequential search through the hash table
-- * for an unused number.
-+ * These are arbitrary numbers, so we do a sequential search through the hash
-+ * table for an unused number.
- */
- static u32 make_nonsignal_event_id(struct kfd_process *p)
- {
- u32 id;
-
- for (id = p->next_nonsignal_event_id;
-- id < KFD_LAST_NONSIGNAL_EVENT_ID && lookup_event_by_id(p, id) != NULL;
-+ id < KFD_LAST_NONSIGNAL_EVENT_ID &&
-+ lookup_event_by_id(p, id) != NULL;
- id++)
- ;
-
- if (id < KFD_LAST_NONSIGNAL_EVENT_ID) {
-
- /* What if id == LAST_NONSIGNAL_EVENT_ID - 1?
-- * Then next_nonsignal_event_id = LAST_NONSIGNAL_EVENT_ID so the first loop
-- * fails immediately and we proceed with the wraparound loop below.
-+ * Then next_nonsignal_event_id = LAST_NONSIGNAL_EVENT_ID so
-+ * the first loop fails immediately and we proceed with the
-+ * wraparound loop below.
- */
- p->next_nonsignal_event_id = id + 1;
-
-@@ -349,7 +361,8 @@ static u32 make_nonsignal_event_id(struct kfd_process *p)
- }
-
- for (id = KFD_FIRST_NONSIGNAL_EVENT_ID;
-- id < KFD_LAST_NONSIGNAL_EVENT_ID && lookup_event_by_id(p, id) != NULL;
-+ id < KFD_LAST_NONSIGNAL_EVENT_ID &&
-+ lookup_event_by_id(p, id) != NULL;
- id++)
- ;
-
-@@ -357,10 +370,9 @@ static u32 make_nonsignal_event_id(struct kfd_process *p)
- if (id < KFD_LAST_NONSIGNAL_EVENT_ID) {
- p->next_nonsignal_event_id = id + 1;
- return id;
-- } else {
-- p->next_nonsignal_event_id = KFD_FIRST_NONSIGNAL_EVENT_ID;
-- return 0;
- }
-+ p->next_nonsignal_event_id = KFD_FIRST_NONSIGNAL_EVENT_ID;
-+ return 0;
- }
-
- static struct kfd_event *
-@@ -371,7 +383,8 @@ lookup_event_by_page_slot(struct kfd_process *p,
- }
-
- static int
--create_signal_event(struct file *devkfd, struct kfd_process *p, struct kfd_event *ev)
-+create_signal_event(struct file *devkfd, struct kfd_process *p,
-+ struct kfd_event *ev)
- {
- if ((ev->type == KFD_EVENT_TYPE_SIGNAL) &&
- (p->signal_event_count == KFD_SIGNAL_EVENT_LIMIT)) {
-@@ -408,9 +421,11 @@ create_signal_event(struct file *devkfd, struct kfd_process *p, struct kfd_event
- p->debug_event_count++;
- }
-
-- ev->user_signal_address = &ev->signal_page->user_address[ev->signal_slot_index];
-+ ev->user_signal_address =
-+ &ev->signal_page->user_address[ev->signal_slot_index];
-
-- ev->event_id = make_signal_event_id(ev->signal_page, ev->signal_slot_index);
-+ ev->event_id =
-+ make_signal_event_id(ev->signal_page, ev->signal_slot_index);
-
- pr_debug("signal event number %zu created with id %d, address %p\n",
- p->signal_event_count, ev->event_id,
-@@ -420,7 +435,9 @@ create_signal_event(struct file *devkfd, struct kfd_process *p, struct kfd_event
- }
-
- /* No non-signal events are supported yet.
-- * We create them as events that never signal. Set event calls from user-mode are failed. */
-+ * We create them as events that never signal. Set event calls from user-mode
-+ * are failed.
-+ */
- static int
- create_other_event(struct kfd_process *p, struct kfd_event *ev)
- {
-@@ -456,7 +473,9 @@ static void destroy_event(struct kfd_process *p, struct kfd_event *ev)
- }
- }
-
-- /* Abandon the list of waiters. Individual waiting threads will clean up their own data.*/
-+ /* Abandon the list of waiters. Individual waiting threads will clean
-+ * up their own data.
-+ */
- list_del(&ev->waiters);
-
- hash_del(&ev->events);
-@@ -479,13 +498,15 @@ static void destroy_events(struct kfd_process *p)
- destroy_event(p, ev);
- }
-
--/* We assume that the process is being destroyed and there is no need to unmap the pages
-- * or keep bookkeeping data in order. */
-+/* We assume that the process is being destroyed and there is no need to unmap
-+ * the pages or keep bookkeeping data in order.
-+ */
- static void shutdown_signal_pages(struct kfd_process *p)
- {
- struct signal_page *page, *tmp;
-
-- list_for_each_entry_safe(page, tmp, &p->signal_event_pages, event_pages) {
-+ list_for_each_entry_safe(page, tmp, &p->signal_event_pages,
-+ event_pages) {
- if (page->user_address) {
- free_pages((unsigned long)page->kernel_address,
- get_order(KFD_SIGNAL_EVENT_LIMIT * 8));
-@@ -502,7 +523,8 @@ void kfd_event_free_process(struct kfd_process *p)
-
- static bool event_can_be_gpu_signaled(const struct kfd_event *ev)
- {
-- return ev->type == KFD_EVENT_TYPE_SIGNAL || ev->type == KFD_EVENT_TYPE_DEBUG;
-+ return ev->type == KFD_EVENT_TYPE_SIGNAL ||
-+ ev->type == KFD_EVENT_TYPE_DEBUG;
- }
-
- static bool event_can_be_cpu_signaled(const struct kfd_event *ev)
-@@ -519,6 +541,7 @@ int kfd_event_create(struct file *devkfd, struct kfd_process *p,
- int ret = 0;
-
- struct kfd_event *ev = kzalloc(sizeof(*ev), GFP_KERNEL);
-+
- if (!ev)
- return -ENOMEM;
-
-@@ -648,7 +671,8 @@ int kfd_reset_event(struct kfd_process *p, uint32_t event_id)
-
- static void acknowledge_signal(struct kfd_process *p, struct kfd_event *ev)
- {
-- page_slots(ev->signal_page)[ev->signal_slot_index] = UNSIGNALED_EVENT_SLOT;
-+ page_slots(ev->signal_page)[ev->signal_slot_index] =
-+ UNSIGNALED_EVENT_SLOT;
- }
-
- static bool is_slot_signaled(struct signal_page *page, unsigned int index)
-@@ -656,7 +680,8 @@ static bool is_slot_signaled(struct signal_page *page, unsigned int index)
- return page_slots(page)[index] != UNSIGNALED_EVENT_SLOT;
- }
-
--static void set_event_from_interrupt(struct kfd_process *p, struct kfd_event *ev)
-+static void set_event_from_interrupt(struct kfd_process *p,
-+ struct kfd_event *ev)
- {
- if (ev && event_can_be_gpu_signaled(ev)) {
- acknowledge_signal(p, ev);
-@@ -674,6 +699,7 @@ void kfd_signal_event_interrupt(unsigned int pasid, uint32_t partial_id,
- * running so the lookup function increments the process ref count.
- */
- struct kfd_process *p = kfd_lookup_process_by_pasid(pasid);
-+
- if (!p)
- return; /* Presumably process exited. */
-
-@@ -686,19 +712,20 @@ void kfd_signal_event_interrupt(unsigned int pasid, uint32_t partial_id,
- ev = lookup_event_by_id(p, partial_id);
- set_event_from_interrupt(p, ev);
- } else {
-- /* Partial ID is in fact partial. For now we completely ignore it,
-- * but we could use any bits we did receive to search faster. */
-+ /* Partial ID is in fact partial. For now we completely ignore
-+ * it, but we could use any bits we did receive to search
-+ * faster.
-+ */
- struct signal_page *page;
-- unsigned i;
-+ unsigned int i;
-
-- list_for_each_entry(page, &p->signal_event_pages, event_pages) {
-- for (i = 0; i < SLOTS_PER_PAGE; i++) {
-+ list_for_each_entry(page, &p->signal_event_pages, event_pages)
-+ for (i = 0; i < SLOTS_PER_PAGE; i++)
- if (is_slot_signaled(page, i)) {
-- ev = lookup_event_by_page_slot(p, page, i);
-+ ev = lookup_event_by_page_slot(p,
-+ page, i);
- set_event_from_interrupt(p, ev);
- }
-- }
-- }
- }
-
- mutex_unlock(&p->event_mutex);
-@@ -710,7 +737,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events)
- struct kfd_event_waiter *event_waiters;
- uint32_t i;
-
-- event_waiters = kmalloc(num_events * sizeof(struct kfd_event_waiter), GFP_KERNEL);
-+ event_waiters = kmalloc_array(num_events,
-+ sizeof(struct kfd_event_waiter), GFP_KERNEL);
-
- if (event_waiters) {
- for (i = 0; i < num_events; i++) {
-@@ -746,7 +774,8 @@ static void init_event_waiter_add_to_waitlist(struct kfd_event_waiter *waiter)
- struct kfd_event *ev = waiter->event;
-
- /* Only add to the wait list if we actually need to
-- * wait on this event. */
-+ * wait on this event.
-+ */
- if (!waiter->activated)
- list_add(&waiter->waiters, &ev->waiters);
- }
-@@ -783,8 +812,8 @@ static bool copy_signaled_event_data(uint32_t num_events,
- if (event_waiters[i].activated &&
- event_waiters[i].event->type == KFD_EVENT_TYPE_MEMORY)
- if (copy_to_user(&data[event_waiters[i].input_index].memory_exception_data,
-- &event_waiters[i].event->memory_exception_data,
-- sizeof(struct kfd_hsa_memory_exception_data)))
-+ &event_waiters[i].event->memory_exception_data,
-+ sizeof(struct kfd_hsa_memory_exception_data)))
- return false;
-
- return true;
-@@ -803,7 +832,8 @@ static long user_timeout_to_jiffies(uint32_t user_timeout_ms)
-
- /* msecs_to_jiffies interprets all values above 2^31-1 as infinite,
- * but we consider them finite.
-- * This hack is wrong, but nobody is likely to notice. */
-+ * This hack is wrong, but nobody is likely to notice.
-+ */
- user_timeout_ms = min_t(uint32_t, user_timeout_ms, 0x7FFFFFFF);
-
- return msecs_to_jiffies(user_timeout_ms) + 1;
-@@ -835,7 +865,8 @@ int kfd_wait_on_events(struct kfd_process *p,
- mutex_lock(&p->event_mutex);
-
- /* Set to something unreasonable - this is really
-- * just a bool for now. */
-+ * just a bool for now.
-+ */
- *wait_result = KFD_WAIT_TIMEOUT;
-
- event_waiters = alloc_event_waiters(num_events);
-@@ -889,10 +920,11 @@ int kfd_wait_on_events(struct kfd_process *p,
-
- if (signal_pending(current)) {
- /*
-- * This is wrong when a nonzero, non-infinite timeout is specified.
-- * We need to use ERESTARTSYS_RESTARTBLOCK, but struct restart_block
-- * contains a union with data for each user and it's in generic
-- * kernel code that I don't want to touch yet.
-+ * This is wrong when a nonzero, non-infinite timeout
-+ * is specified. We need to use
-+ * ERESTARTSYS_RESTARTBLOCK, but struct restart_block
-+ * contains a union with data for each user and it's in
-+ * generic kernel code that I don't want to touch yet.
- */
- ret = -ERESTARTSYS;
- break;
-@@ -954,7 +986,8 @@ int kfd_event_mmap(struct kfd_process *p, struct vm_area_struct *vma)
- page = lookup_signal_page_by_index(p, page_index);
- if (!page) {
- /* Probably KFD bug, but mmap is user-accessible. */
-- pr_debug("signal page could not be found for page_index %u\n", page_index);
-+ pr_debug("signal page could not be found for page_index %u\n",
-+ page_index);
- return -EINVAL;
- }
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c
-index 2fa5d32..a164fd5 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c
-@@ -426,5 +426,6 @@ int kfd_init_apertures(struct kfd_process *process)
- void kfd_flush_tlb(struct kfd_dev *dev, uint32_t pasid)
- {
- const struct kfd2kgd_calls *f2g = dev->kfd2kgd;
-+
- f2g->invalidate_tlbs(dev->kgd, pasid);
- }
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
-index c48fab5..258fdda 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_interrupt.c
-@@ -58,7 +58,8 @@ int kfd_interrupt_init(struct kfd_dev *kfd)
- int r;
-
- r = kfifo_alloc(&kfd->ih_fifo,
-- KFD_IH_NUM_ENTRIES * kfd->device_info->ih_ring_entry_size,
-+ KFD_IH_NUM_ENTRIES *
-+ kfd->device_info->ih_ring_entry_size,
- GFP_KERNEL);
- if (r) {
- dev_err(kfd_chardev(), "Failed to allocate IH fifo\n");
-@@ -159,7 +160,8 @@ static void interrupt_wq(struct work_struct *work)
- sizeof(uint32_t))];
-
- while (dequeue_ih_ring_entry(dev, ih_ring_entry))
-- dev->device_info->event_interrupt_class->interrupt_wq(dev, ih_ring_entry);
-+ dev->device_info->event_interrupt_class->interrupt_wq(dev,
-+ ih_ring_entry);
- }
-
- bool interrupt_is_wanted(struct kfd_dev *dev,
-@@ -167,7 +169,7 @@ bool interrupt_is_wanted(struct kfd_dev *dev,
- uint32_t *patched_ihre, bool *flag)
- {
- /* integer and bitwise OR so there is no boolean short-circuiting */
-- unsigned wanted = 0;
-+ unsigned int wanted = 0;
-
- wanted |= dev->device_info->event_interrupt_class->interrupt_isr(dev,
- ih_ring_entry, patched_ihre, flag);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-index b826689..4a67e76 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-@@ -244,7 +244,8 @@ static int acquire_packet_buffer(struct kernel_queue *kq,
-
- if (wptr + packet_size_in_dwords >= queue_size_dwords) {
- /* make sure after rolling back to position 0, there is
-- * still enough space. */
-+ * still enough space.
-+ */
- if (packet_size_in_dwords >= rptr) {
- *buffer_ptr = NULL;
- return -ENOMEM;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
-index 6f12fe0..007a3ea 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue_vi.c
-@@ -165,7 +165,7 @@ int pm_map_queues_vi(struct packet_manager *pm, uint32_t *buffer,
- memset(buffer, 0, sizeof(struct pm4_mes_map_queues));
-
- packet->header.u32All = pm_build_pm4_header(IT_MAP_QUEUES,
-- sizeof(struct pm4_mes_map_queues));
-+ sizeof(struct pm4_mes_map_queues));
- packet->bitfields2.alloc_format =
- alloc_format__mes_map_queues__one_per_pipe_vi;
- packet->bitfields2.num_queues = 1;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
-index e6876f6..2126ec5 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c
-@@ -75,7 +75,7 @@ MODULE_PARM_DESC(send_sigterm,
-
- static int amdkfd_init_completed;
-
--int debug_largebar = 0;
-+int debug_largebar;
- module_param(debug_largebar, int, 0444);
- MODULE_PARM_DESC(debug_largebar,
- "Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)");
-@@ -90,7 +90,8 @@ module_param_named(noretry, vega10_noretry, int, 0644);
- MODULE_PARM_DESC(noretry,
- "Set sh_mem_config.retry_disable on Vega10 (0 = retry enabled (default), 1 = retry disabled)");
-
--int kgd2kfd_init(unsigned interface_version, const struct kgd2kfd_calls **g2f)
-+int kgd2kfd_init(unsigned int interface_version,
-+ const struct kgd2kfd_calls **g2f)
- {
- if (!amdkfd_init_completed)
- return -EPROBE_DEFER;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-index 41d28b3..4dff1ec 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-@@ -249,7 +249,7 @@ static int __update_mqd(struct mqd_manager *mm, void *mqd,
- m->cp_hqd_pq_control = DEFAULT_RPTR_BLOCK_SIZE |
- DEFAULT_MIN_AVAIL_SIZE;
- m->cp_hqd_ib_control = DEFAULT_MIN_IB_AVAIL_SIZE;
-- if (atc_bit) {
-+ if (atc_bit) {
- m->cp_hqd_pq_control |= PQ_ATC_EN;
- m->cp_hqd_ib_control |= IB_ATC_EN;
- }
-@@ -268,9 +268,8 @@ static int __update_mqd(struct mqd_manager *mm, void *mqd,
-
- m->cp_hqd_vmid = q->vmid;
-
-- if (q->format == KFD_QUEUE_FORMAT_AQL) {
-+ if (q->format == KFD_QUEUE_FORMAT_AQL)
- m->cp_hqd_pq_control |= NO_UPDATE_RPTR;
-- }
-
- update_cu_mask(mm, mqd, q);
- set_priority(m, q);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-index 0aeebc1..ddca15f 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-@@ -396,6 +396,7 @@ static int update_mqd_sdma(struct mqd_manager *mm, void *mqd,
- struct queue_properties *q)
- {
- struct vi_sdma_mqd *m;
-+
- BUG_ON(!mm || !mqd || !q);
-
- m = get_sdma_mqd(mqd);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
-index 6cfe7f1..b3f7d43 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
-@@ -32,7 +32,8 @@ int kfd_pasid_init(void)
- {
- pasid_limit = KFD_MAX_NUM_OF_PROCESSES;
-
-- pasid_bitmap = kcalloc(BITS_TO_LONGS(pasid_limit), sizeof(long), GFP_KERNEL);
-+ pasid_bitmap = kcalloc(BITS_TO_LONGS(pasid_limit), sizeof(long),
-+ GFP_KERNEL);
- if (!pasid_bitmap)
- return -ENOMEM;
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c b/drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c
-index 3fb8896..937c0ac 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_peerdirect.c
-@@ -485,7 +485,6 @@ void kfd_init_peer_direct(void)
- }
-
- pr_info("amdkfd: PeerDirect support was initialized successfully\n");
-- return;
- }
-
- /**
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h b/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h
-index 05e692b..31cef21 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h
-@@ -28,14 +28,14 @@
- #define PM4_MES_HEADER_DEFINED
- union PM4_MES_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
-- */
-+ /* reserved */
-+ uint32_t reserved1:8;
-+ /* IT opcode */
-+ uint32_t opcode:8;
-+ /* number of DWORDs - 1 in the information body */
-+ uint32_t count:14;
-+ /* packet identifier. It should be 3 for type 3 packets */
-+ uint32_t type:2;
- };
- uint32_t u32all;
- };
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_vi.h b/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_vi.h
-index 8cb3094..7c8d9b3 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_vi.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_vi.h
-@@ -30,10 +30,12 @@ union PM4_MES_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 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;
- };
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-index 501eea4..a774152 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
-@@ -188,9 +188,11 @@ enum asic_family_type {
- #define KFD_IS_SOC15(chip) ((chip) >= CHIP_VEGA10)
-
- struct kfd_event_interrupt_class {
-- bool (*interrupt_isr)(struct kfd_dev *dev, const uint32_t *ih_ring_entry,
-- uint32_t *patched_ihre, bool *patched_flag);
-- void (*interrupt_wq)(struct kfd_dev *dev, const uint32_t *ih_ring_entry);
-+ bool (*interrupt_isr)(struct kfd_dev *dev,
-+ const uint32_t *ih_ring_entry, uint32_t *patched_ihre,
-+ bool *patched_flag);
-+ void (*interrupt_wq)(struct kfd_dev *dev,
-+ const uint32_t *ih_ring_entry);
- };
-
- struct kfd_device_info {
-@@ -401,13 +403,13 @@ enum KFD_QUEUE_PRIORITY {
- * @write_ptr: Defines the number of dwords written to the ring buffer.
- *
- * @doorbell_ptr: This field aim is to notify the H/W of new packet written to
-- * the queue ring buffer. This field should be similar to write_ptr and the user
-- * should update this field after he updated the write_ptr.
-+ * the queue ring buffer. This field should be similar to write_ptr and the
-+ * user should update this field after he updated the write_ptr.
- *
- * @doorbell_off: The doorbell offset in the doorbell pci-bar.
- *
-- * @is_interop: Defines if this is a interop queue. Interop queue means that the
-- * queue can access both graphics and compute resources.
-+ * @is_interop: Defines if this is a interop queue. Interop queue means that
-+ * the queue can access both graphics and compute resources.
- *
- * @is_active: Defines if the queue is active or not.
- *
-@@ -466,9 +468,10 @@ struct queue_properties {
- * @properties: The queue properties.
- *
- * @mec: Used only in no cp scheduling mode and identifies to micro engine id
-- * that the queue should be execute on.
-+ * that the queue should be execute on.
- *
-- * @pipe: Used only in no cp scheduling mode and identifies the queue's pipe id.
-+ * @pipe: Used only in no cp scheduling mode and identifies the queue's pipe
-+ * id.
- *
- * @queue: Used only in no cp scheduliong mode and identifies the queue's slot.
- *
-@@ -552,7 +555,7 @@ struct qcm_process_device {
- unsigned int queue_count;
- unsigned int vmid;
- bool is_debug;
-- unsigned evicted; /* eviction counter, 0=active */
-+ unsigned int evicted; /* eviction counter, 0=active */
- /*
- * All the memory management data should be here too
- */
-@@ -601,9 +604,11 @@ int kgd2kfd_schedule_evict_and_restore_process(struct mm_struct *mm,
- struct fence *fence);
-
-
--/*8 byte handle containing GPU ID in the most significant 4 bytes and
-- * idr_handle in the least significant 4 bytes*/
--#define MAKE_HANDLE(gpu_id, idr_handle) (((uint64_t)(gpu_id) << 32) + idr_handle)
-+/* 8 byte handle containing GPU ID in the most significant 4 bytes and
-+ * idr_handle in the least significant 4 bytes
-+ */
-+#define MAKE_HANDLE(gpu_id, idr_handle) \
-+ (((uint64_t)(gpu_id) << 32) + idr_handle)
- #define GET_GPU_ID(handle) (handle >> 32)
- #define GET_IDR_HANDLE(handle) (handle & 0xFFFFFFFF)
-
-@@ -642,7 +647,8 @@ struct kfd_process_device {
-
- uint64_t sh_hidden_private_base_vmid;
-
-- /* Is this process/pasid bound to this device? (amd_iommu_bind_pasid) */
-+ /* Is this process/pasid bound to this device? (amd_iommu_bind_pasid)
-+ */
- enum kfd_pdd_bound bound;
-
- /* VM context for GPUVM allocations */
-@@ -711,7 +717,8 @@ struct kfd_process {
-
- struct process_queue_manager pqm;
-
-- unsigned long allocated_queue_bitmap[DIV_ROUND_UP(KFD_MAX_NUM_OF_QUEUES_PER_PROCESS, BITS_PER_LONG)];
-+ unsigned long allocated_queue_bitmap[DIV_ROUND_UP(KFD_MAX_NUM_OF_QUEUES_PER_PROCESS,
-+ BITS_PER_LONG)];
-
- /*Is the user space process 32 bit?*/
- bool is_32bit_user_mode;
-@@ -720,7 +727,8 @@ struct kfd_process {
- struct mutex event_mutex;
- /* All events in process hashed by ID, linked on kfd_event.events. */
- DECLARE_HASHTABLE(events, 4);
-- struct list_head signal_event_pages; /* struct slot_page_header.event_pages */
-+ /* struct slot_page_header.event_pages */
-+ struct list_head signal_event_pages;
- u32 next_nonsignal_event_id;
- size_t signal_event_count;
- size_t debug_event_count;
-@@ -760,7 +768,7 @@ struct amdkfd_ioctl_desc {
- void kfd_process_create_wq(void);
- void kfd_process_destroy_wq(void);
- struct kfd_process *kfd_create_process(struct file *filep);
--struct kfd_process *kfd_get_process(const struct task_struct *);
-+struct kfd_process *kfd_get_process(const struct task_struct *task);
- struct kfd_process *kfd_lookup_process_by_pasid(unsigned int pasid);
- struct kfd_process *kfd_lookup_process_by_mm(const struct mm_struct *mm);
- void kfd_unref_process(struct kfd_process *p);
-@@ -777,7 +785,8 @@ struct kfd_process_device *kfd_get_process_device_data(struct kfd_dev *dev,
- struct kfd_process_device *kfd_create_process_device_data(struct kfd_dev *dev,
- struct kfd_process *p);
-
--int kfd_reserved_mem_mmap(struct kfd_process *process, struct vm_area_struct *vma);
-+int kfd_reserved_mem_mmap(struct kfd_process *process,
-+ struct vm_area_struct *vma);
-
- /* KFD process API for creating and translating handles */
- int kfd_process_device_create_obj_handle(struct kfd_process_device *pdd,
-@@ -802,9 +811,11 @@ int kfd_map_memory_to_gpu(void *mem, struct kfd_process_device *pdd);
- int kfd_unmap_memory_from_gpu(void *mem, struct kfd_process_device *pdd);
-
- /* Process device data iterator */
--struct kfd_process_device *kfd_get_first_process_device_data(struct kfd_process *p);
--struct kfd_process_device *kfd_get_next_process_device_data(struct kfd_process *p,
-- struct kfd_process_device *pdd);
-+struct kfd_process_device *kfd_get_first_process_device_data(
-+ struct kfd_process *p);
-+struct kfd_process_device *kfd_get_next_process_device_data(
-+ struct kfd_process *p,
-+ struct kfd_process_device *pdd);
- bool kfd_has_process_device_data(struct kfd_process *p);
-
- /* PASIDs */
-@@ -938,7 +949,7 @@ struct packet_manager {
- struct mutex lock;
- bool allocated;
- struct kfd_mem_obj *ib_buffer_obj;
-- unsigned ib_size_bytes;
-+ unsigned int ib_size_bytes;
-
- struct packet_manager_funcs *pmf;
- };
-@@ -1046,7 +1057,8 @@ int kfd_wait_on_events(struct kfd_process *p,
- uint32_t num_events, void __user *data,
- bool all, uint32_t user_timeout_ms,
- enum kfd_event_wait_result *wait_result);
--void kfd_signal_event_interrupt(unsigned int pasid, uint32_t partial_id, uint32_t valid_id_bits);
-+void kfd_signal_event_interrupt(unsigned int pasid, uint32_t partial_id,
-+ uint32_t valid_id_bits);
- #if defined(CONFIG_AMD_IOMMU_V2_MODULE) || defined(CONFIG_AMD_IOMMU_V2)
- void kfd_signal_iommu_event(struct kfd_dev *dev,
- unsigned int pasid, unsigned long address,
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-index 601e551..025ee5d 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
-@@ -366,7 +366,8 @@ static void kfd_process_destroy_pdds(struct kfd_process *p)
- /* No process locking is needed in this function, because the process
- * is not findable any more. We must assume that no other thread is
- * using it any more, otherwise we couldn't safely free the process
-- * stucture in the end. */
-+ * structure in the end.
-+ */
- static void kfd_process_wq_release(struct work_struct *work)
- {
- struct kfd_process *p = container_of(work, struct kfd_process,
-@@ -448,7 +449,8 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn,
-
- /* Iterate over all process device data structures and if the pdd is in
- * debug mode,we should first force unregistration, then we will be
-- * able to destroy the queues */
-+ * able to destroy the queues
-+ */
- list_for_each_entry(pdd, &p->per_device_data, per_device_list) {
- dev = pdd->dev;
- mutex_lock(get_dbgmgr_mutex());
-@@ -611,8 +613,8 @@ static struct kfd_process *create_process(const struct task_struct *thread,
- process->last_restore_timestamp = get_jiffies_64();
-
- /* If PeerDirect interface was not detected try to detect it again
-- * in case if network driver was loaded later.
-- */
-+ * in case if network driver was loaded later.
-+ */
- kfd_init_peer_direct();
-
- return process;
-@@ -859,14 +861,16 @@ void kfd_process_iommu_unbind_callback(struct kfd_dev *dev, unsigned int pasid)
- }
- #endif /* CONFIG_AMD_IOMMU_V2 */
-
--struct kfd_process_device *kfd_get_first_process_device_data(struct kfd_process *p)
-+struct kfd_process_device *kfd_get_first_process_device_data(
-+ struct kfd_process *p)
- {
- return list_first_entry(&p->per_device_data,
- struct kfd_process_device,
- per_device_list);
- }
-
--struct kfd_process_device *kfd_get_next_process_device_data(struct kfd_process *p,
-+struct kfd_process_device *kfd_get_next_process_device_data(
-+ struct kfd_process *p,
- struct kfd_process_device *pdd)
- {
- if (list_is_last(&pdd->per_device_list, &p->per_device_data))
-@@ -880,7 +884,8 @@ bool kfd_has_process_device_data(struct kfd_process *p)
- }
-
- /* Create specific handle mapped to mem from process local memory idr
-- * Assumes that the process lock is held. */
-+ * Assumes that the process lock is held.
-+ */
- int kfd_process_device_create_obj_handle(struct kfd_process_device *pdd,
- void *mem, uint64_t start,
- uint64_t length,
-@@ -935,7 +940,8 @@ struct kfd_bo *kfd_process_device_find_bo(struct kfd_process_device *pdd,
- }
-
- /* Translate specific handle from process local memory idr
-- * Assumes that the process lock is held. */
-+ * Assumes that the process lock is held.
-+ */
- void *kfd_process_device_translate_handle(struct kfd_process_device *pdd,
- int handle)
- {
-@@ -973,7 +979,8 @@ void *kfd_process_find_bo_from_interval(struct kfd_process *p,
- }
-
- /* Remove specific handle from process local memory idr
-- * Assumes that the process lock is held. */
-+ * Assumes that the process lock is held.
-+ */
- void kfd_process_device_remove_obj_handle(struct kfd_process_device *pdd,
- int handle)
- {
-@@ -1042,7 +1049,8 @@ struct kfd_process *kfd_lookup_process_by_mm(const struct mm_struct *mm)
- return p;
- }
-
--int kfd_reserved_mem_mmap(struct kfd_process *process, struct vm_area_struct *vma)
-+int kfd_reserved_mem_mmap(struct kfd_process *process,
-+ struct vm_area_struct *vma)
- {
- unsigned long pfn, i;
- int ret = 0;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
-index 94e07ee..e4384ce 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
-@@ -240,7 +240,8 @@ int pqm_create_queue(struct process_queue_manager *pqm,
-
- case KFD_QUEUE_TYPE_COMPUTE:
- /* check if there is over subscription */
-- if ((dev->dqm->sched_policy == KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION) &&
-+ if ((dev->dqm->sched_policy ==
-+ KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION) &&
- ((dev->dqm->processes_count >= dev->vm_info.vmid_num_kfd) ||
- (dev->dqm->queue_count >= get_queues_num(dev->dqm)))) {
- pr_err("kfd: over-subscription is not allowed in radeon_kfd.sched_policy == 1\n");
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_rdma.c b/drivers/gpu/drm/amd/amdkfd/kfd_rdma.c
-index 56bf9a2..2b3c300 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_rdma.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_rdma.c
-@@ -179,7 +179,7 @@ void run_rdma_free_callback(struct kfd_bo *buf_obj)
- * This function release resources previously allocated by get_pages() call.
- *
- * \param p_p2p_data - A pointer to pointer to amd_p2p_info entries
-- * allocated by get_pages() call.
-+ * allocated by get_pages() call.
- *
- * \return 0 if operation was successful
- */
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
-index 1d1992f..3e21aef 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
-@@ -517,10 +517,8 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
- sysfs_show_64bit_prop(buffer, "local_mem_size",
- local_mem_info.local_mem_size_private +
- local_mem_info.local_mem_size_public);
-- }
-- else
-- sysfs_show_64bit_prop(buffer, "local_mem_size",
-- (unsigned long long int) 0);
-+ } else
-+ sysfs_show_64bit_prop(buffer, "local_mem_size", 0ULL);
-
- sysfs_show_32bit_prop(buffer, "fw_version",
- dev->gpu->mec_fw_version);
-@@ -881,17 +879,20 @@ static void kfd_debug_print_topology(void)
-
- down_read(&topology_lock);
-
-- dev = list_last_entry(&topology_device_list, struct kfd_topology_device, list);
-+ dev = list_last_entry(&topology_device_list,
-+ struct kfd_topology_device, list);
- if (dev) {
-- if (dev->node_props.cpu_cores_count && dev->node_props.simd_count) {
-+ if (dev->node_props.cpu_cores_count &&
-+ dev->node_props.simd_count) {
- pr_info("Topology: Add APU node [0x%0x:0x%0x]\n",
-- dev->node_props.device_id, dev->node_props.vendor_id);
-- }
-- else if (dev->node_props.cpu_cores_count)
-+ dev->node_props.device_id,
-+ dev->node_props.vendor_id);
-+ } else if (dev->node_props.cpu_cores_count)
- pr_info("Topology: Add CPU node\n");
- else if (dev->node_props.simd_count)
- pr_info("Topology: Add dGPU node [0x%0x:0x%0x]\n",
-- dev->node_props.device_id, dev->node_props.vendor_id);
-+ dev->node_props.device_id,
-+ dev->node_props.vendor_id);
- }
- up_read(&topology_lock);
- }
-@@ -903,7 +904,8 @@ static void kfd_update_system_properties(void)
- struct kfd_topology_device *dev;
-
- down_read(&topology_lock);
-- dev = list_last_entry(&topology_device_list, struct kfd_topology_device, list);
-+ dev = list_last_entry(&topology_device_list,
-+ struct kfd_topology_device, list);
- if (dev) {
- sys_props.platform_id =
- (*((uint64_t *)dev->oem_id)) & CRAT_OEMID_64BIT_MASK;
-@@ -1020,8 +1022,7 @@ int kfd_topology_init(void)
- * topology_device_list
- */
-
-- /* Initialize the head for the both the lists
-- */
-+ /* Initialize the head for the both the lists */
- INIT_LIST_HEAD(&topology_device_list);
- INIT_LIST_HEAD(&temp_topology_device_list);
- init_rwsem(&topology_lock);
-@@ -1031,7 +1032,8 @@ int kfd_topology_init(void)
- /* Proximity domains in ACPI CRAT tables start counting at
- * 0. The same should be true for virtual CRAT tables created
- * at this stage. GPUs added later in kfd_topology_add_device
-- * use a counter. */
-+ * use a counter.
-+ */
- proximity_domain = 0;
-
- /*
-@@ -1091,12 +1093,12 @@ int kfd_topology_init(void)
- kfd_update_system_properties();
- kfd_debug_print_topology();
- pr_info("Finished initializing topology\n");
-- }
-- else
-+ } else
- pr_err("Failed to update topology in sysfs ret=%d\n", ret);
-
- /* For nodes with GPU, this information gets added
-- * when GPU is detected (kfd_topology_add_device). */
-+ * when GPU is detected (kfd_topology_add_device).
-+ */
- if (cpu_only_node) {
- /* Add additional information to CPU only node created above */
- down_write(&topology_lock);
-@@ -1149,9 +1151,9 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu)
- return hashout;
- }
- /* kfd_assign_gpu - Attach @gpu to the correct kfd topology device. If
-- * the GPU device is not already present in the topology device list
-- * then return NULL. This means a new topology device has to be
-- * created for this GPU.
-+ * the GPU device is not already present in the topology device
-+ * list then return NULL. This means a new topology device has to
-+ * be created for this GPU.
- * TODO: Rather than assiging @gpu to first topology device withtout
- * gpu attached, it will better to have more stringent check.
- */
-@@ -1244,9 +1246,9 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
-
- /* Check to see if this gpu device exists in the topology_device_list.
- * If so, assign the gpu to that device,
-- * else create a Virtual CRAT for this gpu device and then parse that CRAT
-- * to create a new topology device. Once created assign the gpu to that
-- * topology device
-+ * else create a Virtual CRAT for this gpu device and then parse that
-+ * CRAT to create a new topology device. Once created assign the gpu to
-+ * that topology device
- */
- dev = kfd_assign_gpu(gpu);
- if (!dev) {
-@@ -1265,8 +1267,8 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
- kfd_topology_update_device_list(&temp_topology_device_list,
- &topology_device_list);
-
-- /*
-- * Update the SYSFS tree, since we added another topology device
-+ /* Update the SYSFS tree, since we added another topology
-+ * device
- */
- res = kfd_topology_update_sysfs();
- up_write(&topology_lock);
-@@ -1284,13 +1286,16 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
- gpu->id = gpu_id;
-
- /* TODO: Move the following lines to function
-- * kfd_add_non_crat_information */
-+ * kfd_add_non_crat_information
-+ */
-
- /* Fill-in additional information that is not available in CRAT but
-- * needed for the topology */
-+ * needed for the topology
-+ */
-
- dev->gpu->kfd2kgd->get_cu_info(dev->gpu->kgd, &cu_info);
-- dev->node_props.simd_arrays_per_engine = cu_info.num_shader_arrays_per_engine;
-+ dev->node_props.simd_arrays_per_engine =
-+ cu_info.num_shader_arrays_per_engine;
-
- dev->node_props.vendor_id = gpu->pdev->vendor;
- dev->node_props.device_id = gpu->pdev->device;
-@@ -1329,8 +1334,8 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
- }
-
- /* Fix errors in CZ CRAT.
-- * simd_count: Carrizo CRAT reports wrong simd_count, probably because it
-- * doesn't consider masked out CUs
-+ * simd_count: Carrizo CRAT reports wrong simd_count, probably because
-+ * it doesn't consider masked out CUs
- * max_waves_per_simd: Carrizo reports wrong max_waves_per_simd.
- * capability flag: Carrizo CRAT doesn't report IOMMU flags.
- */
-@@ -1339,7 +1344,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
- cu_info.simd_per_cu * cu_info.cu_active_number;
- dev->node_props.max_waves_per_simd = 10;
- dev->node_props.capability |= HSA_CAP_ATS_PRESENT;
-- }
-+ }
-
- kfd_debug_print_topology();
- err:
-@@ -1444,7 +1449,7 @@ int kfd_numa_node_to_apic_id(int numa_node_id)
- int kfd_debugfs_hqds_by_device(struct seq_file *m, void *data)
- {
- struct kfd_topology_device *dev;
-- unsigned i = 0;
-+ unsigned int i = 0;
- int r = 0;
-
- down_read(&topology_lock);
-@@ -1469,7 +1474,7 @@ int kfd_debugfs_hqds_by_device(struct seq_file *m, void *data)
- int kfd_debugfs_rls_by_device(struct seq_file *m, void *data)
- {
- struct kfd_topology_device *dev;
-- unsigned i = 0;
-+ unsigned int i = 0;
- int r = 0;
-
- down_read(&topology_lock);
---
-2.7.4
-