[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