[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