|
@@ -71,19 +71,21 @@ static struct irq_desc irq_desc_init = {
|
|
|
|
|
|
void init_kstat_irqs(struct irq_desc *desc, int cpu, int nr)
|
|
|
{
|
|
|
- unsigned long bytes;
|
|
|
- char *ptr;
|
|
|
int node;
|
|
|
-
|
|
|
- /* Compute how many bytes we need per irq and allocate them */
|
|
|
- bytes = nr * sizeof(unsigned int);
|
|
|
+ void *ptr;
|
|
|
|
|
|
node = cpu_to_node(cpu);
|
|
|
- ptr = kzalloc_node(bytes, GFP_ATOMIC, node);
|
|
|
- printk(KERN_DEBUG " alloc kstat_irqs on cpu %d node %d\n", cpu, node);
|
|
|
+ ptr = kzalloc_node(nr * sizeof(*desc->kstat_irqs), GFP_ATOMIC, node);
|
|
|
|
|
|
- if (ptr)
|
|
|
- desc->kstat_irqs = (unsigned int *)ptr;
|
|
|
+ /*
|
|
|
+ * don't overwite if can not get new one
|
|
|
+ * init_copy_kstat_irqs() could still use old one
|
|
|
+ */
|
|
|
+ if (ptr) {
|
|
|
+ printk(KERN_DEBUG " alloc kstat_irqs on cpu %d node %d\n",
|
|
|
+ cpu, node);
|
|
|
+ desc->kstat_irqs = ptr;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void init_one_irq_desc(int irq, struct irq_desc *desc, int cpu)
|