> struct slice_data { > unsigned long irq_enable_mask[2]; > - int level_to_irq[LEVELS_PER_SLICE]; > }; Any reaason to keep struct slice_data around at all? > + HUB_S(hd->irq_mask_addr[0], si->irq_enable_mask[0]); > + HUB_S(hd->irq_mask_addr[1], si->irq_enable_mask[1]); I know the HUB_S name is pre-existing, but maybe you can throw in a patch to give it a more descriptive name? Or maybe just kill it off entirely at least for new code and use __raw_readq directly. > #endif > { > - /* "map" swlevel to irq */ > - struct slice_data *si = cpu_data[cpu].data; > - > - irq = si->level_to_irq[swlevel]; > - do_IRQ(irq); > + do_IRQ(swlevel + IP27_HUB_IRQ_BASE); > } Looks like we can just kill the { } and additional indentation here.