On Wed, 17 Sep 2014, Jiang Liu wrote: > On 2014/9/17 1:45, Thomas Gleixner wrote: > > On Thu, 11 Sep 2014, Jiang Liu wrote: > >> +#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY > >> +void irq_chip_ack_parent(struct irq_data *data) > >> +{ > >> + data = data->parent_data; > >> + if (data && data->chip && data->chip->irq_ack) > >> + data->chip->irq_ack(data); > > > > Why is this restricted to a single parent level and does not go down > > the whole stack? > Hi Thomas, > It happens to work on x86, and we want to achieve a bit > performance advantage by not walking down the whole stack. > If preferred, I will change it to walk the whole stack. Happens to work on my machine is always a bad argument :) Now, I can see why you want to do that, but if we do an optimization like that then we should really get rid of the conditional. You surely need a conditional on data->chip and data->chip->callback for a full stackq walk, but for an explicit request to use the parents ack the parent better has a chip with an ack function, right? void irq_chip_ack_parent(struct irq_data *data) { data = data->parent_data; data->chip->irq_ack(data); } Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html