Commit 9bbe13a5 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

genirq/msi: Provide MSI_FLAG_PARENT_PM_DEV



Some platform-MSI implementations require that power management is
redirected to the underlying interrupt chip device. To make this work
with per device MSI domains provide a new feature flag and let the
core code handle the setup of dev->pm_dev when set during device MSI
domain creation.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarAnup Patel <apatel@ventanamicro.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240127161753.114685-14-apatel@ventanamicro.com
parent e49312fe
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -554,6 +554,8 @@ enum {
	MSI_FLAG_FREE_MSI_DESCS		= (1 << 6),
	/* Use dev->fwnode for MSI device domain creation */
	MSI_FLAG_USE_DEV_FWNODE		= (1 << 7),
	/* Set parent->dev into domain->pm_dev on device domain creation */
	MSI_FLAG_PARENT_PM_DEV		= (1 << 8),

	/* Mask for the generic functionality */
	MSI_GENERIC_FLAGS_MASK		= GENMASK(15, 0),
+4 −1
Original line number Diff line number Diff line
@@ -845,8 +845,11 @@ static struct irq_domain *__msi_create_irq_domain(struct fwnode_handle *fwnode,
	domain = irq_domain_create_hierarchy(parent, flags | IRQ_DOMAIN_FLAG_MSI, 0,
					     fwnode, &msi_domain_ops, info);

	if (domain)
	if (domain) {
		irq_domain_update_bus_token(domain, info->bus_token);
		if (info->flags & MSI_FLAG_PARENT_PM_DEV)
			domain->pm_dev = parent->pm_dev;
	}

	return domain;
}