Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'drm-misc-next-2021-11-29' of git://anongit.freedesktop.org/drm/drm-misc into drm-next

drm-misc-next for 5.17:

UAPI Changes:

Cross-subsystem Changes:

* Move 'nomodeset' kernel boot option into DRM subsystem

Core Changes:

* Replace several DRM_*() logging macros with drm_*() equivalents
* panel: Add quirk for Lenovo Yoga Book X91F/L
* ttm: Documentation fixes

Driver Changes:

* Cleanup nomodeset handling in drivers
* Fixes
* bridge/anx7625: Fix reading EDID; Fix error code
* bridge/megachips: Probe both bridges before registering
* vboxvideo: Fix ERR_PTR usage

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/YaSVz15Q7dAlEevU@linux-uq9g.fritz.box

+344 -285
+7
Documentation/admin-guide/kernel-parameters.txt
··· 3545 3545 shutdown the other cpus. Instead use the REBOOT_VECTOR 3546 3546 irq. 3547 3547 3548 + nomodeset Disable kernel modesetting. DRM drivers will not perform 3549 + display-mode changes or accelerated rendering. Only the 3550 + system framebuffer will be available for use if this was 3551 + set-up by the firmware or boot loader. 3552 + 3553 + Useful as fallback, or for testing and debugging. 3554 + 3548 3555 nomodule Disable module load 3549 3556 3550 3557 nopat [X86] Disable PAT (page attribute table extension of
+6
drivers/gpu/drm/Kconfig
··· 8 8 menuconfig DRM 9 9 tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" 10 10 depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA 11 + select DRM_NOMODESET 11 12 select DRM_PANEL_ORIENTATION_QUIRKS 12 13 select HDMI 13 14 select FB_CMDLINE ··· 492 491 # Separate option because drm_panel_orientation_quirks.c is shared with fbdev 493 492 config DRM_PANEL_ORIENTATION_QUIRKS 494 493 tristate 494 + 495 + # Separate option because nomodeset parameter is global and expected built-in 496 + config DRM_NOMODESET 497 + bool 498 + default n 495 499 496 500 config DRM_LIB_RANDOM 497 501 bool
+2
drivers/gpu/drm/Makefile
··· 33 33 34 34 obj-$(CONFIG_DRM_DP_AUX_BUS) += drm_dp_aux_bus.o 35 35 36 + obj-$(CONFIG_DRM_NOMODESET) += drm_nomodeset.o 37 + 36 38 drm_cma_helper-y := drm_gem_cma_helper.o 37 39 obj-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_cma_helper.o 38 40
+1 -4
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
··· 31 31 #include "amdgpu_drv.h" 32 32 33 33 #include <drm/drm_pciids.h> 34 - #include <linux/console.h> 35 34 #include <linux/module.h> 36 35 #include <linux/pm_runtime.h> 37 36 #include <linux/vga_switcheroo.h> ··· 2515 2516 { 2516 2517 int r; 2517 2518 2518 - if (vgacon_text_force()) { 2519 - DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n"); 2519 + if (drm_firmware_drivers_only()) 2520 2520 return -EINVAL; 2521 - } 2522 2521 2523 2522 r = amdgpu_sync_init(); 2524 2523 if (r)
-9
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
··· 116 116 117 117 abo = ttm_to_amdgpu_bo(bo); 118 118 if (abo->flags & AMDGPU_AMDKFD_CREATE_SVM_BO) { 119 - struct dma_fence *fence; 120 - struct dma_resv *resv = &bo->base._resv; 121 - 122 - rcu_read_lock(); 123 - fence = rcu_dereference(resv->fence_excl); 124 - if (fence && !fence->ops->signaled) 125 - dma_fence_enable_sw_signaling(fence); 126 - 127 119 placement->num_placement = 0; 128 120 placement->num_busy_placement = 0; 129 - rcu_read_unlock(); 130 121 return; 131 122 } 132 123
+1 -2
drivers/gpu/drm/ast/ast_drv.c
··· 26 26 * Authors: Dave Airlie <airlied@redhat.com> 27 27 */ 28 28 29 - #include <linux/console.h> 30 29 #include <linux/module.h> 31 30 #include <linux/pci.h> 32 31 ··· 232 233 233 234 static int __init ast_init(void) 234 235 { 235 - if (vgacon_text_force() && ast_modeset == -1) 236 + if (drm_firmware_drivers_only() && ast_modeset == -1) 236 237 return -EINVAL; 237 238 238 239 if (ast_modeset == 0)
+3 -3
drivers/gpu/drm/bridge/analogix/anx7625.c
··· 850 850 int count, blocks_num; 851 851 u8 pblock_buf[MAX_DPCD_BUFFER_SIZE]; 852 852 u8 i, j; 853 - u8 g_edid_break = 0; 853 + int g_edid_break = 0; 854 854 int ret; 855 855 struct device *dev = &ctx->client->dev; 856 856 ··· 881 881 g_edid_break = edid_read(ctx, offset, 882 882 pblock_buf); 883 883 884 - if (g_edid_break) 884 + if (g_edid_break < 0) 885 885 break; 886 886 887 887 memcpy(&pedid_blocks_buf[offset], ··· 1636 1636 sizeof(codec_data)); 1637 1637 1638 1638 if (IS_ERR(ctx->audio_pdev)) 1639 - return IS_ERR(ctx->audio_pdev); 1639 + return PTR_ERR(ctx->audio_pdev); 1640 1640 1641 1641 DRM_DEV_DEBUG_DRIVER(dev, "bound to %s", HDMI_CODEC_DRV_NAME); 1642 1642
+28 -12
drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
··· 306 306 mutex_unlock(&ge_b850v3_lvds_dev_mutex); 307 307 } 308 308 309 - static int stdp4028_ge_b850v3_fw_probe(struct i2c_client *stdp4028_i2c, 310 - const struct i2c_device_id *id) 309 + static int ge_b850v3_register(void) 311 310 { 311 + struct i2c_client *stdp4028_i2c = ge_b850v3_lvds_ptr->stdp4028_i2c; 312 312 struct device *dev = &stdp4028_i2c->dev; 313 - int ret; 314 - 315 - ret = ge_b850v3_lvds_init(dev); 316 - 317 - if (ret) 318 - return ret; 319 - 320 - ge_b850v3_lvds_ptr->stdp4028_i2c = stdp4028_i2c; 321 - i2c_set_clientdata(stdp4028_i2c, ge_b850v3_lvds_ptr); 322 313 323 314 /* drm bridge initialization */ 324 315 ge_b850v3_lvds_ptr->bridge.funcs = &ge_b850v3_lvds_funcs; ··· 332 341 ge_b850v3_lvds_irq_handler, 333 342 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 334 343 "ge-b850v3-lvds-dp", ge_b850v3_lvds_ptr); 344 + } 345 + 346 + static int stdp4028_ge_b850v3_fw_probe(struct i2c_client *stdp4028_i2c, 347 + const struct i2c_device_id *id) 348 + { 349 + struct device *dev = &stdp4028_i2c->dev; 350 + int ret; 351 + 352 + ret = ge_b850v3_lvds_init(dev); 353 + 354 + if (ret) 355 + return ret; 356 + 357 + ge_b850v3_lvds_ptr->stdp4028_i2c = stdp4028_i2c; 358 + i2c_set_clientdata(stdp4028_i2c, ge_b850v3_lvds_ptr); 359 + 360 + /* Only register after both bridges are probed */ 361 + if (!ge_b850v3_lvds_ptr->stdp2690_i2c) 362 + return 0; 363 + 364 + return ge_b850v3_register(); 335 365 } 336 366 337 367 static int stdp4028_ge_b850v3_fw_remove(struct i2c_client *stdp4028_i2c) ··· 398 386 ge_b850v3_lvds_ptr->stdp2690_i2c = stdp2690_i2c; 399 387 i2c_set_clientdata(stdp2690_i2c, ge_b850v3_lvds_ptr); 400 388 401 - return 0; 389 + /* Only register after both bridges are probed */ 390 + if (!ge_b850v3_lvds_ptr->stdp4028_i2c) 391 + return 0; 392 + 393 + return ge_b850v3_register(); 402 394 } 403 395 404 396 static int stdp2690_ge_b850v3_fw_remove(struct i2c_client *stdp2690_i2c)
+99 -81
drivers/gpu/drm/drm_atomic.c
··· 74 74 75 75 ret = wait_for_completion_timeout(&commit->hw_done, timeout); 76 76 if (!ret) { 77 - DRM_ERROR("hw_done timed out\n"); 77 + drm_err(commit->crtc->dev, "hw_done timed out\n"); 78 78 return -ETIMEDOUT; 79 79 } 80 80 ··· 84 84 */ 85 85 ret = wait_for_completion_timeout(&commit->flip_done, timeout); 86 86 if (!ret) { 87 - DRM_ERROR("flip_done timed out\n"); 87 + drm_err(commit->crtc->dev, "flip_done timed out\n"); 88 88 return -ETIMEDOUT; 89 89 } 90 90 ··· 140 140 141 141 state->dev = dev; 142 142 143 - DRM_DEBUG_ATOMIC("Allocated atomic state %p\n", state); 143 + drm_dbg_atomic(dev, "Allocated atomic state %p\n", state); 144 144 145 145 return 0; 146 146 fail: ··· 191 191 struct drm_mode_config *config = &dev->mode_config; 192 192 int i; 193 193 194 - DRM_DEBUG_ATOMIC("Clearing atomic state %p\n", state); 194 + drm_dbg_atomic(dev, "Clearing atomic state %p\n", state); 195 195 196 196 for (i = 0; i < state->num_connector; i++) { 197 197 struct drm_connector *connector = state->connectors[i].ptr; ··· 301 301 302 302 drm_atomic_state_clear(state); 303 303 304 - DRM_DEBUG_ATOMIC("Freeing atomic state %p\n", state); 304 + drm_dbg_atomic(state->dev, "Freeing atomic state %p\n", state); 305 305 306 306 if (config->funcs->atomic_state_free) { 307 307 config->funcs->atomic_state_free(state); ··· 358 358 state->crtcs[index].ptr = crtc; 359 359 crtc_state->state = state; 360 360 361 - DRM_DEBUG_ATOMIC("Added [CRTC:%d:%s] %p state to %p\n", 362 - crtc->base.id, crtc->name, crtc_state, state); 361 + drm_dbg_atomic(state->dev, "Added [CRTC:%d:%s] %p state to %p\n", 362 + crtc->base.id, crtc->name, crtc_state, state); 363 363 364 364 return crtc_state; 365 365 } ··· 379 379 */ 380 380 381 381 if (new_crtc_state->active && !new_crtc_state->enable) { 382 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] active without enabled\n", 383 - crtc->base.id, crtc->name); 382 + drm_dbg_atomic(crtc->dev, 383 + "[CRTC:%d:%s] active without enabled\n", 384 + crtc->base.id, crtc->name); 384 385 return -EINVAL; 385 386 } 386 387 ··· 391 390 */ 392 391 if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) && 393 392 WARN_ON(new_crtc_state->enable && !new_crtc_state->mode_blob)) { 394 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled without mode blob\n", 395 - crtc->base.id, crtc->name); 393 + drm_dbg_atomic(crtc->dev, 394 + "[CRTC:%d:%s] enabled without mode blob\n", 395 + crtc->base.id, crtc->name); 396 396 return -EINVAL; 397 397 } 398 398 399 399 if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) && 400 400 WARN_ON(!new_crtc_state->enable && new_crtc_state->mode_blob)) { 401 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] disabled with mode blob\n", 402 - crtc->base.id, crtc->name); 401 + drm_dbg_atomic(crtc->dev, 402 + "[CRTC:%d:%s] disabled with mode blob\n", 403 + crtc->base.id, crtc->name); 403 404 return -EINVAL; 404 405 } 405 406 ··· 417 414 */ 418 415 if (new_crtc_state->event && 419 416 !new_crtc_state->active && !old_crtc_state->active) { 420 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] requesting event but off\n", 421 - crtc->base.id, crtc->name); 417 + drm_dbg_atomic(crtc->dev, 418 + "[CRTC:%d:%s] requesting event but off\n", 419 + crtc->base.id, crtc->name); 422 420 return -EINVAL; 423 421 } 424 422 ··· 464 460 return 0; 465 461 466 462 if (writeback_job->fb && !state->crtc) { 467 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] framebuffer without CRTC\n", 468 - connector->base.id, connector->name); 463 + drm_dbg_atomic(connector->dev, 464 + "[CONNECTOR:%d:%s] framebuffer without CRTC\n", 465 + connector->base.id, connector->name); 469 466 return -EINVAL; 470 467 } 471 468 ··· 475 470 state->crtc); 476 471 477 472 if (writeback_job->fb && !crtc_state->active) { 478 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] has framebuffer, but [CRTC:%d] is off\n", 479 - connector->base.id, connector->name, 480 - state->crtc->base.id); 473 + drm_dbg_atomic(connector->dev, 474 + "[CONNECTOR:%d:%s] has framebuffer, but [CRTC:%d] is off\n", 475 + connector->base.id, connector->name, 476 + state->crtc->base.id); 481 477 return -EINVAL; 482 478 } 483 479 484 480 if (!writeback_job->fb) { 485 481 if (writeback_job->out_fence) { 486 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", 487 - connector->base.id, connector->name); 482 + drm_dbg_atomic(connector->dev, 483 + "[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", 484 + connector->base.id, connector->name); 488 485 return -EINVAL; 489 486 } 490 487 ··· 544 537 state->planes[index].new_state = plane_state; 545 538 plane_state->state = state; 546 539 547 - DRM_DEBUG_ATOMIC("Added [PLANE:%d:%s] %p state to %p\n", 548 - plane->base.id, plane->name, plane_state, state); 540 + drm_dbg_atomic(plane->dev, "Added [PLANE:%d:%s] %p state to %p\n", 541 + plane->base.id, plane->name, plane_state, state); 549 542 550 543 if (plane_state->crtc) { 551 544 struct drm_crtc_state *crtc_state; ··· 601 594 602 595 /* either *both* CRTC and FB must be set, or neither */ 603 596 if (crtc && !fb) { 604 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] CRTC set but no FB\n", 605 - plane->base.id, plane->name); 597 + drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] CRTC set but no FB\n", 598 + plane->base.id, plane->name); 606 599 return -EINVAL; 607 600 } else if (fb && !crtc) { 608 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] FB set but no CRTC\n", 609 - plane->base.id, plane->name); 601 + drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] FB set but no CRTC\n", 602 + plane->base.id, plane->name); 610 603 return -EINVAL; 611 604 } 612 605 ··· 616 609 617 610 /* Check whether this plane is usable on this CRTC */ 618 611 if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) { 619 - DRM_DEBUG_ATOMIC("Invalid [CRTC:%d:%s] for [PLANE:%d:%s]\n", 620 - crtc->base.id, crtc->name, 621 - plane->base.id, plane->name); 612 + drm_dbg_atomic(plane->dev, 613 + "Invalid [CRTC:%d:%s] for [PLANE:%d:%s]\n", 614 + crtc->base.id, crtc->name, 615 + plane->base.id, plane->name); 622 616 return -EINVAL; 623 617 } 624 618 ··· 627 619 ret = drm_plane_check_pixel_format(plane, fb->format->format, 628 620 fb->modifier); 629 621 if (ret) { 630 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n", 631 - plane->base.id, plane->name, 632 - &fb->format->format, fb->modifier); 622 + drm_dbg_atomic(plane->dev, 623 + "[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n", 624 + plane->base.id, plane->name, 625 + &fb->format->format, fb->modifier); 633 626 return ret; 634 627 } 635 628 ··· 639 630 new_plane_state->crtc_x > INT_MAX - (int32_t) new_plane_state->crtc_w || 640 631 new_plane_state->crtc_h > INT_MAX || 641 632 new_plane_state->crtc_y > INT_MAX - (int32_t) new_plane_state->crtc_h) { 642 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid CRTC coordinates %ux%u+%d+%d\n", 643 - plane->base.id, plane->name, 644 - new_plane_state->crtc_w, new_plane_state->crtc_h, 645 - new_plane_state->crtc_x, new_plane_state->crtc_y); 633 + drm_dbg_atomic(plane->dev, 634 + "[PLANE:%d:%s] invalid CRTC coordinates %ux%u+%d+%d\n", 635 + plane->base.id, plane->name, 636 + new_plane_state->crtc_w, new_plane_state->crtc_h, 637 + new_plane_state->crtc_x, new_plane_state->crtc_y); 646 638 return -ERANGE; 647 639 } 648 640 ··· 655 645 new_plane_state->src_x > fb_width - new_plane_state->src_w || 656 646 new_plane_state->src_h > fb_height || 657 647 new_plane_state->src_y > fb_height - new_plane_state->src_h) { 658 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid source coordinates " 659 - "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n", 660 - plane->base.id, plane->name, 661 - new_plane_state->src_w >> 16, 662 - ((new_plane_state->src_w & 0xffff) * 15625) >> 10, 663 - new_plane_state->src_h >> 16, 664 - ((new_plane_state->src_h & 0xffff) * 15625) >> 10, 665 - new_plane_state->src_x >> 16, 666 - ((new_plane_state->src_x & 0xffff) * 15625) >> 10, 667 - new_plane_state->src_y >> 16, 668 - ((new_plane_state->src_y & 0xffff) * 15625) >> 10, 669 - fb->width, fb->height); 648 + drm_dbg_atomic(plane->dev, 649 + "[PLANE:%d:%s] invalid source coordinates " 650 + "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n", 651 + plane->base.id, plane->name, 652 + new_plane_state->src_w >> 16, 653 + ((new_plane_state->src_w & 0xffff) * 15625) >> 10, 654 + new_plane_state->src_h >> 16, 655 + ((new_plane_state->src_h & 0xffff) * 15625) >> 10, 656 + new_plane_state->src_x >> 16, 657 + ((new_plane_state->src_x & 0xffff) * 15625) >> 10, 658 + new_plane_state->src_y >> 16, 659 + ((new_plane_state->src_y & 0xffff) * 15625) >> 10, 660 + fb->width, fb->height); 670 661 return -ENOSPC; 671 662 } 672 663 ··· 682 671 clips->y1 < 0 || 683 672 clips->x2 > fb_width || 684 673 clips->y2 > fb_height) { 685 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid damage clip %d %d %d %d\n", 686 - plane->base.id, plane->name, clips->x1, 687 - clips->y1, clips->x2, clips->y2); 674 + drm_dbg_atomic(plane->dev, 675 + "[PLANE:%d:%s] invalid damage clip %d %d %d %d\n", 676 + plane->base.id, plane->name, clips->x1, 677 + clips->y1, clips->x2, clips->y2); 688 678 return -EINVAL; 689 679 } 690 680 clips++; ··· 693 681 } 694 682 695 683 if (plane_switching_crtc(old_plane_state, new_plane_state)) { 696 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] switching CRTC directly\n", 697 - plane->base.id, plane->name); 684 + drm_dbg_atomic(plane->dev, 685 + "[PLANE:%d:%s] switching CRTC directly\n", 686 + plane->base.id, plane->name); 698 687 return -EINVAL; 699 688 } 700 689 ··· 859 846 860 847 state->num_private_objs = num_objs; 861 848 862 - DRM_DEBUG_ATOMIC("Added new private object %p state %p to %p\n", 863 - obj, obj_state, state); 849 + drm_dbg_atomic(state->dev, 850 + "Added new private object %p state %p to %p\n", 851 + obj, obj_state, state); 864 852 865 853 return obj_state; 866 854 } ··· 1041 1027 state->connectors[index].ptr = connector; 1042 1028 connector_state->state = state; 1043 1029 1044 - DRM_DEBUG_ATOMIC("Added [CONNECTOR:%d:%s] %p state to %p\n", 1030 + drm_dbg_atomic(connector->dev, "Added [CONNECTOR:%d:%s] %p state to %p\n", 1045 1031 connector->base.id, connector->name, 1046 1032 connector_state, state); 1047 1033 ··· 1174 1160 if (!encoder) 1175 1161 return 0; 1176 1162 1177 - DRM_DEBUG_ATOMIC("Adding all bridges for [encoder:%d:%s] to %p\n", 1178 - encoder->base.id, encoder->name, state); 1163 + drm_dbg_atomic(encoder->dev, 1164 + "Adding all bridges for [encoder:%d:%s] to %p\n", 1165 + encoder->base.id, encoder->name, state); 1179 1166 1180 1167 drm_for_each_bridge_in_chain(encoder, bridge) { 1181 1168 /* Skip bridges that don't implement the atomic state hooks. */ ··· 1228 1213 if (ret) 1229 1214 return ret; 1230 1215 1231 - DRM_DEBUG_ATOMIC("Adding all current connectors for [CRTC:%d:%s] to %p\n", 1232 - crtc->base.id, crtc->name, state); 1216 + drm_dbg_atomic(crtc->dev, 1217 + "Adding all current connectors for [CRTC:%d:%s] to %p\n", 1218 + crtc->base.id, crtc->name, state); 1233 1219 1234 1220 /* 1235 1221 * Changed connectors are already in @state, so only need to look ··· 1283 1267 1284 1268 WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc)); 1285 1269 1286 - DRM_DEBUG_ATOMIC("Adding all current planes for [CRTC:%d:%s] to %p\n", 1287 - crtc->base.id, crtc->name, state); 1270 + drm_dbg_atomic(crtc->dev, 1271 + "Adding all current planes for [CRTC:%d:%s] to %p\n", 1272 + crtc->base.id, crtc->name, state); 1288 1273 1289 1274 drm_for_each_plane_mask(plane, state->dev, old_crtc_state->plane_mask) { 1290 1275 struct drm_plane_state *plane_state = ··· 1325 1308 unsigned int affected_crtc = 0; 1326 1309 int i, ret = 0; 1327 1310 1328 - DRM_DEBUG_ATOMIC("checking %p\n", state); 1311 + drm_dbg_atomic(dev, "checking %p\n", state); 1329 1312 1330 1313 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) 1331 1314 requested_crtc |= drm_crtc_mask(crtc); ··· 1333 1316 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) { 1334 1317 ret = drm_atomic_plane_check(old_plane_state, new_plane_state); 1335 1318 if (ret) { 1336 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] atomic core check failed\n", 1337 - plane->base.id, plane->name); 1319 + drm_dbg_atomic(dev, "[PLANE:%d:%s] atomic core check failed\n", 1320 + plane->base.id, plane->name); 1338 1321 return ret; 1339 1322 } 1340 1323 } ··· 1342 1325 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { 1343 1326 ret = drm_atomic_crtc_check(old_crtc_state, new_crtc_state); 1344 1327 if (ret) { 1345 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] atomic core check failed\n", 1346 - crtc->base.id, crtc->name); 1328 + drm_dbg_atomic(dev, "[CRTC:%d:%s] atomic core check failed\n", 1329 + crtc->base.id, crtc->name); 1347 1330 return ret; 1348 1331 } 1349 1332 } ··· 1351 1334 for_each_new_connector_in_state(state, conn, conn_state, i) { 1352 1335 ret = drm_atomic_connector_check(conn, conn_state); 1353 1336 if (ret) { 1354 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] atomic core check failed\n", 1355 - conn->base.id, conn->name); 1337 + drm_dbg_atomic(dev, "[CONNECTOR:%d:%s] atomic core check failed\n", 1338 + conn->base.id, conn->name); 1356 1339 return ret; 1357 1340 } 1358 1341 } ··· 1361 1344 ret = config->funcs->atomic_check(state->dev, state); 1362 1345 1363 1346 if (ret) { 1364 - DRM_DEBUG_ATOMIC("atomic driver check for %p failed: %d\n", 1365 - state, ret); 1347 + drm_dbg_atomic(dev, "atomic driver check for %p failed: %d\n", 1348 + state, ret); 1366 1349 return ret; 1367 1350 } 1368 1351 } ··· 1370 1353 if (!state->allow_modeset) { 1371 1354 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { 1372 1355 if (drm_atomic_crtc_needs_modeset(new_crtc_state)) { 1373 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] requires full modeset\n", 1374 - crtc->base.id, crtc->name); 1356 + drm_dbg_atomic(dev, "[CRTC:%d:%s] requires full modeset\n", 1357 + crtc->base.id, crtc->name); 1375 1358 return -EINVAL; 1376 1359 } 1377 1360 } ··· 1391 1374 * so compositors know what's going on. 1392 1375 */ 1393 1376 if (affected_crtc != requested_crtc) { 1394 - DRM_DEBUG_ATOMIC("driver added CRTC to commit: requested 0x%x, affected 0x%0x\n", 1395 - requested_crtc, affected_crtc); 1377 + drm_dbg_atomic(dev, 1378 + "driver added CRTC to commit: requested 0x%x, affected 0x%0x\n", 1379 + requested_crtc, affected_crtc); 1396 1380 WARN(!state->allow_modeset, "adding CRTC not allowed without modesets: requested 0x%x, affected 0x%0x\n", 1397 1381 requested_crtc, affected_crtc); 1398 1382 } ··· 1425 1407 if (ret) 1426 1408 return ret; 1427 1409 1428 - DRM_DEBUG_ATOMIC("committing %p\n", state); 1410 + drm_dbg_atomic(state->dev, "committing %p\n", state); 1429 1411 1430 1412 return config->funcs->atomic_commit(state->dev, state, false); 1431 1413 } ··· 1454 1436 if (ret) 1455 1437 return ret; 1456 1438 1457 - DRM_DEBUG_ATOMIC("committing %p nonblocking\n", state); 1439 + drm_dbg_atomic(state->dev, "committing %p nonblocking\n", state); 1458 1440 1459 1441 return config->funcs->atomic_commit(state->dev, state, true); 1460 1442 } ··· 1651 1633 int i; 1652 1634 1653 1635 if (!p) { 1654 - DRM_ERROR("invalid drm printer\n"); 1636 + drm_err(state->dev, "invalid drm printer\n"); 1655 1637 return; 1656 1638 } 1657 1639 1658 - DRM_DEBUG_ATOMIC("checking %p\n", state); 1640 + drm_dbg_atomic(state->dev, "checking %p\n", state); 1659 1641 1660 1642 for_each_new_plane_in_state(state, plane, plane_state, i) 1661 1643 drm_atomic_plane_print_state(p, plane_state);
+134 -109
drivers/gpu/drm/drm_atomic_helper.c
··· 132 132 133 133 if (new_encoder) { 134 134 if (encoder_mask & drm_encoder_mask(new_encoder)) { 135 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] on [CONNECTOR:%d:%s] already assigned\n", 136 - new_encoder->base.id, new_encoder->name, 137 - connector->base.id, connector->name); 135 + drm_dbg_atomic(connector->dev, 136 + "[ENCODER:%d:%s] on [CONNECTOR:%d:%s] already assigned\n", 137 + new_encoder->base.id, new_encoder->name, 138 + connector->base.id, connector->name); 138 139 139 140 return -EINVAL; 140 141 } ··· 170 169 continue; 171 170 172 171 if (!disable_conflicting_encoders) { 173 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d:%s] by [CONNECTOR:%d:%s]\n", 174 - encoder->base.id, encoder->name, 175 - connector->state->crtc->base.id, 176 - connector->state->crtc->name, 177 - connector->base.id, connector->name); 172 + drm_dbg_atomic(connector->dev, 173 + "[ENCODER:%d:%s] in use on [CRTC:%d:%s] by [CONNECTOR:%d:%s]\n", 174 + encoder->base.id, encoder->name, 175 + connector->state->crtc->base.id, 176 + connector->state->crtc->name, 177 + connector->base.id, connector->name); 178 178 ret = -EINVAL; 179 179 goto out; 180 180 } ··· 186 184 goto out; 187 185 } 188 186 189 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d:%s], disabling [CONNECTOR:%d:%s]\n", 190 - encoder->base.id, encoder->name, 191 - new_conn_state->crtc->base.id, new_conn_state->crtc->name, 192 - connector->base.id, connector->name); 187 + drm_dbg_atomic(connector->dev, 188 + "[ENCODER:%d:%s] in use on [CRTC:%d:%s], disabling [CONNECTOR:%d:%s]\n", 189 + encoder->base.id, encoder->name, 190 + new_conn_state->crtc->base.id, new_conn_state->crtc->name, 191 + connector->base.id, connector->name); 193 192 194 193 crtc_state = drm_atomic_get_new_crtc_state(state, new_conn_state->crtc); 195 194 ··· 271 268 272 269 encoder_crtc = old_connector_state->crtc; 273 270 274 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] in use on [CRTC:%d:%s], stealing it\n", 275 - encoder->base.id, encoder->name, 276 - encoder_crtc->base.id, encoder_crtc->name); 271 + drm_dbg_atomic(encoder->dev, 272 + "[ENCODER:%d:%s] in use on [CRTC:%d:%s], stealing it\n", 273 + encoder->base.id, encoder->name, 274 + encoder_crtc->base.id, encoder_crtc->name); 277 275 278 276 set_best_encoder(state, new_connector_state, NULL); 279 277 ··· 295 291 struct drm_encoder *new_encoder; 296 292 struct drm_crtc_state *crtc_state; 297 293 298 - DRM_DEBUG_ATOMIC("Updating routing for [CONNECTOR:%d:%s]\n", 299 - connector->base.id, 300 - connector->name); 294 + drm_dbg_atomic(connector->dev, "Updating routing for [CONNECTOR:%d:%s]\n", 295 + connector->base.id, connector->name); 301 296 302 297 if (old_connector_state->crtc != new_connector_state->crtc) { 303 298 if (old_connector_state->crtc) { ··· 311 308 } 312 309 313 310 if (!new_connector_state->crtc) { 314 - DRM_DEBUG_ATOMIC("Disabling [CONNECTOR:%d:%s]\n", 315 - connector->base.id, 316 - connector->name); 311 + drm_dbg_atomic(connector->dev, "Disabling [CONNECTOR:%d:%s]\n", 312 + connector->base.id, connector->name); 317 313 318 314 set_best_encoder(state, new_connector_state, NULL); 319 315 ··· 341 339 */ 342 340 if (!state->duplicated && drm_connector_is_unregistered(connector) && 343 341 crtc_state->active) { 344 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] is not registered\n", 345 - connector->base.id, connector->name); 342 + drm_dbg_atomic(connector->dev, 343 + "[CONNECTOR:%d:%s] is not registered\n", 344 + connector->base.id, connector->name); 346 345 return -EINVAL; 347 346 } 348 347 ··· 357 354 new_encoder = drm_connector_get_single_encoder(connector); 358 355 359 356 if (!new_encoder) { 360 - DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n", 361 - connector->base.id, 362 - connector->name); 357 + drm_dbg_atomic(connector->dev, 358 + "No suitable encoder found for [CONNECTOR:%d:%s]\n", 359 + connector->base.id, connector->name); 363 360 return -EINVAL; 364 361 } 365 362 366 363 if (!drm_encoder_crtc_ok(new_encoder, new_connector_state->crtc)) { 367 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] incompatible with [CRTC:%d:%s]\n", 368 - new_encoder->base.id, 369 - new_encoder->name, 370 - new_connector_state->crtc->base.id, 371 - new_connector_state->crtc->name); 364 + drm_dbg_atomic(connector->dev, 365 + "[ENCODER:%d:%s] incompatible with [CRTC:%d:%s]\n", 366 + new_encoder->base.id, 367 + new_encoder->name, 368 + new_connector_state->crtc->base.id, 369 + new_connector_state->crtc->name); 372 370 return -EINVAL; 373 371 } 374 372 375 373 if (new_encoder == new_connector_state->best_encoder) { 376 374 set_best_encoder(state, new_connector_state, new_encoder); 377 375 378 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d:%s]\n", 379 - connector->base.id, 380 - connector->name, 381 - new_encoder->base.id, 382 - new_encoder->name, 383 - new_connector_state->crtc->base.id, 384 - new_connector_state->crtc->name); 376 + drm_dbg_atomic(connector->dev, 377 + "[CONNECTOR:%d:%s] keeps [ENCODER:%d:%s], now on [CRTC:%d:%s]\n", 378 + connector->base.id, 379 + connector->name, 380 + new_encoder->base.id, 381 + new_encoder->name, 382 + new_connector_state->crtc->base.id, 383 + new_connector_state->crtc->name); 385 384 386 385 return 0; 387 386 } ··· 394 389 395 390 crtc_state->connectors_changed = true; 396 391 397 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d:%s]\n", 398 - connector->base.id, 399 - connector->name, 400 - new_encoder->base.id, 401 - new_encoder->name, 402 - new_connector_state->crtc->base.id, 403 - new_connector_state->crtc->name); 392 + drm_dbg_atomic(connector->dev, 393 + "[CONNECTOR:%d:%s] using [ENCODER:%d:%s] on [CRTC:%d:%s]\n", 394 + connector->base.id, 395 + connector->name, 396 + new_encoder->base.id, 397 + new_encoder->name, 398 + new_connector_state->crtc->base.id, 399 + new_connector_state->crtc->name); 404 400 405 401 return 0; 406 402 } ··· 449 443 new_crtc_state, 450 444 new_conn_state); 451 445 if (ret) { 452 - DRM_DEBUG_ATOMIC("Bridge atomic check failed\n"); 446 + drm_dbg_atomic(encoder->dev, "Bridge atomic check failed\n"); 453 447 return ret; 454 448 } 455 449 ··· 457 451 ret = funcs->atomic_check(encoder, new_crtc_state, 458 452 new_conn_state); 459 453 if (ret) { 460 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] check failed\n", 461 - encoder->base.id, encoder->name); 454 + drm_dbg_atomic(encoder->dev, 455 + "[ENCODER:%d:%s] check failed\n", 456 + encoder->base.id, encoder->name); 462 457 return ret; 463 458 } 464 459 } else if (funcs && funcs->mode_fixup) { 465 460 ret = funcs->mode_fixup(encoder, &new_crtc_state->mode, 466 461 &new_crtc_state->adjusted_mode); 467 462 if (!ret) { 468 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] fixup failed\n", 469 - encoder->base.id, encoder->name); 463 + drm_dbg_atomic(encoder->dev, 464 + "[ENCODER:%d:%s] fixup failed\n", 465 + encoder->base.id, encoder->name); 470 466 return -EINVAL; 471 467 } 472 468 } ··· 491 483 ret = funcs->mode_fixup(crtc, &new_crtc_state->mode, 492 484 &new_crtc_state->adjusted_mode); 493 485 if (!ret) { 494 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] fixup failed\n", 495 - crtc->base.id, crtc->name); 486 + drm_dbg_atomic(crtc->dev, "[CRTC:%d:%s] fixup failed\n", 487 + crtc->base.id, crtc->name); 496 488 return -EINVAL; 497 489 } 498 490 } ··· 510 502 511 503 ret = drm_encoder_mode_valid(encoder, mode); 512 504 if (ret != MODE_OK) { 513 - DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] mode_valid() failed\n", 514 - encoder->base.id, encoder->name); 505 + drm_dbg_atomic(encoder->dev, 506 + "[ENCODER:%d:%s] mode_valid() failed\n", 507 + encoder->base.id, encoder->name); 515 508 return ret; 516 509 } 517 510 ··· 520 511 ret = drm_bridge_chain_mode_valid(bridge, &connector->display_info, 521 512 mode); 522 513 if (ret != MODE_OK) { 523 - DRM_DEBUG_ATOMIC("[BRIDGE] mode_valid() failed\n"); 514 + drm_dbg_atomic(encoder->dev, "[BRIDGE] mode_valid() failed\n"); 524 515 return ret; 525 516 } 526 517 527 518 ret = drm_crtc_mode_valid(crtc, mode); 528 519 if (ret != MODE_OK) { 529 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] mode_valid() failed\n", 530 - crtc->base.id, crtc->name); 520 + drm_dbg_atomic(encoder->dev, "[CRTC:%d:%s] mode_valid() failed\n", 521 + crtc->base.id, crtc->name); 531 522 return ret; 532 523 } 533 524 ··· 628 619 WARN_ON(!drm_modeset_is_locked(&crtc->mutex)); 629 620 630 621 if (!drm_mode_equal(&old_crtc_state->mode, &new_crtc_state->mode)) { 631 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] mode changed\n", 632 - crtc->base.id, crtc->name); 622 + drm_dbg_atomic(dev, "[CRTC:%d:%s] mode changed\n", 623 + crtc->base.id, crtc->name); 633 624 new_crtc_state->mode_changed = true; 634 625 } 635 626 636 627 if (old_crtc_state->enable != new_crtc_state->enable) { 637 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enable changed\n", 638 - crtc->base.id, crtc->name); 628 + drm_dbg_atomic(dev, "[CRTC:%d:%s] enable changed\n", 629 + crtc->base.id, crtc->name); 639 630 640 631 /* 641 632 * For clarity this assignment is done here, but ··· 650 641 } 651 642 652 643 if (old_crtc_state->active != new_crtc_state->active) { 653 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] active changed\n", 654 - crtc->base.id, crtc->name); 644 + drm_dbg_atomic(dev, "[CRTC:%d:%s] active changed\n", 645 + crtc->base.id, crtc->name); 655 646 new_crtc_state->active_changed = true; 656 647 } 657 648 658 649 if (new_crtc_state->enable != has_connectors) { 659 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled/connectors mismatch\n", 660 - crtc->base.id, crtc->name); 650 + drm_dbg_atomic(dev, "[CRTC:%d:%s] enabled/connectors mismatch\n", 651 + crtc->base.id, crtc->name); 661 652 662 653 return -EINVAL; 663 654 } ··· 717 708 if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) 718 709 continue; 719 710 720 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] needs all connectors, enable: %c, active: %c\n", 721 - crtc->base.id, crtc->name, 722 - new_crtc_state->enable ? 'y' : 'n', 723 - new_crtc_state->active ? 'y' : 'n'); 711 + drm_dbg_atomic(dev, 712 + "[CRTC:%d:%s] needs all connectors, enable: %c, active: %c\n", 713 + crtc->base.id, crtc->name, 714 + new_crtc_state->enable ? 'y' : 'n', 715 + new_crtc_state->active ? 'y' : 'n'); 724 716 725 717 ret = drm_atomic_add_affected_connectors(state, crtc); 726 718 if (ret != 0) ··· 828 818 } 829 819 830 820 if (!crtc_state->enable && !can_update_disabled) { 831 - DRM_DEBUG_KMS("Cannot update plane of a disabled CRTC.\n"); 821 + drm_dbg_kms(plane_state->crtc->dev, 822 + "Cannot update plane of a disabled CRTC.\n"); 832 823 return -EINVAL; 833 824 } 834 825 ··· 839 828 hscale = drm_rect_calc_hscale(src, dst, min_scale, max_scale); 840 829 vscale = drm_rect_calc_vscale(src, dst, min_scale, max_scale); 841 830 if (hscale < 0 || vscale < 0) { 842 - DRM_DEBUG_KMS("Invalid scaling of plane\n"); 831 + drm_dbg_kms(plane_state->crtc->dev, 832 + "Invalid scaling of plane\n"); 843 833 drm_rect_debug_print("src: ", &plane_state->src, true); 844 834 drm_rect_debug_print("dst: ", &plane_state->dst, false); 845 835 return -ERANGE; ··· 864 852 return 0; 865 853 866 854 if (!can_position && !drm_rect_equals(dst, &clip)) { 867 - DRM_DEBUG_KMS("Plane must cover entire CRTC\n"); 855 + drm_dbg_kms(plane_state->crtc->dev, 856 + "Plane must cover entire CRTC\n"); 868 857 drm_rect_debug_print("dst: ", dst, false); 869 858 drm_rect_debug_print("clip: ", &clip, false); 870 859 return -EINVAL; ··· 917 904 918 905 ret = funcs->atomic_check(plane, state); 919 906 if (ret) { 920 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] atomic driver check failed\n", 921 - plane->base.id, plane->name); 907 + drm_dbg_atomic(plane->dev, 908 + "[PLANE:%d:%s] atomic driver check failed\n", 909 + plane->base.id, plane->name); 922 910 return ret; 923 911 } 924 912 } ··· 934 920 935 921 ret = funcs->atomic_check(crtc, state); 936 922 if (ret) { 937 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] atomic driver check failed\n", 938 - crtc->base.id, crtc->name); 923 + drm_dbg_atomic(crtc->dev, 924 + "[CRTC:%d:%s] atomic driver check failed\n", 925 + crtc->base.id, crtc->name); 939 926 return ret; 940 927 } 941 928 } ··· 1064 1049 1065 1050 funcs = encoder->helper_private; 1066 1051 1067 - DRM_DEBUG_ATOMIC("disabling [ENCODER:%d:%s]\n", 1068 - encoder->base.id, encoder->name); 1052 + drm_dbg_atomic(dev, "disabling [ENCODER:%d:%s]\n", 1053 + encoder->base.id, encoder->name); 1069 1054 1070 1055 /* 1071 1056 * Each encoder has at most one connector (since we always steal ··· 1102 1087 1103 1088 funcs = crtc->helper_private; 1104 1089 1105 - DRM_DEBUG_ATOMIC("disabling [CRTC:%d:%s]\n", 1106 - crtc->base.id, crtc->name); 1090 + drm_dbg_atomic(dev, "disabling [CRTC:%d:%s]\n", 1091 + crtc->base.id, crtc->name); 1107 1092 1108 1093 1109 1094 /* Right function depends upon target state. */ ··· 1244 1229 funcs = crtc->helper_private; 1245 1230 1246 1231 if (new_crtc_state->enable && funcs->mode_set_nofb) { 1247 - DRM_DEBUG_ATOMIC("modeset on [CRTC:%d:%s]\n", 1248 - crtc->base.id, crtc->name); 1232 + drm_dbg_atomic(dev, "modeset on [CRTC:%d:%s]\n", 1233 + crtc->base.id, crtc->name); 1249 1234 1250 1235 funcs->mode_set_nofb(crtc); 1251 1236 } ··· 1269 1254 if (!new_crtc_state->mode_changed) 1270 1255 continue; 1271 1256 1272 - DRM_DEBUG_ATOMIC("modeset on [ENCODER:%d:%s]\n", 1273 - encoder->base.id, encoder->name); 1257 + drm_dbg_atomic(dev, "modeset on [ENCODER:%d:%s]\n", 1258 + encoder->base.id, encoder->name); 1274 1259 1275 1260 /* 1276 1261 * Each encoder has at most one connector (since we always steal ··· 1372 1357 funcs = crtc->helper_private; 1373 1358 1374 1359 if (new_crtc_state->enable) { 1375 - DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n", 1376 - crtc->base.id, crtc->name); 1360 + drm_dbg_atomic(dev, "enabling [CRTC:%d:%s]\n", 1361 + crtc->base.id, crtc->name); 1377 1362 if (funcs->atomic_enable) 1378 1363 funcs->atomic_enable(crtc, old_state); 1379 1364 else if (funcs->commit) ··· 1396 1381 encoder = new_conn_state->best_encoder; 1397 1382 funcs = encoder->helper_private; 1398 1383 1399 - DRM_DEBUG_ATOMIC("enabling [ENCODER:%d:%s]\n", 1400 - encoder->base.id, encoder->name); 1384 + drm_dbg_atomic(dev, "enabling [ENCODER:%d:%s]\n", 1385 + encoder->base.id, encoder->name); 1401 1386 1402 1387 /* 1403 1388 * Each encoder has at most one connector (since we always steal ··· 1566 1551 1567 1552 ret = wait_for_completion_timeout(&commit->flip_done, 10 * HZ); 1568 1553 if (ret == 0) 1569 - DRM_ERROR("[CRTC:%d:%s] flip_done timed out\n", 1570 - crtc->base.id, crtc->name); 1554 + drm_err(dev, "[CRTC:%d:%s] flip_done timed out\n", 1555 + crtc->base.id, crtc->name); 1571 1556 } 1572 1557 1573 1558 if (old_state->fake_commit) ··· 1754 1739 */ 1755 1740 if (old_plane_state->commit && 1756 1741 !try_wait_for_completion(&old_plane_state->commit->hw_done)) { 1757 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] inflight previous commit preventing async commit\n", 1758 - plane->base.id, plane->name); 1742 + drm_dbg_atomic(dev, 1743 + "[PLANE:%d:%s] inflight previous commit preventing async commit\n", 1744 + plane->base.id, plane->name); 1759 1745 return -EBUSY; 1760 1746 } 1761 1747 ··· 1978 1962 */ 1979 1963 if (!completed && nonblock) { 1980 1964 spin_unlock(&crtc->commit_lock); 1981 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] busy with a previous commit\n", 1982 - crtc->base.id, crtc->name); 1965 + drm_dbg_atomic(crtc->dev, 1966 + "[CRTC:%d:%s] busy with a previous commit\n", 1967 + crtc->base.id, crtc->name); 1983 1968 1984 1969 return -EBUSY; 1985 1970 } ··· 2002 1985 ret = wait_for_completion_interruptible_timeout(&stall_commit->cleanup_done, 2003 1986 10*HZ); 2004 1987 if (ret == 0) 2005 - DRM_ERROR("[CRTC:%d:%s] cleanup_done timed out\n", 2006 - crtc->base.id, crtc->name); 1988 + drm_err(crtc->dev, "[CRTC:%d:%s] cleanup_done timed out\n", 1989 + crtc->base.id, crtc->name); 2007 1990 2008 1991 drm_crtc_commit_put(stall_commit); 2009 1992 ··· 2167 2150 */ 2168 2151 if (nonblock && old_conn_state->commit && 2169 2152 !try_wait_for_completion(&old_conn_state->commit->flip_done)) { 2170 - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] busy with a previous commit\n", 2171 - conn->base.id, conn->name); 2153 + drm_dbg_atomic(conn->dev, 2154 + "[CONNECTOR:%d:%s] busy with a previous commit\n", 2155 + conn->base.id, conn->name); 2172 2156 2173 2157 return -EBUSY; 2174 2158 } ··· 2189 2171 */ 2190 2172 if (nonblock && old_plane_state->commit && 2191 2173 !try_wait_for_completion(&old_plane_state->commit->flip_done)) { 2192 - DRM_DEBUG_ATOMIC("[PLANE:%d:%s] busy with a previous commit\n", 2193 - plane->base.id, plane->name); 2174 + drm_dbg_atomic(plane->dev, 2175 + "[PLANE:%d:%s] busy with a previous commit\n", 2176 + plane->base.id, plane->name); 2194 2177 2195 2178 return -EBUSY; 2196 2179 } ··· 2237 2218 for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i) { 2238 2219 ret = drm_crtc_commit_wait(old_crtc_state->commit); 2239 2220 if (ret) 2240 - DRM_ERROR("[CRTC:%d:%s] commit wait timed out\n", 2241 - crtc->base.id, crtc->name); 2221 + drm_err(crtc->dev, 2222 + "[CRTC:%d:%s] commit wait timed out\n", 2223 + crtc->base.id, crtc->name); 2242 2224 } 2243 2225 2244 2226 for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { 2245 2227 ret = drm_crtc_commit_wait(old_conn_state->commit); 2246 2228 if (ret) 2247 - DRM_ERROR("[CONNECTOR:%d:%s] commit wait timed out\n", 2248 - conn->base.id, conn->name); 2229 + drm_err(conn->dev, 2230 + "[CONNECTOR:%d:%s] commit wait timed out\n", 2231 + conn->base.id, conn->name); 2249 2232 } 2250 2233 2251 2234 for_each_old_plane_in_state(old_state, plane, old_plane_state, i) { 2252 2235 ret = drm_crtc_commit_wait(old_plane_state->commit); 2253 2236 if (ret) 2254 - DRM_ERROR("[PLANE:%d:%s] commit wait timed out\n", 2255 - plane->base.id, plane->name); 2237 + drm_err(plane->dev, 2238 + "[PLANE:%d:%s] commit wait timed out\n", 2239 + plane->base.id, plane->name); 2256 2240 } 2257 2241 } 2258 2242 EXPORT_SYMBOL(drm_atomic_helper_wait_for_dependencies); ··· 3142 3120 3143 3121 ret = drm_atomic_helper_disable_all(dev, &ctx); 3144 3122 if (ret) 3145 - DRM_ERROR("Disabling all crtc's during unload failed with %i\n", ret); 3123 + drm_err(dev, 3124 + "Disabling all crtc's during unload failed with %i\n", 3125 + ret); 3146 3126 3147 3127 DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); 3148 3128 } ··· 3404 3380 /* Make sure we don't accidentally do a full modeset. */ 3405 3381 state->allow_modeset = false; 3406 3382 if (!crtc_state->active) { 3407 - DRM_DEBUG_ATOMIC("[CRTC:%d:%s] disabled, rejecting legacy flip\n", 3408 - crtc->base.id, crtc->name); 3383 + drm_dbg_atomic(crtc->dev, 3384 + "[CRTC:%d:%s] disabled, rejecting legacy flip\n", 3385 + crtc->base.id, crtc->name); 3409 3386 return -EINVAL; 3410 3387 } 3411 3388
+1 -1
drivers/gpu/drm/drm_atomic_uapi.c
··· 773 773 state->scaling_mode = val; 774 774 } else if (property == config->content_protection_property) { 775 775 if (val == DRM_MODE_CONTENT_PROTECTION_ENABLED) { 776 - DRM_DEBUG_KMS("only drivers can set CP Enabled\n"); 776 + drm_dbg_kms(dev, "only drivers can set CP Enabled\n"); 777 777 return -EINVAL; 778 778 } 779 779 state->content_protection = val;
+8 -4
drivers/gpu/drm/drm_auth.c
··· 106 106 auth->magic = file_priv->magic; 107 107 mutex_unlock(&dev->master_mutex); 108 108 109 - DRM_DEBUG("%u\n", auth->magic); 109 + drm_dbg_core(dev, "%u\n", auth->magic); 110 110 111 111 return ret < 0 ? ret : 0; 112 112 } ··· 117 117 struct drm_auth *auth = data; 118 118 struct drm_file *file; 119 119 120 - DRM_DEBUG("%u\n", auth->magic); 120 + drm_dbg_core(dev, "%u\n", auth->magic); 121 121 122 122 mutex_lock(&dev->master_mutex); 123 123 file = idr_find(&file_priv->master->magic_map, auth->magic); ··· 274 274 } 275 275 276 276 if (file_priv->master->lessor != NULL) { 277 - DRM_DEBUG_LEASE("Attempt to set lessee %d as master\n", file_priv->master->lessee_id); 277 + drm_dbg_lease(dev, 278 + "Attempt to set lessee %d as master\n", 279 + file_priv->master->lessee_id); 278 280 ret = -EINVAL; 279 281 goto out_unlock; 280 282 } ··· 317 315 } 318 316 319 317 if (file_priv->master->lessor != NULL) { 320 - DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id); 318 + drm_dbg_lease(dev, 319 + "Attempt to drop lessee %d as master\n", 320 + file_priv->master->lessee_id); 321 321 ret = -EINVAL; 322 322 goto out_unlock; 323 323 }
+24
drivers/gpu/drm/drm_nomodeset.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + #include <linux/module.h> 4 + #include <linux/types.h> 5 + 6 + static bool drm_nomodeset; 7 + 8 + bool drm_firmware_drivers_only(void) 9 + { 10 + return drm_nomodeset; 11 + } 12 + EXPORT_SYMBOL(drm_firmware_drivers_only); 13 + 14 + static int __init disable_modeset(char *str) 15 + { 16 + drm_nomodeset = true; 17 + 18 + pr_warn("Booted with the nomodeset parameter. Only the system framebuffer will be available\n"); 19 + 20 + return 1; 21 + } 22 + 23 + /* Disable kernel modesetting */ 24 + __setup("nomodeset", disable_modeset);
+6
drivers/gpu/drm/drm_panel_orientation_quirks.c
··· 262 262 DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"), 263 263 }, 264 264 .driver_data = (void *)&lcd1200x1920_rightside_up, 265 + }, { /* Lenovo Yoga Book X90F / X91F / X91L */ 266 + .matches = { 267 + /* Non exact match to match all versions */ 268 + DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"), 269 + }, 270 + .driver_data = (void *)&lcd1200x1920_rightside_up, 265 271 }, { /* OneGX1 Pro */ 266 272 .matches = { 267 273 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),
+2 -2
drivers/gpu/drm/i915/i915_module.c
··· 4 4 * Copyright © 2021 Intel Corporation 5 5 */ 6 6 7 - #include <linux/console.h> 7 + #include <drm/drm_drv.h> 8 8 9 9 #include "gem/i915_gem_context.h" 10 10 #include "gem/i915_gem_object.h" ··· 31 31 if (i915_modparams.modeset == 0) 32 32 use_kms = false; 33 33 34 - if (vgacon_text_force() && i915_modparams.modeset == -1) 34 + if (drm_firmware_drivers_only() && i915_modparams.modeset == -1) 35 35 use_kms = false; 36 36 37 37 if (!use_kms) {
+1 -2
drivers/gpu/drm/mgag200/mgag200_drv.c
··· 6 6 * Dave Airlie 7 7 */ 8 8 9 - #include <linux/console.h> 10 9 #include <linux/module.h> 11 10 #include <linux/pci.h> 12 11 #include <linux/vmalloc.h> ··· 377 378 378 379 static int __init mgag200_init(void) 379 380 { 380 - if (vgacon_text_force() && mgag200_modeset == -1) 381 + if (drm_firmware_drivers_only() && mgag200_modeset == -1) 381 382 return -EINVAL; 382 383 383 384 if (mgag200_modeset == 0)
+2 -2
drivers/gpu/drm/nouveau/nouveau_drm.c
··· 22 22 * Authors: Ben Skeggs 23 23 */ 24 24 25 - #include <linux/console.h> 26 25 #include <linux/delay.h> 27 26 #include <linux/module.h> 28 27 #include <linux/pci.h> ··· 31 32 32 33 #include <drm/drm_aperture.h> 33 34 #include <drm/drm_crtc_helper.h> 35 + #include <drm/drm_drv.h> 34 36 #include <drm/drm_gem_ttm_helper.h> 35 37 #include <drm/drm_ioctl.h> 36 38 #include <drm/drm_vblank.h> ··· 1358 1358 nouveau_display_options(); 1359 1359 1360 1360 if (nouveau_modeset == -1) { 1361 - if (vgacon_text_force()) 1361 + if (drm_firmware_drivers_only()) 1362 1362 nouveau_modeset = 0; 1363 1363 } 1364 1364
+1 -2
drivers/gpu/drm/qxl/qxl_drv.c
··· 29 29 30 30 #include "qxl_drv.h" 31 31 32 - #include <linux/console.h> 33 32 #include <linux/module.h> 34 33 #include <linux/pci.h> 35 34 #include <linux/vgaarb.h> ··· 294 295 295 296 static int __init qxl_init(void) 296 297 { 297 - if (vgacon_text_force() && qxl_modeset == -1) 298 + if (drm_firmware_drivers_only() && qxl_modeset == -1) 298 299 return -EINVAL; 299 300 300 301 if (qxl_modeset == 0)
+2 -7
drivers/gpu/drm/radeon/radeon_drv.c
··· 31 31 32 32 33 33 #include <linux/compat.h> 34 - #include <linux/console.h> 35 34 #include <linux/module.h> 36 35 #include <linux/pm_runtime.h> 37 36 #include <linux/vga_switcheroo.h> ··· 636 637 637 638 static int __init radeon_module_init(void) 638 639 { 639 - if (vgacon_text_force() && radeon_modeset == -1) { 640 - DRM_INFO("VGACON disable radeon kernel modesetting.\n"); 640 + if (drm_firmware_drivers_only() && radeon_modeset == -1) 641 641 radeon_modeset = 0; 642 - } 643 642 644 - if (radeon_modeset == 0) { 645 - DRM_ERROR("No UMS support in radeon module!\n"); 643 + if (radeon_modeset == 0) 646 644 return -EINVAL; 647 - } 648 645 649 646 DRM_INFO("radeon kernel modesetting enabled.\n"); 650 647 radeon_register_atpx_handler();
+1 -2
drivers/gpu/drm/tiny/bochs.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 2 3 - #include <linux/console.h> 4 3 #include <linux/pci.h> 5 4 6 5 #include <drm/drm_aperture.h> ··· 718 719 719 720 static int __init bochs_init(void) 720 721 { 721 - if (vgacon_text_force() && bochs_modeset == -1) 722 + if (drm_firmware_drivers_only() && bochs_modeset == -1) 722 723 return -EINVAL; 723 724 724 725 if (bochs_modeset == 0)
+2 -2
drivers/gpu/drm/tiny/cirrus.c
··· 16 16 * Copyright 1999-2001 Jeff Garzik <jgarzik@pobox.com> 17 17 */ 18 18 19 - #include <linux/console.h> 20 19 #include <linux/dma-buf-map.h> 21 20 #include <linux/module.h> 22 21 #include <linux/pci.h> ··· 635 636 636 637 static int __init cirrus_init(void) 637 638 { 638 - if (vgacon_text_force()) 639 + if (drm_firmware_drivers_only()) 639 640 return -EINVAL; 641 + 640 642 return pci_register_driver(&cirrus_pci_driver); 641 643 } 642 644
+7 -4
drivers/gpu/drm/ttm/ttm_range_manager.c
··· 128 128 }; 129 129 130 130 /** 131 - * ttm_range_man_init 131 + * ttm_range_man_init_nocheck - Initialise a generic range manager for the 132 + * selected memory type. 132 133 * 133 134 * @bdev: ttm device 134 135 * @type: memory manager type 135 136 * @use_tt: if the memory manager uses tt 136 137 * @p_size: size of area to be managed in pages. 137 138 * 138 - * Initialise a generic range manager for the selected memory type. 139 139 * The range manager is installed for this device in the type slot. 140 + * 141 + * Return: %0 on success or a negative error code on failure 140 142 */ 141 143 int ttm_range_man_init_nocheck(struct ttm_device *bdev, 142 144 unsigned type, bool use_tt, ··· 168 166 EXPORT_SYMBOL(ttm_range_man_init_nocheck); 169 167 170 168 /** 171 - * ttm_range_man_fini 169 + * ttm_range_man_fini_nocheck - Remove the generic range manager from a slot 170 + * and tear it down. 172 171 * 173 172 * @bdev: ttm device 174 173 * @type: memory manager type 175 174 * 176 - * Remove the generic range manager from a slot and tear it down. 175 + * Return: %0 on success or a negative error code on failure 177 176 */ 178 177 int ttm_range_man_fini_nocheck(struct ttm_device *bdev, 179 178 unsigned type)
+1 -4
drivers/gpu/drm/vboxvideo/vbox_drv.c
··· 7 7 * Michael Thayer <michael.thayer@oracle.com, 8 8 * Hans de Goede <hdegoede@redhat.com> 9 9 */ 10 - #include <linux/console.h> 11 10 #include <linux/module.h> 12 11 #include <linux/pci.h> 13 12 #include <linux/vt_kern.h> ··· 192 193 193 194 static int __init vbox_init(void) 194 195 { 195 - #ifdef CONFIG_VGA_CONSOLE 196 - if (vgacon_text_force() && vbox_modeset == -1) 196 + if (drm_firmware_drivers_only() && vbox_modeset == -1) 197 197 return -EINVAL; 198 - #endif 199 198 200 199 if (vbox_modeset == 0) 201 200 return -EINVAL;
+2 -2
drivers/gpu/drm/vboxvideo/vbox_main.c
··· 127 127 /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ 128 128 vbox->guest_pool = devm_gen_pool_create(vbox->ddev.dev, 4, -1, 129 129 "vboxvideo-accel"); 130 - if (!vbox->guest_pool) 131 - return -ENOMEM; 130 + if (IS_ERR(vbox->guest_pool)) 131 + return PTR_ERR(vbox->guest_pool); 132 132 133 133 ret = gen_pool_add_virt(vbox->guest_pool, 134 134 (unsigned long)vbox->guest_heap,
+1 -2
drivers/gpu/drm/virtio/virtgpu_drv.c
··· 27 27 */ 28 28 29 29 #include <linux/module.h> 30 - #include <linux/console.h> 31 30 #include <linux/pci.h> 32 31 #include <linux/poll.h> 33 32 #include <linux/wait.h> ··· 103 104 struct drm_device *dev; 104 105 int ret; 105 106 106 - if (vgacon_text_force() && virtio_gpu_modeset == -1) 107 + if (drm_firmware_drivers_only() && virtio_gpu_modeset == -1) 107 108 return -EINVAL; 108 109 109 110 if (virtio_gpu_modeset == 0)
+1 -2
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
··· 25 25 * 26 26 **************************************************************************/ 27 27 28 - #include <linux/console.h> 29 28 #include <linux/dma-mapping.h> 30 29 #include <linux/module.h> 31 30 #include <linux/pci.h> ··· 1650 1651 { 1651 1652 int ret; 1652 1653 1653 - if (vgacon_text_force()) 1654 + if (drm_firmware_drivers_only()) 1654 1655 return -EINVAL; 1655 1656 1656 1657 ret = pci_register_driver(&vmw_pci_driver);
-21
drivers/video/console/vgacon.c
··· 97 97 static int vga_scan_lines __read_mostly; 98 98 static unsigned int vga_rolled_over; /* last vc_origin offset before wrap */ 99 99 100 - static bool vgacon_text_mode_force; 101 100 static bool vga_hardscroll_enabled; 102 101 static bool vga_hardscroll_user_enable = true; 103 - 104 - bool vgacon_text_force(void) 105 - { 106 - return vgacon_text_mode_force; 107 - } 108 - EXPORT_SYMBOL(vgacon_text_force); 109 - 110 - static int __init text_mode(char *str) 111 - { 112 - vgacon_text_mode_force = true; 113 - 114 - pr_warn("You have booted with nomodeset. This means your GPU drivers are DISABLED\n"); 115 - pr_warn("Any video related functionality will be severely degraded, and you may not even be able to suspend the system properly\n"); 116 - pr_warn("Unless you actually understand what nomodeset does, you should reboot without enabling it\n"); 117 - 118 - return 1; 119 - } 120 - 121 - /* force text mode - used by kernel modesetting */ 122 - __setup("nomodeset", text_mode); 123 102 124 103 static int __init no_scroll(char *str) 125 104 {
+1
include/drm/drm_drv.h
··· 601 601 602 602 int drm_dev_set_unique(struct drm_device *dev, const char *name); 603 603 604 + extern bool drm_firmware_drivers_only(void); 604 605 605 606 #endif
-6
include/linux/console.h
··· 219 219 #define VESA_HSYNC_SUSPEND 2 220 220 #define VESA_POWERDOWN 3 221 221 222 - #ifdef CONFIG_VGA_CONSOLE 223 - extern bool vgacon_text_force(void); 224 - #else 225 - static inline bool vgacon_text_force(void) { return false; } 226 - #endif 227 - 228 222 extern void console_init(void); 229 223 230 224 /* For deferred console takeover */