Bug#818862: [nvidia-kernel-dkms] fails to build for custom-compiled 4.4.6 kernel

Luca Boccassi luca.boccassi at gmail.com
Sun Mar 27 15:14:50 UTC 2016

Control: tags -1 moreinfo

On Mon, 2016-03-21 at 09:26 +0500, Alex Volkov wrote:
> Package: nvidia-kernel-dkms
> Version: 352.79-5
> Severity: normal
> --- Please enter the report below this line. ---
> I use a custom kernel built from linux-source-4.4 (config is attached), and 
> the module fails to build (make.log is attached). How the hell you guys 
> managed to build it for linux-image-4.4.0-1 in the first place?


The module builds fine on the 4.4.0-1 kernel that is in Sid, so I assume
it must be a problem with your config/package.

The diff between your config and Debian's is quite big:

1 file changed, 727 insertions(+), 2134 deletions(-)

So unfortunately I can't guarantee I'll be able to figure it out without
some help.

First of all, how did you build your kernel? Did you build a .deb
package? Are all the headers available? And finally, how did you run the
module build?

You could try doing a source build if you did a dkms build.
Install the nvidia-kernel-source package, then:

cd /usr/src
tar xJvf nvidia-kernel.tar.xz -C /tmp
cd /tmp/modules/nvidia-kernel
export KSRC=/usr/src/linux-headers-4.4.6-custom0-amd64
debian/rules binary_modules

And see if it still fails in the same way.

From your log there are a few config tests that fail:

#error kmem_cache_create() conftest failed!
#error on_each_cpu() conftest failed!
#error smp_call_function() conftest failed!
#error acpi_walk_namespace() conftest failed!
#error pci_dma_mapping_error() conftest failed!

I would suggest looking into
the /usr/src/nvidia-current-352.79/conftest.sh file.

What conftest.sh does, in a nutshell, is trying to compile a minimal
generated source file against in-kernel APIs, and if it fails/succeeds
it sets a variable. That's NVIDIA's way of supporting multiple kernel
versions in their out-of-tree shim module, by figuring out before
building the module what's there and what's missing.

For each of those failed tests, you can see exactly what they are trying
to build in the script.

Either a header is not available/visible, or one of the changes in the
config is disabling an API that is mandatory to build the module. Given
it cannot find kmem_cache_create, I'd guess it's the former. It's
defined in include/linux/slab.h. Is it available in the sources path of
your custom build that was used by the nvidia module
build: /usr/src/linux-headers-4.4.6-custom0-amd64 ?

Kind regards,
Luca Boccassi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/pkg-nvidia-devel/attachments/20160327/a0764886/attachment.sig>

More information about the pkg-nvidia-devel mailing list