Lines Matching full:locks
30 /* Lock class keys for associating with real driver locks */
42 * amdgpu_lockdep_set_class - Associate lock class keys with real locks
45 * Call during device init to associate lock classes with actual locks
65 * Instantiates dummy objects and takes locks in the correct order to
92 * Note: mmap_lock ordering relative to GPU locks is already taught
98 struct amdgpu_lockdep_dummy_locks *locks; in amdgpu_lockdep_init() local
101 locks = kzalloc_obj(*locks); in amdgpu_lockdep_init()
102 if (!locks) in amdgpu_lockdep_init()
111 kfree(locks); in amdgpu_lockdep_init()
114 /* Initialize dummy locks */ in amdgpu_lockdep_init()
115 mutex_init(&locks->userq_sch_mutex); in amdgpu_lockdep_init()
116 mutex_init(&locks->userq_mutex); in amdgpu_lockdep_init()
117 mutex_init(&locks->notifier_lock); in amdgpu_lockdep_init()
118 mutex_init(&locks->vram_lock); in amdgpu_lockdep_init()
119 mutex_init(&locks->reset_lock); in amdgpu_lockdep_init()
120 mutex_init(&locks->srbm_mutex); in amdgpu_lockdep_init()
121 mutex_init(&locks->grbm_idx_mutex); in amdgpu_lockdep_init()
122 spin_lock_init(&locks->mmio_idx_lock); in amdgpu_lockdep_init()
125 * Associate dummy locks with the same class keys used for real in amdgpu_lockdep_init()
126 * driver locks. This ensures lockdep connects the ordering learned in amdgpu_lockdep_init()
127 * here with the actual locks used at runtime. in amdgpu_lockdep_init()
129 lockdep_set_class(&locks->userq_sch_mutex, &amdgpu_userq_sch_mutex_key); in amdgpu_lockdep_init()
130 lockdep_set_class(&locks->userq_mutex, &amdgpu_userq_mutex_key); in amdgpu_lockdep_init()
131 lockdep_set_class(&locks->notifier_lock, &amdgpu_notifier_lock_key); in amdgpu_lockdep_init()
132 lockdep_set_class(&locks->vram_lock, &amdgpu_vram_lock_key); in amdgpu_lockdep_init()
134 lockdep_set_class(&locks->reset_lock, &amdgpu_reset_lock_key); in amdgpu_lockdep_init()
135 lockdep_set_class(&locks->srbm_mutex, &amdgpu_srbm_lock_key); in amdgpu_lockdep_init()
136 lockdep_set_class(&locks->grbm_idx_mutex, &amdgpu_grbm_lock_key); in amdgpu_lockdep_init()
137 lockdep_set_class(&locks->mmio_idx_lock, &amdgpu_mmio_lock_key); in amdgpu_lockdep_init()
140 * Register fs_reclaim lock class FIRST, before taking any locks. in amdgpu_lockdep_init()
143 * (no locks are held between acquire and release). It only registers in amdgpu_lockdep_init()
154 * Take locks in the correct order to train lockdep. in amdgpu_lockdep_init()
159 mutex_lock(&locks->userq_sch_mutex); in amdgpu_lockdep_init()
162 mutex_lock(&locks->userq_mutex); in amdgpu_lockdep_init()
164 mutex_lock(&locks->notifier_lock); in amdgpu_lockdep_init()
166 mutex_lock(&locks->vram_lock); in amdgpu_lockdep_init()
171 mutex_lock(&locks->reset_lock); in amdgpu_lockdep_init()
174 mutex_lock(&locks->srbm_mutex); in amdgpu_lockdep_init()
176 mutex_lock(&locks->grbm_idx_mutex); in amdgpu_lockdep_init()
179 spin_lock_irqsave(&locks->mmio_idx_lock, flags); in amdgpu_lockdep_init()
181 * All locks acquired in order. in amdgpu_lockdep_init()
186 spin_unlock_irqrestore(&locks->mmio_idx_lock, flags); in amdgpu_lockdep_init()
187 mutex_unlock(&locks->grbm_idx_mutex); in amdgpu_lockdep_init()
188 mutex_unlock(&locks->srbm_mutex); in amdgpu_lockdep_init()
190 mutex_unlock(&locks->reset_lock); in amdgpu_lockdep_init()
193 mutex_unlock(&locks->vram_lock); in amdgpu_lockdep_init()
194 mutex_unlock(&locks->notifier_lock); in amdgpu_lockdep_init()
195 mutex_unlock(&locks->userq_mutex); in amdgpu_lockdep_init()
196 mutex_unlock(&locks->userq_sch_mutex); in amdgpu_lockdep_init()
201 kfree(locks); in amdgpu_lockdep_init()