** Summary changed: - Request backport of two i915/Intel Arc GPU patches + i915: Fixup regressions introduced with enabling single CCS engine
** Changed in: linux (Ubuntu Noble) Status: New => In Progress ** Changed in: linux (Ubuntu Noble) Importance: Undecided => Medium ** Changed in: linux (Ubuntu Noble) Assignee: (unassigned) => Matthew Ruffell (mruffell) ** Description changed: - Hello Ubuntu Linux Kernel Team, + BugLink: https://bugs.launchpad.net/bugs/2072755 - Recently, Ubuntu 24.04 bumped the kernel version to linux 6.8.8 - (6.8.0-38.38 pkg version), which introduced an i915 regression affecting - GPU accelerated video transcoding on Intel Arc GPU. This bug affects all - linux 6.8.5+ kernels and was not fully fixed until linux 6.9.4. + [Impact] - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2068087 + Recently, the Intel i915 susbsystem underwent a change that limited the + number of CCS engines that were initialised by default, and exposed to + the user. Different chipsets have differing amounts of CCS engines, but + most available in the market have 4 CCS engines. The new change just + starts a single engine only, and allocates all CCS slices to this single + engine. This single engine is then exposed to userspace. This effort is + to workaround a hardware bug. - The issue makes the ffmpeg command fail and throws i915 error in dmesg. - `[ 81.026591] Fence expiration time out i915-0000:01:00.0:ffmpeg[521]:2!` + This all happened in: + commit 6db31251bb265813994bfb104eb4b4d0f44d64fb + Author: Andi Shyti <andi.sh...@linux.intel.com> + Date: Thu Mar 28 08:34:05 2024 +0100 + Subject: drm/i915/gt: Enable only one CCS for compute workload + Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6db31251bb265813994bfb104eb4b4d0f44d64fb + + which landed in: + + $ git describe --contains 67f164e8510b16bda18642464863dba87a33d8cb + Ubuntu-6.8.0-38.38~525 + + There have been some side effects as a result of these changes, leading + to failure of userspace applications, namely in video transcoding with + ffmepg, resulting in fence expiration errors in dmesg like: + + [ 81.026591] Fence expiration time out i915-0000:01:00.0:ffmpeg[521]:2! + + There has also been a performance impact introduced by this change, + which dropped performance of the GPU to 1/4 of what it was previously. + This is likely due to most ARC GPUs usually having 4 CCS engines, and + going down to 1 only without actually allocating the other three. + + There are no workarounds. Users are suggested to downgrade to + 6.8.0-36-generic while the fix is coming. + + [Fix] + + The regression was fixed by these two commits: + + commit aee54e282002a127612b71255bbe879ec0103afd + Author: Andi Shyti <andi.sh...@linux.intel.com> + Date: Fri Apr 26 02:07:23 2024 +0200 + Subject: drm/i915/gt: Automate CCS Mode setting during engine resets + Link: https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=aee54e282002a127612b71255bbe879ec0103afd + + commit ee01b6a386eaf9984b58a2476e8f531149679da9 + Author: Andi Shyti <andi.sh...@linux.intel.com> + Date: Fri May 17 11:06:16 2024 +0200 + Subject: drm/i915/gt: Fix CCS id's calculation for CCS mode setting + Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ee01b6a386eaf9984b58a2476e8f531149679da9 + + "drm/i915/gt: Automate CCS Mode setting during engine resets" is already + applied to noble/master-next through upstream stable v6.8.10. + + We just need "drm/i915/gt: Fix CCS id's calculation for CCS mode + setting". It is queued up for v6.9.4, but that could still be another + SRU cycle or two away. So send it now. + + "drm/i915/gt: Fix CCS id's calculation for CCS mode setting" restores + another 1/4 performance, but some performance issues still remain, and + will hopefully be addressed in a future patch. + + [Testcase] + + This affects video transcoding with ffmpeg, on machines equipped with + Intel ARC GPUs. + + An example ffmpeg command might be: + + /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -ss + 00:00:03.000 -noaccurate_seek -init_hw_device + vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va + -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi + -noautorotate -i file:"/path/to/1080_video.mkv" -noautoscale + -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s + -codec:v:0 av1_qsv -preset veryfast -b:v 3616000 -maxrate 3616000 + -bufsize 7232000 -g:v:0 72 -keyint_min:v:0 72 -vf + "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=w=1280:h=720:format=nv12:extra_hw_frames=24,hwmap=derive_device=qsv,format=qsv" + -codec:a:0 libfdk_aac -ac 2 -vbr:a 5 -copyts -avoid_negative_ts disabled + -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 + -hls_segment_type fmp4 -hls_fmp4_init_filename + "c30716eb121448346fcc00a2440071a3-1.mp4" -start_number 1 + -hls_segment_filename + "/var/lib/jellyfin/transcodes/c30716eb121448346fcc00a2440071a3%d.mp4" + -hls_playlist_type vod -hls_list_size 0 -y + "/var/lib/jellyfin/transcodes/c30716eb121448346fcc00a2440071a3.m3u8 + + Another user on bug 2072933 came up with this minimalist reproducer: + + #include <cstdio> + #include <sycl/sycl.hpp> + + int main() { + // auto selector = sycl::cpu_selector_v; // Works fine + auto selector = sycl::gpu_selector_v; + + auto queue = sycl::queue(selector); + + printf("Hello\n"); + queue.submit([&](sycl::handler &cgh) { + cgh.parallel_for(sycl::range(1), [=](sycl::item<1> item) {}); + }); + queue.wait(); + printf("Bye\n"); + + return 0; + } + + $ icpx -fsycl sycltest.cpp -o sycltest + $ ./sycltest + + These commands should run successfully to completion. On failure, they will + emit in dmesg: + + [ 81.026591] Fence expiration time out i915-0000:01:00.0:ffmpeg[521]:2! + + A test kernel is available in the following ppa: + + https://launchpad.net/~mruffell/+archive/ubuntu/lp2072755-test + + If you install the test kernel, things should work correctly. + + [Where problems could occur] + + This issue affects users of i915, which is a pretty universal integrated + GPU present on Intel processors. While these patches are unlikely to + cause outages that stop the primary display from functioning, any + further regressions may add additional performance impact or prevent + workloads from executing correctly. + + These patches are all accepted into upstream -stable, and we would + consume them in due course anyway. + + If a regression were to occur, there are no workarounds, and users would + need to select an older kernel until a fix is available. + + [Other info] + + Upstream Bug: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10895 - - Could you please backport these two patches to the Ubuntu kernel branch - to fix the regression? - - https://gitlab.com/linux- - kernel/stable/-/commit/fdf6c286478698ed901db1bd5a8702667f796c28 - - https://gitlab.com/linux- - kernel/stable/-/commit/e9250578ac6278dfd24a57c326eb805b3bdb0e31 -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2072755 Title: i915: Fixup regressions introduced with enabling single CCS engine To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2072755/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs