Re: radeonfb broken

Timothy Miller
2004-04-16T15:55:08Z

Andrew Morton asked me to repost the patch for the Radeon FB off-by-one
bug. I'll see about making a proper patch when I get home, but if you
want to fix it quicker, I'll just tell you what to change.

In the druvers/video/radeonfb.c, there is a function called
fbcon_radeon_bmove. In there, you'll see this code:

if (srcy < dsty) {
srcy += height;
dsty += height;
} else
dp_cntl |= DST_Y_TOP_TO_BOTTOM;

if (srcx < dstx) {
srcx += width;
dstx += width;
} else
dp_cntl |= DST_X_LEFT_TO_RIGHT;

Those adds need to be reduced by one. The code should look like this:

if (srcy < dsty) {
srcy += height - 1;
dsty += height - 1;
} else
dp_cntl |= DST_Y_TOP_TO_BOTTOM;

if (srcx < dstx) {
srcx += width - 1;
dstx += width - 1;
} else
dp_cntl |= DST_X_LEFT_TO_RIGHT;

This bug is in the mainline kernel, and since I have direct experience
programming for the Radeon, I knew how to fix it, but I also noticed
that the Red Hat kernel "2.4.18-27.7.x" has the proper fix in it.

Whenever I download a new 2.4 kernel for gentoo, I have to manually make
that fix. I'm also disappointed that acceleration for Radeon has
disappeared completely from 2.6.