On Mon, Jul 19, 2021 at 08:51:22AM +0100, John Garry wrote: >> Address this issue by adding one field of .irq_affinity_managed into >> 'struct device'. >> >> Suggested-by: Christoph Hellwig <hch@xxxxxx> >> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > > Did you consider that for PCI device we effectively have this info already: > > bool dev_has_managed_msi_irq(struct device *dev) > { > struct msi_desc *desc; > > list_for_each_entry(desc, dev_to_msi_list(dev), list) { > if (desc->affinity && desc->affinity->is_managed) > return true; > } > > return false; Just walking the list seems fine to me given that this is not a performance criticial path. But what are the locking implications? Also does the above imply this won't work for your platform MSI case?