Revision 1fb9341ac34825aa40354e74d9a2c69df7d2c304 authored by Rusty Russell on 12 January 2013, 02:57:34 UTC, committed by Rusty Russell on 12 January 2013, 02:57:46 UTC
Prarit's excellent bug report:
> In recent Fedora releases (F17 & F18) some users have reported seeing
> messages similar to
>
> [   15.478160] kvm: Could not allocate 304 bytes percpu data
> [   15.478174] PERCPU: allocation failed, size=304 align=32, alloc from
> reserved chunk failed
>
> during system boot.  In some cases, users have also reported seeing this
> message along with a failed load of other modules.
>
> What is happening is systemd is loading an instance of the kvm module for
> each cpu found (see commit e9bda3b).  When the module load occurs the kernel
> currently allocates the modules percpu data area prior to checking to see
> if the module is already loaded or is in the process of being loaded.  If
> the module is already loaded, or finishes load, the module loading code
> releases the current instance's module's percpu data.

Now we have a new state MODULE_STATE_UNFORMED, we can insert the
module into the list (and thus guarantee its uniqueness) before we
allocate the per-cpu region.

Reported-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Tested-by: Prarit Bhargava <prarit@redhat.com>
1 parent 0d21b0e
History
File Mode Size
.gitignore -rw-r--r-- 8 bytes
Kconfig -rw-r--r-- 4.6 KB
Makefile -rw-r--r-- 899 bytes
ap.c -rw-r--r-- 957 bytes
chan.c -rw-r--r-- 9.0 KB
core.c -rw-r--r-- 27.2 KB
core.h -rw-r--r-- 15.5 KB
db.txt -rw-r--r-- 759 bytes
debugfs.c -rw-r--r-- 3.0 KB
debugfs.h -rw-r--r-- 300 bytes
ethtool.c -rw-r--r-- 3.0 KB
ethtool.h -rw-r--r-- 148 bytes
genregdb.awk -rw-r--r-- 3.4 KB
ibss.c -rw-r--r-- 12.5 KB
lib80211.c -rw-r--r-- 7.1 KB
lib80211_crypt_ccmp.c -rw-r--r-- 11.6 KB
lib80211_crypt_tkip.c -rw-r--r-- 20.4 KB
lib80211_crypt_wep.c -rw-r--r-- 7.1 KB
mesh.c -rw-r--r-- 7.2 KB
mlme.c -rw-r--r-- 28.2 KB
nl80211.c -rw-r--r-- 240.7 KB
nl80211.h -rw-r--r-- 5.7 KB
radiotap.c -rw-r--r-- 11.4 KB
rdev-ops.h -rw-r--r-- 25.8 KB
reg.c -rw-r--r-- 65.4 KB
reg.h -rw-r--r-- 4.5 KB
regdb.h -rw-r--r-- 948 bytes
scan.c -rw-r--r-- 35.3 KB
sme.c -rw-r--r-- 26.4 KB
sysfs.c -rw-r--r-- 3.4 KB
sysfs.h -rw-r--r-- 197 bytes
trace.c -rw-r--r-- 102 bytes
trace.h -rw-r--r-- 62.9 KB
util.c -rw-r--r-- 32.8 KB
wext-compat.c -rw-r--r-- 39.0 KB
wext-compat.h -rw-r--r-- 2.1 KB
wext-core.c -rw-r--r-- 29.0 KB
wext-priv.c -rw-r--r-- 6.9 KB
wext-proc.c -rw-r--r-- 4.0 KB
wext-sme.c -rw-r--r-- 9.7 KB
wext-spy.c -rw-r--r-- 6.6 KB

back to top