[Bug 254472] graphics/drm-fbsd13-kmod Xorg crash on resume
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 21 Apr 2022 07:44:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254472 --- Comment #6 from Maurizio <maurizio1018@gmail.com> --- I have found a workaround for this bug, an i915kms kernel driver patch. I have tested the patch on a Lenovo Thinkpad T450. NOTICE: I don’t know if this patch can damage your laptop, if it happens it is not my responsibility. The patch changes only one line of code in the source file drm-kmod-drm_v5.4.144_6/drivers/gpu/drm/i915/i915_gem.c in the function wait_for_timelines: I have replaced the line: timeout = i915_request_wait(rq, wait, timeout); with: timeout = i915_request_wait(rq, wait, MAX_SCHEDULE_TIMEOUT); the rest of the patch lines are only printf messages to display the time spent in the function. The i915_request_wait function never timeouts. I have warned you with the above notice because my laptop can take more than 4 seconds to resume. Before applying the patch you must be able to build the graphics/drm-fbsd13-kmod port from source. Building the patched i915kms driver: # cd /usr/ports/graphics/drm-fbsd13-kmod/ # make clean # make config select “Build with debugging support” # mkdir files Copy the patch file patch-drivers_gpu_drm_i915_i915__gem.c in the files directory and verify it # ls /usr/ports/graphics/drm-fbsd13-kmod/files patch-drivers_gpu_drm_i915_i915__gem.c # make build deinstall reinstall should compile and install the patched code without errors. Reboot for running the new driver. How this patch works on my laptop in the suspend/resume cycle. When suspend/resume works fast, I have this output at the console: vgapci0: child drmn0 requested pci_enable_io Start of i915_gem_wait_for_idle() flags=12 (locked), timeout=200 Calling wait_for_timelines() flags=12 (locked), timeout=2147483647 (forever) End of i915_gem_wait_for_idle() in 0 tick(s) rtsx0: Resume The i915_gem_wait_for_idle function takes less than one ms (tick = ms). When the suspend/resume cycle is slow, I have an output similar to: vgapci0: child drmn0 requested pci_enable_io Start of i915_gem_wait_for_idle() flags=12 (locked), timeout=200 Calling wait_for_timelines() drmn0: Resetting rcs0 for hang on rcs0 flags=12 (locked), timeout=2147483647 (forever) End of i915_gem_wait_for_idle() in 4138 tick(s) Start of i915_gem_wait_for_idle() flags=12 (locked), timeout=200 Calling wait_for_timelines() flags=12 (locked), timeout=2147483647 (forever) End of i915_gem_wait_for_idle() in 0 tick(s) rtsx0: Resume The message “drmn0: Resetting rcs0 for hang on rcs0” is written to the console and the i915_gem_wait_for_idle function takes more than 4 seconds to finish. The i915_gem_wait_for_idle is called again without errors and the laptop resumes. -- You are receiving this mail because: You are the assignee for the bug.