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.c
のpcpu_alloc
でコケているようなのだが(8192 byteが大きいということ?),percpu_test
のkernel moduleを作ってみても以下のような感じでうまく動かず.
% sudo modprobe percpu_test
modprobe: ERROR: could not insert 'percpu_test': Resource temporarily unavailable
ということで,これ以上は追えず.とりあえずはCONFIG_DAX=m
をCONFIG_DAX=y
にすれば解決する.