[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dri-devel
Subject:    Re: [PATCH] drm/radeon/kms/atom: use get_unaligned() for ctx->ps
From:       Matt Turner <mattst88 () gmail ! com>
Date:       2010-02-14 1:15:58
Message-ID: b4198de61002131715i4cb562f4h6322bd097652a191 () mail ! gmail ! com
[Download RAW message or body]

On Thu, Feb 11, 2010 at 12:50 AM, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Wed, Feb 10, 2010 at 11:19 PM, Matt Turner <mattst88@gmail.com> wrote:
>> Updated patch to use get_unaligned_le32, as suggested by Dave.
>>
>> On Wed, Feb 10, 2010 at 10:56 PM, Matt Turner <mattst88@gmail.com> wrote:
>>> Noticed on a DEC Alpha.
>>>
>>> Start up into console mode caused 15 unaligned accesses, and starting X
>>> caused another 48.
>>>
>>> Signed-off-by: Matt Turner <mattst88@gmail.com>
>>> CC: Jerome Glisse <jglisse@redhat.com>
>>> CC: Alex Deucher <alexdeucher@gmail.com>
>>> CC: Dave Airlie <airlied@redhat.com>
>>> ---
>>>  drivers/gpu/drm/radeon/atom.c |    5 ++++-
>>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
>>> index bd0c843..c1d3c24 100644
>>> --- a/drivers/gpu/drm/radeon/atom.c
>>> +++ b/drivers/gpu/drm/radeon/atom.c
>>> @@ -24,6 +24,7 @@
>>>
>>>  #include <linux/module.h>
>>>  #include <linux/sched.h>
>>> +#include <asm/unaligned.h>
>>>
>>>  #define ATOM_DEBUG
>>>
>>> @@ -212,7 +213,9 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
>>>        case ATOM_ARG_PS:
>>>                idx = U8(*ptr);
>>>                (*ptr)++;
>>> -               val = le32_to_cpu(ctx->ps[idx]);
>>> +               /* get_unaligned avoids unaligned accesses from atombios tables
>>> +                * 21, 24, 42. */
>
> Not a big deal, but you might want to mention that this is needed for
> alpha in the comment.  Also, the tables with unaligned accesses will
> probably vary with the card, so there's not really any need to mention
> them here.
>
> Alex

Alright, please check out the attached patch.

Thanks,
Matt

["0001-drm-radeon-kms-atom-use-get_unaligned_le32-for-ctx-p.patch" (application/octet-stream)]

From cf5a4d8cfd9eb4290e1bc5c8020a074454f5f019 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Sat, 13 Feb 2010 20:20:19 -0500
Subject: [PATCH] drm/radeon/kms/atom: use get_unaligned_le32() for ctx->ps

Noticed on a DEC Alpha.

Start up into console mode caused 15 unaligned accesses, and starting X
caused another 48.

Signed-off-by: Matt Turner <mattst88@gmail.com>
CC: Jerome Glisse <jglisse@redhat.com>
CC: Alex Deucher <alexdeucher@gmail.com>
CC: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/radeon/atom.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index bd0c843..a742d22 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -24,6 +24,7 @@
 
 #include <linux/module.h>
 #include <linux/sched.h>
+#include <asm/unaligned.h>
 
 #define ATOM_DEBUG
 
@@ -212,7 +213,9 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
 	case ATOM_ARG_PS:
 		idx = U8(*ptr);
 		(*ptr)++;
-		val = le32_to_cpu(ctx->ps[idx]);
+		/* get_unaligned_le32 avoids unaligned accesses from atombios
+		 * tables, noticed on a DEC Alpha.
+		val = get_unaligned_le32((u32 *)&ctx->ps[idx]);
 		if (print)
 			DEBUG("PS[0x%02X,0x%04X]", idx, val);
 		break;
-- 
1.6.5.3



------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev

--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic