Suspend fails when RC6 power saving feature of the i915 is enabled. The display turns off, but the system never goes to S3: it is possible to access it via SSH. This happens with all three RC6 levels (RC6, RC6p and RC6pp). Based on some debugging it seems that the suspend is prevented because "gen6_pm_rps_work_func" (@sys/dev/drm2/i915/i915_irq.c) hangs on a "DRM_LOCK(dev)" call, thus the "taskqueue_drain(dev_priv->tq, &dev_priv->rps_task);" call in ironlake_irq_uninstall (@sys/dev/drm2/i915/i915_irq.c) can never finish. How-To-Repeat: 1. Enable RC6 in /boot/loader.conf: drm.i915.enable_rc6=1 # or 3 for RC6p, 7 for RC6pp 2. With RC6 enabled, try to suspend the machine: acpiconf -s3
Responsible Changed From-To: gnats-admin->freebsd-bugs reclassify.
Created attachment 150427 [details] don't lock in gen6_pm_rps_work_func if already locked I can confirm this issue. I've been using the attached patch for a while now.
works flawless with FreeBSD paperino 10.1-RELEASE-p12 FreeBSD 10.1-RELEASE-p12 #1 r284344M: Mon Jun 15 19:28:55 CEST 2015 root@paperino:/usr/obj/usr/src/sys/GENERIC amd64 thanks!
I can confirm that the latest DRM and/or i915 imports have fixed this bug (in CURRENT at least).
For bugs matching the following conditions: - Status == In Progress - Assignee == "bugs@FreeBSD.org" - Last Modified Year <= 2017 Do - Set Status to "Open"
Multiple reports confirm this has been fixed, and I can confirm on my X220 running recentish -CURRENT.