[PATCH v2 1/8] device core: Introduce per-device MSI domain pointer
From: Stuart Yoder <hidden>
Date: 2015-01-20 17:17:31
Also in:
linux-pci, lkml
Gerry, So which direction did you take in your patch set-- a) common, generic msi_desc, or b) bus-specific msi_desc like Marc showed (mybus_msi_desc)? Thanks, Stuart On Sun, Jan 18, 2015 at 8:10 PM, Jiang Liu [off-list ref] wrote:
On 2015/1/16 4:35, Stuart Yoder wrote:quoted
On Thu, Jan 8, 2015 at 11:06 AM, Marc Zyngier [off-list ref] wrote:quoted
As MSI-type features are creeping into non-PCI devices, it is starting to make sense to give our struct device some form of support for this, by allowing a pointer to an MSI irq domain to be set/retrieved. Signed-off-by: Marc Zyngier <redacted> --- include/linux/device.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)diff --git a/include/linux/device.h b/include/linux/device.h index fb50673..ec4cee5 100644 --- a/include/linux/device.h +++ b/include/linux/device.h@@ -690,6 +690,7 @@ struct acpi_dev_node { * along with subsystem-level and driver-level callbacks. * @pins: For device pin management. * See Documentation/pinctrl.txt for details. + * @msi_domain: The generic MSI domain this device is using. * @numa_node: NUMA node this device is close to. * @dma_mask: Dma mask (if dma'ble device). * @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all@@ -750,6 +751,9 @@ struct device { struct dev_pm_info power; struct dev_pm_domain *pm_domain; +#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN + struct irq_domain *msi_domain; /* MSI domain device uses */ +#endifThis is not a comment on this patch specifically, but a question about other MSI specific fields that might be needed in struct device. Currently the generic MSI domain handling has hardcoded assumptions that devices are PCI-- see the for_each_msi_entry() iterator in msi.h: #define dev_to_msi_list(dev) (&to_pci_dev((dev))->msi_list) #define for_each_msi_entry(desc, dev) \ list_for_each_entry((desc), dev_to_msi_list((dev)), list) One approach would be to move the msi_list out of pci_dev and put it in struct device, so all devices can have an msi_list. The other approach would be to keep msi_list in a bus specific device struct, and then dev_to_msi_list() would need to be implemented as a bus specific callback of some kind. The above hardcoded PCI assumption isn't going to work. Wanted to see if there is any advice in which direction to go.Hi Stuart, I already have some a patch set to go that direction waiting send out for review:) Thanks! Gerryquoted
Thanks, Stuart Yoder -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/