Intel & Radeon DRM Drivers Get Last Minute 3.15 Fixes
Fallout from the many changes introduced early on in the Linux 3.15 kernel cycle are almost all addressed and this next kernel release should happen in the very near future. As some last minute work are some notable fixes for the Intel and Radeon DRM graphics drivers.
Among the changes in the latest DRM stable pull are:
- The i915 driver preventing negative relocation deltas from wrapping. "This is pure evil. Userspace, I'm looking at you SNA, repacks batch buffers on the fly after generation as they are being passed to the kernel for execution. These batches also contain self-referenced relocations as a single buffer encompasses the state commands, kernels, vertices and sampler. During generation the buffers are placed at known offsets within the full batch, and then the relocation deltas (as passed to the kernel) are tweaked as the batch is repacked into a smaller buffer. This means that userspace is passing negative relocations deltas, which subsequently wrap to large values if the batch is at a low address. The GPU hangs when it then tries to use the large value as a base for its address offsets, rather than wrapping back to the real value (as one would hope). As the GPU uses positive offsets from the base, we can treat the relocation address as the minimum address read by the GPU. For the upper bound, we trust that userspace will not read beyond the end of the buffer." This fix should take care of the buggy Iris Pro Graphics I've been experiencing.
- A Radeon DRM driver hang fix regarding RADEON_GEM_DOMAIN_CPU for command submission.
- A Radeon PLL workaround.
- A fix for the Radeon DRM driver breaking suspend-and-resume with the new kernel.
More details on the other bug fixes for Linux 3.15-rc8 can be found via the DRM-stable pull request.
Among the changes in the latest DRM stable pull are:
- The i915 driver preventing negative relocation deltas from wrapping. "This is pure evil. Userspace, I'm looking at you SNA, repacks batch buffers on the fly after generation as they are being passed to the kernel for execution. These batches also contain self-referenced relocations as a single buffer encompasses the state commands, kernels, vertices and sampler. During generation the buffers are placed at known offsets within the full batch, and then the relocation deltas (as passed to the kernel) are tweaked as the batch is repacked into a smaller buffer. This means that userspace is passing negative relocations deltas, which subsequently wrap to large values if the batch is at a low address. The GPU hangs when it then tries to use the large value as a base for its address offsets, rather than wrapping back to the real value (as one would hope). As the GPU uses positive offsets from the base, we can treat the relocation address as the minimum address read by the GPU. For the upper bound, we trust that userspace will not read beyond the end of the buffer." This fix should take care of the buggy Iris Pro Graphics I've been experiencing.
- A Radeon DRM driver hang fix regarding RADEON_GEM_DOMAIN_CPU for command submission.
- A Radeon PLL workaround.
- A fix for the Radeon DRM driver breaking suspend-and-resume with the new kernel.
More details on the other bug fixes for Linux 3.15-rc8 can be found via the DRM-stable pull request.
13 Comments