Re: radeon warning on 64-bit platforms

From: David Mosberger <davidm_at_napali.hpl.hp.com>
Date: 2004-02-18 10:28:28
Linus and Michel,

Here is a proposed patch for fixing the compile-warning that shows up
when compiling radeon_state.c on a 64-bit platform (Itanium, in my
case).  According to Michel, RADEON_PARAM_SAREA_HANDLE is used only on
embedded platforms and since it is not possible to fix the problem
without breaking backwards-compatibility for those platforms, the
interim fix is to simply desupport this particular ioctl() on 64-bit
platforms (i.e., make it fail with EINVAL).

If there are no objections, please apply.

	--david

===== drivers/char/drm/radeon_state.c 1.23 vs edited =====
--- 1.23/drivers/char/drm/radeon_state.c	Tue Feb  3 21:29:26 2004
+++ edited/drivers/char/drm/radeon_state.c	Tue Feb 17 15:23:01 2004
@@ -2186,9 +2186,24 @@
 		value = dev_priv->ring_rptr_offset;
 		break;
 	case RADEON_PARAM_SAREA_HANDLE:
-		/* The lock is the first dword in the sarea. */
-		value = (int)dev->lock.hw_lock; 
-		break;	
+		/*
+		 * This ioctl() doesn't work on 64-bit platforms because hw_lock is a
+		 * pointer which can't fit into an int-sized variable.  According to
+		 * Michael Dänzer, the ioctl() is only used on embedded platforms, so not
+		 * supporting it shouldn't be a problem.  If the same functionality is
+		 * needed on 64-bit platforms, a new ioctl() would have to be added, so
+		 * backwards-compatibility for the embedded platforms can be maintained.
+		 *	--davidm 4-Feb-2004.
+		 */
+	  	if (sizeof (dev->lock.hw_lock) <= sizeof (int))
+		    /*
+		     * The lock is the first dword in the sarea.  Cast to "long" so it
+		     * compiles without warning on 64-bit platforms.
+		     */
+		    value = (long)dev->lock.hw_lock;
+		else
+		    return DRM_ERR(EINVAL);
+		break;
 	case RADEON_PARAM_GART_TEX_HANDLE:
 		value = dev_priv->gart_textures_offset;
 		break;
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Tue Feb 17 18:34:31 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:22 EST