Arch Linux

Please read this before reporting a bug:

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!

FS#72801 - fix `nvidia-dkms` failing to compile against kernel 5.16 due to removed MIGRATE_PFN_LOCKED macro

Attached to Project: Arch Linux
Opened by Scott B (arglebargle) - Saturday, 20 November 2021, 23:33 GMT
Last edited by Antonio Rojas (arojas) - Wednesday, 26 January 2022, 08:02 GMT
Task Type Feature Request
Category Packages: Extra
Status Closed
Assigned To Sven-Hendrik Haase (Svenstaro)
Felix Yan (felixonmars)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No



`nvidia-dkms` fails to build against kernel 5.16 due to removal of the MIGRATE_PFN_LOCKED macro upstream. If possible could you include a sed call in the PKGBUILD to strip the MIGRATE_PFN_LOCKED macro until nvidia does it themselves? Depending on nvidia's update schedule this might be needed when 5.16 is released anyway, so I figure posting the solution now won't hurt.

This should be nice and safe, the kernel submission that removes the macro notes that the work MIGRATE_PFN_LOCKED does is effectively useless hence the removal,">

And here's a thread on the nvidia forums discussing build failure and solution for reference:

Here's the PKGBUILD change I'm using locally:

diff --git a/PKGBUILD b/PKGBUILD
index 2d7472e..b90357f 100644
@@ -53,6 +53,10 @@ DEST_MODULE_LOCATION[4]="/kernel/drivers/video"' dkms.conf

# Gift for linux-rt guys
+ # fix compilation against 5.16 due to removed MIGRATE_PFN_LOCKED macro
+ #">
+ sed -i 's/ | MIGRATE_PFN_LOCKED//g' nvidia-uvm/uvm_migrate_pageable.c

package_opencl-nvidia() {

Additional info:
* package version(s)
nvidia-dkms 495.44-5

* config and/or log files etc.
compilation errors-
`uvm_migrate_pageable.c:409:55: error: use of undeclared identifier 'MIGRATE_PFN_LOCKED'`

* link to upstream bug report, if any

Steps to reproduce:

Install nvidia-dkms with a 5.16 kernel present, attempt to build the module.
This task depends upon

Closed by  Antonio Rojas (arojas)
Wednesday, 26 January 2022, 08:02 GMT
Reason for closing:  Fixed
Comment by loqs (loqs) - Saturday, 20 November 2021, 23:53 GMT
Your fix does not include a guard limiting its use to 5.16 or when MIGRATE_PFN_LOCKED is not already defined.
Have you verified this is not an issue on earlier kernels?
sed -i '/^#include <linux\/migrate.h>$/a#ifndef MIGRATE_PFN_LOCKED\n#define MIGRATE_PFN_LOCKED 0\n#endif' nvidia-uvm/uvm_migrate_pageable.c
Comment by Scott B (arglebargle) - Sunday, 21 November 2021, 01:45 GMT
Thanks, that's probably a safer change! I've tested the first version pretty extensively on 5.15, I'll go ahead and test your revision this weekend.

Comment by Scott B (arglebargle) - Monday, 22 November 2021, 21:36 GMT
I've been testing @loqs' suggested change the last couple days and it seems to be working fine on my desktop and laptop.
Comment by Bryan (bryan) - Monday, 24 January 2022, 18:11 GMT
Could the fix be applied to nvidia-dkms 470.74-1 too, as it fails too with kernel 5.16.x?
Comment by Doug Newgard (Scimmia) - Monday, 24 January 2022, 18:15 GMT
Arch is on 495.46-2 now, 470.74-1 has nothing to do with it.