Dear Linux folks,
It looks like, that loading a graphics driver, the DRM methods probe each connector.
For example, the Asus F2A85-M PRO has four monitor ports, but only one monitor is connected over DVI. Here is the log excerpt with Linux 4.18-rc6+.
[ 0.200631] [drm] DFP2: INTERNAL_UNIPHY [ 0.228298] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.228302] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.238911] [drm:radeon_atom_encoder_dpms] encoder dpms 30 to mode 3, devices 00000080, active_devices 00000000 [ 0.239041] [drm:drm_setup_crtcs] [ 0.239043] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:47:DP-1] [ 0.243296] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.244282] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.245281] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.246282] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.247283] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.248283] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.249284] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.250284] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.251285] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.252287] [drm:radeon_dp_aux_transfer_native] dp_aux_ch flags not zero: 00000201 [ 0.274294] [drm:drm_dp_dpcd_access] Too many retries, giving up. First error: -5 [ 0.274307] [drm:radeon_atombios_connected_scratch_regs] DFP1 disconnected [ 0.274311] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274313] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274316] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274318] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274320] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274322] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274324] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274326] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274328] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274330] [drm:drm_dp_i2c_do_msg] transaction failed: -5 [ 0.274334] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:47:DP-1] status updated from unknown to disconnected [ 0.274335] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:47:DP-1] disconnected [ 0.274338] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:50:VGA-1] [ 0.276306] [drm:radeon_dp_getdpcd] DPCD: 11 0a 84 01 00 0b 01 01 02 00 00 00 00 00 00 [ 0.293299] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.294299] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.315804] [drm:radeon_atom_dig_detect] Bios 0 scratch 20000 00000001 [ 0.315809] [drm:radeon_atombios_connected_scratch_regs] CRT1 disconnected [ 0.315812] [drm:radeon_atombios_connected_scratch_regs] CRT1 disconnected [ 0.316304] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.317305] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.318305] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.319305] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.320305] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.321306] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.322307] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.323307] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.324307] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.325308] [drm:drm_dp_i2c_do_msg] I2C nack (result=0, size=0 [ 0.325321] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:50:VGA-1] status updated from unknown to disconnected [ 0.325323] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:50:VGA-1] disconnected [ 0.325326] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:52:DVI-D-1] [ 0.354644] [drm:radeon_atombios_connected_scratch_regs] DFP2 connected [ 0.354646] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:52:DVI-D-1] status updated from unknown to connected [ 0.354648] [drm:drm_add_display_info] non_desktop set to 0 [ 0.354652] [drm:drm_add_edid_modes] ELD: no CEA Extension found [ 0.354653] [drm:drm_add_display_info] non_desktop set to 0 [ 0.354743] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:52:DVI-D-1] probed modes : [ 0.354746] [drm:drm_mode_debug_printmodeline] Modeline 54:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x48 0x5 [ 0.354748] [drm:drm_mode_debug_printmodeline] Modeline 64:"1280x1024" 75 135000 1280 1296 1440 1688 1024 1025 1028 1066 0x40 0x5 [ 0.354750] [drm:drm_mode_debug_printmodeline] Modeline 55:"1280x960" 60 108000 1280 1376 1488 1800 960 961 964 1000 0x40 0x5 [ 0.354752] [drm:drm_mode_debug_printmodeline] Modeline 56:"1152x864" 75 108000 1152 1216 1344 1600 864 865 868 900 0x40 0x5 [ 0.354754] [drm:drm_mode_debug_printmodeline] Modeline 65:"1024x768" 75 78750 1024 1040 1136 1312 768 769 772 800 0x40 0x5 [ 0.354756] [drm:drm_mode_debug_printmodeline] Modeline 66:"1024x768" 70 75000 1024 1048 1184 1328 768 771 777 806 0x40 0xa [ 0.354758] [drm:drm_mode_debug_printmodeline] Modeline 67:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [ 0.354760] [drm:drm_mode_debug_printmodeline] Modeline 68:"832x624" 75 57284 832 864 928 1152 624 625 628 667 0x40 0xa [ 0.354762] [drm:drm_mode_debug_printmodeline] Modeline 69:"800x600" 75 49500 800 816 896 1056 600 601 604 625 0x40 0x5 [ 0.354764] [drm:drm_mode_debug_printmodeline] Modeline 70:"800x600" 72 50000 800 856 976 1040 600 637 643 666 0x40 0x5 [ 0.354766] [drm:drm_mode_debug_printmodeline] Modeline 57:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [ 0.354768] [drm:drm_mode_debug_printmodeline] Modeline 58:"800x600" 56 36000 800 824 896 1024 600 601 603 625 0x40 0x5 [ 0.354770] [drm:drm_mode_debug_printmodeline] Modeline 59:"640x480" 75 31500 640 656 720 840 480 481 484 500 0x40 0xa [ 0.354772] [drm:drm_mode_debug_printmodeline] Modeline 60:"640x480" 73 31500 640 664 704 832 480 489 492 520 0x40 0xa [ 0.354774] [drm:drm_mode_debug_printmodeline] Modeline 61:"640x480" 67 30240 640 704 768 864 480 483 486 525 0x40 0xa [ 0.354776] [drm:drm_mode_debug_printmodeline] Modeline 62:"640x480" 60 25175 640 656 752 800 480 490 492 525 0x40 0xa [ 0.354778] [drm:drm_mode_debug_printmodeline] Modeline 63:"720x400" 70 28320 720 738 846 900 400 412 414 449 0x40 0x6 [ 0.354781] [drm:drm_setup_crtcs] connector 47 enabled? no [ 0.354782] [drm:drm_setup_crtcs] connector 50 enabled? no [ 0.354783] [drm:drm_setup_crtcs] connector 52 enabled? yes [ 0.354785] [drm:drm_setup_crtcs] looking for cmdline mode on connector 52 [ 0.354786] [drm:drm_setup_crtcs] looking for preferred mode on connector 52 0 [ 0.354787] [drm:drm_setup_crtcs] found mode 1280x1024 [ 0.354788] [drm:drm_setup_crtcs] picking CRTCs for 16384x16384 config [ 0.354791] [drm:drm_setup_crtcs] desired mode 1280x1024 set on crtc 39 (0,0) [ 0.355847] [drm] fb mappable at 0xC03DA000 [ 0.355847] [drm] vram apper at 0xC0000000 [ 0.355847] [drm] size 5242880 [ 0.355848] [drm] fb depth is 24 [ 0.355848] [drm] pitch is 5120 [ 0.355911] fbcon: radeondrmfb (fb0) is primary device [ 0.356223] [drm:drm_crtc_helper_set_config] [ 0.356225] [drm:drm_crtc_helper_set_config] [CRTC:39:crtc-0] [FB:72] #connectors=1 (x y) (0 0) [ 0.356227] [drm:drm_crtc_helper_set_config] crtc has no fb, full mode set [ 0.356228] [drm:drm_crtc_helper_set_config] modes are different, full mode set [ 0.356230] [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0 [ 0.356232] [drm:drm_mode_debug_printmodeline] Modeline 71:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x48 0x5 [ 0.356234] [drm:drm_crtc_helper_set_config] encoder changed, full mode switch [ 0.356235] [drm:drm_crtc_helper_set_config] crtc changed, full mode switch [ 0.356236] [drm:drm_crtc_helper_set_config] [CONNECTOR:52:DVI-D-1] to [CRTC:39:crtc-0] [ 0.356237] [drm:drm_crtc_helper_set_config] attempting to set mode from userspace [ 0.356239] [drm:drm_mode_debug_printmodeline] Modeline 71:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x48 0x5 [ 0.356243] [drm:radeon_encoder_set_active_device] setting active device to 00000080 from 00000080 00000080 for encoder 2 [ 0.356252] [drm:drm_crtc_helper_set_mode] [CRTC:39:crtc-0] [ 0.356263] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.356265] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.366337] [drm:radeon_compute_pll_avivo] 216000 - 215830, pll dividers - fb: 25.9 ref: 2, post 6 [ 0.370380] [drm:radeon_crtc_handle_flip] radeon_crtc->flip_status = 0 != RADEON_FLIP_SUBMITTED(2) [ 0.370384] [drm:drm_crtc_helper_set_mode] [ENCODER:51:TMDS-51] set [MODE:71:1280x1024] [ 0.370389] [drm:radeon_atom_encoder_dpms] encoder dpms 30 to mode 3, devices 00000080, active_devices 00000080 [ 0.375534] [drm:radeon_crtc_load_lut] 0 [ 0.375547] [drm:radeon_atom_encoder_dpms] encoder dpms 30 to mode 0, devices 00000080, active_devices 00000080 [ 0.376684] [drm:drm_crtc_helper_set_config] Setting connector DPMS state to on [ 0.376686] [drm:drm_crtc_helper_set_config] [CONNECTOR:52:DVI-D-1] set DPMS on [ 0.376689] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.376691] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.386736] [drm:drm_crtc_helper_set_config] [ 0.386737] [drm:drm_crtc_helper_set_config] [CRTC:41:crtc-1] [NOFB] [ 0.386739] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.386741] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.396778] [drm:drm_crtc_helper_set_config] [ 0.396779] [drm:drm_crtc_helper_set_config] [CRTC:43:crtc-2] [NOFB] [ 0.396781] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.396783] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.406821] [drm:drm_crtc_helper_set_config] [ 0.406822] [drm:drm_crtc_helper_set_config] [CRTC:45:crtc-3] [NOFB] [ 0.406824] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000008, active_devices 00000000 [ 0.406826] [drm:radeon_atom_encoder_dpms] encoder dpms 33 to mode 3, devices 00000001, active_devices 00000000 [ 0.416882] [drm:drm_crtc_helper_set_config] [ 0.416884] [drm:drm_crtc_helper_set_config] [CRTC:39:crtc-0] [FB:72] #connectors=1 (x y) (0 0) [ 0.416887] [drm:drm_crtc_helper_set_config] [CONNECTOR:52:DVI-D-1] to [CRTC:39:crtc-0] [ 0.418966] [drm:drm_crtc_helper_set_config] [ 0.418967] [drm:drm_crtc_helper_set_config] [CRTC:39:crtc-0] [FB:72] #connectors=1 (x y) (0 0) [ 0.418969] [drm:drm_crtc_helper_set_config] [CONNECTOR:52:DVI-D-1] to [CRTC:39:crtc-0] [ 0.421038] Console: switching to colour frame buffer device 160x64 [ 0.421041] [drm:drm_crtc_helper_set_config] [ 0.421043] [drm:drm_crtc_helper_set_config] [CRTC:39:crtc-0] [FB:72] #connectors=1 (x y) (0 0) [ 0.421045] [drm:drm_crtc_helper_set_config] [CONNECTOR:52:DVI-D-1] to [CRTC:39:crtc-0] [ 0.423118] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device [ 0.423182] [drm] Initialized radeon 2.50.0 20080528 for 0000:00:01.0 on minor 0
If I am reading the logs correctly, probing the non-connected ports is not done in parallel, loading the module *radeon* takes 150 ms longer, which is over ten percent of the total load time of the Linux kernel and initramfs. (My goal is to show the LUKS passphrase prompt as fast as possible.)
On desktop systems and often with laptops (mostly no external monitor connected) the setup doesn’t change that often.
Is it possible to pass options to the driver to not probe certain ports during startup?
Sometimes the firmware or boot loader (also in kexec cases) already probed everything. Is there an API already how to pass that information down? That would also come in handy to cache the setup between reboots.
Kind regards,
Paul
[1]: https://www.asus.com/de/Motherboards/F2A85M_PRO/gallery/
On 2018-07-28 09:10 PM, Paul Menzel wrote:
Dear Linux folks,
It looks like, that loading a graphics driver, the DRM methods probe each connector.
For example, the Asus F2A85-M PRO has four monitor ports, but only one monitor is connected over DVI. Here is the log excerpt with Linux 4.18-rc6+.
[...]
If I am reading the logs correctly, probing the non-connected ports is not done in parallel,
It could be, though. That would probably be the best solution.
On desktop systems and often with laptops (mostly no external monitor connected) the setup doesn’t change that often.
Still, the driver missing when it does change will make for an unhappy user.
Is it possible to pass options to the driver to not probe certain ports during startup?
video=<output name>:d might do the trick, see Documentation/fb/modedb.txt .
dri-devel@lists.freedesktop.org