Go Back   nV News Forums > Linux Support Forums > NVIDIA Linux


                    

Sponsored Ad

Reply
 
Thread Tools
Old 04-24-06, 12:26 AM   #1
usury
mildly savy with FC4
 
Join Date: Apr 2006
Posts: 1
Default nvsound driver 0310 on kernel 2.6.16 solved!

If you have been having problems getting nvsound to install from the 0310 chipset driver on kernel 2.6.16, I have a solution. I am on an AMDx86_64 installation of RedHat FC4

After installing the new kernel (and source tree) from rpm, I was able to get the most recent nvidia video driver and network driver built without problems. The audio driver was a problem.

When attempting to build the audio driver with nvidia's "run" package, I received the errror message that the driver could not be built and perhaps the kernel source tree isn't installed. (It was.)

At the same time, a log entry would say "nvsound: Unknown symbol remap_page_range" (type dmesg and see for yourself)

So, I did some digging. Somewhere between 2.6.15 and 2.6.16, the kernel function "remap_page_range" was renamed "remap_pfn_range". Nvidia's makefile for nvsound knows about this and attempts to determine which function is implimented on your linux install.

It does this by compiling a tiny c-program. It assumes if the compilation is NOT successful, remap_pfn_range is NOT available on your installation and proceeds to try to use remap_page_range instead. This leads to our problems on 2.6.16.

The compilation of the tiny c-program does indeed fail. However, it fails for a reason unrelated to remap_page_range vs remap_pfn_range.

(If you extract the "run" package" with...
sh NFORCE-Linux-x86_64-1.0-0310-pkg1.run -x
then...
cat NFORCE-Linux-x86_64-1.0-0310-pkg1/nvsound/main/conftest.sh
you will see a case called "remap_pfn_range" which is called from Makefile.kbuild to determine how to handle the renamed function described above.)

The problem happens in a header file in the 2.6.16 source tree. (You get more hints if you view the compiler errors of the small c-program.) The following link describes the change someone else on the Internet discovered...

http://www.ussg.iu.edu/hypermail/lin...03.3/1300.html

The file is /lib/modules/2.6.16-1.2096_FC4/build/include/linux/spinlock.h
(be sure to substitute the name of your actual desired source tree - should be what you get by typing uname -r).

I fixed my build/install problem of the audio driver by changing the first #define line in the file (after all the comments) from...

#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME

...to...

#define LOCK_SECTION_NAME ".text.lock." __stringify(KBUILD_BASENAME)

I was able to successfully build and install the nvsound driver after making that change. No changes whatsoever were required in the nvidia installer sources, makefiles, etc.

I don't know if "spinlock.h" is eventually included by the nvidia driver or if it was just needed because the makefile needed to determine whether remap_page_range or remap_pfn_range is the appropriate function.

I hope this helps someone - it took me hours to dig out an answer.

Last edited by usury; 04-24-06 at 12:39 AM.
usury is offline   Reply With Quote
Old 04-24-06, 12:16 PM   #2
Miles Heighway
Registered User
 
Join Date: Jan 2006
Posts: 7
Default Re: nvsound driver 0310 on kernel 2.6.16 solved!

Thanks usury. I'll give it a go.
Miles Heighway is offline   Reply With Quote

Sponsored Ads - Guests Only

Reply




Shop Online


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




All times are GMT -4. The time now is 03:52 PM.


Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
nV News - Copyright ©1998-2010. All rights reserved.