On Tue, 18 Oct 2011, Tomoya MORINAGA wrote:>
The linux-next patch 54be566317b6 "gpio-ml-ioh: Support interrupt
function" generates a Sparse warning.
+ irq_base = irq_alloc_descs(-1, IOH_IRQ_BASE, num_ports[j],
+ GFP_KERNEL);
^^^^^^^^^^
The last argument should be a NUMA node, not a GFP_ flag. I'm not
sure what the right fix is. There are currently 5 callers in my
cscope for this function in linux-next.
2 pass GFP_KERNEL which is wrong.
Right, all irq_alloc_descs() allocations are already implicitly
GFP_KERNEL.
2 pass 0 which maybe should be cpu_to_node(0)?I can understand your saying.
1 passes -1 which maybe could be NUMA_NO_NODE?
Seeing accepted other drivers, '0' or '-1' is used.
There's actually no guarantee in the kernel that node 0 has memory, so
unless that is assured in the context then passing 0 would be wrong.
Focusing on GPIO driver, gpio-pca953x.c uses '-1'.
The slab layer guarantees that passing -1 will allocate on the node that
is local to the cpu that the code is running on. Unless there's a
compelling reason to allocate on a different node, then this is what you
want to use.
We try not to pass -1 directly, though, we try to use NUMA_NO_NODE
wherever possible.