Commit 6c5ed5a
committed
drm/atomic: Acquire connection_mutex lock in drm_helper_probe_single_connector_modes, v4.
mode_valid() called from drm_helper_probe_single_connector_modes()
may need to look at connector->state because what a valid mode is may
depend on connector properties being set. For example some HDMI modes
might be rejected when a connector property forces the connector
into DVI mode.
Some implementations of detect() already lock all state,
so we have to pass an acquire_ctx to them to prevent a deadlock.
This means changing the function signature of detect() slightly,
and passing the acquire_ctx for locking multiple crtc's.
For the callbacks, it will always be non-zero. To allow callers
not to worry about this, drm_helper_probe_detect_ctx is added
which might handle -EDEADLK for you.
Changes since v1:
- Always set ctx parameter.
Changes since v2:
- Always take connection_mutex when probing.
Changes since v3:
- Remove the ctx from intel_dp_long_pulse, and add
WARN_ON(!connection_mutex) (danvet)
- Update docs to clarify the locking situation. (danvet)
Signed-off-by: Maarten Lankhorst <[email protected]>
Cc: Boris Brezillon <[email protected]>
Reviewed-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/1491504920-4017-1-git-send-email-maarten.lankhorst@linux.intel.com1 parent 99748ab commit 6c5ed5a
File tree
10 files changed
+187
-61
lines changed- drivers/gpu/drm
- i915
- include/drm
10 files changed
+187
-61
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
169 | 169 | | |
170 | 170 | | |
171 | 171 | | |
172 | | - | |
| 172 | + | |
173 | 173 | | |
174 | | - | |
175 | | - | |
176 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
177 | 237 | | |
| 238 | + | |
178 | 239 | | |
179 | 240 | | |
180 | 241 | | |
| |||
239 | 300 | | |
240 | 301 | | |
241 | 302 | | |
242 | | - | |
| 303 | + | |
243 | 304 | | |
244 | 305 | | |
245 | 306 | | |
| 307 | + | |
246 | 308 | | |
247 | 309 | | |
248 | 310 | | |
| 311 | + | |
| 312 | + | |
249 | 313 | | |
250 | 314 | | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
251 | 324 | | |
252 | 325 | | |
253 | 326 | | |
| |||
263 | 336 | | |
264 | 337 | | |
265 | 338 | | |
266 | | - | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
267 | 348 | | |
268 | 349 | | |
269 | 350 | | |
| |||
355 | 436 | | |
356 | 437 | | |
357 | 438 | | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
358 | 442 | | |
359 | 443 | | |
360 | 444 | | |
| |||
440 | 524 | | |
441 | 525 | | |
442 | 526 | | |
443 | | - | |
| 527 | + | |
444 | 528 | | |
445 | 529 | | |
446 | 530 | | |
| |||
588 | 672 | | |
589 | 673 | | |
590 | 674 | | |
591 | | - | |
| 675 | + | |
592 | 676 | | |
593 | 677 | | |
594 | 678 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
669 | 669 | | |
670 | 670 | | |
671 | 671 | | |
672 | | - | |
673 | | - | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
674 | 676 | | |
675 | 677 | | |
676 | 678 | | |
677 | 679 | | |
678 | | - | |
| 680 | + | |
679 | 681 | | |
680 | | - | |
681 | 682 | | |
682 | 683 | | |
683 | 684 | | |
| |||
721 | 722 | | |
722 | 723 | | |
723 | 724 | | |
724 | | - | |
725 | | - | |
726 | 725 | | |
727 | | - | |
| 726 | + | |
| 727 | + | |
728 | 728 | | |
729 | 729 | | |
730 | 730 | | |
| |||
734 | 734 | | |
735 | 735 | | |
736 | 736 | | |
737 | | - | |
738 | | - | |
| 737 | + | |
| 738 | + | |
739 | 739 | | |
740 | | - | |
741 | | - | |
742 | | - | |
| 740 | + | |
| 741 | + | |
743 | 742 | | |
744 | 743 | | |
745 | 744 | | |
| |||
811 | 810 | | |
812 | 811 | | |
813 | 812 | | |
814 | | - | |
815 | 813 | | |
816 | 814 | | |
817 | 815 | | |
| |||
823 | 821 | | |
824 | 822 | | |
825 | 823 | | |
| 824 | + | |
826 | 825 | | |
827 | 826 | | |
828 | 827 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9480 | 9480 | | |
9481 | 9481 | | |
9482 | 9482 | | |
9483 | | - | |
9484 | | - | |
9485 | | - | |
9486 | | - | |
| 9483 | + | |
| 9484 | + | |
| 9485 | + | |
| 9486 | + | |
9487 | 9487 | | |
9488 | 9488 | | |
9489 | 9489 | | |
| |||
9506 | 9506 | | |
9507 | 9507 | | |
9508 | 9508 | | |
9509 | | - | |
9510 | | - | |
9511 | | - | |
9512 | | - | |
| 9509 | + | |
9513 | 9510 | | |
9514 | 9511 | | |
9515 | 9512 | | |
| |||
9659 | 9656 | | |
9660 | 9657 | | |
9661 | 9658 | | |
9662 | | - | |
9663 | | - | |
9664 | | - | |
9665 | | - | |
| 9659 | + | |
| 9660 | + | |
9666 | 9661 | | |
9667 | 9662 | | |
9668 | 9663 | | |
| |||
15030 | 15025 | | |
15031 | 15026 | | |
15032 | 15027 | | |
| 15028 | + | |
15033 | 15029 | | |
15034 | 15030 | | |
15035 | 15031 | | |
| |||
15046 | 15042 | | |
15047 | 15043 | | |
15048 | 15044 | | |
15049 | | - | |
| 15045 | + | |
| 15046 | + | |
| 15047 | + | |
| 15048 | + | |
15050 | 15049 | | |
15051 | 15050 | | |
15052 | 15051 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4566 | 4566 | | |
4567 | 4567 | | |
4568 | 4568 | | |
4569 | | - | |
| 4569 | + | |
4570 | 4570 | | |
4571 | 4571 | | |
4572 | 4572 | | |
| |||
4577 | 4577 | | |
4578 | 4578 | | |
4579 | 4579 | | |
| 4580 | + | |
| 4581 | + | |
4580 | 4582 | | |
4581 | 4583 | | |
4582 | 4584 | | |
| |||
4635 | 4637 | | |
4636 | 4638 | | |
4637 | 4639 | | |
4638 | | - | |
4639 | | - | |
4640 | | - | |
4641 | | - | |
4642 | | - | |
4643 | | - | |
4644 | 4640 | | |
4645 | | - | |
4646 | 4641 | | |
4647 | 4642 | | |
4648 | 4643 | | |
| |||
4682 | 4677 | | |
4683 | 4678 | | |
4684 | 4679 | | |
4685 | | - | |
4686 | | - | |
| 4680 | + | |
| 4681 | + | |
| 4682 | + | |
| 4683 | + | |
4687 | 4684 | | |
4688 | 4685 | | |
4689 | | - | |
| 4686 | + | |
4690 | 4687 | | |
4691 | 4688 | | |
4692 | 4689 | | |
| |||
5014 | 5011 | | |
5015 | 5012 | | |
5016 | 5013 | | |
5017 | | - | |
5018 | 5014 | | |
5019 | 5015 | | |
5020 | 5016 | | |
| |||
5027 | 5023 | | |
5028 | 5024 | | |
5029 | 5025 | | |
| 5026 | + | |
5030 | 5027 | | |
5031 | 5028 | | |
5032 | 5029 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1353 | 1353 | | |
1354 | 1354 | | |
1355 | 1355 | | |
1356 | | - | |
1357 | | - | |
1358 | | - | |
1359 | | - | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
1360 | 1360 | | |
1361 | 1361 | | |
1362 | 1362 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
246 | | - | |
| 246 | + | |
| 247 | + | |
247 | 248 | | |
248 | 249 | | |
249 | 250 | | |
| |||
0 commit comments