]>
Commit | Line | Data |
---|---|---|
39f3dcdc SLM |
1 | From 163ced885837cdd800a3e2baa9e1d5b4ae27b60c Mon Sep 17 00:00:00 2001 |
2 | From: Kevin Wang <kevin1.wang@amd.com> | |
3 | Date: Fri, 22 Feb 2019 12:36:49 +0800 | |
4 | Subject: drm/amdkfd: use init_mqd function to allocate object for hid_mqd (CI) | |
5 | ||
6 | [ Upstream commit cac734c2dbd2514f14c8c6a17caba1990d83bf1d ] | |
7 | ||
8 | if use the legacy method to allocate object, when mqd_hiq need to run | |
9 | uninit code, it will be cause WARNING call trace. | |
10 | ||
11 | eg: (s3 suspend test) | |
12 | [ 34.918944] Call Trace: | |
13 | [ 34.918948] [<ffffffff92961dc1>] dump_stack+0x19/0x1b | |
14 | [ 34.918950] [<ffffffff92297648>] __warn+0xd8/0x100 | |
15 | [ 34.918951] [<ffffffff9229778d>] warn_slowpath_null+0x1d/0x20 | |
16 | [ 34.918991] [<ffffffffc03ce1fe>] uninit_mqd_hiq_sdma+0x4e/0x50 [amdgpu] | |
17 | [ 34.919028] [<ffffffffc03d0ef7>] uninitialize+0x37/0xe0 [amdgpu] | |
18 | [ 34.919064] [<ffffffffc03d15a6>] kernel_queue_uninit+0x16/0x30 [amdgpu] | |
19 | [ 34.919086] [<ffffffffc03d26c2>] pm_uninit+0x12/0x20 [amdgpu] | |
20 | [ 34.919107] [<ffffffffc03d4915>] stop_nocpsch+0x15/0x20 [amdgpu] | |
21 | [ 34.919129] [<ffffffffc03c1dce>] kgd2kfd_suspend.part.4+0x2e/0x50 [amdgpu] | |
22 | [ 34.919150] [<ffffffffc03c2667>] kgd2kfd_suspend+0x17/0x20 [amdgpu] | |
23 | [ 34.919171] [<ffffffffc03c103a>] amdgpu_amdkfd_suspend+0x1a/0x20 [amdgpu] | |
24 | [ 34.919187] [<ffffffffc02ec428>] amdgpu_device_suspend+0x88/0x3a0 [amdgpu] | |
25 | [ 34.919189] [<ffffffff922e22cf>] ? enqueue_entity+0x2ef/0xbe0 | |
26 | [ 34.919205] [<ffffffffc02e8220>] amdgpu_pmops_suspend+0x20/0x30 [amdgpu] | |
27 | [ 34.919207] [<ffffffff925c56ff>] pci_pm_suspend+0x6f/0x150 | |
28 | [ 34.919208] [<ffffffff925c5690>] ? pci_pm_freeze+0xf0/0xf0 | |
29 | [ 34.919210] [<ffffffff926b45c6>] dpm_run_callback+0x46/0x90 | |
30 | [ 34.919212] [<ffffffff926b49db>] __device_suspend+0xfb/0x2a0 | |
31 | [ 34.919213] [<ffffffff926b4b9f>] async_suspend+0x1f/0xa0 | |
32 | [ 34.919214] [<ffffffff922c918f>] async_run_entry_fn+0x3f/0x130 | |
33 | [ 34.919216] [<ffffffff922b9d4f>] process_one_work+0x17f/0x440 | |
34 | [ 34.919217] [<ffffffff922bade6>] worker_thread+0x126/0x3c0 | |
35 | [ 34.919218] [<ffffffff922bacc0>] ? manage_workers.isra.25+0x2a0/0x2a0 | |
36 | [ 34.919220] [<ffffffff922c1c31>] kthread+0xd1/0xe0 | |
37 | [ 34.919221] [<ffffffff922c1b60>] ? insert_kthread_work+0x40/0x40 | |
38 | [ 34.919222] [<ffffffff92974c1d>] ret_from_fork_nospec_begin+0x7/0x21 | |
39 | [ 34.919224] [<ffffffff922c1b60>] ? insert_kthread_work+0x40/0x40 | |
40 | [ 34.919224] ---[ end trace 38cd9f65c963adad ]--- | |
41 | ||
42 | Signed-off-by: Kevin Wang <kevin1.wang@amd.com> | |
43 | Reviewed-by: Oak Zeng <Oak.Zeng@amd.com> | |
44 | Signed-off-by: Alex Deucher <alexander.deucher@amd.com> | |
45 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
46 | --- | |
47 | .../gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 52 +------------------ | |
48 | 1 file changed, 1 insertion(+), 51 deletions(-) | |
49 | ||
50 | diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | |
51 | index 164fa4b1f9a9..732b8fbbca68 100644 | |
52 | --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | |
53 | +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | |
54 | @@ -285,57 +285,7 @@ static int init_mqd_hiq(struct mqd_manager *mm, void **mqd, | |
55 | struct kfd_mem_obj **mqd_mem_obj, uint64_t *gart_addr, | |
56 | struct queue_properties *q) | |
57 | { | |
58 | - uint64_t addr; | |
59 | - struct cik_mqd *m; | |
60 | - int retval; | |
61 | - | |
62 | - retval = kfd_gtt_sa_allocate(mm->dev, sizeof(struct cik_mqd), | |
63 | - mqd_mem_obj); | |
64 | - | |
65 | - if (retval != 0) | |
66 | - return -ENOMEM; | |
67 | - | |
68 | - m = (struct cik_mqd *) (*mqd_mem_obj)->cpu_ptr; | |
69 | - addr = (*mqd_mem_obj)->gpu_addr; | |
70 | - | |
71 | - memset(m, 0, ALIGN(sizeof(struct cik_mqd), 256)); | |
72 | - | |
73 | - m->header = 0xC0310800; | |
74 | - m->compute_pipelinestat_enable = 1; | |
75 | - m->compute_static_thread_mgmt_se0 = 0xFFFFFFFF; | |
76 | - m->compute_static_thread_mgmt_se1 = 0xFFFFFFFF; | |
77 | - m->compute_static_thread_mgmt_se2 = 0xFFFFFFFF; | |
78 | - m->compute_static_thread_mgmt_se3 = 0xFFFFFFFF; | |
79 | - | |
80 | - m->cp_hqd_persistent_state = DEFAULT_CP_HQD_PERSISTENT_STATE | | |
81 | - PRELOAD_REQ; | |
82 | - m->cp_hqd_quantum = QUANTUM_EN | QUANTUM_SCALE_1MS | | |
83 | - QUANTUM_DURATION(10); | |
84 | - | |
85 | - m->cp_mqd_control = MQD_CONTROL_PRIV_STATE_EN; | |
86 | - m->cp_mqd_base_addr_lo = lower_32_bits(addr); | |
87 | - m->cp_mqd_base_addr_hi = upper_32_bits(addr); | |
88 | - | |
89 | - m->cp_hqd_ib_control = DEFAULT_MIN_IB_AVAIL_SIZE; | |
90 | - | |
91 | - /* | |
92 | - * Pipe Priority | |
93 | - * Identifies the pipe relative priority when this queue is connected | |
94 | - * to the pipeline. The pipe priority is against the GFX pipe and HP3D. | |
95 | - * In KFD we are using a fixed pipe priority set to CS_MEDIUM. | |
96 | - * 0 = CS_LOW (typically below GFX) | |
97 | - * 1 = CS_MEDIUM (typically between HP3D and GFX | |
98 | - * 2 = CS_HIGH (typically above HP3D) | |
99 | - */ | |
100 | - m->cp_hqd_pipe_priority = 1; | |
101 | - m->cp_hqd_queue_priority = 15; | |
102 | - | |
103 | - *mqd = m; | |
104 | - if (gart_addr) | |
105 | - *gart_addr = addr; | |
106 | - retval = mm->update_mqd(mm, m, q); | |
107 | - | |
108 | - return retval; | |
109 | + return init_mqd(mm, mqd, mqd_mem_obj, gart_addr, q); | |
110 | } | |
111 | ||
112 | static int update_mqd_hiq(struct mqd_manager *mm, void *mqd, | |
113 | -- | |
114 | 2.19.1 | |
115 |