やるきなし

2017/07/03 12:39 / dax: Could not allocate 8192 bytes percpu data on Linux 4.12

Kernel を 4.12 に上げたら dax (手元では device-mapper が依存)が modprobe に失敗するようになった.

percpu: allocation failed, size=8192 align=4096 atomic=0, alloc from reserved chunk failed
CPU: 4 PID: 3257 Comm: modprobe Tainted: P           O    4.12.0-(snip)
Hardware name: (snip)
Call Trace:
 ? dump_stack+0x5c/0x7a
 ? pcpu_alloc+0x601/0x640
 ? load_module+0x7bf/0x2af0
 ? kernel_read_file+0x19d/0x1c0
 ? SyS_finit_module+0xa5/0xe0
 ? SyS_finit_module+0xa5/0xe0
 ? entry_SYSCALL_64_fastpath+0x1e/0xa9
dax: Could not allocate 8192 bytes percpu data

mm/percpu.cpcpu_allocでコケているようなのだが(8192 byteが大きいということ?),percpu_testのkernel moduleを作ってみても以下のような感じでうまく動かず.

% sudo modprobe percpu_test
modprobe: ERROR: could not insert 'percpu_test': Resource temporarily unavailable

ということで,これ以上は追えず.とりあえずはCONFIG_DAX=mCONFIG_DAX=yにすれば解決する.