Doubling the heap size solved the problem. WIth six networks up (all I need) the heap is at:
size=259584:used=173184:pagesz=512 (main heap) I'll leave it to the experts to figure out if those calls to rtdm_malloc are really needed or not. Thanks for your help! Stuart On Thu, Aug 14, 2008 at 1:33 PM, Jan Kiszka <[EMAIL PROTECTED]> wrote: > Stuart O Anderson wrote: >> >> Ok - here is the output I get in dmesg after inserting the driver and >> issuing a bunch of rtifconfigs. >> I don't think it matters, but I skip the rtifconfig on rteth1 because >> it shares IRQ28 with another network device that is managed by the >> linux kernel: >> >> [233783.484112] Intel(R) PRO/1000 Network Driver - version 7.1.9 >> [233783.484195] Copyright (c) 1999-2006 Intel Corporation. >> [233767.992350] e1000: 0000:04:04.0: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:f0 >> [233768.018597] RTnet: registered rteth0 >> [233768.018670] e1000: rteth0: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233768.289300] e1000: 0000:04:04.1: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:f1 >> [233768.315552] RTnet: registered rteth1 >> [233768.315624] e1000: rteth1: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233768.586269] e1000: 0000:04:06.0: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:f2 >> [233768.612514] RTnet: registered rteth2 >> [233768.612587] e1000: rteth2: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233768.883231] e1000: 0000:04:06.1: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:f3 >> [233768.909477] RTnet: registered rteth3 >> [233768.909550] e1000: rteth3: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233769.181519] e1000: 0000:0f:04.0: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:68 >> [233769.207554] RTnet: registered rteth4 >> [233769.207626] e1000: rteth4: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233769.479494] e1000: 0000:0f:04.1: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:69 >> [233769.505517] RTnet: registered rteth5 >> [233769.505589] e1000: rteth5: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233769.777455] e1000: 0000:0f:06.0: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:6a >> [233769.803479] RTnet: registered rteth6 >> [233769.803551] e1000: rteth6: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233770.075407] e1000: 0000:0f:06.1: e1000_probe: >> (PCI-X:133MHz:64-bit) 00:0e:0c:bb:17:6b >> [233770.101443] RTnet: registered rteth7 >> [233770.101515] e1000: rteth7: e1000_probe: Intel(R) PRO/1000 Network >> Connection >> [233819.074069] e1000: rteth0: e1000_setup_rx_resources: Req Num: 1, >> Size requested: 8192 >> [233822.079230] e1000: rteth2: e1000_setup_rx_resources: Req Num: 2, >> Size requested: 8192 >> [233825.084213] e1000: rteth3: e1000_setup_rx_resources: Req Num: 3, >> Size requested: 8192 >> [233828.089200] e1000: rteth4: e1000_setup_rx_resources: Req Num: 4, >> Size requested: 8192 >> [233815.324930] e1000: rteth5: e1000_setup_rx_resources: Req Num: 5, >> Size requested: 8192 >> [233815.325032] e1000: rteth5: e1000_setup_rx_resources: Unable to >> allocate memory for the receive descriptor ring >> [233815.325134] e1000: rteth5: e1000_setup_all_rx_resources: >> Allocation for Rx Queue 0 failed >> >> So this all looks just fine to me - why would a vmalloc of 8K be failing? >> Additionally, when I rtifconfig rteth0 down; rtifconfig rteth5 up, It >> works fine, with the following output in dmesg: >> >> [234112.730753] e1000: rteth5: e1000_setup_rx_resources: Req Num: 6, >> Size requested: 8192 >> >> I did notice that around line 254 the following #defines are introduced: >> >> #define kmalloc(a,b) rtdm_malloc(a) >> #define vmalloc(a) rtdm_malloc(a) >> #define kfree(a) rtdm_free(a) >> #define vfree(a) rtdm_free(a) > > Ah, that is a good point! > > I do not recall why we need this (it looks over-cautions on first glance). > Mathias, can you help? > >> >> So maybe this is a xenomai problem? > > The Xenomai real-time heap is 128K by default. Some other allocations may > have used it before, and the above 6 x 8K may request 72K (with management > overhead). Check /proc/xenomai/heap on its use. > > For now you can increase the heap size at (kernel) compile time or via > module/kernel parameter (xeno_nucleus.sysheap_size). Or you play with > disabling those v/kmalloc wrappers... > > Jan > > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ RTnet-users mailing list RTnet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rtnet-users