Re: [git pull] drm

Dave Airlie
2009-01-10T23:05:19Z

[-- Attachment #1: Type: text/plain, Size: 2112 bytes --]

On Sat, Jan 10, 2009 at 7:58 PM, Richard Purdie <rpurdie@linux.intel.com> wrote:
>
> On Sat, 2009-01-10 at 12:04 +1000, Dave Airlie wrote:
>> On Sat, Jan 10, 2009 at 11:13 AM, Richard Purdie
>> <rpurdie@linux.intel.com> wrote:
>> > On Fri, 2009-01-09 at 18:03 +0000, Richard Purdie wrote:
>> >> On Fri, 2009-01-09 at 15:07 +0000, Richard Purdie wrote:
>> >> > I just updated to the latest kernel from git to test some other patches
>> >> > and after logging into GDM the X server hangs before launching the
>> >> > desktop (it appears to be trying to run glxinfo) on my Thinkpad T61
>> >> > (i915 graphics). Bisection shows this happens after applying this
>> >> > commit:
>> >> >
>> >> > On Mon, 2008-12-29 at 08:32 +0000, Dave Airlie wrote:
>> >> > > commit 7c1c2871a6a3a114853ec6836e9035ac1c0c7f7a
>> >> > > Author: Dave Airlie <airlied@redhat.com>
>> >> > > Date: Fri Nov 28 14:22:24 2008 +1000
>> >
>> > The patch below gets my system working again with the latest kernels.
>> > Was dropping the drm_addmap() call for i915 intentional or not?
>>
>> Yes, so now we need to find out what happens in your userspace, when
>> it hangs is the machine dead?
>>
>> or can you ssh in? any oops in the logs? can you get a sysrq-t
>> backtrace for X.org and glxinfo?
>
> The machine's keyboard and console switching is dead and the login in
> process drops the wifi but I think I can get in through ssh over
> ethernet. The power button does make it shutdown cleanly and there is no
> oops. I'll try and get backtraces later, probably tonight.
>
> I have a question though, where in the i915 driver is
> master_priv->sarea_priv assigned a value? or master_priv->sarea for that
> matter? As far as I can tell those pointers are never assigned values?
> Is there a drm_getsarea() call missing?
>
> Perhaps my patch fixes things since sarea and sarea_priv are given a
> value?
>

Does the attached patch work?

Somehow this code was tested on DRI2 which needs no sarea, and we missed the bit
to setup the DRI1 sarea, this patch should dtrt.

Thanks for reporting/tracking this down..

Dave.
> Cheers,
>
> Richard
>
>
>

[-- Attachment #2: 0001-drm-i915-setup-sarea-properly-in-master_priv.patch --]
[-- Type: application/octet-stream, Size: 1235 bytes --]

From b6f568d6ae70862fde54118741a8e3060abe425c Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@linux.ie>
Date: Sun, 11 Jan 2009 09:03:49 +1000
Subject: [PATCH] drm/i915: setup sarea properly in master_priv

If we are running DRI1 userspace, we really need to set the sarea up properly.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/i915/i915_dma.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 62a4bf7..fbee2d8 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -177,6 +177,14 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
drm_i915_private_t *dev_priv = dev->dev_private;
struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;

+ master_priv->sarea = drm_getsarea(dev);
+ if (master_priv->sarea) {
+ master_priv->sarea_priv = (drm_i915_sarea_t *)
+ ((u8 *)master_priv->sarea->handle + init->sarea_priv->offset);
+ } else {
+ DRM_DEBUG("sarea not found assuming DRI2 userspace\n");
+ }
+
if (init->ring_size != 0) {
if (dev_priv->ring.ring_obj != NULL) {
i915_dma_cleanup(dev);
--
1.5.5.1