ATI video problem - slow desktop - 100% cpu load [semi-solved]
Vincent Stemen
vince.lists at hightek.org
Fri Jun 22 02:10:09 UTC 2018
On Wed, Jun 20, 2018 at 04:18:47PM -0400, Alex Deucher wrote:
> On Wed, Jun 20, 2018 at 3:54 PM, Vincent Stemen <vince.lists at hightek.org> wrote:
> > Hi.
> >
> > I also posted about this problem on the FreeBSD mailing list.
> >
> > FreeBSD 11.1-RELEASE
> > Motherboard: gigabyte GA-78LMT-USB3 R2
> > Video: Integrated ATI Radeon HD 3000 graphics
> >
> > I have also tested with two additional ATI cards.
> > A Radeon HD 5450 and and older card that shows as
> > "RV370 [Radeon X300 SE]" in the PCI info.
> >
> > Same problem on all of them.
> >
> > System runs fine with a simple stand alone window manager such as jwm,
> > openbox, etc. But anytime I run a desktop environment that has a panel and/or
> > desktop icons, the X desktop takes a very long time to start up and runs
> > extremely slow and unresponsive, the pointer jumps instead of moving smoothly,
> > and the main Xorg process runs at 100% load on one core. I have tried several
> > different desktops, such as xfce, enlightenment, lumina, etc. Similar problem
> > on all of them.
> >
> > The weird thing is that, every once in a while, when I launch X, it comes up
> > quick and runs fine. Shut down X and re-run it and it's back doing it again.
> > Once it comes up working correctly, it stays working until I restart X.
> >
> > I have tried re-installing all the ports from X11 and the desktop environments
> > from FreeBSD 11 release_1, release_2, quarterly, and latest. Same problem
> > with all of them.
> >
> > Does anybody have any idea what could be causing this?
> >
> > I don't know if for sure if this is a FreeBSD or an xorg problem. Here are
> > radeon kernel modules running when running on the Radeon HD 3000.
> >
> > # kldstat
> >
> > 5 1 0xffffffff82431000 12b4a0 radeonkms.ko
> > ...
> > 10 1 0xffffffff825b9000 103e radeonkmsfw_RS780_pfp.ko
> > 11 1 0xffffffff825bb000 5b3f radeonkmsfw_RS780_me.ko
> > 12 1 0xffffffff825c1000 1338 radeonkmsfw_R600_rlc.ko
> >
> > X is using the ati driver from the xf86-video-ati-7.9.0_1,1 package.
> >
> > The evidence points stongly toward it being an ATI driver problem. If I edit
> > /etc/X11/xorg.conf to use the "vesa" driver rather than the "radeon" driver the
> > problem goes away.
> >
> > But, of course, the vesa driver is low resolution and does not re-initialize the
> > console when I exit X.
>
> I don't know how well the radeon driver works on FreeBSD. If you can
> test Linux and it works properly, I guess there is probably some issue
> with the FreeBSD driver or some configuration problem on your end.
> I'd check your xorg log and kernel output to start with to make sure
> everything is loading correctly.
>
> Alex
Thanks for the suggestions Alex. I'm not setup to test under Linux at
the moment but I did finally find a work around solution with the help
of a suggestion made by Mark Saad on the freebsd-stable list. I am
duplicating my reply to that list below.
On Wed, Jun 20, 2018 at 05:13:17PM -0400, Mark Saad wrote:
> Vincent
> I am running 11.2-PRERELEASE with a Cedar PRO [Radeon HD 5450/6350]
> and I dont have any issues like that
>
> here is what I do to get it working for me; and I have used more or
> less the same setup since 10.3-RELEASE
>
> In my loader.conf I have
>
> radeonkms_load="YES"
> radeonkmsfw_CEDAR_pfp_load="YES"
> radeonkmsfw_CEDAR_rlc_load="YES"
> radeonkmsfw_CEDAR_me_load="YES"
>
> I use a static xorg.conf as well In there I have the following bits
>
>
> Also if the redeon driver is not working for you try scfb . It works
> better the vesa it some cases
Thank you very much Mark! The scfb driver works! I didn't know what the scfb
driver was for or that it will use the radeon kernel modules. This seems to
confirm that the problem lies in the radeon X server driver that's in the
xf86-video-ati package.
I tagged this as semi-solved in the subject because it solves our immediate
problem and gets us working, but it seems to be a work around to fixing the ati
driver problem. Unless FreeBSD is going in the direction of using the scfb
driver and not needing the ati driver at all, but I have found no documentation
indicating this. The man page for scfb says it is a non-accelerated driver.
So far as I can tell, that is not necessarily the case. It is using the radeon
kernel modules and I seem to have full desktop features, resolution, and
performance, including transparencies. I even tested moving windows around
that are playing high def videos.
I am curious how you discovered the use of this driver for ATI cards since I
have not found docs that say anything about it.
BTW, I did test with all three ATI Radeon card models that I mentioned,
and it works fine with all of them.
Anyway, there are some caveats to getting it working. Since I spent the
last few days working on this issue, I am posting my notes below to help
others who might be experiencing the same issue.
Solution to getting ATI Radeon graphics cards working
=====================================================
Use the "scfb" driver from the xf86-video-scfb package rather than the "radeon"
driver from the xf86-video-ati package.
/etc/X11/xorg.conf
Section "Device"
...
Driver "scfb"
...
EndSection
This driver also requires the radeon kernel modules to be loaded, but does not
automatically load them like the radeon driver does.
I tried loading them in /boot/loader.conf,
/boot/loader.conf
radeonkms_load = yes
radeonkmsfw_RS780_pfp_load = yes
radeonkmsfw_RS780_me_load = yes
radeonkmsfw_R600_rlc = yes
This did not work. The radeonkmsfw_R600_rlc.ko module does not get loaded and
the console does not get initialized. Apparently it has something to do with
loader loading the modules first, when the kernel is not running yet to have
detected the PCIe devices. Even if you manually load radeonkmsfw_R600_rlc
after booting, using kldload, it still does not initialize the console.
You must load radeonkms.ko after the system is fully booted.
# kldload radeonkms
That automatically loads the other 3 modules and initializes the console where
the console text goes into higher resolution mode. Then X and the desktop
environments work and seem to be fully functional, including transparency, etc.
So I can either put it in /etc/rc.local, to be run at boot time, or put it in
an X startup script wrapper. Note that it must be run prior to startx because
it must be loaded before launching the X server. So it cannot be put in
~/.xinitrc.
More information about the xorg
mailing list