drm/i915: setup sarea properly in master_priv
authorDave Airlie <airlied@linux.ie>
Sat, 10 Jan 2009 23:03:49 +0000 (09:03 +1000)
committerDave Airlie <airlied@linux.ie>
Mon, 12 Jan 2009 12:01:34 +0000 (22:01 +1000)
If we are running DRI1 userspace, we really need to set the sarea up properly.

thanks to Richard for finding/testing this.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/i915/i915_dma.c

index 62a4bf7b49df4f637bd8c89977bcbde07178b48a..868f574363ad8c77b779782bf1103d3d9839e19c 100644 (file)
@@ -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);