[Nouveau] BIG changes to kernel module

Ben Skeggs
Sun, 05 Aug 2012 02:40:15 -0000

Hey all,

I've just pushed a major rework/rewrite of the Nouveau kernel module to
git[1].

Details of the whys and what-nots of the rework are in the various commit
messages.  At this point don't expect any exciting cool functionality, the
work so far is merely a restructure to allow moving forward on a number
of fronts in the future.

I expect that for a while there will be a *lot* of stupid typos/thinkos that
cause all sorts of breakage, so please test everything any anything you can
and report *regressions* from the pre-rework code (vs 3.6-rc1 for example).

I'll endeavour to hunt down and fix the regressions as quickly as possible,
so
please report any issues to this list and/or the freedesktop bugzilla.

There's two areas that didn't get "properly" ported over, that
is PM-related
things and modesetting.  I'll be handling the modesetting and clk/volt
reworks
starting from nowish (in between fixing regressions), and I suspect Martin
will handle the rest of the PM bits (therm and fanctrl) since he knows the
design he's going for there.

One thing to note is that some kernel module options have changed now, the
more important ones are:

nouveau.vbios=<blah> -> nouveau.config=NvBIOS=<blah>
nouveau.noaccel=<bool> -> nouveau.config=PGRAPH=<bool>

Multiple options are specified like:

nouveau.config=NvBIOS=ACPI,PGRAPH=1

The nouveau.noaccel option now controls acceleration enable/disable for the
DRM's own GPU usage, and for the "abi16" (the new interfaces
aren't even
exposed to userspace yet) interfaces.

The DRM debugging options (drm.debug=<bitfield>) now only effect the DRM
specific parts of the nouveau module.  To enable additional debugging etc
for the core, incantations like the following are used now:

for debug output

nouveau.debug=debug

or for even more verbose debug output

nouveau.debug=trace

or for trace output for everything, and register write logging from POST

nouveau.debug=trace,DEVINIT=spam

Each individual subdev/engine module has its own debug level that can
override the master debug level.

Now, I'm off to relax a bit (read: hide) before the storm of bug reports :)

Cheers,
Ben.


[1] http://cgit.freedesktop.org/nouveau/linux-2.6