[Intel-gfx] [v3] drm/i915/display: Force the state compute phase once to enable PSR

Ross Zwisler zwisler at google.com
Wed Feb 5 23:01:01 UTC 2020


On Mon, Jan 06, 2020 at 07:21:28AM -0800, José Roberto de Souza wrote:
> Recent improvements in the state tracking in i915 caused PSR to not be
> enabled when reusing firmware/BIOS modeset, this is due to all initial
> commits returning ealier in intel_atomic_check() as needs_modeset()
> is always false.
> 
> To fix that here forcing the state compute phase in CRTC that is
> driving the eDP that supports PSR once. Enable or disable PSR do not
> require a fullmodeset, so user will still experience glitch free boot
> process plus the power savings that PSR brings.
> 
> It was tried to set mode_changed in intel_initial_commit() but at
> this point the connectors are not registered causing a crash when
> computing encoder state.
> 
> v2:
> - removed function return
> - change arguments to match intel_hdcp_atomic_check
> 
> v3:
> - replaced drm includes in intel_psr.h by forward declaration(Jani)
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=112253
> Reported-by: <s.zharkoff at gmail.com>
> Cc: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
> Cc: Jani Nikula <jani.nikula at intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun at intel.com>
> ---

With the current linux/master:

6992ca0dd017e Merge branch 'parisc-5.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

my system fails to boot, and I bisected the failure to this commit.   Here are
the relevant messages from dmesg, passed through kasan_symbolize.py:

i915 0000:00:02.0: vgaarb: deactivate vga console
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] Driver supports precise vblank timestamp query.
resource sanity check: requesting [mem 0x000c0000-0x000dffff], which spans more than PCI Bus 0000:00 [mem 0x000c0000-0x000c3fff
window]
caller pci_map_rom+0x6a/0x17d mapping multiple BARs
i915 0000:00:02.0: Invalid PCI ROM data signature: expecting 0x52494350, got 0xe937aa55
[drm] Failed to find VBIOS tables (VBT)
i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at drivers/gpu/drm/drm_atomic.c:296[<        none        >] drm_atomic_get_crtc_state+0xf8/0x110 drivers/gpu/drm/drm_atomic.c:304
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.5.0-rc1-00573-g60c6a14b489ba #31
Hardware name: GOOGLE Samus, BIOS  05/14/2019
RIP: 0010:drm_atomic_get_crtc_state+0xf8/0x110
Code: 89 2c 11 48 89 98 f0 01 00 00 48 8b 4d 20 8b 55 60 e8 5c aa 00 00 48 8b 04 24 48 83 c4 08 5b 5d 41 5c c3 48 98 e9 4e ff ff
 ff <0f> 0b e9 28 ff ff ff 48 c7 c0 f4 ff ff ff e9 3b ff ff ff 0f 1f 44
RSP: 0000:ffffab4b80017970 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff93c1a69ca000 RCX: ffff93c1ab69b8c0
RDX: 000000000000002d RSI: 0000000000000000 RDI: ffff93c1a69ca000
RBP: ffff93c1a6944000 R08: 0000000000000079 R09: 0000000000000079
R10: 000000000000002d R11: 0000000000000005 R12: 0000000000000000
R13: ffff93c1a6944000 R14: 0000000000000005 R15: ffff93c1a6979c00
FS:  0000000000000000(0000) GS:ffff93c1aec00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff93c0f5201000 CR3: 00000003b3e0c001 CR4: 00000000003606f0
Call Trace:
[<        none        >] drm_atomic_add_affected_connectors+0x2e/0x110 drivers/gpu/drm/drm_atomic.c:1046
[<        none        >] drm_atomic_helper_check_modeset+0x4a1/0xa70 drivers/gpu/drm/drm_atomic_helper.c:703
[<        none        >] intel_atomic_check+0x96/0x2510 drivers/gpu/drm/i915/display/intel_display.c:14603
 ?[<     inline     >] kmemdup ./include/linux/string.h:453
 ?[<        none        >] intel_digital_connector_duplicate_state+0x21/0x40 drivers/gpu/drm/i915/display/intel_atomic.c:171
 ?[<     inline     >] spin_unlock_irqrestore ./include/linux/spinlock.h:393
 ?[<        none        >] drm_connector_list_iter_next+0x88/0xb0 drivers/gpu/drm/drm_connector.c:689
[<     inline     >] sanitize_watermarks drivers/gpu/drm/i915/display/intel_display.c:17359
[<        none        >] intel_modeset_init+0x10a8/0x1d50 drivers/gpu/drm/i915/display/intel_display.c:17602
[<     inline     >] i915_driver_modeset_probe drivers/gpu/drm/i915/i915_drv.c:311
[<        none        >] i915_driver_probe+0xa4e/0x1410 drivers/gpu/drm/i915/i915_drv.c:1528
 ?[<        none        >] __kernfs_new_node+0x159/0x1c0 fs/kernfs/dir.c:666
[<        none        >] i915_pci_probe+0x54/0x138 drivers/gpu/drm/i915/i915_pci.c:994
[<        none        >] local_pci_probe+0x42/0x80 drivers/pci/pci-driver.c:306
[<     inline     >] pci_call_probe drivers/pci/pci-driver.c:361
[<     inline     >] __pci_device_probe drivers/pci/pci-driver.c:386
[<        none        >] pci_device_probe+0x107/0x1a0 drivers/pci/pci-driver.c:429
[<        none        >] really_probe+0x147/0x3c0 drivers/base/dd.c:548
[<        none        >] driver_probe_device+0xb6/0x100 drivers/base/dd.c:721
[<        none        >] device_driver_attach+0x53/0x60 drivers/base/dd.c:995
[<        none        >] __driver_attach+0x8a/0x150 drivers/base/dd.c:1072
 ?[<        none        >] device_driver_attach+0x60/0x60 drivers/base/dd.c:995
 ?[<        none        >] device_driver_attach+0x60/0x60 drivers/base/dd.c:995
[<        none        >] bus_for_each_dev+0x78/0xc0 drivers/base/bus.c:304
[<        none        >] bus_add_driver+0x14d/0x1f0 drivers/base/bus.c:621
[<        none        >] driver_register+0x6c/0xc0 drivers/base/driver.c:170
 ?[<        none        >] mipi_dsi_bus_init+0x11/0x11 drivers/gpu/drm/drm_mipi_dsi.c:1208
[<        none        >] i915_init+0x58/0x6b drivers/gpu/drm/i915/i915_pci.c:1057
[<        none        >] do_one_initcall+0x46/0x1f4 init/main.c:938
[<     inline     >] do_initcall_level init/main.c:1006
[<     inline     >] do_initcalls init/main.c:1014
[<     inline     >] do_basic_setup init/main.c:1031
[<        none        >] kernel_init_freeable+0x1a7/0x24e init/main.c:1191
 ?[<        none        >] rest_init+0xaa/0xaa init/main.c:451
[<        none        >] kernel_init+0xa/0x106 init/main.c:1109
[<        none        >] ret_from_fork+0x35/0x40 arch/x86/entry/entry_64.S:352
---[ end trace 261d284d91320989 ]---
tsc: Refined TSC clocksource calibration: 2394.459 MHz
clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2283c51f836, max_idle_ns: 440795218683 ns
clocksource: Switched to clocksource tsc

After this the system appears to stop booting, and I get no more serial output
nor any display.


More information about the Intel-gfx mailing list