linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions
@ 2022-08-08 17:40 Paul Cercueil
  2022-08-08 17:40 ` [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros Paul Cercueil
  2022-08-13 14:50 ` [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Jonathan Cameron
  0 siblings, 2 replies; 14+ messages in thread
From: Paul Cercueil @ 2022-08-08 17:40 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-kernel, Paul Cercueil, Jonathan Cameron,
	Rafael J . Wysocki, linux-pm

Hi Lee,

Here's my revised patchset updated from the feedback I got in V1.
This one is based on the current mfd-next-5.20.

I updated the PM macros in <linux/pm.h> and <linux/pm_runtime.h>, to
make them more versatile. They now allow to conditionally export
arbitrary dev_pm_ops structures. This is used in the "arizona" driver
for instance, which has "noirq" callbacks.

I Cc'd Jonathan, whom might be interested by the PM patch to convert the
IIO drivers to the new PM macros. Lee, if this patchset gets merged to
the MFD tree, could you then create an immutable branch for Jonathan?

Changes:
- [01/30] is new and adds the reworked PM macros.
- [12/30] now only modifies intel_soc_pmic_core.c since Andy updated
          the other file.
- [21/30] uses the new EXPORT_GPL_DEV_PM_OPS() macro instead of the
          trickery that was used before.
- [26/30] removes a CONFIG_PM wrapper around fields in private struct
- [27/30] removes a duplicated "const".
- [30/30] is new, and updates the intel-lpss driver.
- All patches: Reworded the last paragraph, hide the Cc's, remove
               the Cc to Bartlomiej's email address.

Cheers,
-Paul

Paul Cercueil (30):
  pm: Improve EXPORT_*_DEV_PM_OPS macros
  mfd: 88pm80x: Remove #ifdef guards for PM related functions
  mfd: aat2870: Remove #ifdef guards for PM related functions
  mfd: adp5520: Remove #ifdef guards for PM related functions
  mfd: max8925-i2c: Remove #ifdef guards for PM related functions
  mfd: mt6397-irq: Remove #ifdef guards for PM related functions
  mfd: pcf50633: Remove #ifdef guards for PM related functions
  mfd: rc5t583-irq: Remove #ifdef guards for PM related functions
  mfd: stpmic1: Remove #ifdef guards for PM related functions
  mfd: ucb1x00: Remove #ifdef guards for PM related functions
  mfd: 88pm860x: Remove #ifdef guards for PM related functions
  mfd: intel_soc_pmic: Remove #ifdef guards for PM related functions
  mfd: mcp-sa11x0: Remove #ifdef guards for PM related functions
  mfd: sec: Remove #ifdef guards for PM related functions
  mfd: sm501: Remove #ifdef guards for PM related functions
  mfd: tc6387xb: Remove #ifdef guards for PM related functions
  mfd: tps6586x: Remove #ifdef guards for PM related functions
  mfd: wm8994: Remove #ifdef guards for PM related functions
  mfd: max77620: Remove #ifdef guards for PM related functions
  mfd: t7l66xb: Remove #ifdef guards for PM related functions
  mfd: arizona: Remove #ifdef guards for PM related functions
  mfd: max14577: Remove #ifdef guards for PM related functions
  mfd: max77686: Remove #ifdef guards for PM related functions
  mfd: motorola-cpcap: Remove #ifdef guards for PM related functions
  mfd: sprd-sc27xx: Remove #ifdef guards for PM related functions
  mfd: stmfx: Remove #ifdef guards for PM related functions
  mfd: stmpe: Remove #ifdef guards for PM related functions
  mfd: tc3589x: Remove #ifdef guards for PM related functions
  mfd: tc6393xb: Remove #ifdef guards for PM related functions
  mfd: intel-lpss: Remove #ifdef guards for PM related functions

 drivers/mfd/88pm800.c             |  2 +-
 drivers/mfd/88pm805.c             |  2 +-
 drivers/mfd/88pm80x.c             |  5 +----
 drivers/mfd/88pm860x-core.c       |  6 ++---
 drivers/mfd/aat2870-core.c        |  8 +++----
 drivers/mfd/adp5520.c             |  6 ++---
 drivers/mfd/arizona-core.c        | 19 ++++++----------
 drivers/mfd/arizona-i2c.c         |  2 +-
 drivers/mfd/arizona-spi.c         |  2 +-
 drivers/mfd/intel-lpss-acpi.c     |  4 +---
 drivers/mfd/intel-lpss-pci.c      |  4 +---
 drivers/mfd/intel-lpss.c          | 15 ++++++++-----
 drivers/mfd/intel-lpss.h          | 28 +----------------------
 drivers/mfd/intel_soc_pmic_core.c |  8 +++----
 drivers/mfd/max14577.c            |  6 ++---
 drivers/mfd/max77620.c            |  9 +++-----
 drivers/mfd/max77686.c            |  6 ++---
 drivers/mfd/max8925-i2c.c         |  7 +++---
 drivers/mfd/mcp-sa11x0.c          |  6 +----
 drivers/mfd/motorola-cpcap.c      |  6 ++---
 drivers/mfd/mt6397-irq.c          |  6 +----
 drivers/mfd/pcf50633-core.c       | 22 +-----------------
 drivers/mfd/pcf50633-irq.c        | 13 ++++++-----
 drivers/mfd/rc5t583-irq.c         |  7 ++----
 drivers/mfd/sec-core.c            |  7 +++---
 drivers/mfd/sm501.c               | 10 ++-------
 drivers/mfd/sprd-sc27xx-spi.c     |  7 +++---
 drivers/mfd/stmfx.c               |  6 ++---
 drivers/mfd/stmpe-i2c.c           |  4 +---
 drivers/mfd/stmpe-spi.c           |  4 +---
 drivers/mfd/stmpe.c               |  8 ++-----
 drivers/mfd/stpmic1.c             |  6 ++---
 drivers/mfd/t7l66xb.c             |  9 ++------
 drivers/mfd/tc3589x.c             |  7 +++---
 drivers/mfd/tc6387xb.c            |  9 ++------
 drivers/mfd/tc6393xb.c            |  9 ++------
 drivers/mfd/tps6586x.c            |  6 +----
 drivers/mfd/ucb1x00-core.c        |  7 +++---
 drivers/mfd/wm8994-core.c         |  6 ++---
 include/linux/mfd/pcf50633/core.h |  6 ++---
 include/linux/mfd/stmfx.h         |  2 --
 include/linux/pm.h                | 37 +++++++++++++++++++------------
 include/linux/pm_runtime.h        | 20 ++++++++++-------
 43 files changed, 127 insertions(+), 242 deletions(-)

---
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: linux-pm <linux-pm@vger.kernel.org>
-- 
2.35.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-08-08 17:40 [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Paul Cercueil
@ 2022-08-08 17:40 ` Paul Cercueil
  2022-08-13 14:49   ` Jonathan Cameron
  2022-08-23 17:47   ` Rafael J. Wysocki
  2022-08-13 14:50 ` [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Jonathan Cameron
  1 sibling, 2 replies; 14+ messages in thread
From: Paul Cercueil @ 2022-08-08 17:40 UTC (permalink / raw)
  To: Lee Jones
  Cc: linux-kernel, Paul Cercueil, Jonathan Cameron,
	Rafael J . Wysocki, linux-pm

Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere
outside pm.h and pm_runtime.h, so it is safe to update it.

Before, this macro would take a few parameters to be used as sleep and
runtime callbacks. This made it unsuitable to use with different
callbacks, for instance the "noirq" ones.

It is now semantically different: instead of creating a conditionally
exported dev_pm_ops structure, it only contains part of the definition.

This macro should however never be used directly (hence the trailing
underscore). Instead, the following four macros are provided:
- EXPORT_DEV_PM_OPS(name)
- EXPORT_GPL_DEV_PM_OPS(name)
- EXPORT_NS_DEV_PM_OPS(name, ns)
- EXPORT_NS_GPL_DEV_PM_OPS(name, ns)

For instance, it is now possible to conditionally export noirq
suspend/resume PM functions like this:

EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
    NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
};

The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: linux-pm <linux-pm@vger.kernel.org>

 include/linux/pm.h         | 37 +++++++++++++++++++++++--------------
 include/linux/pm_runtime.h | 20 ++++++++++++--------
 2 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/include/linux/pm.h b/include/linux/pm.h
index 871c9c49ec9d..93cd34f00822 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \
 }
 
 #ifdef CONFIG_PM
-#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
-			   runtime_resume_fn, idle_fn, sec, ns)		\
-	_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
-			   runtime_resume_fn, idle_fn); \
-	__EXPORT_SYMBOL(name, sec, ns)
+#define _EXPORT_DEV_PM_OPS(name, sec, ns)				\
+	const struct dev_pm_ops name;					\
+	__EXPORT_SYMBOL(name, sec, ns);					\
+	const struct dev_pm_ops name
 #else
-#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
-			   runtime_resume_fn, idle_fn, sec, ns) \
-static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
-					 resume_fn, runtime_suspend_fn, \
-					 runtime_resume_fn, idle_fn)
+#define _EXPORT_DEV_PM_OPS(name, sec, ns)				\
+	static __maybe_unused const struct dev_pm_ops __static_##name
 #endif
 
+#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
+#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "")
+#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns)
+#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns)
+
 /*
  * Use this if you want to use the same suspend and resume callbacks for suspend
  * to RAM and hibernation.
@@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
 	_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL)
 
 #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
-	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "")
+	EXPORT_DEV_PM_OPS(name) = { \
+		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
+	}
 #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
-	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "")
+	EXPORT_GPL_DEV_PM_OPS(name) = { \
+		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
+	}
 #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
-	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns)
+	EXPORT_NS_DEV_PM_OPS(name, ns) = { \
+		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
+	}
 #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
-	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns)
+	EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
+		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
+	}
 
 /* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
 #define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
index 9e4d056967c6..ba2077d9e366 100644
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -40,17 +40,21 @@
 			   resume_fn, idle_fn)
 
 #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
-	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
-			   suspend_fn, resume_fn, idle_fn, "", "")
+	EXPORT_DEV_PM_OPS(name) = { \
+		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
+	}
 #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
-	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
-			   suspend_fn, resume_fn, idle_fn, "_gpl", "")
+	EXPORT_GPL_DEV_PM_OPS(name) = { \
+		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
+	}
 #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
-	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
-			   suspend_fn, resume_fn, idle_fn, "", #ns)
+	EXPORT_NS_DEV_PM_OPS(name, ns) = { \
+		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
+	}
 #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
-	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
-			   suspend_fn, resume_fn, idle_fn, "_gpl", #ns)
+	EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
+		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
+	}
 
 #ifdef CONFIG_PM
 extern struct workqueue_struct *pm_wq;
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-08-08 17:40 ` [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros Paul Cercueil
@ 2022-08-13 14:49   ` Jonathan Cameron
  2022-08-23 17:47   ` Rafael J. Wysocki
  1 sibling, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2022-08-13 14:49 UTC (permalink / raw)
  To: Paul Cercueil; +Cc: Lee Jones, linux-kernel, Rafael J . Wysocki, linux-pm

On Mon,  8 Aug 2022 19:40:38 +0200
Paul Cercueil <paul@crapouillou.net> wrote:

> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere
> outside pm.h and pm_runtime.h, so it is safe to update it.
> 
> Before, this macro would take a few parameters to be used as sleep and
> runtime callbacks. This made it unsuitable to use with different
> callbacks, for instance the "noirq" ones.
> 
> It is now semantically different: instead of creating a conditionally
> exported dev_pm_ops structure, it only contains part of the definition.
> 
> This macro should however never be used directly (hence the trailing
> underscore). Instead, the following four macros are provided:
> - EXPORT_DEV_PM_OPS(name)
> - EXPORT_GPL_DEV_PM_OPS(name)
> - EXPORT_NS_DEV_PM_OPS(name, ns)
> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> 
> For instance, it is now possible to conditionally export noirq
> suspend/resume PM functions like this:
> 
> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>     NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> };
> 
> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros.
> 
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Looks good to me and much nicer than me making the situation worse
as I did in the proposal to have a macro that took even more callbacks
as it's parameters.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> ---
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Rafael J. Wysocki <rafael@kernel.org>
> Cc: linux-pm <linux-pm@vger.kernel.org>
> 
>  include/linux/pm.h         | 37 +++++++++++++++++++++++--------------
>  include/linux/pm_runtime.h | 20 ++++++++++++--------
>  2 files changed, 35 insertions(+), 22 deletions(-)
> 
> diff --git a/include/linux/pm.h b/include/linux/pm.h
> index 871c9c49ec9d..93cd34f00822 100644
> --- a/include/linux/pm.h
> +++ b/include/linux/pm.h
> @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \
>  }
>  
>  #ifdef CONFIG_PM
> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -			   runtime_resume_fn, idle_fn, sec, ns)		\
> -	_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -			   runtime_resume_fn, idle_fn); \
> -	__EXPORT_SYMBOL(name, sec, ns)
> +#define _EXPORT_DEV_PM_OPS(name, sec, ns)				\
> +	const struct dev_pm_ops name;					\
> +	__EXPORT_SYMBOL(name, sec, ns);					\
> +	const struct dev_pm_ops name
>  #else
> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -			   runtime_resume_fn, idle_fn, sec, ns) \
> -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
> -					 resume_fn, runtime_suspend_fn, \
> -					 runtime_resume_fn, idle_fn)
> +#define _EXPORT_DEV_PM_OPS(name, sec, ns)				\
> +	static __maybe_unused const struct dev_pm_ops __static_##name
>  #endif
>  
> +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
> +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "")
> +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns)
> +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns)
> +
>  /*
>   * Use this if you want to use the same suspend and resume callbacks for suspend
>   * to RAM and hibernation.
> @@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
>  	_DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL)
>  
>  #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> -	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "")
> +	EXPORT_DEV_PM_OPS(name) = { \
> +		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +	}
>  #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> -	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "")
> +	EXPORT_GPL_DEV_PM_OPS(name) = { \
> +		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +	}
>  #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
> -	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns)
> +	EXPORT_NS_DEV_PM_OPS(name, ns) = { \
> +		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +	}
>  #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)	\
> -	_EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns)
> +	EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
> +		SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +	}
>  
>  /* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
>  #define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
> index 9e4d056967c6..ba2077d9e366 100644
> --- a/include/linux/pm_runtime.h
> +++ b/include/linux/pm_runtime.h
> @@ -40,17 +40,21 @@
>  			   resume_fn, idle_fn)
>  
>  #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
> -	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -			   suspend_fn, resume_fn, idle_fn, "", "")
> +	EXPORT_DEV_PM_OPS(name) = { \
> +		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +	}
>  #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
> -	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -			   suspend_fn, resume_fn, idle_fn, "_gpl", "")
> +	EXPORT_GPL_DEV_PM_OPS(name) = { \
> +		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +	}
>  #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
> -	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -			   suspend_fn, resume_fn, idle_fn, "", #ns)
> +	EXPORT_NS_DEV_PM_OPS(name, ns) = { \
> +		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +	}
>  #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
> -	_EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -			   suspend_fn, resume_fn, idle_fn, "_gpl", #ns)
> +	EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
> +		RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +	}
>  
>  #ifdef CONFIG_PM
>  extern struct workqueue_struct *pm_wq;


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions
  2022-08-08 17:40 [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Paul Cercueil
  2022-08-08 17:40 ` [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros Paul Cercueil
@ 2022-08-13 14:50 ` Jonathan Cameron
  1 sibling, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2022-08-13 14:50 UTC (permalink / raw)
  To: Paul Cercueil; +Cc: Lee Jones, linux-kernel, Rafael J . Wysocki, linux-pm

On Mon,  8 Aug 2022 19:40:37 +0200
Paul Cercueil <paul@crapouillou.net> wrote:

> Hi Lee,
> 
> Here's my revised patchset updated from the feedback I got in V1.
> This one is based on the current mfd-next-5.20.
> 
> I updated the PM macros in <linux/pm.h> and <linux/pm_runtime.h>, to
> make them more versatile. They now allow to conditionally export
> arbitrary dev_pm_ops structures. This is used in the "arizona" driver
> for instance, which has "noirq" callbacks.
> 
> I Cc'd Jonathan, whom might be interested by the PM patch to convert the
> IIO drivers to the new PM macros. Lee, if this patchset gets merged to
> the MFD tree, could you then create an immutable branch for Jonathan?

That would be much appreciated. Ideally the immutable branch would just
contain patch 1.  If it doesn't work out that way I can always pick up
the half dozen cases that would use the new infrastructure next cycle.

Thanks!

Jonathan
> 
> Changes:
> - [01/30] is new and adds the reworked PM macros.
> - [12/30] now only modifies intel_soc_pmic_core.c since Andy updated
>           the other file.
> - [21/30] uses the new EXPORT_GPL_DEV_PM_OPS() macro instead of the
>           trickery that was used before.
> - [26/30] removes a CONFIG_PM wrapper around fields in private struct
> - [27/30] removes a duplicated "const".
> - [30/30] is new, and updates the intel-lpss driver.
> - All patches: Reworded the last paragraph, hide the Cc's, remove
>                the Cc to Bartlomiej's email address.
> 
> Cheers,
> -Paul
> 
> Paul Cercueil (30):
>   pm: Improve EXPORT_*_DEV_PM_OPS macros
>   mfd: 88pm80x: Remove #ifdef guards for PM related functions
>   mfd: aat2870: Remove #ifdef guards for PM related functions
>   mfd: adp5520: Remove #ifdef guards for PM related functions
>   mfd: max8925-i2c: Remove #ifdef guards for PM related functions
>   mfd: mt6397-irq: Remove #ifdef guards for PM related functions
>   mfd: pcf50633: Remove #ifdef guards for PM related functions
>   mfd: rc5t583-irq: Remove #ifdef guards for PM related functions
>   mfd: stpmic1: Remove #ifdef guards for PM related functions
>   mfd: ucb1x00: Remove #ifdef guards for PM related functions
>   mfd: 88pm860x: Remove #ifdef guards for PM related functions
>   mfd: intel_soc_pmic: Remove #ifdef guards for PM related functions
>   mfd: mcp-sa11x0: Remove #ifdef guards for PM related functions
>   mfd: sec: Remove #ifdef guards for PM related functions
>   mfd: sm501: Remove #ifdef guards for PM related functions
>   mfd: tc6387xb: Remove #ifdef guards for PM related functions
>   mfd: tps6586x: Remove #ifdef guards for PM related functions
>   mfd: wm8994: Remove #ifdef guards for PM related functions
>   mfd: max77620: Remove #ifdef guards for PM related functions
>   mfd: t7l66xb: Remove #ifdef guards for PM related functions
>   mfd: arizona: Remove #ifdef guards for PM related functions
>   mfd: max14577: Remove #ifdef guards for PM related functions
>   mfd: max77686: Remove #ifdef guards for PM related functions
>   mfd: motorola-cpcap: Remove #ifdef guards for PM related functions
>   mfd: sprd-sc27xx: Remove #ifdef guards for PM related functions
>   mfd: stmfx: Remove #ifdef guards for PM related functions
>   mfd: stmpe: Remove #ifdef guards for PM related functions
>   mfd: tc3589x: Remove #ifdef guards for PM related functions
>   mfd: tc6393xb: Remove #ifdef guards for PM related functions
>   mfd: intel-lpss: Remove #ifdef guards for PM related functions
> 
>  drivers/mfd/88pm800.c             |  2 +-
>  drivers/mfd/88pm805.c             |  2 +-
>  drivers/mfd/88pm80x.c             |  5 +----
>  drivers/mfd/88pm860x-core.c       |  6 ++---
>  drivers/mfd/aat2870-core.c        |  8 +++----
>  drivers/mfd/adp5520.c             |  6 ++---
>  drivers/mfd/arizona-core.c        | 19 ++++++----------
>  drivers/mfd/arizona-i2c.c         |  2 +-
>  drivers/mfd/arizona-spi.c         |  2 +-
>  drivers/mfd/intel-lpss-acpi.c     |  4 +---
>  drivers/mfd/intel-lpss-pci.c      |  4 +---
>  drivers/mfd/intel-lpss.c          | 15 ++++++++-----
>  drivers/mfd/intel-lpss.h          | 28 +----------------------
>  drivers/mfd/intel_soc_pmic_core.c |  8 +++----
>  drivers/mfd/max14577.c            |  6 ++---
>  drivers/mfd/max77620.c            |  9 +++-----
>  drivers/mfd/max77686.c            |  6 ++---
>  drivers/mfd/max8925-i2c.c         |  7 +++---
>  drivers/mfd/mcp-sa11x0.c          |  6 +----
>  drivers/mfd/motorola-cpcap.c      |  6 ++---
>  drivers/mfd/mt6397-irq.c          |  6 +----
>  drivers/mfd/pcf50633-core.c       | 22 +-----------------
>  drivers/mfd/pcf50633-irq.c        | 13 ++++++-----
>  drivers/mfd/rc5t583-irq.c         |  7 ++----
>  drivers/mfd/sec-core.c            |  7 +++---
>  drivers/mfd/sm501.c               | 10 ++-------
>  drivers/mfd/sprd-sc27xx-spi.c     |  7 +++---
>  drivers/mfd/stmfx.c               |  6 ++---
>  drivers/mfd/stmpe-i2c.c           |  4 +---
>  drivers/mfd/stmpe-spi.c           |  4 +---
>  drivers/mfd/stmpe.c               |  8 ++-----
>  drivers/mfd/stpmic1.c             |  6 ++---
>  drivers/mfd/t7l66xb.c             |  9 ++------
>  drivers/mfd/tc3589x.c             |  7 +++---
>  drivers/mfd/tc6387xb.c            |  9 ++------
>  drivers/mfd/tc6393xb.c            |  9 ++------
>  drivers/mfd/tps6586x.c            |  6 +----
>  drivers/mfd/ucb1x00-core.c        |  7 +++---
>  drivers/mfd/wm8994-core.c         |  6 ++---
>  include/linux/mfd/pcf50633/core.h |  6 ++---
>  include/linux/mfd/stmfx.h         |  2 --
>  include/linux/pm.h                | 37 +++++++++++++++++++------------
>  include/linux/pm_runtime.h        | 20 ++++++++++-------
>  43 files changed, 127 insertions(+), 242 deletions(-)
> 
> ---
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Rafael J. Wysocki <rafael@kernel.org>
> Cc: linux-pm <linux-pm@vger.kernel.org>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-08-08 17:40 ` [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros Paul Cercueil
  2022-08-13 14:49   ` Jonathan Cameron
@ 2022-08-23 17:47   ` Rafael J. Wysocki
  2022-08-25 22:42     ` Paul Cercueil
  1 sibling, 1 reply; 14+ messages in thread
From: Rafael J. Wysocki @ 2022-08-23 17:47 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Lee Jones, Linux Kernel Mailing List, Jonathan Cameron,
	Rafael J . Wysocki, linux-pm

On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
> Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used anywhere
> outside pm.h and pm_runtime.h, so it is safe to update it.
>
> Before, this macro would take a few parameters to be used as sleep and
> runtime callbacks. This made it unsuitable to use with different
> callbacks, for instance the "noirq" ones.
>
> It is now semantically different: instead of creating a conditionally
> exported dev_pm_ops structure, it only contains part of the definition.
>
> This macro should however never be used directly (hence the trailing
> underscore). Instead, the following four macros are provided:
> - EXPORT_DEV_PM_OPS(name)
> - EXPORT_GPL_DEV_PM_OPS(name)
> - EXPORT_NS_DEV_PM_OPS(name, ns)
> - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
>
> For instance, it is now possible to conditionally export noirq
> suspend/resume PM functions like this:
>
> EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>     NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> };
>
> The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new macros.
>
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

or please let me know if you need me to pick up this one.

> ---
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Rafael J. Wysocki <rafael@kernel.org>
> Cc: linux-pm <linux-pm@vger.kernel.org>
>
>  include/linux/pm.h         | 37 +++++++++++++++++++++++--------------
>  include/linux/pm_runtime.h | 20 ++++++++++++--------
>  2 files changed, 35 insertions(+), 22 deletions(-)
>
> diff --git a/include/linux/pm.h b/include/linux/pm.h
> index 871c9c49ec9d..93cd34f00822 100644
> --- a/include/linux/pm.h
> +++ b/include/linux/pm.h
> @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \
>  }
>
>  #ifdef CONFIG_PM
> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -                          runtime_resume_fn, idle_fn, sec, ns)         \
> -       _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -                          runtime_resume_fn, idle_fn); \
> -       __EXPORT_SYMBOL(name, sec, ns)
> +#define _EXPORT_DEV_PM_OPS(name, sec, ns)                              \
> +       const struct dev_pm_ops name;                                   \
> +       __EXPORT_SYMBOL(name, sec, ns);                                 \
> +       const struct dev_pm_ops name
>  #else
> -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, runtime_suspend_fn, \
> -                          runtime_resume_fn, idle_fn, sec, ns) \
> -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
> -                                        resume_fn, runtime_suspend_fn, \
> -                                        runtime_resume_fn, idle_fn)
> +#define _EXPORT_DEV_PM_OPS(name, sec, ns)                              \
> +       static __maybe_unused const struct dev_pm_ops __static_##name
>  #endif
>
> +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
> +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "_gpl", "")
> +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "", #ns)
> +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, "_gpl", #ns)
> +
>  /*
>   * Use this if you want to use the same suspend and resume callbacks for suspend
>   * to RAM and hibernation.
> @@ -399,13 +400,21 @@ static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
>         _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL)
>
>  #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", "")
> +       EXPORT_DEV_PM_OPS(name) = { \
> +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +       }
>  #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", "")
> +       EXPORT_GPL_DEV_PM_OPS(name) = { \
> +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +       }
>  #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)   \
> -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "", #ns)
> +       EXPORT_NS_DEV_PM_OPS(name, ns) = { \
> +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +       }
>  #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, ns)       \
> -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL, "_gpl", #ns)
> +       EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
> +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
> +       }
>
>  /* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
>  #define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
> diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
> index 9e4d056967c6..ba2077d9e366 100644
> --- a/include/linux/pm_runtime.h
> +++ b/include/linux/pm_runtime.h
> @@ -40,17 +40,21 @@
>                            resume_fn, idle_fn)
>
>  #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
> -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -                          suspend_fn, resume_fn, idle_fn, "", "")
> +       EXPORT_DEV_PM_OPS(name) = { \
> +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +       }
>  #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn) \
> -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -                          suspend_fn, resume_fn, idle_fn, "_gpl", "")
> +       EXPORT_GPL_DEV_PM_OPS(name) = { \
> +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +       }
>  #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
> -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -                          suspend_fn, resume_fn, idle_fn, "", #ns)
> +       EXPORT_NS_DEV_PM_OPS(name, ns) = { \
> +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +       }
>  #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, idle_fn, ns) \
> -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, pm_runtime_force_resume, \
> -                          suspend_fn, resume_fn, idle_fn, "_gpl", #ns)
> +       EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
> +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
> +       }
>
>  #ifdef CONFIG_PM
>  extern struct workqueue_struct *pm_wq;
> --
> 2.35.1
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-08-23 17:47   ` Rafael J. Wysocki
@ 2022-08-25 22:42     ` Paul Cercueil
  2022-09-25 14:52       ` Jonathan Cameron
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Cercueil @ 2022-08-25 22:42 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Lee Jones, Linux Kernel Mailing List, Jonathan Cameron, linux-pm

Hi Rafael,

Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki 
<rafael@kernel.org> a écrit :
> On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> 
> wrote:
>> 
>>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used 
>> anywhere
>>  outside pm.h and pm_runtime.h, so it is safe to update it.
>> 
>>  Before, this macro would take a few parameters to be used as sleep 
>> and
>>  runtime callbacks. This made it unsuitable to use with different
>>  callbacks, for instance the "noirq" ones.
>> 
>>  It is now semantically different: instead of creating a 
>> conditionally
>>  exported dev_pm_ops structure, it only contains part of the 
>> definition.
>> 
>>  This macro should however never be used directly (hence the trailing
>>  underscore). Instead, the following four macros are provided:
>>  - EXPORT_DEV_PM_OPS(name)
>>  - EXPORT_GPL_DEV_PM_OPS(name)
>>  - EXPORT_NS_DEV_PM_OPS(name, ns)
>>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
>> 
>>  For instance, it is now possible to conditionally export noirq
>>  suspend/resume PM functions like this:
>> 
>>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
>>  };
>> 
>>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
>>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new 
>> macros.
>> 
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> 
> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> or please let me know if you need me to pick up this one.

Could you pick this one up then, and make a branch for Jonathan?

Cheers,
-Paul

> 
>>  ---
>>  Cc: Jonathan Cameron <jic23@kernel.org>
>>  Cc: Rafael J. Wysocki <rafael@kernel.org>
>>  Cc: linux-pm <linux-pm@vger.kernel.org>
>> 
>>   include/linux/pm.h         | 37 
>> +++++++++++++++++++++++--------------
>>   include/linux/pm_runtime.h | 20 ++++++++++++--------
>>   2 files changed, 35 insertions(+), 22 deletions(-)
>> 
>>  diff --git a/include/linux/pm.h b/include/linux/pm.h
>>  index 871c9c49ec9d..93cd34f00822 100644
>>  --- a/include/linux/pm.h
>>  +++ b/include/linux/pm.h
>>  @@ -375,19 +375,20 @@ const struct dev_pm_ops name = { \
>>   }
>> 
>>   #ifdef CONFIG_PM
>>  -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> runtime_suspend_fn, \
>>  -                          runtime_resume_fn, idle_fn, sec, ns)     
>>     \
>>  -       _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> runtime_suspend_fn, \
>>  -                          runtime_resume_fn, idle_fn); \
>>  -       __EXPORT_SYMBOL(name, sec, ns)
>>  +#define _EXPORT_DEV_PM_OPS(name, sec, ns)                          
>>     \
>>  +       const struct dev_pm_ops name;                               
>>     \
>>  +       __EXPORT_SYMBOL(name, sec, ns);                             
>>     \
>>  +       const struct dev_pm_ops name
>>   #else
>>  -#define _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> runtime_suspend_fn, \
>>  -                          runtime_resume_fn, idle_fn, sec, ns) \
>>  -static __maybe_unused _DEFINE_DEV_PM_OPS(__static_##name, 
>> suspend_fn, \
>>  -                                        resume_fn, 
>> runtime_suspend_fn, \
>>  -                                        runtime_resume_fn, idle_fn)
>>  +#define _EXPORT_DEV_PM_OPS(name, sec, ns)                          
>>     \
>>  +       static __maybe_unused const struct dev_pm_ops 
>> __static_##name
>>   #endif
>> 
>>  +#define EXPORT_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, "", "")
>>  +#define EXPORT_GPL_DEV_PM_OPS(name) _EXPORT_DEV_PM_OPS(name, 
>> "_gpl", "")
>>  +#define EXPORT_NS_DEV_PM_OPS(name, ns) _EXPORT_DEV_PM_OPS(name, 
>> "", #ns)
>>  +#define EXPORT_NS_GPL_DEV_PM_OPS(name, ns) 
>> _EXPORT_DEV_PM_OPS(name, "_gpl", #ns)
>>  +
>>   /*
>>    * Use this if you want to use the same suspend and resume 
>> callbacks for suspend
>>    * to RAM and hibernation.
>>  @@ -399,13 +400,21 @@ static __maybe_unused 
>> _DEFINE_DEV_PM_OPS(__static_##name, suspend_fn, \
>>          _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, 
>> NULL)
>> 
>>   #define EXPORT_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
>>  -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, 
>> NULL, "", "")
>>  +       EXPORT_DEV_PM_OPS(name) = { \
>>  +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  +       }
>>   #define EXPORT_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
>>  -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, 
>> NULL, "_gpl", "")
>>  +       EXPORT_GPL_DEV_PM_OPS(name) = { \
>>  +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  +       }
>>   #define EXPORT_NS_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> ns)   \
>>  -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, 
>> NULL, "", #ns)
>>  +       EXPORT_NS_DEV_PM_OPS(name, ns) = { \
>>  +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  +       }
>>   #define EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS(name, suspend_fn, 
>> resume_fn, ns)       \
>>  -       _EXPORT_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, 
>> NULL, "_gpl", #ns)
>>  +       EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
>>  +               SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
>>  +       }
>> 
>>   /* Deprecated. Use DEFINE_SIMPLE_DEV_PM_OPS() instead. */
>>   #define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
>>  diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
>>  index 9e4d056967c6..ba2077d9e366 100644
>>  --- a/include/linux/pm_runtime.h
>>  +++ b/include/linux/pm_runtime.h
>>  @@ -40,17 +40,21 @@
>>                             resume_fn, idle_fn)
>> 
>>   #define EXPORT_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> idle_fn) \
>>  -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, 
>> pm_runtime_force_resume, \
>>  -                          suspend_fn, resume_fn, idle_fn, "", "")
>>  +       EXPORT_DEV_PM_OPS(name) = { \
>>  +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
>>  +       }
>>   #define EXPORT_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> idle_fn) \
>>  -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, 
>> pm_runtime_force_resume, \
>>  -                          suspend_fn, resume_fn, idle_fn, "_gpl", 
>> "")
>>  +       EXPORT_GPL_DEV_PM_OPS(name) = { \
>>  +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
>>  +       }
>>   #define EXPORT_NS_RUNTIME_DEV_PM_OPS(name, suspend_fn, resume_fn, 
>> idle_fn, ns) \
>>  -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, 
>> pm_runtime_force_resume, \
>>  -                          suspend_fn, resume_fn, idle_fn, "", #ns)
>>  +       EXPORT_NS_DEV_PM_OPS(name, ns) = { \
>>  +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
>>  +       }
>>   #define EXPORT_NS_GPL_RUNTIME_DEV_PM_OPS(name, suspend_fn, 
>> resume_fn, idle_fn, ns) \
>>  -       _EXPORT_DEV_PM_OPS(name, pm_runtime_force_suspend, 
>> pm_runtime_force_resume, \
>>  -                          suspend_fn, resume_fn, idle_fn, "_gpl", 
>> #ns)
>>  +       EXPORT_NS_GPL_DEV_PM_OPS(name, ns) = { \
>>  +               RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
>>  +       }
>> 
>>   #ifdef CONFIG_PM
>>   extern struct workqueue_struct *pm_wq;
>>  --
>>  2.35.1
>> 



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-08-25 22:42     ` Paul Cercueil
@ 2022-09-25 14:52       ` Jonathan Cameron
  2022-09-26 12:00         ` Rafael J. Wysocki
  0 siblings, 1 reply; 14+ messages in thread
From: Jonathan Cameron @ 2022-09-25 14:52 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Rafael J. Wysocki, Lee Jones, Linux Kernel Mailing List, linux-pm

On Thu, 25 Aug 2022 23:42:53 +0100
Paul Cercueil <paul@crapouillou.net> wrote:

> Hi Rafael,
> 
> Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki 
> <rafael@kernel.org> a écrit :
> > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net> 
> > wrote:  
> >> 
> >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used 
> >> anywhere
> >>  outside pm.h and pm_runtime.h, so it is safe to update it.
> >> 
> >>  Before, this macro would take a few parameters to be used as sleep 
> >> and
> >>  runtime callbacks. This made it unsuitable to use with different
> >>  callbacks, for instance the "noirq" ones.
> >> 
> >>  It is now semantically different: instead of creating a 
> >> conditionally
> >>  exported dev_pm_ops structure, it only contains part of the 
> >> definition.
> >> 
> >>  This macro should however never be used directly (hence the trailing
> >>  underscore). Instead, the following four macros are provided:
> >>  - EXPORT_DEV_PM_OPS(name)
> >>  - EXPORT_GPL_DEV_PM_OPS(name)
> >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
> >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> >> 
> >>  For instance, it is now possible to conditionally export noirq
> >>  suspend/resume PM functions like this:
> >> 
> >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
> >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> >>  };
> >> 
> >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new 
> >> macros.
> >> 
> >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>  
> > 
> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > 
> > or please let me know if you need me to pick up this one.  
> 
> Could you pick this one up then, and make a branch for Jonathan?

Hi Paul, Rafael,

What happened to this in the end?  I can't immediately find it on 
any of the pm git tree branches.

At this stage in the cycle it would be great if this patch at least
makes the merge window, so we can make use of it next cycle.

Thanks,

Jonathan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-09-25 14:52       ` Jonathan Cameron
@ 2022-09-26 12:00         ` Rafael J. Wysocki
  2022-09-26 13:27           ` Paul Cercueil
  0 siblings, 1 reply; 14+ messages in thread
From: Rafael J. Wysocki @ 2022-09-26 12:00 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Paul Cercueil, Rafael J. Wysocki, Lee Jones,
	Linux Kernel Mailing List, linux-pm

On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org> wrote:
>
> On Thu, 25 Aug 2022 23:42:53 +0100
> Paul Cercueil <paul@crapouillou.net> wrote:
>
> > Hi Rafael,
> >
> > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
> > <rafael@kernel.org> a écrit :
> > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil <paul@crapouillou.net>
> > > wrote:
> > >>
> > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not used
> > >> anywhere
> > >>  outside pm.h and pm_runtime.h, so it is safe to update it.
> > >>
> > >>  Before, this macro would take a few parameters to be used as sleep
> > >> and
> > >>  runtime callbacks. This made it unsuitable to use with different
> > >>  callbacks, for instance the "noirq" ones.
> > >>
> > >>  It is now semantically different: instead of creating a
> > >> conditionally
> > >>  exported dev_pm_ops structure, it only contains part of the
> > >> definition.
> > >>
> > >>  This macro should however never be used directly (hence the trailing
> > >>  underscore). Instead, the following four macros are provided:
> > >>  - EXPORT_DEV_PM_OPS(name)
> > >>  - EXPORT_GPL_DEV_PM_OPS(name)
> > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
> > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> > >>
> > >>  For instance, it is now possible to conditionally export noirq
> > >>  suspend/resume PM functions like this:
> > >>
> > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
> > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> > >>  };
> > >>
> > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these new
> > >> macros.
> > >>
> > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> > >
> > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > >
> > > or please let me know if you need me to pick up this one.
> >
> > Could you pick this one up then, and make a branch for Jonathan?
>
> Hi Paul, Rafael,
>
> What happened to this in the end?  I can't immediately find it on
> any of the pm git tree branches.
>
> At this stage in the cycle it would be great if this patch at least
> makes the merge window, so we can make use of it next cycle.

I thought that this would go in along with the other patches in the series.

I can apply it directly, though, if needed.

Thanks!

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-09-26 12:00         ` Rafael J. Wysocki
@ 2022-09-26 13:27           ` Paul Cercueil
  2022-09-26 13:35             ` Rafael J. Wysocki
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Cercueil @ 2022-09-26 13:27 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jonathan Cameron, Lee Jones, Linux Kernel Mailing List, linux-pm

Hi,

Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki 
<rafael@kernel.org> a écrit :
> On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org> 
> wrote:
>> 
>>  On Thu, 25 Aug 2022 23:42:53 +0100
>>  Paul Cercueil <paul@crapouillou.net> wrote:
>> 
>>  > Hi Rafael,
>>  >
>>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
>>  > <rafael@kernel.org> a écrit :
>>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil 
>> <paul@crapouillou.net>
>>  > > wrote:
>>  > >>
>>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not 
>> used
>>  > >> anywhere
>>  > >>  outside pm.h and pm_runtime.h, so it is safe to update it.
>>  > >>
>>  > >>  Before, this macro would take a few parameters to be used as 
>> sleep
>>  > >> and
>>  > >>  runtime callbacks. This made it unsuitable to use with 
>> different
>>  > >>  callbacks, for instance the "noirq" ones.
>>  > >>
>>  > >>  It is now semantically different: instead of creating a
>>  > >> conditionally
>>  > >>  exported dev_pm_ops structure, it only contains part of the
>>  > >> definition.
>>  > >>
>>  > >>  This macro should however never be used directly (hence the 
>> trailing
>>  > >>  underscore). Instead, the following four macros are provided:
>>  > >>  - EXPORT_DEV_PM_OPS(name)
>>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
>>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
>>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
>>  > >>
>>  > >>  For instance, it is now possible to conditionally export noirq
>>  > >>  suspend/resume PM functions like this:
>>  > >>
>>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
>>  > >>  };
>>  > >>
>>  > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
>>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these 
>> new
>>  > >> macros.
>>  > >>
>>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  > >
>>  > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>>  > >
>>  > > or please let me know if you need me to pick up this one.
>>  >
>>  > Could you pick this one up then, and make a branch for Jonathan?
>> 
>>  Hi Paul, Rafael,
>> 
>>  What happened to this in the end?  I can't immediately find it on
>>  any of the pm git tree branches.
>> 
>>  At this stage in the cycle it would be great if this patch at least
>>  makes the merge window, so we can make use of it next cycle.
> 
> I thought that this would go in along with the other patches in the 
> series.
> 
> I can apply it directly, though, if needed.
> 
> Thanks!

I think at this point Jonathan can just take it in his tree with his 
own patchset. Then I'll rebase this patchset on v6.1-rc1.

Cheers,
-Paul



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-09-26 13:27           ` Paul Cercueil
@ 2022-09-26 13:35             ` Rafael J. Wysocki
  2022-10-01 17:01               ` Jonathan Cameron
  0 siblings, 1 reply; 14+ messages in thread
From: Rafael J. Wysocki @ 2022-09-26 13:35 UTC (permalink / raw)
  To: Paul Cercueil, Jonathan Cameron
  Cc: Lee Jones, Linux Kernel Mailing List, linux-pm

On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
> Hi,
>
> Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki
> <rafael@kernel.org> a écrit :
> > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org>
> > wrote:
> >>
> >>  On Thu, 25 Aug 2022 23:42:53 +0100
> >>  Paul Cercueil <paul@crapouillou.net> wrote:
> >>
> >>  > Hi Rafael,
> >>  >
> >>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
> >>  > <rafael@kernel.org> a écrit :
> >>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil
> >> <paul@crapouillou.net>
> >>  > > wrote:
> >>  > >>
> >>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not
> >> used
> >>  > >> anywhere
> >>  > >>  outside pm.h and pm_runtime.h, so it is safe to update it.
> >>  > >>
> >>  > >>  Before, this macro would take a few parameters to be used as
> >> sleep
> >>  > >> and
> >>  > >>  runtime callbacks. This made it unsuitable to use with
> >> different
> >>  > >>  callbacks, for instance the "noirq" ones.
> >>  > >>
> >>  > >>  It is now semantically different: instead of creating a
> >>  > >> conditionally
> >>  > >>  exported dev_pm_ops structure, it only contains part of the
> >>  > >> definition.
> >>  > >>
> >>  > >>  This macro should however never be used directly (hence the
> >> trailing
> >>  > >>  underscore). Instead, the following four macros are provided:
> >>  > >>  - EXPORT_DEV_PM_OPS(name)
> >>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
> >>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
> >>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> >>  > >>
> >>  > >>  For instance, it is now possible to conditionally export noirq
> >>  > >>  suspend/resume PM functions like this:
> >>  > >>
> >>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
> >>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> >>  > >>  };
> >>  > >>
> >>  > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> >>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these
> >> new
> >>  > >> macros.
> >>  > >>
> >>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> >>  > >
> >>  > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >>  > >
> >>  > > or please let me know if you need me to pick up this one.
> >>  >
> >>  > Could you pick this one up then, and make a branch for Jonathan?
> >>
> >>  Hi Paul, Rafael,
> >>
> >>  What happened to this in the end?  I can't immediately find it on
> >>  any of the pm git tree branches.
> >>
> >>  At this stage in the cycle it would be great if this patch at least
> >>  makes the merge window, so we can make use of it next cycle.
> >
> > I thought that this would go in along with the other patches in the
> > series.
> >
> > I can apply it directly, though, if needed.
> >
> > Thanks!
>
> I think at this point Jonathan can just take it in his tree with his
> own patchset. Then I'll rebase this patchset on v6.1-rc1.

Sure.

Jonathan, please go ahead and take the patch directly.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-09-26 13:35             ` Rafael J. Wysocki
@ 2022-10-01 17:01               ` Jonathan Cameron
  2022-10-02 11:18                 ` Paul Cercueil
  0 siblings, 1 reply; 14+ messages in thread
From: Jonathan Cameron @ 2022-10-01 17:01 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Paul Cercueil, Lee Jones, Linux Kernel Mailing List, linux-pm

On Mon, 26 Sep 2022 15:35:35 +0200
"Rafael J. Wysocki" <rafael@kernel.org> wrote:

> On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil <paul@crapouillou.net> wrote:
> >
> > Hi,
> >
> > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki
> > <rafael@kernel.org> a écrit :  
> > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron <jic23@kernel.org>
> > > wrote:  
> > >>
> > >>  On Thu, 25 Aug 2022 23:42:53 +0100
> > >>  Paul Cercueil <paul@crapouillou.net> wrote:
> > >>  
> > >>  > Hi Rafael,
> > >>  >
> > >>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
> > >>  > <rafael@kernel.org> a écrit :  
> > >>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil  
> > >> <paul@crapouillou.net>  
> > >>  > > wrote:  
> > >>  > >>
> > >>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was not  
> > >> used  
> > >>  > >> anywhere
> > >>  > >>  outside pm.h and pm_runtime.h, so it is safe to update it.
> > >>  > >>
> > >>  > >>  Before, this macro would take a few parameters to be used as  
> > >> sleep  
> > >>  > >> and
> > >>  > >>  runtime callbacks. This made it unsuitable to use with  
> > >> different  
> > >>  > >>  callbacks, for instance the "noirq" ones.
> > >>  > >>
> > >>  > >>  It is now semantically different: instead of creating a
> > >>  > >> conditionally
> > >>  > >>  exported dev_pm_ops structure, it only contains part of the
> > >>  > >> definition.
> > >>  > >>
> > >>  > >>  This macro should however never be used directly (hence the  
> > >> trailing  
> > >>  > >>  underscore). Instead, the following four macros are provided:
> > >>  > >>  - EXPORT_DEV_PM_OPS(name)
> > >>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
> > >>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
> > >>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> > >>  > >>
> > >>  > >>  For instance, it is now possible to conditionally export noirq
> > >>  > >>  suspend/resume PM functions like this:
> > >>  > >>
> > >>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
> > >>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> > >>  > >>  };
> > >>  > >>
> > >>  > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() and
> > >>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use these  
> > >> new  
> > >>  > >> macros.
> > >>  > >>
> > >>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>  
> > >>  > >
> > >>  > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > >>  > >
> > >>  > > or please let me know if you need me to pick up this one.  
> > >>  >
> > >>  > Could you pick this one up then, and make a branch for Jonathan?  
> > >>
> > >>  Hi Paul, Rafael,
> > >>
> > >>  What happened to this in the end?  I can't immediately find it on
> > >>  any of the pm git tree branches.
> > >>
> > >>  At this stage in the cycle it would be great if this patch at least
> > >>  makes the merge window, so we can make use of it next cycle.  
> > >
> > > I thought that this would go in along with the other patches in the
> > > series.
> > >
> > > I can apply it directly, though, if needed.
> > >
> > > Thanks!  
> >
> > I think at this point Jonathan can just take it in his tree with his
> > own patchset. Then I'll rebase this patchset on v6.1-rc1.  
> 
> Sure.
> 
> Jonathan, please go ahead and take the patch directly.

Too late for me to take this for this cycle (I route via Greg KH so need to have things
in place a little bit before the merge window).  If Lee doesn't pick it up, I'll do an
immutable branch after rc1 is out with just this patch on it, then anyone who wants
it can pick it up.

Thanks,

Jonathan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-10-01 17:01               ` Jonathan Cameron
@ 2022-10-02 11:18                 ` Paul Cercueil
  2022-10-04 18:54                   ` Rafael J. Wysocki
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Cercueil @ 2022-10-02 11:18 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jonathan Cameron, Lee Jones, Linux Kernel Mailing List, linux-pm



Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron 
<jic23@kernel.org> a écrit :
> On Mon, 26 Sep 2022 15:35:35 +0200
> "Rafael J. Wysocki" <rafael@kernel.org> wrote:
> 
>>  On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil 
>> <paul@crapouillou.net> wrote:
>>  >
>>  > Hi,
>>  >
>>  > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki
>>  > <rafael@kernel.org> a écrit :
>>  > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron 
>> <jic23@kernel.org>
>>  > > wrote:
>>  > >>
>>  > >>  On Thu, 25 Aug 2022 23:42:53 +0100
>>  > >>  Paul Cercueil <paul@crapouillou.net> wrote:
>>  > >>
>>  > >>  > Hi Rafael,
>>  > >>  >
>>  > >>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
>>  > >>  > <rafael@kernel.org> a écrit :
>>  > >>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil
>>  > >> <paul@crapouillou.net>
>>  > >>  > > wrote:
>>  > >>  > >>
>>  > >>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was 
>> not
>>  > >> used
>>  > >>  > >> anywhere
>>  > >>  > >>  outside pm.h and pm_runtime.h, so it is safe to update 
>> it.
>>  > >>  > >>
>>  > >>  > >>  Before, this macro would take a few parameters to be 
>> used as
>>  > >> sleep
>>  > >>  > >> and
>>  > >>  > >>  runtime callbacks. This made it unsuitable to use with
>>  > >> different
>>  > >>  > >>  callbacks, for instance the "noirq" ones.
>>  > >>  > >>
>>  > >>  > >>  It is now semantically different: instead of creating a
>>  > >>  > >> conditionally
>>  > >>  > >>  exported dev_pm_ops structure, it only contains part of 
>> the
>>  > >>  > >> definition.
>>  > >>  > >>
>>  > >>  > >>  This macro should however never be used directly (hence 
>> the
>>  > >> trailing
>>  > >>  > >>  underscore). Instead, the following four macros are 
>> provided:
>>  > >>  > >>  - EXPORT_DEV_PM_OPS(name)
>>  > >>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
>>  > >>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
>>  > >>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
>>  > >>  > >>
>>  > >>  > >>  For instance, it is now possible to conditionally 
>> export noirq
>>  > >>  > >>  suspend/resume PM functions like this:
>>  > >>  > >>
>>  > >>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>>  > >>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
>>  > >>  > >>  };
>>  > >>  > >>
>>  > >>  > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS() 
>> and
>>  > >>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use 
>> these
>>  > >> new
>>  > >>  > >> macros.
>>  > >>  > >>
>>  > >>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  > >>  > >
>>  > >>  > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>>  > >>  > >
>>  > >>  > > or please let me know if you need me to pick up this one.
>>  > >>  >
>>  > >>  > Could you pick this one up then, and make a branch for 
>> Jonathan?
>>  > >>
>>  > >>  Hi Paul, Rafael,
>>  > >>
>>  > >>  What happened to this in the end?  I can't immediately find 
>> it on
>>  > >>  any of the pm git tree branches.
>>  > >>
>>  > >>  At this stage in the cycle it would be great if this patch at 
>> least
>>  > >>  makes the merge window, so we can make use of it next cycle.
>>  > >
>>  > > I thought that this would go in along with the other patches in 
>> the
>>  > > series.
>>  > >
>>  > > I can apply it directly, though, if needed.
>>  > >
>>  > > Thanks!
>>  >
>>  > I think at this point Jonathan can just take it in his tree with 
>> his
>>  > own patchset. Then I'll rebase this patchset on v6.1-rc1.
>> 
>>  Sure.
>> 
>>  Jonathan, please go ahead and take the patch directly.
> 
> Too late for me to take this for this cycle (I route via Greg KH so 
> need to have things
> in place a little bit before the merge window).  If Lee doesn't pick 
> it up, I'll do an
> immutable branch after rc1 is out with just this patch on it, then 
> anyone who wants
> it can pick it up.

Rafael or Lee, can you take it now?

Or is it already too late? :(

-Paul



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-10-02 11:18                 ` Paul Cercueil
@ 2022-10-04 18:54                   ` Rafael J. Wysocki
  2022-10-04 19:12                     ` Paul Cercueil
  0 siblings, 1 reply; 14+ messages in thread
From: Rafael J. Wysocki @ 2022-10-04 18:54 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Rafael J. Wysocki, Jonathan Cameron, Lee Jones,
	Linux Kernel Mailing List, linux-pm

On Sun, Oct 2, 2022 at 1:18 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
>
>
> Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron
> <jic23@kernel.org> a écrit :
> > On Mon, 26 Sep 2022 15:35:35 +0200
> > "Rafael J. Wysocki" <rafael@kernel.org> wrote:
> >
> >>  On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil
> >> <paul@crapouillou.net> wrote:
> >>  >
> >>  > Hi,
> >>  >
> >>  > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki
> >>  > <rafael@kernel.org> a écrit :
> >>  > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron
> >> <jic23@kernel.org>
> >>  > > wrote:
> >>  > >>
> >>  > >>  On Thu, 25 Aug 2022 23:42:53 +0100
> >>  > >>  Paul Cercueil <paul@crapouillou.net> wrote:
> >>  > >>
> >>  > >>  > Hi Rafael,
> >>  > >>  >
> >>  > >>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. Wysocki
> >>  > >>  > <rafael@kernel.org> a écrit :
> >>  > >>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil
> >>  > >> <paul@crapouillou.net>
> >>  > >>  > > wrote:
> >>  > >>  > >>
> >>  > >>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It was
> >> not
> >>  > >> used
> >>  > >>  > >> anywhere
> >>  > >>  > >>  outside pm.h and pm_runtime.h, so it is safe to update
> >> it.
> >>  > >>  > >>
> >>  > >>  > >>  Before, this macro would take a few parameters to be
> >> used as
> >>  > >> sleep
> >>  > >>  > >> and
> >>  > >>  > >>  runtime callbacks. This made it unsuitable to use with
> >>  > >> different
> >>  > >>  > >>  callbacks, for instance the "noirq" ones.
> >>  > >>  > >>
> >>  > >>  > >>  It is now semantically different: instead of creating a
> >>  > >>  > >> conditionally
> >>  > >>  > >>  exported dev_pm_ops structure, it only contains part of
> >> the
> >>  > >>  > >> definition.
> >>  > >>  > >>
> >>  > >>  > >>  This macro should however never be used directly (hence
> >> the
> >>  > >> trailing
> >>  > >>  > >>  underscore). Instead, the following four macros are
> >> provided:
> >>  > >>  > >>  - EXPORT_DEV_PM_OPS(name)
> >>  > >>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
> >>  > >>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
> >>  > >>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
> >>  > >>  > >>
> >>  > >>  > >>  For instance, it is now possible to conditionally
> >> export noirq
> >>  > >>  > >>  suspend/resume PM functions like this:
> >>  > >>  > >>
> >>  > >>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
> >>  > >>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
> >>  > >>  > >>  };
> >>  > >>  > >>
> >>  > >>  > >>  The existing helper macros EXPORT_*_SIMPLE_DEV_PM_OPS()
> >> and
> >>  > >>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to use
> >> these
> >>  > >> new
> >>  > >>  > >> macros.
> >>  > >>  > >>
> >>  > >>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> >>  > >>  > >
> >>  > >>  > > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> >>  > >>  > >
> >>  > >>  > > or please let me know if you need me to pick up this one.
> >>  > >>  >
> >>  > >>  > Could you pick this one up then, and make a branch for
> >> Jonathan?
> >>  > >>
> >>  > >>  Hi Paul, Rafael,
> >>  > >>
> >>  > >>  What happened to this in the end?  I can't immediately find
> >> it on
> >>  > >>  any of the pm git tree branches.
> >>  > >>
> >>  > >>  At this stage in the cycle it would be great if this patch at
> >> least
> >>  > >>  makes the merge window, so we can make use of it next cycle.
> >>  > >
> >>  > > I thought that this would go in along with the other patches in
> >> the
> >>  > > series.
> >>  > >
> >>  > > I can apply it directly, though, if needed.
> >>  > >
> >>  > > Thanks!
> >>  >
> >>  > I think at this point Jonathan can just take it in his tree with
> >> his
> >>  > own patchset. Then I'll rebase this patchset on v6.1-rc1.
> >>
> >>  Sure.
> >>
> >>  Jonathan, please go ahead and take the patch directly.
> >
> > Too late for me to take this for this cycle (I route via Greg KH so
> > need to have things
> > in place a little bit before the merge window).  If Lee doesn't pick
> > it up, I'll do an
> > immutable branch after rc1 is out with just this patch on it, then
> > anyone who wants
> > it can pick it up.
>
> Rafael or Lee, can you take it now?
>
> Or is it already too late? :(

I've applied this patch as 6.1-rc material, thanks!

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros
  2022-10-04 18:54                   ` Rafael J. Wysocki
@ 2022-10-04 19:12                     ` Paul Cercueil
  0 siblings, 0 replies; 14+ messages in thread
From: Paul Cercueil @ 2022-10-04 19:12 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Jonathan Cameron, Lee Jones, Linux Kernel Mailing List, linux-pm



Le mar., oct. 4 2022 at 20:54:28 +0200, Rafael J. Wysocki 
<rafael@kernel.org> a écrit :
> On Sun, Oct 2, 2022 at 1:18 PM Paul Cercueil <paul@crapouillou.net> 
> wrote:
>> 
>> 
>> 
>>  Le sam., oct. 1 2022 at 18:01:30 +0100, Jonathan Cameron
>>  <jic23@kernel.org> a écrit :
>>  > On Mon, 26 Sep 2022 15:35:35 +0200
>>  > "Rafael J. Wysocki" <rafael@kernel.org> wrote:
>>  >
>>  >>  On Mon, Sep 26, 2022 at 3:27 PM Paul Cercueil
>>  >> <paul@crapouillou.net> wrote:
>>  >>  >
>>  >>  > Hi,
>>  >>  >
>>  >>  > Le lun., sept. 26 2022 at 14:00:52 +0200, Rafael J. Wysocki
>>  >>  > <rafael@kernel.org> a écrit :
>>  >>  > > On Sun, Sep 25, 2022 at 4:52 PM Jonathan Cameron
>>  >> <jic23@kernel.org>
>>  >>  > > wrote:
>>  >>  > >>
>>  >>  > >>  On Thu, 25 Aug 2022 23:42:53 +0100
>>  >>  > >>  Paul Cercueil <paul@crapouillou.net> wrote:
>>  >>  > >>
>>  >>  > >>  > Hi Rafael,
>>  >>  > >>  >
>>  >>  > >>  > Le mar., août 23 2022 at 19:47:57 +0200, Rafael J. 
>> Wysocki
>>  >>  > >>  > <rafael@kernel.org> a écrit :
>>  >>  > >>  > > On Mon, Aug 8, 2022 at 7:41 PM Paul Cercueil
>>  >>  > >> <paul@crapouillou.net>
>>  >>  > >>  > > wrote:
>>  >>  > >>  > >>
>>  >>  > >>  > >>  Update the _EXPORT_DEV_PM_OPS() internal macro. It 
>> was
>>  >> not
>>  >>  > >> used
>>  >>  > >>  > >> anywhere
>>  >>  > >>  > >>  outside pm.h and pm_runtime.h, so it is safe to 
>> update
>>  >> it.
>>  >>  > >>  > >>
>>  >>  > >>  > >>  Before, this macro would take a few parameters to be
>>  >> used as
>>  >>  > >> sleep
>>  >>  > >>  > >> and
>>  >>  > >>  > >>  runtime callbacks. This made it unsuitable to use 
>> with
>>  >>  > >> different
>>  >>  > >>  > >>  callbacks, for instance the "noirq" ones.
>>  >>  > >>  > >>
>>  >>  > >>  > >>  It is now semantically different: instead of 
>> creating a
>>  >>  > >>  > >> conditionally
>>  >>  > >>  > >>  exported dev_pm_ops structure, it only contains 
>> part of
>>  >> the
>>  >>  > >>  > >> definition.
>>  >>  > >>  > >>
>>  >>  > >>  > >>  This macro should however never be used directly 
>> (hence
>>  >> the
>>  >>  > >> trailing
>>  >>  > >>  > >>  underscore). Instead, the following four macros are
>>  >> provided:
>>  >>  > >>  > >>  - EXPORT_DEV_PM_OPS(name)
>>  >>  > >>  > >>  - EXPORT_GPL_DEV_PM_OPS(name)
>>  >>  > >>  > >>  - EXPORT_NS_DEV_PM_OPS(name, ns)
>>  >>  > >>  > >>  - EXPORT_NS_GPL_DEV_PM_OPS(name, ns)
>>  >>  > >>  > >>
>>  >>  > >>  > >>  For instance, it is now possible to conditionally
>>  >> export noirq
>>  >>  > >>  > >>  suspend/resume PM functions like this:
>>  >>  > >>  > >>
>>  >>  > >>  > >>  EXPORT_GPL_DEV_PM_OPS(foo_pm_ops) = {
>>  >>  > >>  > >>      NOIRQ_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)
>>  >>  > >>  > >>  };
>>  >>  > >>  > >>
>>  >>  > >>  > >>  The existing helper macros 
>> EXPORT_*_SIMPLE_DEV_PM_OPS()
>>  >> and
>>  >>  > >>  > >>  EXPORT_*_RUNTIME_DEV_PM_OPS() have been updated to 
>> use
>>  >> these
>>  >>  > >> new
>>  >>  > >>  > >> macros.
>>  >>  > >>  > >>
>>  >>  > >>  > >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  >>  > >>  > >
>>  >>  > >>  > > Acked-by: Rafael J. Wysocki 
>> <rafael.j.wysocki@intel.com>
>>  >>  > >>  > >
>>  >>  > >>  > > or please let me know if you need me to pick up this 
>> one.
>>  >>  > >>  >
>>  >>  > >>  > Could you pick this one up then, and make a branch for
>>  >> Jonathan?
>>  >>  > >>
>>  >>  > >>  Hi Paul, Rafael,
>>  >>  > >>
>>  >>  > >>  What happened to this in the end?  I can't immediately 
>> find
>>  >> it on
>>  >>  > >>  any of the pm git tree branches.
>>  >>  > >>
>>  >>  > >>  At this stage in the cycle it would be great if this 
>> patch at
>>  >> least
>>  >>  > >>  makes the merge window, so we can make use of it next 
>> cycle.
>>  >>  > >
>>  >>  > > I thought that this would go in along with the other 
>> patches in
>>  >> the
>>  >>  > > series.
>>  >>  > >
>>  >>  > > I can apply it directly, though, if needed.
>>  >>  > >
>>  >>  > > Thanks!
>>  >>  >
>>  >>  > I think at this point Jonathan can just take it in his tree 
>> with
>>  >> his
>>  >>  > own patchset. Then I'll rebase this patchset on v6.1-rc1.
>>  >>
>>  >>  Sure.
>>  >>
>>  >>  Jonathan, please go ahead and take the patch directly.
>>  >
>>  > Too late for me to take this for this cycle (I route via Greg KH 
>> so
>>  > need to have things
>>  > in place a little bit before the merge window).  If Lee doesn't 
>> pick
>>  > it up, I'll do an
>>  > immutable branch after rc1 is out with just this patch on it, then
>>  > anyone who wants
>>  > it can pick it up.
>> 
>>  Rafael or Lee, can you take it now?
>> 
>>  Or is it already too late? :(
> 
> I've applied this patch as 6.1-rc material, thanks!

Awesome, thanks!

-Paul



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-10-04 19:13 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-08 17:40 [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Paul Cercueil
2022-08-08 17:40 ` [PATCH v2 01/30] pm: Improve EXPORT_*_DEV_PM_OPS macros Paul Cercueil
2022-08-13 14:49   ` Jonathan Cameron
2022-08-23 17:47   ` Rafael J. Wysocki
2022-08-25 22:42     ` Paul Cercueil
2022-09-25 14:52       ` Jonathan Cameron
2022-09-26 12:00         ` Rafael J. Wysocki
2022-09-26 13:27           ` Paul Cercueil
2022-09-26 13:35             ` Rafael J. Wysocki
2022-10-01 17:01               ` Jonathan Cameron
2022-10-02 11:18                 ` Paul Cercueil
2022-10-04 18:54                   ` Rafael J. Wysocki
2022-10-04 19:12                     ` Paul Cercueil
2022-08-13 14:50 ` [PATCH v2 00/30] mfd: Remove #ifdef guards for PM functions Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).