Upstreamed to the Nouveau open-source kernel driver in Linux 6.19 was support for larger pages and with that compression support available with the larger page sizes. Subsequently the Mesa NVK open-source Vulkan driver began making use of the larger pages and compressed image support dependent upon the larger page sizes as it should help with performance. But for now it’s being temporarily disabled due to a discovered issue.
This bug report was opened three weeks ago over Vulkan conformance test suite (CTS) flakes due to MMU faults related to the larger device pages. As a result, this merge has now disabled NVK’s use of larger pages until the issue is sorted out.
The good news is that David Airlie has already posted a Nouveau kernel driver patch to start tracking if the LPT PTE is valid. Airlie explains in that patch message:
“When NVK enabled large pages userspace tests were seeing fault reports at a valid address.
There was a case where an address moving from 64k page to 4k pages could expose a race between unmapping the 4k page, mapping the 64k page and unref the 4k pages.
Unref 4k pages would cause the dual-page table handling to always set the LPTE entry to SPARSE or INVALID, but if we’d mapped a valid LPTE in the meantime, it would get trashed. Keep track of when a valid LPTE has been referenced, and don’t reset in that case.
This increase the tracking to 32-bit, because it turns out if unref can get delayed, you can get a lot of these outstanding and this can cause strange behaviours.”
While technically a fix, it remains to be seen how quickly he’ll try to get this code into the upstream kernel especially with the Linux 6.19 release approaching in a week and a half. In any event the patch does already have a CC for back-porting to the stable kernel once it does land in the mainline kernel tree.
In case you missed it from December for those wondering how Nouveau and NVK are performing on recent upstream open-source code, see NVIDIA GTX 980 Through RTX 5080: Open-Source Nouveau/Mesa Drivers vs. NVIDIA 580 Linux Drivers.
