Bug 14989

Summary: Out of memory allocating beacons
Product: Drivers Reporter: Ritesh Raj Sarraf (linux-kernel-bugs)
Component: network-wirelessAssignee: drivers_network-wireless (drivers_network-wireless)
Status: CLOSED UNREPRODUCIBLE    
Severity: high CC: linville, yi.zhu
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.32 Subsystem:
Regression: No Bisected commit-id:
Attachments: fix patch

Description Ritesh Raj Sarraf 2010-01-05 09:14:32 UTC
This bug is partially related to bug #14206

In the above mentioned bugzilla, I mentioned a workaround script which reloads the ipw2200 driver on resume.

Today, during resume, following is the error I see in dmesg and the device was not loaded.

[66633.169455] ieee80211: 802.11 data/management/control stack, git-1.1.13                        
[66633.169459] ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>    
[66633.223315] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq                
[66633.223319] ipw2200: Copyright(c) 2003-2006 Intel Corporation                                  
[66633.229664] modprobe: page allocation failure. order:4, mode:0xc0d0                            
[66633.229686] Pid: 5151, comm: modprobe Not tainted 2.6.32-trunk-686 #1                          
[66633.229689] Call Trace:                                                                        
[66633.229717]  [<c108bdcb>] ? __alloc_pages_nodemask+0x476/0x4e0                                 
[66633.229726]  [<c108be41>] ? __get_free_pages+0xc/0x17                                          
[66633.229750]  [<f7d910f1>] ? libipw_network_reset+0x6f/0x1cf [libipw]                           
[66633.229782]  [<f8069559>] ? ipw_pci_probe+0x19/0x90d [ipw2200]                                 
[66633.229788]  [<c10f25f3>] ? sysfs_do_create_link+0xab/0xed                                     
[66633.229811]  [<c113f891>] ? local_pci_probe+0xb/0xc                                            
[66633.229815]  [<c11401db>] ? pci_device_probe+0x41/0x63                                         
[66633.229821]  [<c11a1857>] ? driver_probe_device+0x76/0xfe                                      
[66633.229843]  [<c11a191f>] ? __driver_attach+0x40/0x5b                                          
[66633.229847]  [<c11a12d9>] ? bus_for_each_dev+0x37/0x5f                                         
[66633.229851]  [<c11a173e>] ? driver_attach+0x11/0x13                                            
[66633.229855]  [<c11a18df>] ? __driver_attach+0x0/0x5b                                           
[66633.229876]  [<c11a0da1>] ? bus_add_driver+0x99/0x1c5                                          
[66633.229880]  [<c11a1b37>] ? driver_register+0x87/0xe0                                          
[66633.229886]  [<c1071daf>] ? tracepoint_module_notify+0x1d/0x20                                 
[66633.229907]  [<c11403ac>] ? __pci_register_driver+0x33/0x89                                    
[66633.229916]  [<f7e11000>] ? ipw_init+0x0/0x6b [ipw2200]                                        
[66633.229941]  [<f7e11029>] ? ipw_init+0x29/0x6b [ipw2200]                                       
[66633.229946]  [<c100113e>] ? do_one_initcall+0x55/0x155                                         
[66633.229968]  [<c105790c>] ? sys_init_module+0xa7/0x1d7                                         
[66633.229972]  [<c10030fb>] ? sysenter_do_call+0x12/0x28                                         
[66633.229975] Mem-Info:                                                                          
[66633.229977] DMA per-cpu:                                                                       
[66633.229979] CPU    0: hi:    0, btch:   1 usd:   0                                             
[66633.229981] Normal per-cpu:                                                                    
[66633.230001] CPU    0: hi:  186, btch:  31 usd:   0                                             
[66633.230003] HighMem per-cpu:                                                                   
[66633.230006] CPU    0: hi:  186, btch:  31 usd:   0                                             
[66633.230012] active_anon:187104 inactive_anon:99908 isolated_anon:19                            
[66633.230013]  active_file:74303 inactive_file:81645 isolated_file:27                            
[66633.230032]  unevictable:0 dirty:15 writeback:16 unstable:0                                    
[66633.230033]  free:45589 slab_reclaimable:7097 slab_unreclaimable:7065                          
[66633.230035]  mapped:34835 shmem:778 pagetables:2829 bounce:0                                   
[66633.230189] DMA free:3532kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:12kB active_file:1128kB inactive_file:7116kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15868kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:940kB slab_unreclaimable:2736kB kernel_stack:424kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no                                                                   
[66633.230196] lowmem_reserve[]: 0 861 2015 2015                                                  
[66633.230223] Normal free:149248kB min:3720kB low:4648kB high:5580kB active_anon:183696kB inactive_anon:199180kB active_file:109540kB inactive_file:127668kB unevictable:0kB isolated(anon):76kB isolated(file):108kB present:881880kB mlocked:0kB dirty:24kB writeback:0kB mapped:47724kB shmem:888kB slab_reclaimable:27448kB slab_unreclaimable:25524kB kernel_stack:2768kB pagetables:1780kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no                         
[66633.230355] lowmem_reserve[]: 0 0 9230 9230                                                    
[66633.230382] HighMem free:29576kB min:512kB low:1756kB high:3004kB active_anon:564720kB inactive_anon:200440kB active_file:186544kB inactive_file:191796kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:1181488kB mlocked:0kB dirty:36kB writeback:0kB mapped:91616kB shmem:2224kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:9536kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[66633.230390] lowmem_reserve[]: 0 0 0 0
[66633.230411] DMA: 29*4kB 57*8kB 33*16kB 16*32kB 14*64kB 8*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 3532kB
[66633.230450] Normal: 31010*4kB 2011*8kB 506*16kB 32*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 149248kB
[66633.230478] HighMem: 3170*4kB 1814*8kB 145*16kB 2*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 29576kB
[66633.230506] 197229 total pagecache pages
[66633.230508] 40499 pages in swap cache
[66633.230511] Swap cache stats: add 59549, delete 19050, find 373790/374499
[66633.230513] Free swap  = 2040516kB
[66633.230515] Total swap = 2244600kB
[66633.254122] 524000 pages RAM
[66633.254125] 297698 pages HighMem
[66633.254127] 13715 pages reserved
[66633.254128] 325210 pages shared
[66633.254148] 368104 pages non-shared
[66633.254151] eth%d: Out of memory allocating beacons
[66633.254153] ieee80211: Unable to allocate beacon storage: -12
[66633.303477] ipw2200: probe of 0000:0b:02.0 failed with error -12



Later, manually reloading the driver worked as before. I am not sure if this can be reproducible again.
Comment 1 John W. Linville 2010-01-05 14:23:18 UTC
Are you using IBSS (i.e. Ad-Hoc) mode?  Which block allocator (e.g. SLAB, SLUB) are you using?
Comment 2 Ritesh Raj Sarraf 2010-01-06 03:22:38 UTC
No. I am using the Managed Mode.

I am using the SLUB allocator.
08:50:55 rrs@champaran:/var/tmp/Debian $ grep -i slub /boot/config-2.6.32-trunk-686
CONFIG_SLUB_DEBUG=y
CONFIG_SLUB=y
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
Comment 3 Zhu Yi 2010-01-06 07:15:22 UTC
Created attachment 24461 [details]
fix patch

[PATCH] libipw: split ieee->networks into small pieces

The ieee->networks consists of 128 struct libipw_network entries. If
we allocate this chunk of memory altogether, it ends up with an
order 4 page allocation. High order page allocation is likely to fail
on system high load. This patch splits the big chunk memory allocation
into small pieces, each is 344 bytes, allocates them with 128 times.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Comment 4 John W. Linville 2010-03-03 16:51:40 UTC
Zhu Yi, did you ever submit that patch on the mailing list?  Ritesh, did you ever test it?
Comment 5 Ritesh Raj Sarraf 2010-03-03 17:40:51 UTC
(In reply to comment #4)
> Zhu Yi, did you ever submit that patch on the mailing list?  Ritesh, did you
> ever test it?

No. I have not tested the patch. And have not seen the bug again. I still am running on the 2.6.32 kernel
Comment 6 John W. Linville 2010-08-13 15:54:45 UTC
Sounds like it can't be reproduced...closing.