2017-10-01 21:40:56
[ 176.700091] vif: Could not allocate 40960 bytes percpu data
[ 263.762812] percpu: allocation failed, size=16384 align=32 atomic=0, alloc from reserved chunk failed
[ 263.762829] CPU: 0 PID: 717 Comm: insmod Tainted: P W O 4.9.51-1300 #69
[ 263.762831] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
[ 263.762836] 0000000000000000 ffffffffad22516b ffff9cb3bb410d98 ffff9cb3bb7fe640
[ 263.762843] ffffffffad737c20 ffffffffad106b11 ffff9cb337532e18 00000000000007f8
[ 263.762848] 0000000000000246 0000000000000020 ffffb3b540fdf2c8 ffffb3b540f99880
[ 263.762853] Call Trace:
[ 263.762888] [<ffffffffad22516b>] ? dump_stack+0x47/0x5c
[ 263.762899] [<ffffffffad106b11>] ? pcpu_alloc+0x581/0x600
[ 263.762907] [<ffffffffad03a608>] ? module_alloc+0x78/0xc0
[ 263.762913] [<ffffffffad0acfd7>] ? load_module+0xb17/0x20c0
[ 263.762918] [<ffffffffad11b714>] ? map_vm_area+0x34/0x50
[ 263.762923] [<ffffffffad11c189>] ? __vmalloc_node_range+0x149/0x210
[ 263.762926] [<ffffffffad0ae63d>] ? SyS_init_module+0xbd/0x140
[ 263.762929] [<ffffffffad0ae6a6>] ? SyS_init_module+0x126/0x140
[ 263.762943] [<ffffffffad589ae0>] ? entry_SYSCALL_64_fastpath+0x13/0x94
[ 263.762947] vif: Could not allocate 16384 bytes percpu data
~ #
http://www.360doc.com/content/15/0916/18/97538_499571595.shtml
ko中如何有如下:
DEFINE_PER_CPU(int[0x1000], my_per_cpu);
则报如上:oops
改为:
static PER_CPU(int[0x1000], my_per_cpu);
则不在报
另:
[ 741.983460] percpu: allocation failed, size=8216 align=32 atomic=0, alloc from reserved chunk failed
[ 741.983463] CPU: 0 PID: 958 Comm: insmod Tainted: P W O 4.9.51-1300 #162
[ 741.983464] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/31/2013
[ 741.983466] 0000000000000000 ffffffffb122516b ffff96fa5d810d98 ffff96fa5dbfe700
[ 741.983468] ffffffffb1737c68 ffffffffb1106b11 000000005a03b9e0 00000000000005d0
[ 741.983469] 0000000000000246 0000000000000020 ffffb541c10fd1a0 ffffb541c10af200
[ 741.983470] Call Trace:
[ 741.983478] [<ffffffffb122516b>] ? dump_stpcpu_allocack+0x47/0x5c
[ 741.983482] [<ffffffffb1106b11>] ? +0x581/0x600
[ 741.983485] [<ffffffffb103a608>] ? module_alloc+0x78/0xc0
[ 741.983487] [<ffffffffb10acfd7>] ? load_module+0xb17/0x20c0
[ 741.983488] [<ffffffffb111b714>] ? map_vm_area+0x34/0x50
[ 741.983490] [<ffffffffb111c189>] ? __vmalloc_node_range+0x149/0x210
[ 741.983490] [<ffffffffb10ae63d>] ? SyS_init_module+0xbd/0x140
[ 741.983491] [<ffffffffb10ae6a6>] ? SyS_init_module+0x126/0x140
[ 741.983495] [<ffffffffb1589ba0>] ? entry_SYSCALL_64_fastpath+0x13/0x94
[ 741.983496] percpu: Could not allocate 8216 bytes percpu data
~ #
2017-11-9 17:50:04
[ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:8 nr_node_ids:1
[ 0.000000] percpu: Embedded 32 pages/cpu @ffff9909bfa00000 s92696 r8192 d30184 u262144
[ 0.000000] pcpu-alloc: s92696 r8192 d30184 u262144 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
解法:
修改linux/percpu.h
原:#define PERCPU_MODULE_RESERVE (8 << 10)
现:#define PERCPU_MODULE_RESERVE (16 << 10)