Could not allocate 40960 bytes percpu data

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)

原文地址:https://www.cnblogs.com/mull/p/7618028.html