Re: [git pull] drm fixes

Alex Riesen
2011-02-24T19:04:07Z

On Thu, Feb 24, 2011 at 10:18, Indan Zupancic <indan@nul.nu> wrote:
>>>
>>> As it turns out this is a bug in the userspace components of the stack for
>>> gen2 hardware, with lax kernel side enforcement. Daniel has a fix for both.
>>
>> Chris, could you point us at the patch? I ask because Daniel left a
>> comment in bug discussion that we should ignore some patch from him,
>> and there was no mention of anything else.
>>
>> I'll gladly test a better fix.
>
> See:
>
> http://lists.freedesktop.org/archives/dri-devel/2011-February/008658.html

This is precisely the link on which Daniel commented:

Comment #35 From Daniel Vetter 2011-02-23 10:38:25

> --- Comment #34 from Indan <indan@nul.nu> 2011-02-23 01:53:25 ---
> Daniel has a real fix at:
> http://lists.freedesktop.org/archives/dri-devel/2011-February/008658.html

You can safely ignore this patch. It only fixes a very special corruption due
to relaxed tiling. This kind of corruption manifests itself in garbage in the
lower-left corner of pixmaps (think ui elements) if and only if the height
rounded up to the next multiple of 8 is not a multiple of 16. Your
corruptions look different.

[lower-left corner means: at most 8 pixels high, at most half the width of
the total pixmap]

And yes, it does not help at all to fix the corruption in the ticket.

> https://lkml.org/lkml/2011/2/23/34

This is just the discussion about the problem described in the ticket.
It does not even mention the patch from the previous link, BTW.
It does have the patch which returns -EINVAL for I915_PARAM_HAS_RELAXED_FENCING,
though.

So, AFAICS, at the moment there is no better patch than this:

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 17bd766..8f8a6a3 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -764,7 +764,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
break;
case I915_PARAM_HAS_RELAXED_FENCING:
value = 1;
- break;
+ return -EINVAL;
case I915_PARAM_HAS_COHERENT_RINGS:
value = 1;
break;