Performing verification for noble I built a kernel based off of Ubuntu-6.8.0-72.72 git tag, with a config change that sets CONFIG_TEST_HMM=m for all arches.
I installed this kernel to a VM, and rebooted. In the kernel git tree, I ran: $ cd tools/testing/selftests/mm/ $ make $ scp *hmm* ubuntu@vm:~/ This built the hmm testsuite and copied it to the VM. Running the testsuite: $ uname -rv 6.8.0-72-generic #72+TEST416039v20250812b4-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 $ sudo ./test_hmm.sh Usage: ./test_hmm.sh Example usage: # Shows help message ./test_hmm.sh # Smoke testing ./test_hmm.sh smoke # Smoke testing with SPM enabled ./test_hmm.sh smoke <spm_addr_dev0> <spm_addr_dev1> ubuntu@noble-kernel:~$ sudo ./test_hmm.sh smoke Running smoke test. Note, this test provides basic coverage. TAP version 13 1..56 # Starting 56 tests from 4 test cases. # RUN hmm.hmm_device_private.open_close ... # OK hmm.hmm_device_private.open_close ok 1 hmm.hmm_device_private.open_close # RUN hmm.hmm_device_private.anon_read ... # OK hmm.hmm_device_private.anon_read ok 2 hmm.hmm_device_private.anon_read # RUN hmm.hmm_device_private.anon_read_prot ... # OK hmm.hmm_device_private.anon_read_prot ok 3 hmm.hmm_device_private.anon_read_prot # RUN hmm.hmm_device_private.anon_write ... # OK hmm.hmm_device_private.anon_write ok 4 hmm.hmm_device_private.anon_write # RUN hmm.hmm_device_private.anon_write_prot ... # OK hmm.hmm_device_private.anon_write_prot ok 5 hmm.hmm_device_private.anon_write_prot # RUN hmm.hmm_device_private.anon_write_child ... # OK hmm.hmm_device_private.anon_write_child ok 6 hmm.hmm_device_private.anon_write_child # RUN hmm.hmm_device_private.anon_write_child_shared ... # OK hmm.hmm_device_private.anon_write_child_shared ok 7 hmm.hmm_device_private.anon_write_child_shared # RUN hmm.hmm_device_private.anon_write_huge ... # OK hmm.hmm_device_private.anon_write_huge ok 8 hmm.hmm_device_private.anon_write_huge # RUN hmm.hmm_device_private.anon_write_hugetlbfs ... # SKIP Huge page could not be allocated # OK hmm.hmm_device_private.anon_write_hugetlbfs ok 9 # SKIP Huge page could not be allocated # RUN hmm.hmm_device_private.file_read ... # OK hmm.hmm_device_private.file_read ok 10 hmm.hmm_device_private.file_read # RUN hmm.hmm_device_private.file_write ... # OK hmm.hmm_device_private.file_write ok 11 hmm.hmm_device_private.file_write # RUN hmm.hmm_device_private.migrate ... The VM hangs. I can't ssh in, or check system logs or dmesg. I can reproduce. I force reset the VM. I then built a kernel based off of the Ubuntu-6.8.0-78.78 git tag, with the same patch to enable CONFIG_TEST_HMM=m for all arches. I rebooted, and ran the hmm testsuite: $ uname -rv 6.8.0-78-generic #78+TEST416039v20250815b1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 $ sudo ./test_hmm.sh Usage: ./test_hmm.sh Example usage: # Shows help message ./test_hmm.sh # Smoke testing ./test_hmm.sh smoke # Smoke testing with SPM enabled ./test_hmm.sh smoke <spm_addr_dev0> <spm_addr_dev1> ubuntu@noble-kernel:~$ sudo ./test_hmm.sh smoke Running smoke test. Note, this test provides basic coverage. TAP version 13 1..56 # Starting 56 tests from 4 test cases. # RUN hmm.hmm_device_private.open_close ... # OK hmm.hmm_device_private.open_close ok 1 hmm.hmm_device_private.open_close # RUN hmm.hmm_device_private.anon_read ... # OK hmm.hmm_device_private.anon_read ok 2 hmm.hmm_device_private.anon_read # RUN hmm.hmm_device_private.anon_read_prot ... # OK hmm.hmm_device_private.anon_read_prot ok 3 hmm.hmm_device_private.anon_read_prot # RUN hmm.hmm_device_private.anon_write ... # OK hmm.hmm_device_private.anon_write ok 4 hmm.hmm_device_private.anon_write # RUN hmm.hmm_device_private.anon_write_prot ... # OK hmm.hmm_device_private.anon_write_prot ok 5 hmm.hmm_device_private.anon_write_prot # RUN hmm.hmm_device_private.anon_write_child ... # OK hmm.hmm_device_private.anon_write_child ok 6 hmm.hmm_device_private.anon_write_child # RUN hmm.hmm_device_private.anon_write_child_shared ... # OK hmm.hmm_device_private.anon_write_child_shared ok 7 hmm.hmm_device_private.anon_write_child_shared # RUN hmm.hmm_device_private.anon_write_huge ... # OK hmm.hmm_device_private.anon_write_huge ok 8 hmm.hmm_device_private.anon_write_huge # RUN hmm.hmm_device_private.anon_write_hugetlbfs ... # SKIP Huge page could not be allocated # OK hmm.hmm_device_private.anon_write_hugetlbfs ok 9 # SKIP Huge page could not be allocated # RUN hmm.hmm_device_private.file_read ... # OK hmm.hmm_device_private.file_read ok 10 hmm.hmm_device_private.file_read # RUN hmm.hmm_device_private.file_write ... # OK hmm.hmm_device_private.file_write ok 11 hmm.hmm_device_private.file_write # RUN hmm.hmm_device_private.migrate ... # OK hmm.hmm_device_private.migrate ok 12 hmm.hmm_device_private.migrate # RUN hmm.hmm_device_private.migrate_fault ... # OK hmm.hmm_device_private.migrate_fault ok 13 hmm.hmm_device_private.migrate_fault # RUN hmm.hmm_device_private.migrate_release ... # OK hmm.hmm_device_private.migrate_release ok 14 hmm.hmm_device_private.migrate_release # RUN hmm.hmm_device_private.migrate_shared ... # OK hmm.hmm_device_private.migrate_shared ok 15 hmm.hmm_device_private.migrate_shared # RUN hmm.hmm_device_private.migrate_multiple ... # OK hmm.hmm_device_private.migrate_multiple ok 16 hmm.hmm_device_private.migrate_multiple # RUN hmm.hmm_device_private.anon_read_multiple ... # OK hmm.hmm_device_private.anon_read_multiple ok 17 hmm.hmm_device_private.anon_read_multiple # RUN hmm.hmm_device_private.anon_teardown ... # OK hmm.hmm_device_private.anon_teardown ok 18 hmm.hmm_device_private.anon_teardown # RUN hmm.hmm_device_private.mixedmap ... # OK hmm.hmm_device_private.mixedmap ok 19 hmm.hmm_device_private.mixedmap # RUN hmm.hmm_device_private.compound ... # OK hmm.hmm_device_private.compound ok 20 hmm.hmm_device_private.compound # RUN hmm.hmm_device_private.exclusive ... # OK hmm.hmm_device_private.exclusive ok 21 hmm.hmm_device_private.exclusive # RUN hmm.hmm_device_private.exclusive_mprotect ... # OK hmm.hmm_device_private.exclusive_mprotect ok 22 hmm.hmm_device_private.exclusive_mprotect # RUN hmm.hmm_device_private.exclusive_cow ... # OK hmm.hmm_device_private.exclusive_cow ok 23 hmm.hmm_device_private.exclusive_cow # RUN hmm.hmm_device_private.hmm_gup_test ... # SKIP Skipping test, could not find gup_test driver # OK hmm.hmm_device_private.hmm_gup_test ok 24 # SKIP Skipping test, could not find gup_test driver # RUN hmm.hmm_device_private.hmm_cow_in_device ... # OK hmm.hmm_device_private.hmm_cow_in_device ok 25 hmm.hmm_device_private.hmm_cow_in_device # RUN hmm.hmm_device_coherent.open_close ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.open_close ok 26 hmm.hmm_device_coherent.open_close # RUN hmm.hmm_device_coherent.anon_read ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_read ok 27 hmm.hmm_device_coherent.anon_read # RUN hmm.hmm_device_coherent.anon_read_prot ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_read_prot ok 28 hmm.hmm_device_coherent.anon_read_prot # RUN hmm.hmm_device_coherent.anon_write ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write ok 29 hmm.hmm_device_coherent.anon_write # RUN hmm.hmm_device_coherent.anon_write_prot ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write_prot ok 30 hmm.hmm_device_coherent.anon_write_prot # RUN hmm.hmm_device_coherent.anon_write_child ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write_child ok 31 hmm.hmm_device_coherent.anon_write_child # RUN hmm.hmm_device_coherent.anon_write_child_shared ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write_child_shared ok 32 hmm.hmm_device_coherent.anon_write_child_shared # RUN hmm.hmm_device_coherent.anon_write_huge ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write_huge ok 33 hmm.hmm_device_coherent.anon_write_huge # RUN hmm.hmm_device_coherent.anon_write_hugetlbfs ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_write_hugetlbfs ok 34 hmm.hmm_device_coherent.anon_write_hugetlbfs # RUN hmm.hmm_device_coherent.file_read ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.file_read ok 35 hmm.hmm_device_coherent.file_read # RUN hmm.hmm_device_coherent.file_write ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.file_write ok 36 hmm.hmm_device_coherent.file_write # RUN hmm.hmm_device_coherent.migrate ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.migrate ok 37 hmm.hmm_device_coherent.migrate # RUN hmm.hmm_device_coherent.migrate_fault ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.migrate_fault ok 38 hmm.hmm_device_coherent.migrate_fault # RUN hmm.hmm_device_coherent.migrate_release ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.migrate_release ok 39 hmm.hmm_device_coherent.migrate_release # RUN hmm.hmm_device_coherent.migrate_shared ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.migrate_shared ok 40 hmm.hmm_device_coherent.migrate_shared # RUN hmm.hmm_device_coherent.migrate_multiple ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.migrate_multiple ok 41 hmm.hmm_device_coherent.migrate_multiple # RUN hmm.hmm_device_coherent.anon_read_multiple ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_read_multiple ok 42 hmm.hmm_device_coherent.anon_read_multiple # RUN hmm.hmm_device_coherent.anon_teardown ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.anon_teardown ok 43 hmm.hmm_device_coherent.anon_teardown # RUN hmm.hmm_device_coherent.mixedmap ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.mixedmap ok 44 hmm.hmm_device_coherent.mixedmap # RUN hmm.hmm_device_coherent.compound ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.compound ok 45 hmm.hmm_device_coherent.compound # RUN hmm.hmm_device_coherent.exclusive ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.exclusive ok 46 hmm.hmm_device_coherent.exclusive # RUN hmm.hmm_device_coherent.exclusive_mprotect ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.exclusive_mprotect ok 47 hmm.hmm_device_coherent.exclusive_mprotect # RUN hmm.hmm_device_coherent.exclusive_cow ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.exclusive_cow ok 48 hmm.hmm_device_coherent.exclusive_cow # RUN hmm.hmm_device_coherent.hmm_gup_test ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.hmm_gup_test ok 49 hmm.hmm_device_coherent.hmm_gup_test # RUN hmm.hmm_device_coherent.hmm_cow_in_device ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm.hmm_device_coherent.hmm_cow_in_device ok 50 hmm.hmm_device_coherent.hmm_cow_in_device # RUN hmm2.hmm2_device_private.migrate_mixed ... # OK hmm2.hmm2_device_private.migrate_mixed ok 51 hmm2.hmm2_device_private.migrate_mixed # RUN hmm2.hmm2_device_private.snapshot ... # OK hmm2.hmm2_device_private.snapshot ok 52 hmm2.hmm2_device_private.snapshot # RUN hmm2.hmm2_device_private.double_map ... # OK hmm2.hmm2_device_private.double_map ok 53 hmm2.hmm2_device_private.double_map # RUN hmm2.hmm2_device_coherent.migrate_mixed ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm2.hmm2_device_coherent.migrate_mixed ok 54 hmm2.hmm2_device_coherent.migrate_mixed # RUN hmm2.hmm2_device_coherent.snapshot ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm2.hmm2_device_coherent.snapshot ok 55 hmm2.hmm2_device_coherent.snapshot # RUN hmm2.hmm2_device_coherent.double_map ... could not open hmm dmirror driver (/dev/hmm_dmirror2) # SKIP DEVICE_COHERENT not available # OK hmm2.hmm2_device_coherent.double_map ok 56 hmm2.hmm2_device_coherent.double_map # PASSED: 56 / 56 tests passed. # Totals: pass:54 fail:0 xfail:0 xpass:0 skip:2 error:0 The entire testsuite passes, and the system remains normal. I can run the testsuite several times and everything is fine, dmesg is clean. The kernel in -proposed fixes the issue. Happy to mark verified for noble. ** Tags removed: verification-needed-noble-linux ** Tags added: verification-done-noble-linux -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/2120330 Title: Incorrect backport for CVE-2025-21861 causes kernel hangs Status in linux package in Ubuntu: Invalid Status in linux source package in Noble: Fix Committed Bug description: BugLink: https://bugs.launchpad.net/bugs/2120330 [Impact] The patch for CVE-2025-21861 was incorrectly backported to the noble 6.8 kernel, leading to hangs when freeing device memory. commit 41cddf83d8b00f29fd105e7a0777366edc69a5cf Author: David Hildenbrand <da...@redhat.com> Date: Mon Feb 10 17:13:17 2025 +0100 Subject: mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize() Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=41cddf83d8b00f29fd105e7a0777366edc69a5cf ubuntu-noble: https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=3858edb1146374f3240d1ec769ba857186531b17 An incorrect backport was performed, causing the old page to be placed back instead of the new page, e.g.: src = page_folio(page); dst = page_folio(newpage); + if (!is_zone_device_page(page)) + putback_lru_page(page); when in 41cddf83d8b00f29fd105e7a0777366edc69a5cf we have: + if (!folio_is_zone_device(dst)) + folio_add_lru(dst); in which case, we should really have had the backport as: + if (!folio_is_zone_device(newpage)) + folio_add_lru(newpage); This keeps references alive to the old memory pages, preventing them from being released and freed. Stack traces of stuck processes: ID: 871438 TASK: ffff007d4d668200 CPU: 95 COMMAND: "nvbandwidth" #0 [ffff80010e8ef840] __switch_to at ffffc0f22798c550 #1 [ffff80010e8ef8a0] __schedule at ffffc0f22798c89c #2 [ffff80010e8ef900] schedule at ffffc0f22798cd40 #3 [ffff80010e8ef930] schedule_preempt_disabled at ffffc0f22798d388 #4 [ffff80010e8ef9c0] rwsem_down_write_slowpath at ffffc0f227990dc8 #5 [ffff80010e8efa20] down_write at ffffc0f2279912d0 #6 [ffff80010e8efaa0] uvm_va_space_mm_shutdown at ffffc0f1c2a451ec [nvidia_uvm] #7 [ffff80010e8efb00] uvm_va_space_mm_unregister at ffffc0f1c2a457a0 [nvidia_uvm] #8 [ffff80010e8efb30] uvm_release at ffffc0f1c2a226d4 [nvidia_uvm] #9 [ffff80010e8efc00] uvm_release_entry.part.0 at ffffc0f1c2a227dc [nvidia_uvm] #10 [ffff80010e8efc20] uvm_release_entry at ffffc0f1c2a22850 [nvidia_uvm] #11 [ffff80010e8efc30] __fput at ffffc0f2269a5760 #12 [ffff80010e8efc70] ____fput at ffffc0f2269a5a80 #13 [ffff80010e8efc80] task_work_run at ffffc0f2265ceedc #14 [ffff80010e8efcc0] do_exit at ffffc0f2265a0bc8 #15 [ffff80010e8efcf0] do_group_exit at ffffc0f2265a0fec #16 [ffff80010e8efd50] get_signal at ffffc0f2265b8750 #17 [ffff80010e8efe10] do_signal at ffffc0f22650166c #18 [ffff80010e8efe40] do_notify_resume at ffffc0f2265018f0 #19 [ffff80010e8efe70] el0_interrupt at ffffc0f227985564 #20 [ffff80010e8efe90] __el0_irq_handler_common at ffffc0f2279855f0 #21 [ffff80010e8efea0] el0t_64_irq_handler at ffffc0f227986080 #22 [ffff80010e8effe0] el0t_64_irq at ffffc0f2264f17fc PID: 871467 TASK: ffff007f6aa66000 CPU: 66 COMMAND: "UVM GPU4 BH" #0 [ffff80015ddef580] __switch_to at ffffc0f22798c550 #1 [ffff80015ddef5e0] __schedule at ffffc0f22798c89c #2 [ffff80015ddef640] schedule at ffffc0f22798cd40 #3 [ffff80015ddef670] io_schedule at ffffc0f22798cec4 #4 [ffff80015ddef6e0] migration_entry_wait_on_locked at ffffc0f22686e3f0 #5 [ffff80015ddef740] migration_entry_wait at ffffc0f22695a6d4 #6 [ffff80015ddef750] do_swap_page at ffffc0f2268d6378 #7 [ffff80015ddef7d0] handle_pte_fault at ffffc0f2268da688 #8 [ffff80015ddef870] __handle_mm_fault at ffffc0f2268da7f8 #9 [ffff80015ddef8b0] handle_mm_fault at ffffc0f2268dab48 #10 [ffff80015ddef910] handle_fault at ffffc0f1c2aace18 [nvidia_uvm] #11 [ffff80015ddef950] uvm_populate_pageable_vma at ffffc0f1c2aacf24 [nvidia_uvm] #12 [ffff80015ddef990] migrate_pageable_vma_populate_mask at ffffc0f1c2aad8c0 [nvidia_uvm] #13 [ffff80015ddefab0] uvm_migrate_pageable at ffffc0f1c2ab0294 [nvidia_uvm] #14 [ffff80015ddefb90] service_ats_requests at ffffc0f1c2abf828 [nvidia_uvm] #15 [ffff80015ddefbb0] uvm_ats_service_faults at ffffc0f1c2ac02f0 [nvidia_uvm] #16 [ffff80015ddefd40] uvm_parent_gpu_service_non_replayable_fault_buffer at ffffc0f1c2a82e00 [nvidia_uvm] #17 [ffff80015ddefda0] non_replayable_faults_isr_bottom_half at ffffc0f1c2a3c3e4 [nvidia_uvm] #18 [ffff80015ddefe00] non_replayable_faults_isr_bottom_half_entry at ffffc0f1c2a3c590 [nvidia_uvm] #19 [ffff80015ddefe20] _main_loop at ffffc0f1c2a207c8 [nvidia_uvm] #20 [ffff80015ddefe70] kthread at ffffc0f2265d40dc There is no workaround. [Fix] To make things less confusing, revert the incorrect backport, and backport "mm: migrate_device: use more folio in migrate_device_finalize()" to use the new upstream notations, and correctly backport "mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()". This approach was suggested and tested by Krister Johansen, and I think it is reasonable. commit 58bf8c2bf47550bc94fea9cafd2bc7304d97102c Author: Kefeng Wang <wangkefeng.w...@huawei.com> Date: Mon Aug 26 14:58:12 2024 +0800 Subject: mm: migrate_device: use more folio in migrate_device_finalize() Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58bf8c2bf47550bc94fea9cafd2bc7304d97102c commit 41cddf83d8b00f29fd105e7a0777366edc69a5cf Author: David Hildenbrand <da...@redhat.com> Date: Mon Feb 10 17:13:17 2025 +0100 Subject: mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize() Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=41cddf83d8b00f29fd105e7a0777366edc69a5cf The first patch landed in 6.12-rc1 and the second patch in 6.14-rc4. Both are in plucky. [Testcase] There are a few ways to trigger the issue. You can run the hmm selftests. Note, you need to build a new kernel and set CONFIG_TEST_HMM=m first. 1) Check out a kernel git tree 2) cd tools/testing/selftests/mm/ 3) make 4) sudo ./test_hmm.sh You can also run nvidia tests like nvbandwidth, if your system has a Nvidia GPU: https://github.com/NVIDIA/nvbandwidth $ git clone https://github.com/NVIDIA/nvbandwidth.git $ cd nvbandwidth $ sudo ./debian_install.sh $ sudo ./nvbandwidth A test package is available in the following ppa: https://launchpad.net/~mruffell/+archive/ubuntu/sf416039-test If you install it, and run the hmm selftests, it should no longer hang. [Where problems can occur] This changes some core mm code for device memory from standard pages to using folios, and carries some additional risk because of this. If a regression were to occur, it would primarily affect users of devices with internal memory, such as graphics cards, and quite possibly high end network cards. The largest userbase affected by this regression is nvidia users, so it really would be a bad idea to release with the broken implementation, and instead, to respin and release with the fixed implementation. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2120330/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp