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

Reply via email to