Imre Deak
27b5871abd
drm/i915: Fix system suspend without fbdev being initialized
...
commit 8038510b1fe443ffbc0e356db5f47cbb8678a594 upstream.
If fbdev is not initialized for some reason - in practice on platforms
without display - suspending fbdev should be skipped during system
suspend, fix this up. While at it add an assert that suspending fbdev
only happens with the display present.
This fixes the following:
[ 91.227923] PM: suspend entry (s2idle)
[ 91.254598] Filesystems sync: 0.025 seconds
[ 91.270518] Freezing user space processes
[ 91.272266] Freezing user space processes completed (elapsed 0.001 seconds)
[ 91.272686] OOM killer disabled.
[ 91.272872] Freezing remaining freezable tasks
[ 91.274295] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
[ 91.659622] BUG: kernel NULL pointer dereference, address: 00000000000001c8
[ 91.659981] #PF: supervisor write access in kernel mode
[ 91.660252] #PF: error_code(0x0002) - not-present page
[ 91.660511] PGD 0 P4D 0
[ 91.660647] Oops: 0002 [#1 ] PREEMPT SMP NOPTI
[ 91.660875] CPU: 4 PID: 917 Comm: bash Not tainted 6.2.0-rc7+ #54
[ 91.661185] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20221117gitfff6d81270b5-9.fc37 unknown
[ 91.661680] RIP: 0010:mutex_lock+0x19/0x30
[ 91.661914] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 53 48 89 fb e8 62 d3 ff ff 31 c0 65 48 8b 14 25 00 15 03 00 <f0> 48 0f b1 13 75 06 5b c3 cc cc cc cc 48 89 df 5b eb b4 0f 1f 40
[ 91.662840] RSP: 0018:ffffa1e8011ffc08 EFLAGS: 00010246
[ 91.663087] RAX: 0000000000000000 RBX: 00000000000001c8 RCX: 0000000000000000
[ 91.663440] RDX: ffff8be455eb0000 RSI: 0000000000000001 RDI: 00000000000001c8
[ 91.663802] RBP: ffff8be459440000 R08: ffff8be459441f08 R09: ffffffff8e1432c0
[ 91.664167] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
[ 91.664532] R13: 00000000000001c8 R14: 0000000000000000 R15: ffff8be442f4fb20
[ 91.664905] FS: 00007f28ffc16740(0000) GS:ffff8be4bb900000(0000) knlGS:0000000000000000
[ 91.665334] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 91.665626] CR2: 00000000000001c8 CR3: 0000000114926006 CR4: 0000000000770ee0
[ 91.665988] PKRU: 55555554
[ 91.666131] Call Trace:
[ 91.666265] <TASK>
[ 91.666381] intel_fbdev_set_suspend+0x97/0x1b0 [i915]
[ 91.666738] i915_drm_suspend+0xb9/0x100 [i915]
[ 91.667029] pci_pm_suspend+0x78/0x170
[ 91.667234] ? __pfx_pci_pm_suspend+0x10/0x10
[ 91.667461] dpm_run_callback+0x47/0x150
[ 91.667673] __device_suspend+0x10a/0x4e0
[ 91.667880] dpm_suspend+0x134/0x270
[ 91.668069] dpm_suspend_start+0x79/0x80
[ 91.668272] suspend_devices_and_enter+0x11b/0x890
[ 91.668526] pm_suspend.cold+0x270/0x2fc
[ 91.668737] state_store+0x46/0x90
[ 91.668916] kernfs_fop_write_iter+0x11b/0x200
[ 91.669153] vfs_write+0x1e1/0x3a0
[ 91.669336] ksys_write+0x53/0xd0
[ 91.669510] do_syscall_64+0x58/0xc0
[ 91.669699] ? syscall_exit_to_user_mode_prepare+0x18e/0x1c0
[ 91.669980] ? syscall_exit_to_user_mode_prepare+0x18e/0x1c0
[ 91.670278] ? syscall_exit_to_user_mode+0x17/0x40
[ 91.670524] ? do_syscall_64+0x67/0xc0
[ 91.670717] ? __irq_exit_rcu+0x3d/0x140
[ 91.670931] entry_SYSCALL_64_after_hwframe+0x72/0xdc
[ 91.671202] RIP: 0033:0x7f28ffd14284
v2: CC stable. (Jani)
Fixes: f8cc091e0530 ("drm/i915/fbdev: suspend HPD before fbdev unregistration")
References: https://gitlab.freedesktop.org/drm/intel/-/issues/8015
Reported-and-tested-by: iczero <iczero@hellomouse.net>
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: iczero <iczero@hellomouse.net>
Cc: <stable@vger.kernel.org> # v6.1+
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230208114300.3123934-2-imre.deak@intel.com
(cherry picked from commit 9542d708409a41449e99c9a464deb5e062c4bee2)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-03-11 13:55:43 +01:00
..
2023-03-10 09:34:32 +01:00
2022-08-03 18:32:27 +02:00
2022-08-03 18:31:49 +02:00
2022-08-03 18:32:27 +02:00
2022-09-26 09:11:47 +02:00
2022-08-03 18:32:27 +02:00
2023-03-10 09:33:14 +01:00
2023-03-11 13:55:43 +01:00
2023-02-25 11:25:37 +01:00
2023-03-10 09:33:14 +01:00
2022-12-31 13:33:06 +01:00
2022-10-05 11:24:12 -07:00
2023-03-10 09:34:33 +01:00
2022-10-05 11:24:12 -07:00
2022-10-10 13:59:01 -07:00
2022-08-16 12:46:26 +02:00
2023-03-11 13:55:43 +01:00
2023-01-12 12:02:27 +01:00
2023-01-07 11:11:57 +01:00
2022-08-03 18:31:49 +02:00
2022-11-14 19:08:21 +08:00
2022-08-03 18:31:49 +02:00
2022-08-03 18:31:49 +02:00
2023-03-10 09:33:17 +01:00
2023-01-12 12:02:22 +01:00
2023-01-07 11:11:57 +01:00
2023-03-10 09:33:58 +01:00
2023-03-10 09:33:09 +01:00
2023-02-22 12:59:43 +01:00
2023-03-10 09:33:55 +01:00
2023-03-10 09:33:14 +01:00
2023-02-01 08:34:23 +01:00
2022-08-11 18:13:31 +02:00
2022-09-23 13:16:37 +02:00
2022-05-21 18:02:47 +02:00
2023-03-10 09:34:33 +01:00
2023-03-10 09:33:57 +01:00
2022-12-31 13:33:01 +01:00
2022-10-25 13:14:36 +02:00
2022-09-20 09:37:12 +02:00
2022-07-28 15:35:56 +01:00
2023-02-09 11:28:02 +01:00
2022-08-03 18:32:27 +02:00
2022-12-31 13:33:06 +01:00
2022-08-03 18:31:49 +02:00
2022-09-11 22:03:07 +10:00
2023-03-10 09:33:16 +01:00
2022-10-20 09:56:05 +02:00
2023-03-10 09:33:09 +01:00
2022-09-20 09:37:12 +02:00
2023-03-10 09:33:55 +01:00
2022-10-05 11:24:12 -07:00
2022-08-26 14:22:59 +02:00
2022-09-10 21:45:53 +02:00
2022-08-03 18:31:49 +02:00
2022-09-17 15:01:24 +02:00
2023-03-10 09:33:11 +01:00
2022-04-07 12:53:53 +02:00
2022-09-07 07:01:16 +02:00
2023-02-14 19:11:45 +01:00
2023-03-10 09:33:09 +01:00
2023-02-22 12:59:47 +01:00
2022-07-13 10:54:56 +10:00
2022-08-03 18:32:27 +02:00
2022-09-12 09:34:07 +02:00
2022-12-31 13:32:01 +01:00
2022-06-20 23:53:55 +03:00
2022-06-20 23:53:55 +03:00
2022-06-20 23:53:55 +03:00
2022-07-28 15:35:55 +01:00
2022-06-28 07:56:32 +02:00
2022-06-21 08:52:59 -07:00
2022-07-08 13:41:28 +02:00
2023-01-18 11:58:13 +01:00
2022-06-20 23:53:55 +03:00
2022-07-09 15:00:52 +02:00
2022-08-04 15:24:46 +02:00
2023-01-07 11:11:56 +01:00
2022-10-07 17:04:10 -07:00
2022-06-30 10:50:59 +03:00
2022-07-13 10:46:05 +02:00
2022-09-13 14:38:33 +03:00
2022-09-02 16:38:51 +03:00
2022-05-13 18:55:13 +03:00
2022-11-10 18:49:01 -05:00
2023-03-10 09:34:33 +01:00
2022-07-13 10:46:05 +02:00
2022-08-03 18:32:27 +02:00
2022-07-09 15:07:09 +02:00
2022-09-06 10:56:04 +02:00
2022-10-31 09:50:44 +01:00
2023-03-10 09:33:08 +01:00
2022-09-28 10:43:30 +02:00
2022-06-20 23:53:55 +03:00
2022-08-03 18:32:27 +02:00
2022-07-09 15:08:16 +02:00
2023-03-10 09:34:01 +01:00
2022-07-18 09:18:53 +02:00
2022-07-11 10:53:13 +02:00
2022-10-05 11:24:12 -07:00
2022-11-10 18:49:02 -05:00
2022-07-15 10:25:36 +02:00
2022-06-20 23:53:55 +03:00
2022-05-05 09:04:10 +02:00
2022-09-12 09:14:26 +02:00
2023-03-10 09:33:14 +01:00
2023-03-10 09:33:08 +01:00
2022-07-05 21:14:02 +03:00
2022-09-20 09:42:31 +02:00
2022-07-05 21:15:13 +03:00
2023-03-10 09:34:00 +01:00
2022-09-20 09:42:31 +02:00
2022-09-20 09:41:06 +02:00
2022-08-19 13:38:12 +02:00
2022-09-24 15:02:02 +02:00
2022-09-12 09:14:26 +02:00
2022-07-26 18:42:00 +02:00
2022-06-13 08:54:16 +02:00
2022-04-12 09:27:20 +03:00
2022-06-03 20:09:27 +08:00
2023-02-01 08:34:42 +01:00
2022-06-20 23:53:55 +03:00
2023-02-22 12:59:46 +01:00
2022-10-07 17:04:10 -07:00