From f9764dcf978d9c50585332f28900d00237e154e8 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 30 Aug 2024 06:50:07 +0000 Subject: [PATCH] Revert "genirq: Allow the PM device to originate from irq domain" This reverts commit 9951e76f3988cc7157174e805ac5e9c2815995b7 which is commit 1f8863bfb5ca500ea1c7669b16b1931ba27fce20 upstream. It breaks the Android kernel abi and can be brought back in the future in an abi-safe way if it is really needed. Bug: 161946584 Change-Id: I0ce88d80cd15d5f5d561cb9569209c5bf2e40b0f Signed-off-by: Greg Kroah-Hartman --- include/linux/irqdomain.h | 10 ---------- kernel/irq/chip.c | 23 +++++------------------ 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 5e6188b062483..29770e58535b5 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -149,8 +149,6 @@ struct irq_domain_chip_generic; * @gc: Pointer to a list of generic chips. There is a helper function for * setting up one or more generic chips for interrupt controllers * drivers using the generic chip library which uses this pointer. - * @dev: Pointer to a device that the domain represent, and that will be - * used for power management purposes. * @parent: Pointer to parent irq_domain to support hierarchy irq_domains * @debugfs_file: dentry for the domain debugfs file * @@ -173,7 +171,6 @@ struct irq_domain { struct fwnode_handle *fwnode; enum irq_domain_bus_token bus_token; struct irq_domain_chip_generic *gc; - struct device *dev; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY struct irq_domain *parent; #endif @@ -235,13 +232,6 @@ static inline struct device_node *irq_domain_get_of_node(struct irq_domain *d) return to_of_node(d->fwnode); } -static inline void irq_domain_set_pm_device(struct irq_domain *d, - struct device *dev) -{ - if (d) - d->dev = dev; -} - #ifdef CONFIG_IRQ_DOMAIN struct fwnode_handle *__irq_domain_alloc_fwnode(unsigned int type, int id, const char *name, phys_addr_t *pa); diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 2654e6906dce7..fc2173f87a180 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -1588,17 +1588,6 @@ int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) return 0; } -static struct device *irq_get_parent_device(struct irq_data *data) -{ - if (data->chip->parent_device) - return data->chip->parent_device; - - if (data->domain) - return data->domain->dev; - - return NULL; -} - /** * irq_chip_pm_get - Enable power for an IRQ chip * @data: Pointer to interrupt specific data @@ -1608,13 +1597,12 @@ static struct device *irq_get_parent_device(struct irq_data *data) */ int irq_chip_pm_get(struct irq_data *data) { - struct device *dev = irq_get_parent_device(data); int retval; - if (IS_ENABLED(CONFIG_PM) && dev) { - retval = pm_runtime_get_sync(dev); + if (IS_ENABLED(CONFIG_PM) && data->chip->parent_device) { + retval = pm_runtime_get_sync(data->chip->parent_device); if (retval < 0) { - pm_runtime_put_noidle(dev); + pm_runtime_put_noidle(data->chip->parent_device); return retval; } } @@ -1632,11 +1620,10 @@ int irq_chip_pm_get(struct irq_data *data) */ int irq_chip_pm_put(struct irq_data *data) { - struct device *dev = irq_get_parent_device(data); int retval = 0; - if (IS_ENABLED(CONFIG_PM) && dev) - retval = pm_runtime_put(dev); + if (IS_ENABLED(CONFIG_PM) && data->chip->parent_device) + retval = pm_runtime_put(data->chip->parent_device); return (retval < 0) ? retval : 0; }