Bug 78543 - NV28M running at 1/8th GPU clock when using nouveau
Summary: NV28M running at 1/8th GPU clock when using nouveau
Status: RESOLVED MOVED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: 7.7 (2012.06)
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
: 78544 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-05-10 20:28 UTC by nv28m
Modified: 2019-12-04 08:45 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description nv28m 2014-05-10 20:28:46 UTC
See https://bugs.freedesktop.org/show_bug.cgi?id=54700 some details. I've opened this as the speed problem has nothing to do with the distortion, but I've noticed it when debugging that problem. I've e-mailed two dumps for that thread for this machine.

In short nouveau is slow normally, unless I insert the nvidia module in one kernel and kexec into another kernel. Then nouveau is fast until I suspend to RAM. After resume it's slow again. And I can't fix it ;)

Long version:

I've played a bit with nvclock and found something interesting. When using the nvidia driver in X I get:

================================
-- General info --
Card:           nVidia Geforce 4 4000 GO
Architecture:   NV28 A2
PCI id:         0x286
NVPLL_COEFF=00010d01
m=1 n=13 p=1
GPU clock:      175.500 MHz
Bustype:        AGP

-- Memory info --
Amount:         32 MB
Type:           128 bit DDR
MPLL_COEFF=00001d02
m=2 n=29 p=0
Clock:          391.500 MHz

-- AGP info --
Status:         Enabled
Rate:           4X
AGP rates:      1X 2X 4X
Fast Writes:    Disabled
SBA:            Disabled

-- VideoBios information --
Version: 04.28.20.31
Signon message: NV28 P138 Mobile Reference VGA BIOS
================================

When I switch to console, then it's:

================================
-- General info --
Card:           nVidia Geforce 4 4000 GO
Architecture:   NV28 A2
PCI id:         0x286
NVPLL_COEFF=00040d01
m=1 n=13 p=4
GPU clock:      21.937 MHz
Bustype:        AGP
================================

When I do the same using nouveau in X (after nvidia kexec):

================================
-- General info --
Card: 		nVidia Geforce 4 4000 GO
Architecture: 	NV28 A2
PCI id: 	0x286
NVPLL_COEFF=00040d01
m=1 n=13 p=4
GPU clock: 	21.937 MHz
Bustype: 	AGP

-- Memory info --
Amount: 	32 MB
Type: 		128 bit DDR
MPLL_COEFF=00000f01
m=1 n=15 p=0
Clock: 		405.000 MHz

-- AGP info --
Status: 	Enabled
Rate: 		4X
AGP rates: 	1X 2X 4X 
Fast Writes: 	Enabled
SBA: 		Enabled

-- VideoBios information --
Version: 04.28.20.31
Signon message: NV28 P138 Mobile Reference VGA BIOS
================================

Nouveau on console (after nvidia kexec):

================================
-- General info --
Card:           nVidia Geforce 4 4000 GO
Architecture:   NV28 A2
PCI id:         0x286
NVPLL_COEFF=00010d01
m=1 n=13 p=1
GPU clock:      175.500 MHz
Bustype:        AGP
================================

And what is interesting if I do a "nvclock -i -d | cat" on console then it's:

================================
-- General info --
Card: 		nVidia Geforce 4 4000 GO
Architecture: 	NV28 A2
PCI id: 	0x286
NVPLL_COEFF=00040d01
m=1 n=13 p=4
GPU clock: 	21.937 MHz
Bustype: 	AGP
================================

There's no difference with nvidia between redirecting to file or not.

The POST values are 175 MHz GPU and 405 MHz RAM (same as nouveau console). I've checked the nvidia dump I've made, it's set up to 100 MHz GPU and 199 MHz RAM, but for some reason that's not the speed it's actually reported later (see above, 175/391).

When I do a suspend to RAM then I get 22 MHz GPU consistently on console and X with nouveau, independent of redirecting or not. I guess that the 22 MHz in X after nvidia kexec is probably false and it's more like 175 MHz as on console without redirection.

If I directly poke the PLL and read it back then it's not the same. It's always 1/8 of what was requested (actually +3). When I change it on nvidia it's the same as what I write there. Also after nvidia kexec, on the nouveau console it's matching. But not after a suspend to RAM or otherwise. The same 1/8 is there in X when nouveau is running fast after kexec.

Any ideas what is causing this 1/8 speed limit sometimes? Or why it's different if I redirect/not with nouveau?
Comment 1 nv28m 2014-05-10 20:32:26 UTC
Sorry, it ended up duplicated somehow ;(
Comment 2 nv28m 2014-05-10 23:34:15 UTC
I've made more testing. It looks like the modesetting driver is unaffected of GPU performance and because of this it's running better when the GPU is in slow mode.

I've tried nouveau with noaccel, this smoothed scrolling (when the GPU is running slow), but other 2D operations were still slower than with the modesetting driver.

So, going with the modesetting driver is not a bad option at this time (as I don't use much 3D), but it lacks XV support ;( It would be nice to fix this slow GPU problem somehow and then I could use nouveau.
Comment 3 Martin Peres 2014-05-26 22:39:21 UTC
*** Bug 78544 has been marked as a duplicate of this bug. ***
Comment 4 Martin Peres 2019-12-04 08:45:15 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/107.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.