Hi,
The following patch fixes interrupt acknowledge when write-back is enabled on big endian platform.
The same should be applied on evergreen.
Cedric
Signed-off-by: Cedric Cano<ccano at interfaceconcept.com> --- diff -Naur linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c --- linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-04-19 09:52:13.000000000 +0200 +++ linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-03-27 20:37:20.000000000 +0200 @@ -3227,7 +3227,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); + wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; else wptr = RREG32(IH_RB_WPTR);
On Die, 2011-04-19 at 10:23 +0200, Cédric Cano wrote:
The following patch fixes interrupt acknowledge when write-back is enabled on big endian platform.
The same should be applied on evergreen.
Can you include that in the patch? I somehow managed to miss these in my previous patch for older chips. :(
Signed-off-by: Cedric Cano<ccano at interfaceconcept.com>
--- --- linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-04-19 11:39:39.000000000 +0200 +++ /home/cec/tmp/linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-03-27 20:37:20.000000000 +0200 @@ -2587,7 +2587,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); + wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; else wptr = RREG32(IH_RB_WPTR);
Le 19/04/2011 10:54, Michel Dänzer a écrit :
On Die, 2011-04-19 at 10:23 +0200, Cédric Cano wrote:
The following patch fixes interrupt acknowledge when write-back is enabled on big endian platform.
The same should be applied on evergreen.
Can you include that in the patch? I somehow managed to miss these in my previous patch for older chips. :(
Hi,
Sorry, I've done a patch in reverse mode :(.
I repost the patch for r600 and evergreen write back correction for big endian platforms.
Cedric
Signed-off-by: Cedric Cano <ccano at interfaceconcept.com> --- diff -Nuar linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c --- linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-03-27 20:37:20.000000000 +0200 +++ linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-04-19 11:39:39.000000000 +0200 @@ -2587,7 +2587,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; + wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); else wptr = RREG32(IH_RB_WPTR);
diff -Nuar linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c --- linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-03-27 20:37:20.000000000 +0200 +++ linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-04-19 09:52:13.000000000 +0200 @@ -3227,7 +3227,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; + wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); else wptr = RREG32(IH_RB_WPTR);
Le 19/04/2011 10:54, Michel Dänzer a écrit :
On Die, 2011-04-19 at 10:23 +0200, Cédric Cano wrote:
The following patch fixes interrupt acknowledge when write-back is enabled on big endian platform.
The same should be applied on evergreen.
Can you include that in the patch? I somehow managed to miss these in my previous patch for older chips. :(
On Die, 2011-04-19 at 16:38 +0200, Cédric Cano wrote:
Sorry, I've done a patch in reverse mode :(.
I can recommend using Git. :)
I repost the patch for r600 and evergreen write back correction for big endian platforms.
Cedric
Signed-off-by: Cedric Cano <ccano at interfaceconcept.com>
diff -Nuar linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c --- linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-03-27 20:37:20.000000000 +0200 +++ linux-2.6.38.2/drivers/gpu/drm/radeon/evergreen.c 2011-04-19 11:39:39.000000000 +0200 @@ -2587,7 +2587,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled)
wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4];
else wptr = RREG32(IH_RB_WPTR);wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]);
diff -Nuar linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c --- linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-03-27 20:37:20.000000000 +0200 +++ linux-2.6.38.2/drivers/gpu/drm/radeon/r600.c 2011-04-19 09:52:13.000000000 +0200 @@ -3227,7 +3227,7 @@ u32 wptr, tmp;
if (rdev->wb.enabled)
wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4];
else wptr = RREG32(IH_RB_WPTR);wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]);
Reviewed-by: Michel Dänzer michel@daenzer.net
From: Cédric Cano ccano@interfaceconcept.com
agd5f: fix commit message.
Signed-off-by: Cedric Cano ccano@interfaceconcept.com Reviewed-by: Michel Dänzer michel@daenzer.net Signed-off-by: Alex Deucher alexdeucher@gmail.com --- drivers/gpu/drm/radeon/evergreen.c | 2 +- drivers/gpu/drm/radeon/r600.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 363f39b..eee208f 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c @@ -2638,7 +2638,7 @@ static inline u32 evergreen_get_ih_wptr(struct radeon_device *rdev) u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; + wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); else wptr = RREG32(IH_RB_WPTR);
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 62fc968..d74d4d7 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c @@ -3243,7 +3243,7 @@ static inline u32 r600_get_ih_wptr(struct radeon_device *rdev) u32 wptr, tmp;
if (rdev->wb.enabled) - wptr = rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]; + wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]); else wptr = RREG32(IH_RB_WPTR);
dri-devel@lists.freedesktop.org