drm/sis: fixup sis_mm ioctl structs
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 24 Jun 2012 17:57:24 +0000 (19:57 +0200)
committerDave Airlie <airlied@redhat.com>
Fri, 20 Jul 2012 02:51:58 +0000 (22:51 -0400)
Userspace uses long in quite a few places more than the kernel. Which
gives me neat proof that I'm the only guy on this side of the galaxy
who ever tried to run glxgears on a 64bit machine with sis graphics on
linux.

Note that the longs in drm_sis_mem_t aren't aligned properly, so this
won't even work with 32bit userspace on 64bit kernel as-is. Hence the
patch can't break that, either.

Nope, I'm not nuts enough to write the 32bit ioctl compat layer for
this and test it with some wine app. Even though hunting the ebay
dungeons for a sis card actually supported by the mesa drivers casts
some doubts on this ...

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/sis/sis_mm.c
include/drm/sis_drm.h

index 5acc396ef93cef85d337aee2207df32c425ec68c..2c231070d250cd5eaef7e27ef5927d498ce2ddd6 100644 (file)
@@ -74,7 +74,7 @@ static int sis_fb_init(struct drm_device *dev, void *data, struct drm_file *file
        dev_priv->vram_offset = fb->offset;
 
        mutex_unlock(&dev->struct_mutex);
-       DRM_DEBUG("offset = %u, size = %u\n", fb->offset, fb->size);
+       DRM_DEBUG("offset = %lu, size = %lu\n", fb->offset, fb->size);
 
        return 0;
 }
@@ -161,7 +161,7 @@ fail_alloc:
        mem->size = 0;
        mem->free = 0;
 
-       DRM_DEBUG("alloc %d, size = %d, offset = %d\n", pool, mem->size,
+       DRM_DEBUG("alloc %d, size = %ld, offset = %ld\n", pool, mem->size,
                  mem->offset);
 
        return retval;
@@ -215,7 +215,7 @@ static int sis_ioctl_agp_init(struct drm_device *dev, void *data,
        dev_priv->agp_offset = agp->offset;
        mutex_unlock(&dev->struct_mutex);
 
-       DRM_DEBUG("offset = %u, size = %u\n", agp->offset, agp->size);
+       DRM_DEBUG("offset = %lu, size = %lu\n", agp->offset, agp->size);
        return 0;
 }
 
index 035b804dda6de514e629276cab0bee555d7110ed..df3763222d7345dc10b64492326acb9d33dc0e7d 100644 (file)
 
 typedef struct {
        int context;
-       unsigned int offset;
-       unsigned int size;
+       unsigned long offset;
+       unsigned long size;
        unsigned long free;
 } drm_sis_mem_t;
 
 typedef struct {
-       unsigned int offset, size;
+       unsigned long offset, size;
 } drm_sis_agp_t;
 
 typedef struct {
-       unsigned int offset, size;
+       unsigned long offset, size;
 } drm_sis_fb_t;
 
 struct sis_file_private {