From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Mosberger Date: Tue, 17 Feb 2004 23:28:28 +0000 Subject: Re: radeon warning on 64-bit platforms Message-Id: <16434.41884.249541.156083@napali.hpl.hp.com> List-Id: References: <16434.35199.597235.894615@napali.hpl.hp.com> <1077054385.2714.72.camel@thor.asgaard.local> <16434.36137.623311.751484@napali.hpl.hp.com> <1077055209.2712.80.camel@thor.asgaard.local> <16434.37025.840577.826949@napali.hpl.hp.com> <1077058106.2713.88.camel@thor.asgaard.local> In-Reply-To: <1077058106.2713.88.camel@thor.asgaard.local> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: torvalds@osdl.org, Michel =?ISO-8859-1?Q?D=E4nzer?= Cc: davidm@hpl.hp.com, linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org 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 =3D=3D=3D drivers/char/drm/radeon_state.c 1.23 vs edited =3D=3D--- 1.23/dri= vers/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 =3D dev_priv->ring_rptr_offset; break; case RADEON_PARAM_SAREA_HANDLE: - /* The lock is the first dword in the sarea. */ - value =3D (int)dev->lock.hw_lock;=20 - break;=09 + /* + * 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=E4nzer, 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) <=3D sizeof (int)) + /* + * The lock is the first dword in the sarea. Cast to "long" so it + * compiles without warning on 64-bit platforms. + */ + value =3D (long)dev->lock.hw_lock; + else + return DRM_ERR(EINVAL); + break; case RADEON_PARAM_GART_TEX_HANDLE: value =3D dev_priv->gart_textures_offset; break;