Re: [PATCH v5 4/5] Driver core: platform: Add devm_platform_get_irqs_affinity()

From: John Garry
Date: Wed Dec 09 2020 - 14:38:33 EST


On 09/12/2020 19:13, Greg KH wrote:

Hi Greg,

For this HW version, the device is on the system bus, directly addressable
by the CPU.
What do you mean by "system bus"?

Maybe my terminology is wrong, the point is that we have a platform device driver.


Motivation is that I wanted to switch the HW completion queues to use
managed interrupts.
Fair enough, seems like overkill for a "platform" bus though:)

What in-kernel driver needs this complexity? I can't take new apis
without a real user in the tree, sorry.
It's in the final patch in the serieshttps://lore.kernel.org/linux-scsi/1606905417-183214-1-git-send-email-john.garry@xxxxxxxxxx/T/#m0df7e7cd6f0819b99aaeb6b7f8939ef1e17b8a83.
Ah, I missed that, I thought that was some high-speed scsi thing, not a
tiny platform driver...

It is actually is a high-speed SCSI thing also, SAS 3.0 :)


I don't anticipate a huge number of users of this API in future, as most
multi-queue devices are PCI devices; so we could do the work of this API in
the driver itself, but the preference was not to export genirq functions
like irq_update_affinity_desc() or irq_create_affinity_masks(), and rather
have a common helper in the core platform code.
Ok, I'd like to have the irq maintainers/developers ack this before
taking it in the driver core, as someone is going to have to maintain
this crazy thing for forever if it gets merged.


irq experts are cc'ed and have been very helpful here

So the API mushroomed a bit over time, as I realized that we need to support tearing down the irq mapping, make as devm method, use irq_calc_affinity_vectors(). Not sure how we could factor any of it out to become less of your problem.

Thanks,
John