All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH v4 0/2] Small devm helper for devm implementations
@ 2020-02-26 15:44 ` Marc Gonzalez
  0 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:44 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Hello,

Differences from v3 to v4
x Add a bunch of kerneldoc above devm_add() [Greg KH]
x Split patch in two [Greg KH]

Differences from v2 to v3
x Make devm_add() return an error-code rather than the raw data pointer
  (in case devres_alloc ever returns an ERR_PTR) as suggested by Geert
x Provide a variadic version devm_vadd() to work with structs as suggested
  by Geert
x Don't use nested ifs in clk_devm* implementations (hopefully simpler
  code logic to follow) as suggested by Geert

Marc Gonzalez (2):
  devres: Provide new helper for devm functions
  clk: Use devm_add in managed functions

 drivers/base/devres.c    |  28 +++++++++++
 drivers/clk/clk-devres.c | 101 ++++++++++++++-------------------------
 include/linux/device.h   |   3 ++
 3 files changed, 68 insertions(+), 64 deletions(-)

-- 
2.17.1

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

* [RFC PATCH v4 0/2] Small devm helper for devm implementations
@ 2020-02-26 15:44 ` Marc Gonzalez
  0 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:44 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Hello,

Differences from v3 to v4
x Add a bunch of kerneldoc above devm_add() [Greg KH]
x Split patch in two [Greg KH]

Differences from v2 to v3
x Make devm_add() return an error-code rather than the raw data pointer
  (in case devres_alloc ever returns an ERR_PTR) as suggested by Geert
x Provide a variadic version devm_vadd() to work with structs as suggested
  by Geert
x Don't use nested ifs in clk_devm* implementations (hopefully simpler
  code logic to follow) as suggested by Geert

Marc Gonzalez (2):
  devres: Provide new helper for devm functions
  clk: Use devm_add in managed functions

 drivers/base/devres.c    |  28 +++++++++++
 drivers/clk/clk-devres.c | 101 ++++++++++++++-------------------------
 include/linux/device.h   |   3 ++
 3 files changed, 68 insertions(+), 64 deletions(-)

-- 
2.17.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [RFC PATCH v4 1/2] devres: Provide new helper for devm functions
  2020-02-26 15:44 ` Marc Gonzalez
@ 2020-02-26 15:49   ` Marc Gonzalez
  -1 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:49 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Provide a simple wrapper for devres_alloc / devres_add.

Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
---
 drivers/base/devres.c  | 28 ++++++++++++++++++++++++++++
 include/linux/device.h |  3 +++
 2 files changed, 31 insertions(+)

diff --git a/drivers/base/devres.c b/drivers/base/devres.c
index 0bbb328bd17f..7fe6cc34411e 100644
--- a/drivers/base/devres.c
+++ b/drivers/base/devres.c
@@ -685,6 +685,34 @@ int devres_release_group(struct device *dev, void *id)
 }
 EXPORT_SYMBOL_GPL(devres_release_group);
 
+/**
+ * devm_add - allocate and register new device resource
+ * @dev: device to add resource to
+ * @func: resource release function
+ * @arg: resource data
+ * @size: resource data size
+ *
+ * Simple wrapper for devres_alloc / devres_add.
+ * Release the resource if the allocation fails.
+ *
+ * RETURNS:
+ * 0 if the allocation succeeds, -ENOMEM otherwise.
+ */
+int devm_add(struct device *dev, dr_release_t func, void *arg, size_t size)
+{
+	void *data = devres_alloc(func, size, GFP_KERNEL);
+
+	if (!data) {
+		func(dev, arg);
+		return -ENOMEM;
+	}
+
+	memcpy(data, arg, size);
+	devres_add(dev, data);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(devm_add);
+
 /*
  * Custom devres actions allow inserting a simple function call
  * into the teadown sequence.
diff --git a/include/linux/device.h b/include/linux/device.h
index 0cd7c647c16c..55be3be9b276 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -247,6 +247,9 @@ void __iomem *devm_of_iomap(struct device *dev,
 			    struct device_node *node, int index,
 			    resource_size_t *size);
 
+int devm_add(struct device *dev, dr_release_t func, void *arg, size_t size);
+#define devm_vadd(dev, func, type, args...) \
+	devm_add(dev, func, &(struct type){args}, sizeof(struct type))
 /* allows to add/remove a custom action to devres stack */
 int devm_add_action(struct device *dev, void (*action)(void *), void *data);
 void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
-- 
2.17.1

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

* [RFC PATCH v4 1/2] devres: Provide new helper for devm functions
@ 2020-02-26 15:49   ` Marc Gonzalez
  0 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:49 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Provide a simple wrapper for devres_alloc / devres_add.

Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
---
 drivers/base/devres.c  | 28 ++++++++++++++++++++++++++++
 include/linux/device.h |  3 +++
 2 files changed, 31 insertions(+)

diff --git a/drivers/base/devres.c b/drivers/base/devres.c
index 0bbb328bd17f..7fe6cc34411e 100644
--- a/drivers/base/devres.c
+++ b/drivers/base/devres.c
@@ -685,6 +685,34 @@ int devres_release_group(struct device *dev, void *id)
 }
 EXPORT_SYMBOL_GPL(devres_release_group);
 
+/**
+ * devm_add - allocate and register new device resource
+ * @dev: device to add resource to
+ * @func: resource release function
+ * @arg: resource data
+ * @size: resource data size
+ *
+ * Simple wrapper for devres_alloc / devres_add.
+ * Release the resource if the allocation fails.
+ *
+ * RETURNS:
+ * 0 if the allocation succeeds, -ENOMEM otherwise.
+ */
+int devm_add(struct device *dev, dr_release_t func, void *arg, size_t size)
+{
+	void *data = devres_alloc(func, size, GFP_KERNEL);
+
+	if (!data) {
+		func(dev, arg);
+		return -ENOMEM;
+	}
+
+	memcpy(data, arg, size);
+	devres_add(dev, data);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(devm_add);
+
 /*
  * Custom devres actions allow inserting a simple function call
  * into the teadown sequence.
diff --git a/include/linux/device.h b/include/linux/device.h
index 0cd7c647c16c..55be3be9b276 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -247,6 +247,9 @@ void __iomem *devm_of_iomap(struct device *dev,
 			    struct device_node *node, int index,
 			    resource_size_t *size);
 
+int devm_add(struct device *dev, dr_release_t func, void *arg, size_t size);
+#define devm_vadd(dev, func, type, args...) \
+	devm_add(dev, func, &(struct type){args}, sizeof(struct type))
 /* allows to add/remove a custom action to devres stack */
 int devm_add_action(struct device *dev, void (*action)(void *), void *data);
 void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
-- 
2.17.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
  2020-02-26 15:44 ` Marc Gonzalez
@ 2020-02-26 15:51   ` Marc Gonzalez
  -1 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:51 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Using the helper produces simpler code, and smaller object size.
E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:

    text           data     bss     dec     hex filename
-   1708             80       0    1788     6fc drivers/clk/clk-devres.o
+   1524             80       0    1604     644 drivers/clk/clk-devres.o

Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
---
 drivers/clk/clk-devres.c | 101 ++++++++++++++-------------------------
 1 file changed, 37 insertions(+), 64 deletions(-)

diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
index be160764911b..3f4b200b5328 100644
--- a/drivers/clk/clk-devres.c
+++ b/drivers/clk/clk-devres.c
@@ -4,26 +4,22 @@
 #include <linux/export.h>
 #include <linux/gfp.h>
 
-static void devm_clk_release(struct device *dev, void *res)
+static void my_clk_put(struct device *dev, void *res)
 {
 	clk_put(*(struct clk **)res);
 }
 
 struct clk *devm_clk_get(struct device *dev, const char *id)
 {
-	struct clk **ptr, *clk;
-
-	ptr = devres_alloc(devm_clk_release, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return ERR_PTR(-ENOMEM);
-
-	clk = clk_get(dev, id);
-	if (!IS_ERR(clk)) {
-		*ptr = clk;
-		devres_add(dev, ptr);
-	} else {
-		devres_free(ptr);
-	}
+	int ret;
+	struct clk *clk = clk_get(dev, id);
+
+	if (IS_ERR(clk))
+		return clk;
+
+	ret = devm_add(dev, my_clk_put, &clk, sizeof(clk));
+	if (ret)
+		return ERR_PTR(ret);
 
 	return clk;
 }
@@ -40,14 +36,14 @@ struct clk *devm_clk_get_optional(struct device *dev, const char *id)
 }
 EXPORT_SYMBOL(devm_clk_get_optional);
 
-struct clk_bulk_devres {
-	struct clk_bulk_data *clks;
+struct clk_bulk_args {
 	int num_clks;
+	struct clk_bulk_data *clks;
 };
 
-static void devm_clk_bulk_release(struct device *dev, void *res)
+static void my_clk_bulk_put(struct device *dev, void *res)
 {
-	struct clk_bulk_devres *devres = res;
+	struct clk_bulk_args *devres = res;
 
 	clk_bulk_put(devres->num_clks, devres->clks);
 }
@@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
 static int __devm_clk_bulk_get(struct device *dev, int num_clks,
 			       struct clk_bulk_data *clks, bool optional)
 {
-	struct clk_bulk_devres *devres;
 	int ret;
 
-	devres = devres_alloc(devm_clk_bulk_release,
-			      sizeof(*devres), GFP_KERNEL);
-	if (!devres)
-		return -ENOMEM;
-
 	if (optional)
 		ret = clk_bulk_get_optional(dev, num_clks, clks);
 	else
 		ret = clk_bulk_get(dev, num_clks, clks);
-	if (!ret) {
-		devres->clks = clks;
-		devres->num_clks = num_clks;
-		devres_add(dev, devres);
-	} else {
-		devres_free(devres);
-	}
+
+	if (ret)
+		return ret;
+
+	ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
 
 	return ret;
 }
@@ -95,24 +83,17 @@ EXPORT_SYMBOL_GPL(devm_clk_bulk_get_optional);
 int __must_check devm_clk_bulk_get_all(struct device *dev,
 				       struct clk_bulk_data **clks)
 {
-	struct clk_bulk_devres *devres;
 	int ret;
+	int num_clks = clk_bulk_get_all(dev, clks);
 
-	devres = devres_alloc(devm_clk_bulk_release,
-			      sizeof(*devres), GFP_KERNEL);
-	if (!devres)
-		return -ENOMEM;
-
-	ret = clk_bulk_get_all(dev, &devres->clks);
-	if (ret > 0) {
-		*clks = devres->clks;
-		devres->num_clks = ret;
-		devres_add(dev, devres);
-	} else {
-		devres_free(devres);
-	}
+	if (num_clks <= 0)
+		return num_clks;
 
-	return ret;
+	ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, *clks);
+	if (ret)
+		return ret;
+
+	return num_clks;
 }
 EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all);
 
@@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
 
 void devm_clk_put(struct device *dev, struct clk *clk)
 {
-	int ret;
-
-	ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
-
-	WARN_ON(ret);
+	WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
 }
 EXPORT_SYMBOL(devm_clk_put);
 
 struct clk *devm_get_clk_from_child(struct device *dev,
 				    struct device_node *np, const char *con_id)
 {
-	struct clk **ptr, *clk;
-
-	ptr = devres_alloc(devm_clk_release, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return ERR_PTR(-ENOMEM);
-
-	clk = of_clk_get_by_name(np, con_id);
-	if (!IS_ERR(clk)) {
-		*ptr = clk;
-		devres_add(dev, ptr);
-	} else {
-		devres_free(ptr);
-	}
+	int ret;
+	struct clk *clk = of_clk_get_by_name(np, con_id);
+
+	if (IS_ERR(clk))
+		return clk;
+
+	ret = devm_add(dev, my_clk_put, &clk, sizeof(clk));
+	if (ret)
+		return ERR_PTR(ret);
 
 	return clk;
 }
-- 
2.17.1

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

* [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
@ 2020-02-26 15:51   ` Marc Gonzalez
  0 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-02-26 15:51 UTC (permalink / raw)
  To: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Geert Uytterhoeven, Arnd Bergmann, Ard Biesheuvel,
	Greg Kroah-Hartman, Rafael Wysocki, Suzuki Poulose, Mark Rutland
  Cc: linux-clk, Linux ARM, LKML

Using the helper produces simpler code, and smaller object size.
E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:

    text           data     bss     dec     hex filename
-   1708             80       0    1788     6fc drivers/clk/clk-devres.o
+   1524             80       0    1604     644 drivers/clk/clk-devres.o

Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
---
 drivers/clk/clk-devres.c | 101 ++++++++++++++-------------------------
 1 file changed, 37 insertions(+), 64 deletions(-)

diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
index be160764911b..3f4b200b5328 100644
--- a/drivers/clk/clk-devres.c
+++ b/drivers/clk/clk-devres.c
@@ -4,26 +4,22 @@
 #include <linux/export.h>
 #include <linux/gfp.h>
 
-static void devm_clk_release(struct device *dev, void *res)
+static void my_clk_put(struct device *dev, void *res)
 {
 	clk_put(*(struct clk **)res);
 }
 
 struct clk *devm_clk_get(struct device *dev, const char *id)
 {
-	struct clk **ptr, *clk;
-
-	ptr = devres_alloc(devm_clk_release, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return ERR_PTR(-ENOMEM);
-
-	clk = clk_get(dev, id);
-	if (!IS_ERR(clk)) {
-		*ptr = clk;
-		devres_add(dev, ptr);
-	} else {
-		devres_free(ptr);
-	}
+	int ret;
+	struct clk *clk = clk_get(dev, id);
+
+	if (IS_ERR(clk))
+		return clk;
+
+	ret = devm_add(dev, my_clk_put, &clk, sizeof(clk));
+	if (ret)
+		return ERR_PTR(ret);
 
 	return clk;
 }
@@ -40,14 +36,14 @@ struct clk *devm_clk_get_optional(struct device *dev, const char *id)
 }
 EXPORT_SYMBOL(devm_clk_get_optional);
 
-struct clk_bulk_devres {
-	struct clk_bulk_data *clks;
+struct clk_bulk_args {
 	int num_clks;
+	struct clk_bulk_data *clks;
 };
 
-static void devm_clk_bulk_release(struct device *dev, void *res)
+static void my_clk_bulk_put(struct device *dev, void *res)
 {
-	struct clk_bulk_devres *devres = res;
+	struct clk_bulk_args *devres = res;
 
 	clk_bulk_put(devres->num_clks, devres->clks);
 }
@@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
 static int __devm_clk_bulk_get(struct device *dev, int num_clks,
 			       struct clk_bulk_data *clks, bool optional)
 {
-	struct clk_bulk_devres *devres;
 	int ret;
 
-	devres = devres_alloc(devm_clk_bulk_release,
-			      sizeof(*devres), GFP_KERNEL);
-	if (!devres)
-		return -ENOMEM;
-
 	if (optional)
 		ret = clk_bulk_get_optional(dev, num_clks, clks);
 	else
 		ret = clk_bulk_get(dev, num_clks, clks);
-	if (!ret) {
-		devres->clks = clks;
-		devres->num_clks = num_clks;
-		devres_add(dev, devres);
-	} else {
-		devres_free(devres);
-	}
+
+	if (ret)
+		return ret;
+
+	ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
 
 	return ret;
 }
@@ -95,24 +83,17 @@ EXPORT_SYMBOL_GPL(devm_clk_bulk_get_optional);
 int __must_check devm_clk_bulk_get_all(struct device *dev,
 				       struct clk_bulk_data **clks)
 {
-	struct clk_bulk_devres *devres;
 	int ret;
+	int num_clks = clk_bulk_get_all(dev, clks);
 
-	devres = devres_alloc(devm_clk_bulk_release,
-			      sizeof(*devres), GFP_KERNEL);
-	if (!devres)
-		return -ENOMEM;
-
-	ret = clk_bulk_get_all(dev, &devres->clks);
-	if (ret > 0) {
-		*clks = devres->clks;
-		devres->num_clks = ret;
-		devres_add(dev, devres);
-	} else {
-		devres_free(devres);
-	}
+	if (num_clks <= 0)
+		return num_clks;
 
-	return ret;
+	ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, *clks);
+	if (ret)
+		return ret;
+
+	return num_clks;
 }
 EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all);
 
@@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
 
 void devm_clk_put(struct device *dev, struct clk *clk)
 {
-	int ret;
-
-	ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
-
-	WARN_ON(ret);
+	WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
 }
 EXPORT_SYMBOL(devm_clk_put);
 
 struct clk *devm_get_clk_from_child(struct device *dev,
 				    struct device_node *np, const char *con_id)
 {
-	struct clk **ptr, *clk;
-
-	ptr = devres_alloc(devm_clk_release, sizeof(*ptr), GFP_KERNEL);
-	if (!ptr)
-		return ERR_PTR(-ENOMEM);
-
-	clk = of_clk_get_by_name(np, con_id);
-	if (!IS_ERR(clk)) {
-		*ptr = clk;
-		devres_add(dev, ptr);
-	} else {
-		devres_free(ptr);
-	}
+	int ret;
+	struct clk *clk = of_clk_get_by_name(np, con_id);
+
+	if (IS_ERR(clk))
+		return clk;
+
+	ret = devm_add(dev, my_clk_put, &clk, sizeof(clk));
+	if (ret)
+		return ERR_PTR(ret);
 
 	return clk;
 }
-- 
2.17.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [RFC PATCH v4 1/2] devres: Provide new helper for devm functions
  2020-02-26 15:49   ` Marc Gonzalez
@ 2020-02-27 13:28     ` Geert Uytterhoeven
  -1 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-02-27 13:28 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Arnd Bergmann, Ard Biesheuvel, Greg Kroah-Hartman,
	Rafael Wysocki, Suzuki Poulose, Mark Rutland, linux-clk,
	Linux ARM, LKML

Hi Marc,

On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> Provide a simple wrapper for devres_alloc / devres_add.
>
> Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>

With the grammar fixed, as per below:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

> --- a/drivers/base/devres.c
> +++ b/drivers/base/devres.c
> @@ -685,6 +685,34 @@ int devres_release_group(struct device *dev, void *id)
>  }
>  EXPORT_SYMBOL_GPL(devres_release_group);
>
> +/**
> + * devm_add - allocate and register new device resource
> + * @dev: device to add resource to
> + * @func: resource release function
> + * @arg: resource data
> + * @size: resource data size
> + *
> + * Simple wrapper for devres_alloc / devres_add.
> + * Release the resource if the allocation fails.

Releases ... failed.

> + *
> + * RETURNS:
> + * 0 if the allocation succeeds, -ENOMEM otherwise.

"0 on success" would avoid any discussion about "succeeds" or "succeeded" ;-)

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: [RFC PATCH v4 1/2] devres: Provide new helper for devm functions
@ 2020-02-27 13:28     ` Geert Uytterhoeven
  0 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-02-27 13:28 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Mark Rutland, linux-clk, LKML, Arnd Bergmann, Kuninori Morimoto,
	Ard Biesheuvel, Stephen Boyd, Greg Kroah-Hartman,
	Michael Turquette, Dmitry Torokhov, Rafael Wysocki, Russell King,
	Bjorn Andersson, Suzuki Poulose, Linux ARM, Robin Murphy,
	Sudip Mukherjee, Guenter Roeck

Hi Marc,

On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> Provide a simple wrapper for devres_alloc / devres_add.
>
> Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>

With the grammar fixed, as per below:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

> --- a/drivers/base/devres.c
> +++ b/drivers/base/devres.c
> @@ -685,6 +685,34 @@ int devres_release_group(struct device *dev, void *id)
>  }
>  EXPORT_SYMBOL_GPL(devres_release_group);
>
> +/**
> + * devm_add - allocate and register new device resource
> + * @dev: device to add resource to
> + * @func: resource release function
> + * @arg: resource data
> + * @size: resource data size
> + *
> + * Simple wrapper for devres_alloc / devres_add.
> + * Release the resource if the allocation fails.

Releases ... failed.

> + *
> + * RETURNS:
> + * 0 if the allocation succeeds, -ENOMEM otherwise.

"0 on success" would avoid any discussion about "succeeds" or "succeeded" ;-)

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
  2020-02-26 15:51   ` Marc Gonzalez
@ 2020-02-27 13:36     ` Geert Uytterhoeven
  -1 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-02-27 13:36 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Arnd Bergmann, Ard Biesheuvel, Greg Kroah-Hartman,
	Rafael Wysocki, Suzuki Poulose, Mark Rutland, linux-clk,
	Linux ARM, LKML

Hi Marc,

Thanks for your patch!

On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> Using the helper produces simpler code, and smaller object size.
> E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:
>
>     text           data     bss     dec     hex filename
> -   1708             80       0    1788     6fc drivers/clk/clk-devres.o
> +   1524             80       0    1604     644 drivers/clk/clk-devres.o

And the size reduction could have been even more ;-)

> Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>

> --- a/drivers/clk/clk-devres.c
> +++ b/drivers/clk/clk-devres.c

> @@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
>  static int __devm_clk_bulk_get(struct device *dev, int num_clks,
>                                struct clk_bulk_data *clks, bool optional)
>  {
> -       struct clk_bulk_devres *devres;
>         int ret;
>
> -       devres = devres_alloc(devm_clk_bulk_release,
> -                             sizeof(*devres), GFP_KERNEL);
> -       if (!devres)
> -               return -ENOMEM;
> -
>         if (optional)
>                 ret = clk_bulk_get_optional(dev, num_clks, clks);
>         else
>                 ret = clk_bulk_get(dev, num_clks, clks);
> -       if (!ret) {
> -               devres->clks = clks;
> -               devres->num_clks = num_clks;
> -               devres_add(dev, devres);
> -       } else {
> -               devres_free(devres);
> -       }
> +
> +       if (ret)
> +               return ret;
> +
> +       ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
>
>         return ret;

return devm_vadd(...);

>  }

> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
>
>  void devm_clk_put(struct device *dev, struct clk *clk)
>  {
> -       int ret;
> -
> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
> -
> -       WARN_ON(ret);
> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));

Getting rid of "ret" is an unrelated change, which actually increases
kernel size, as the WARN_ON() parameter is stringified for the warning
message.

The rest looks good, so with the above fixed:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
@ 2020-02-27 13:36     ` Geert Uytterhoeven
  0 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-02-27 13:36 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Mark Rutland, linux-clk, LKML, Arnd Bergmann, Kuninori Morimoto,
	Ard Biesheuvel, Stephen Boyd, Greg Kroah-Hartman,
	Michael Turquette, Dmitry Torokhov, Rafael Wysocki, Russell King,
	Bjorn Andersson, Suzuki Poulose, Linux ARM, Robin Murphy,
	Sudip Mukherjee, Guenter Roeck

Hi Marc,

Thanks for your patch!

On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> Using the helper produces simpler code, and smaller object size.
> E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:
>
>     text           data     bss     dec     hex filename
> -   1708             80       0    1788     6fc drivers/clk/clk-devres.o
> +   1524             80       0    1604     644 drivers/clk/clk-devres.o

And the size reduction could have been even more ;-)

> Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>

> --- a/drivers/clk/clk-devres.c
> +++ b/drivers/clk/clk-devres.c

> @@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
>  static int __devm_clk_bulk_get(struct device *dev, int num_clks,
>                                struct clk_bulk_data *clks, bool optional)
>  {
> -       struct clk_bulk_devres *devres;
>         int ret;
>
> -       devres = devres_alloc(devm_clk_bulk_release,
> -                             sizeof(*devres), GFP_KERNEL);
> -       if (!devres)
> -               return -ENOMEM;
> -
>         if (optional)
>                 ret = clk_bulk_get_optional(dev, num_clks, clks);
>         else
>                 ret = clk_bulk_get(dev, num_clks, clks);
> -       if (!ret) {
> -               devres->clks = clks;
> -               devres->num_clks = num_clks;
> -               devres_add(dev, devres);
> -       } else {
> -               devres_free(devres);
> -       }
> +
> +       if (ret)
> +               return ret;
> +
> +       ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
>
>         return ret;

return devm_vadd(...);

>  }

> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
>
>  void devm_clk_put(struct device *dev, struct clk *clk)
>  {
> -       int ret;
> -
> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
> -
> -       WARN_ON(ret);
> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));

Getting rid of "ret" is an unrelated change, which actually increases
kernel size, as the WARN_ON() parameter is stringified for the warning
message.

The rest looks good, so with the above fixed:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
  2020-02-27 13:36     ` Geert Uytterhoeven
@ 2020-03-02 10:01       ` Marc Gonzalez
  -1 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-03-02 10:01 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Arnd Bergmann, Ard Biesheuvel, Greg Kroah-Hartman,
	Rafael Wysocki, Suzuki Poulose, Mark Rutland, linux-clk,
	Linux ARM, LKML

On 27/02/2020 14:36, Geert Uytterhoeven wrote:

> Hi Marc,
> 
> Thanks for your patch!
> 
> On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
>> Using the helper produces simpler code, and smaller object size.
>> E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:
>>
>>     text           data     bss     dec     hex filename
>> -   1708             80       0    1788     6fc drivers/clk/clk-devres.o
>> +   1524             80       0    1604     644 drivers/clk/clk-devres.o
> 
> And the size reduction could have been even more ;-)

I'll see what I can do! ;-)

I have another patch with even smaller object code, but it requires
C11 to be well-defined (memcmp the whole struct, which requires zeros
in the padding holes).


>> --- a/drivers/clk/clk-devres.c
>> +++ b/drivers/clk/clk-devres.c
> 
>> @@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
>>  static int __devm_clk_bulk_get(struct device *dev, int num_clks,
>>                                struct clk_bulk_data *clks, bool optional)
>>  {
>> -       struct clk_bulk_devres *devres;
>>         int ret;
>>
>> -       devres = devres_alloc(devm_clk_bulk_release,
>> -                             sizeof(*devres), GFP_KERNEL);
>> -       if (!devres)
>> -               return -ENOMEM;
>> -
>>         if (optional)
>>                 ret = clk_bulk_get_optional(dev, num_clks, clks);
>>         else
>>                 ret = clk_bulk_get(dev, num_clks, clks);
>> -       if (!ret) {
>> -               devres->clks = clks;
>> -               devres->num_clks = num_clks;
>> -               devres_add(dev, devres);
>> -       } else {
>> -               devres_free(devres);
>> -       }
>> +
>> +       if (ret)
>> +               return ret;
>> +
>> +       ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
>>
>>         return ret;
> 
> return devm_vadd(...);

If you think that makes it look better, I'll make the change!


>> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
>>
>>  void devm_clk_put(struct device *dev, struct clk *clk)
>>  {
>> -       int ret;
>> -
>> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
>> -
>> -       WARN_ON(ret);
>> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
> 
> Getting rid of "ret" is an unrelated change, which actually increases
> kernel size, as the WARN_ON() parameter is stringified for the warning
> message.

Weird... Are you sure about that? I built the preprocessed file,
and it didn't appear to be so.

#ifndef WARN_ON
#define WARN_ON(condition) ({						\
	int __ret_warn_on = !!(condition);				\
	if (unlikely(__ret_warn_on))					\
		__WARN();						\
	unlikely(__ret_warn_on);					\
})
#endif

Maybe you were thinking of i915's WARN_ON?

#define WARN_ON(x) WARN((x), "%s", "WARN_ON(" __stringify(x) ")")

Regards.

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
@ 2020-03-02 10:01       ` Marc Gonzalez
  0 siblings, 0 replies; 14+ messages in thread
From: Marc Gonzalez @ 2020-03-02 10:01 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Mark Rutland, linux-clk, LKML, Arnd Bergmann, Kuninori Morimoto,
	Ard Biesheuvel, Stephen Boyd, Greg Kroah-Hartman,
	Michael Turquette, Dmitry Torokhov, Rafael Wysocki, Russell King,
	Bjorn Andersson, Suzuki Poulose, Linux ARM, Robin Murphy,
	Sudip Mukherjee, Guenter Roeck

On 27/02/2020 14:36, Geert Uytterhoeven wrote:

> Hi Marc,
> 
> Thanks for your patch!
> 
> On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
>> Using the helper produces simpler code, and smaller object size.
>> E.g. with gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu:
>>
>>     text           data     bss     dec     hex filename
>> -   1708             80       0    1788     6fc drivers/clk/clk-devres.o
>> +   1524             80       0    1604     644 drivers/clk/clk-devres.o
> 
> And the size reduction could have been even more ;-)

I'll see what I can do! ;-)

I have another patch with even smaller object code, but it requires
C11 to be well-defined (memcmp the whole struct, which requires zeros
in the padding holes).


>> --- a/drivers/clk/clk-devres.c
>> +++ b/drivers/clk/clk-devres.c
> 
>> @@ -55,25 +51,17 @@ static void devm_clk_bulk_release(struct device *dev, void *res)
>>  static int __devm_clk_bulk_get(struct device *dev, int num_clks,
>>                                struct clk_bulk_data *clks, bool optional)
>>  {
>> -       struct clk_bulk_devres *devres;
>>         int ret;
>>
>> -       devres = devres_alloc(devm_clk_bulk_release,
>> -                             sizeof(*devres), GFP_KERNEL);
>> -       if (!devres)
>> -               return -ENOMEM;
>> -
>>         if (optional)
>>                 ret = clk_bulk_get_optional(dev, num_clks, clks);
>>         else
>>                 ret = clk_bulk_get(dev, num_clks, clks);
>> -       if (!ret) {
>> -               devres->clks = clks;
>> -               devres->num_clks = num_clks;
>> -               devres_add(dev, devres);
>> -       } else {
>> -               devres_free(devres);
>> -       }
>> +
>> +       if (ret)
>> +               return ret;
>> +
>> +       ret = devm_vadd(dev, my_clk_bulk_put, clk_bulk_args, num_clks, clks);
>>
>>         return ret;
> 
> return devm_vadd(...);

If you think that makes it look better, I'll make the change!


>> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
>>
>>  void devm_clk_put(struct device *dev, struct clk *clk)
>>  {
>> -       int ret;
>> -
>> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
>> -
>> -       WARN_ON(ret);
>> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
> 
> Getting rid of "ret" is an unrelated change, which actually increases
> kernel size, as the WARN_ON() parameter is stringified for the warning
> message.

Weird... Are you sure about that? I built the preprocessed file,
and it didn't appear to be so.

#ifndef WARN_ON
#define WARN_ON(condition) ({						\
	int __ret_warn_on = !!(condition);				\
	if (unlikely(__ret_warn_on))					\
		__WARN();						\
	unlikely(__ret_warn_on);					\
})
#endif

Maybe you were thinking of i915's WARN_ON?

#define WARN_ON(x) WARN((x), "%s", "WARN_ON(" __stringify(x) ")")

Regards.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
  2020-03-02 10:01       ` Marc Gonzalez
@ 2020-03-02 10:14         ` Geert Uytterhoeven
  -1 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-03-02 10:14 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Stephen Boyd, Michael Turquette, Kuninori Morimoto, Russell King,
	Sudip Mukherjee, Dmitry Torokhov, Guenter Roeck, Bjorn Andersson,
	Robin Murphy, Arnd Bergmann, Ard Biesheuvel, Greg Kroah-Hartman,
	Rafael Wysocki, Suzuki Poulose, Mark Rutland, linux-clk,
	Linux ARM, LKML

Hi Marc,

On Mon, Mar 2, 2020 at 11:01 AM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> On 27/02/2020 14:36, Geert Uytterhoeven wrote:
> > On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> >> Using the helper produces simpler code, and smaller object size.

> >> --- a/drivers/clk/clk-devres.c
> >> +++ b/drivers/clk/clk-devres.c

> >> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
> >>
> >>  void devm_clk_put(struct device *dev, struct clk *clk)
> >>  {
> >> -       int ret;
> >> -
> >> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
> >> -
> >> -       WARN_ON(ret);
> >> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
> >
> > Getting rid of "ret" is an unrelated change, which actually increases
> > kernel size, as the WARN_ON() parameter is stringified for the warning
> > message.
>
> Weird... Are you sure about that? I built the preprocessed file,
> and it didn't appear to be so.
>
> #ifndef WARN_ON
> #define WARN_ON(condition) ({                                           \
>         int __ret_warn_on = !!(condition);                              \
>         if (unlikely(__ret_warn_on))                                    \
>                 __WARN();                                               \
>         unlikely(__ret_warn_on);                                        \
> })
> #endif
>
> Maybe you were thinking of i915's WARN_ON?
>
> #define WARN_ON(x) WARN((x), "%s", "WARN_ON(" __stringify(x) ")")

Oops, you're right.  I got trapped again by an override of a standard macro
(IMHO this should be removed).

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

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

* Re: [RFC PATCH v4 2/2] clk: Use devm_add in managed functions
@ 2020-03-02 10:14         ` Geert Uytterhoeven
  0 siblings, 0 replies; 14+ messages in thread
From: Geert Uytterhoeven @ 2020-03-02 10:14 UTC (permalink / raw)
  To: Marc Gonzalez
  Cc: Mark Rutland, linux-clk, LKML, Arnd Bergmann, Kuninori Morimoto,
	Ard Biesheuvel, Stephen Boyd, Greg Kroah-Hartman,
	Michael Turquette, Dmitry Torokhov, Rafael Wysocki, Russell King,
	Bjorn Andersson, Suzuki Poulose, Linux ARM, Robin Murphy,
	Sudip Mukherjee, Guenter Roeck

Hi Marc,

On Mon, Mar 2, 2020 at 11:01 AM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> On 27/02/2020 14:36, Geert Uytterhoeven wrote:
> > On Wed, Feb 26, 2020 at 4:55 PM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
> >> Using the helper produces simpler code, and smaller object size.

> >> --- a/drivers/clk/clk-devres.c
> >> +++ b/drivers/clk/clk-devres.c

> >> @@ -128,30 +109,22 @@ static int devm_clk_match(struct device *dev, void *res, void *data)
> >>
> >>  void devm_clk_put(struct device *dev, struct clk *clk)
> >>  {
> >> -       int ret;
> >> -
> >> -       ret = devres_release(dev, devm_clk_release, devm_clk_match, clk);
> >> -
> >> -       WARN_ON(ret);
> >> +       WARN_ON(devres_release(dev, my_clk_put, devm_clk_match, clk));
> >
> > Getting rid of "ret" is an unrelated change, which actually increases
> > kernel size, as the WARN_ON() parameter is stringified for the warning
> > message.
>
> Weird... Are you sure about that? I built the preprocessed file,
> and it didn't appear to be so.
>
> #ifndef WARN_ON
> #define WARN_ON(condition) ({                                           \
>         int __ret_warn_on = !!(condition);                              \
>         if (unlikely(__ret_warn_on))                                    \
>                 __WARN();                                               \
>         unlikely(__ret_warn_on);                                        \
> })
> #endif
>
> Maybe you were thinking of i915's WARN_ON?
>
> #define WARN_ON(x) WARN((x), "%s", "WARN_ON(" __stringify(x) ")")

Oops, you're right.  I got trapped again by an override of a standard macro
(IMHO this should be removed).

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2020-03-02 10:14 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-26 15:44 [RFC PATCH v4 0/2] Small devm helper for devm implementations Marc Gonzalez
2020-02-26 15:44 ` Marc Gonzalez
2020-02-26 15:49 ` [RFC PATCH v4 1/2] devres: Provide new helper for devm functions Marc Gonzalez
2020-02-26 15:49   ` Marc Gonzalez
2020-02-27 13:28   ` Geert Uytterhoeven
2020-02-27 13:28     ` Geert Uytterhoeven
2020-02-26 15:51 ` [RFC PATCH v4 2/2] clk: Use devm_add in managed functions Marc Gonzalez
2020-02-26 15:51   ` Marc Gonzalez
2020-02-27 13:36   ` Geert Uytterhoeven
2020-02-27 13:36     ` Geert Uytterhoeven
2020-03-02 10:01     ` Marc Gonzalez
2020-03-02 10:01       ` Marc Gonzalez
2020-03-02 10:14       ` Geert Uytterhoeven
2020-03-02 10:14         ` Geert Uytterhoeven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.