Hi!
I'm writing a WFQ packet scheduling algorithm for the Linux kernel.
Based on scheduler sources shipped with the kernel, I managed to get
the hang of it and it works fine. Only I get warnings saying:
kmem_grow: Called nonatomically from int - size-64
This most probably happens in the enqueue or the dequeue function,
since this happens only when there is heavy traffic, and also stops
after a while. (When enough memory is already allocated, I figure.)
I don't use any other sub-schedulers (sub-classes, if you like), so
everything inside these two functions is my own code. (Apart from few
kfree_skb calls.)
My question is: what should I add to avoid this? Is a pair of
start_bh_atomic() end_bh_atomic() calls missing? What should be
protected with these functions at all? (And what needn't?)
If you need a part of code, I gladly send it... Could you please
answer in private mail, beacuse I'm not subscribed to the list.
Thanks a lot,
David Hanak
|