2021-02-15 14:26:05

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

We have already few similar implementation and a lot of code that can benefit
of the yesno() helper. Consolidate yesno() helpers under string.h hood.

Signed-off-by: Andy Shevchenko <[email protected]>
---
.../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 6 +-----
drivers/gpu/drm/i915/i915_utils.h | 6 +-----
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 12 +-----------
include/linux/string.h | 5 +++++
4 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
index 360952129b6d..7fde4f90e513 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
@@ -23,6 +23,7 @@
*
*/

+#include <linux/string.h>
#include <linux/uaccess.h>

#include <drm/drm_debugfs.h>
@@ -49,11 +50,6 @@ struct dmub_debugfs_trace_entry {
uint32_t param1;
};

-static inline const char *yesno(bool v)
-{
- return v ? "yes" : "no";
-}
-
/* parse_write_buffer_into_params - Helper function to parse debugfs write buffer into an array
*
* Function takes in attributes passed to debugfs write entry
diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index abd4dcd9f79c..e6da5a951132 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -27,6 +27,7 @@

#include <linux/list.h>
#include <linux/overflow.h>
+#include <linux/string.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/workqueue.h>
@@ -408,11 +409,6 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
#define MBps(x) KBps(1000 * (x))
#define GBps(x) ((u64)1000 * MBps((x)))

-static inline const char *yesno(bool v)
-{
- return v ? "yes" : "no";
-}
-
static inline const char *onoff(bool v)
{
return v ? "on" : "off";
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
index 7d49fd4edc9e..c857d73abbd7 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
@@ -34,6 +34,7 @@

#include <linux/seq_file.h>
#include <linux/debugfs.h>
+#include <linux/string.h>
#include <linux/string_helpers.h>
#include <linux/sort.h>
#include <linux/ctype.h>
@@ -2015,17 +2016,6 @@ static const struct file_operations rss_debugfs_fops = {
/* RSS Configuration.
*/

-/* Small utility function to return the strings "yes" or "no" if the supplied
- * argument is non-zero.
- */
-static const char *yesno(int x)
-{
- static const char *yes = "yes";
- static const char *no = "no";
-
- return x ? yes : no;
-}
-
static int rss_config_show(struct seq_file *seq, void *v)
{
struct adapter *adapter = seq->private;
diff --git a/include/linux/string.h b/include/linux/string.h
index 9521d8cab18e..fd946a5e18c8 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -308,4 +308,9 @@ static __always_inline size_t str_has_prefix(const char *str, const char *prefix
return strncmp(str, prefix, len) == 0 ? len : 0;
}

+static inline const char *yesno(bool yes)
+{
+ return yes ? "yes" : "no";
+}
+
#endif /* _LINUX_STRING_H_ */
--
2.30.0


2021-02-15 14:27:16

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v1 3/3] string: Move enableddisabled() helper under string.h hood

We have already an implementation and a lot of code that can benefit
of the enableddisabled() helper. Move it under string.h hood.

Signed-off-by: Andy Shevchenko <[email protected]>
---
drivers/gpu/drm/i915/i915_utils.h | 5 -----
include/linux/string.h | 5 +++++
2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index d2ac357896d4..b05d72b4dd93 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -409,11 +409,6 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
#define MBps(x) KBps(1000 * (x))
#define GBps(x) ((u64)1000 * MBps((x)))

-static inline const char *enableddisabled(bool v)
-{
- return v ? "enabled" : "disabled";
-}
-
void add_taint_for_CI(struct drm_i915_private *i915, unsigned int taint);
static inline void __add_taint_for_CI(unsigned int taint)
{
diff --git a/include/linux/string.h b/include/linux/string.h
index 2a0589e945d9..25f055aa4c31 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -318,4 +318,9 @@ static inline const char *onoff(bool on)
return on ? "on" : "off";
}

+static inline const char *enableddisabled(bool enabled)
+{
+ return enabled ? "enabled" : "disabled";
+}
+
#endif /* _LINUX_STRING_H_ */
--
2.30.0

2021-02-15 14:28:28

by Christian König

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

Am 15.02.21 um 15:21 schrieb Andy Shevchenko:
> We have already few similar implementation and a lot of code that can benefit
> of the yesno() helper. Consolidate yesno() helpers under string.h hood.
>
> Signed-off-by: Andy Shevchenko <[email protected]>

Looks like a good idea to me, feel free to add an Acked-by: Christian
König <[email protected]> to the series.

But looking at the use cases for this, wouldn't it make more sense to
teach kprintf some new format modifier for this?

Christian.

> ---
> .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 6 +-----
> drivers/gpu/drm/i915/i915_utils.h | 6 +-----
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 12 +-----------
> include/linux/string.h | 5 +++++
> 4 files changed, 8 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> index 360952129b6d..7fde4f90e513 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> @@ -23,6 +23,7 @@
> *
> */
>
> +#include <linux/string.h>
> #include <linux/uaccess.h>
>
> #include <drm/drm_debugfs.h>
> @@ -49,11 +50,6 @@ struct dmub_debugfs_trace_entry {
> uint32_t param1;
> };
>
> -static inline const char *yesno(bool v)
> -{
> - return v ? "yes" : "no";
> -}
> -
> /* parse_write_buffer_into_params - Helper function to parse debugfs write buffer into an array
> *
> * Function takes in attributes passed to debugfs write entry
> diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
> index abd4dcd9f79c..e6da5a951132 100644
> --- a/drivers/gpu/drm/i915/i915_utils.h
> +++ b/drivers/gpu/drm/i915/i915_utils.h
> @@ -27,6 +27,7 @@
>
> #include <linux/list.h>
> #include <linux/overflow.h>
> +#include <linux/string.h>
> #include <linux/sched.h>
> #include <linux/types.h>
> #include <linux/workqueue.h>
> @@ -408,11 +409,6 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
> #define MBps(x) KBps(1000 * (x))
> #define GBps(x) ((u64)1000 * MBps((x)))
>
> -static inline const char *yesno(bool v)
> -{
> - return v ? "yes" : "no";
> -}
> -
> static inline const char *onoff(bool v)
> {
> return v ? "on" : "off";
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> index 7d49fd4edc9e..c857d73abbd7 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> @@ -34,6 +34,7 @@
>
> #include <linux/seq_file.h>
> #include <linux/debugfs.h>
> +#include <linux/string.h>
> #include <linux/string_helpers.h>
> #include <linux/sort.h>
> #include <linux/ctype.h>
> @@ -2015,17 +2016,6 @@ static const struct file_operations rss_debugfs_fops = {
> /* RSS Configuration.
> */
>
> -/* Small utility function to return the strings "yes" or "no" if the supplied
> - * argument is non-zero.
> - */
> -static const char *yesno(int x)
> -{
> - static const char *yes = "yes";
> - static const char *no = "no";
> -
> - return x ? yes : no;
> -}
> -
> static int rss_config_show(struct seq_file *seq, void *v)
> {
> struct adapter *adapter = seq->private;
> diff --git a/include/linux/string.h b/include/linux/string.h
> index 9521d8cab18e..fd946a5e18c8 100644
> --- a/include/linux/string.h
> +++ b/include/linux/string.h
> @@ -308,4 +308,9 @@ static __always_inline size_t str_has_prefix(const char *str, const char *prefix
> return strncmp(str, prefix, len) == 0 ? len : 0;
> }
>
> +static inline const char *yesno(bool yes)
> +{
> + return yes ? "yes" : "no";
> +}
> +
> #endif /* _LINUX_STRING_H_ */

2021-02-15 14:42:35

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

+Cc: Sakari and printk people

On Mon, Feb 15, 2021 at 4:28 PM Christian König
<[email protected]> wrote:
> Am 15.02.21 um 15:21 schrieb Andy Shevchenko:
> > We have already few similar implementation and a lot of code that can benefit
> > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
> >
> > Signed-off-by: Andy Shevchenko <[email protected]>
>
> Looks like a good idea to me, feel free to add an Acked-by: Christian
> König <[email protected]> to the series.

Thanks.

> But looking at the use cases for this, wouldn't it make more sense to
> teach kprintf some new format modifier for this?

As a next step? IIRC Sakari has at some point the series converted
yesno and Co. to something which I don't remember the details of.

Guys, what do you think?

--
With Best Regards,
Andy Shevchenko

2021-02-15 14:42:39

by Jani Nikula

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon, 15 Feb 2021, Andy Shevchenko <[email protected]> wrote:
> We have already few similar implementation and a lot of code that can benefit
> of the yesno() helper. Consolidate yesno() helpers under string.h hood.

Good luck. I gave up after just four versions. [1]

Acked-by: Jani Nikula <[email protected]>


BR,
Jani.


[1] http://lore.kernel.org/r/[email protected]


>
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
> .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 6 +-----
> drivers/gpu/drm/i915/i915_utils.h | 6 +-----
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 12 +-----------
> include/linux/string.h | 5 +++++
> 4 files changed, 8 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> index 360952129b6d..7fde4f90e513 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> @@ -23,6 +23,7 @@
> *
> */
>
> +#include <linux/string.h>
> #include <linux/uaccess.h>
>
> #include <drm/drm_debugfs.h>
> @@ -49,11 +50,6 @@ struct dmub_debugfs_trace_entry {
> uint32_t param1;
> };
>
> -static inline const char *yesno(bool v)
> -{
> - return v ? "yes" : "no";
> -}
> -
> /* parse_write_buffer_into_params - Helper function to parse debugfs write buffer into an array
> *
> * Function takes in attributes passed to debugfs write entry
> diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
> index abd4dcd9f79c..e6da5a951132 100644
> --- a/drivers/gpu/drm/i915/i915_utils.h
> +++ b/drivers/gpu/drm/i915/i915_utils.h
> @@ -27,6 +27,7 @@
>
> #include <linux/list.h>
> #include <linux/overflow.h>
> +#include <linux/string.h>
> #include <linux/sched.h>
> #include <linux/types.h>
> #include <linux/workqueue.h>
> @@ -408,11 +409,6 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
> #define MBps(x) KBps(1000 * (x))
> #define GBps(x) ((u64)1000 * MBps((x)))
>
> -static inline const char *yesno(bool v)
> -{
> - return v ? "yes" : "no";
> -}
> -
> static inline const char *onoff(bool v)
> {
> return v ? "on" : "off";
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> index 7d49fd4edc9e..c857d73abbd7 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> @@ -34,6 +34,7 @@
>
> #include <linux/seq_file.h>
> #include <linux/debugfs.h>
> +#include <linux/string.h>
> #include <linux/string_helpers.h>
> #include <linux/sort.h>
> #include <linux/ctype.h>
> @@ -2015,17 +2016,6 @@ static const struct file_operations rss_debugfs_fops = {
> /* RSS Configuration.
> */
>
> -/* Small utility function to return the strings "yes" or "no" if the supplied
> - * argument is non-zero.
> - */
> -static const char *yesno(int x)
> -{
> - static const char *yes = "yes";
> - static const char *no = "no";
> -
> - return x ? yes : no;
> -}
> -
> static int rss_config_show(struct seq_file *seq, void *v)
> {
> struct adapter *adapter = seq->private;
> diff --git a/include/linux/string.h b/include/linux/string.h
> index 9521d8cab18e..fd946a5e18c8 100644
> --- a/include/linux/string.h
> +++ b/include/linux/string.h
> @@ -308,4 +308,9 @@ static __always_inline size_t str_has_prefix(const char *str, const char *prefix
> return strncmp(str, prefix, len) == 0 ? len : 0;
> }
>
> +static inline const char *yesno(bool yes)
> +{
> + return yes ? "yes" : "no";
> +}
> +
> #endif /* _LINUX_STRING_H_ */

--
Jani Nikula, Intel Open Source Graphics Center

2021-02-15 17:14:56

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon, Feb 15, 2021 at 04:37:50PM +0200, Jani Nikula wrote:
> On Mon, 15 Feb 2021, Andy Shevchenko <[email protected]> wrote:
> > We have already few similar implementation and a lot of code that can benefit
> > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
>
> Good luck. I gave up after just four versions. [1]

Thanks for a pointer! I like your version, but here we also discussing a
possibility to do something like %py[DOY]. It will consolidate all those RO or
whatever sections inside one data structure.

> Acked-by: Jani Nikula <[email protected]>
>
> [1] http://lore.kernel.org/r/[email protected]


--
With Best Regards,
Andy Shevchenko


2021-02-17 12:51:47

by Petr Mladek

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon 2021-02-15 16:39:26, Andy Shevchenko wrote:
> +Cc: Sakari and printk people
>
> On Mon, Feb 15, 2021 at 4:28 PM Christian K?nig
> <[email protected]> wrote:
> > Am 15.02.21 um 15:21 schrieb Andy Shevchenko:
> > > We have already few similar implementation and a lot of code that can benefit
> > > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
> > >
> > > Signed-off-by: Andy Shevchenko <[email protected]>
> >
> > Looks like a good idea to me, feel free to add an Acked-by: Christian
> > K?nig <[email protected]> to the series.
>
> Thanks.
>
> > But looking at the use cases for this, wouldn't it make more sense to
> > teach kprintf some new format modifier for this?
>
> As a next step? IIRC Sakari has at some point the series converted
> yesno and Co. to something which I don't remember the details of.
>
> Guys, what do you think?

Honestly, I think that yesno() is much easier to understand than %py.
And %py[DOY] looks really scary. It has been suggested at
https://lore.kernel.org/lkml/[email protected]/#t

Yes, enabledisable() is hard to parse but it is still self-explaining
and can be found easily by cscope. On the contrary, %pyD will likely
print some python code and it is not clear if it would be compatible
with v3. I am just kidding but you get the picture.

Best Regards,
Petr

2021-02-17 17:16:10

by Jani Nikula

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Wed, 17 Feb 2021, Petr Mladek <[email protected]> wrote:
> On Mon 2021-02-15 16:39:26, Andy Shevchenko wrote:
>> +Cc: Sakari and printk people
>>
>> On Mon, Feb 15, 2021 at 4:28 PM Christian König
>> <[email protected]> wrote:
>> > Am 15.02.21 um 15:21 schrieb Andy Shevchenko:
>> > > We have already few similar implementation and a lot of code that can benefit
>> > > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
>> > >
>> > > Signed-off-by: Andy Shevchenko <[email protected]>
>> >
>> > Looks like a good idea to me, feel free to add an Acked-by: Christian
>> > König <[email protected]> to the series.
>>
>> Thanks.
>>
>> > But looking at the use cases for this, wouldn't it make more sense to
>> > teach kprintf some new format modifier for this?
>>
>> As a next step? IIRC Sakari has at some point the series converted
>> yesno and Co. to something which I don't remember the details of.
>>
>> Guys, what do you think?
>
> Honestly, I think that yesno() is much easier to understand than %py.
> And %py[DOY] looks really scary. It has been suggested at
> https://lore.kernel.org/lkml/[email protected]/#t
>
> Yes, enabledisable() is hard to parse but it is still self-explaining
> and can be found easily by cscope. On the contrary, %pyD will likely
> print some python code and it is not clear if it would be compatible
> with v3. I am just kidding but you get the picture.

Personally I prefer %s and the functions.

I think the format specifiers have become unwieldy. I don't remember any
of the kernel specific ones by heart, I always look them up or just
cargo-cult. I think the fourcc format specifiers are a nice cleanup, but
I don't remember them either. I'd like something like %foo{yesno} where,
if you remember the %foo part, you could actually also remember the
rest.

But really if you get *any* version accepted, I'm not going to argue
against it, and you can disregard this as meaningless bikeshedding.

BR,
Jani.


--
Jani Nikula, Intel Open Source Graphics Center

2021-10-05 21:36:35

by Lucas De Marchi

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon, Feb 15, 2021 at 04:21:35PM +0200, Andy Shevchenko wrote:
>We have already few similar implementation and a lot of code that can benefit
>of the yesno() helper. Consolidate yesno() helpers under string.h hood.

I was taking a look on i915_utils.h to reduce it and move some of it
elsewhere to be shared with others. I was starting with these helpers
and had [1] done, then Jani pointed me to this thread and also his
previous tentative. I thought the natural place for this would be
include/linux/string_helpers.h, but I will leave it up to you.

After reading the threads, I don't see real opposition to it.
Is there a tree you plan to take this through?

thanks
Lucas De Marchi

[1] https://lore.kernel.org/lkml/[email protected]/T/#u

>
>Signed-off-by: Andy Shevchenko <[email protected]>
>---
> .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 6 +-----
> drivers/gpu/drm/i915/i915_utils.h | 6 +-----
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 12 +-----------
> include/linux/string.h | 5 +++++
> 4 files changed, 8 insertions(+), 21 deletions(-)
>
>diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>index 360952129b6d..7fde4f90e513 100644
>--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>@@ -23,6 +23,7 @@
> *
> */
>
>+#include <linux/string.h>
> #include <linux/uaccess.h>
>
> #include <drm/drm_debugfs.h>
>@@ -49,11 +50,6 @@ struct dmub_debugfs_trace_entry {
> uint32_t param1;
> };
>
>-static inline const char *yesno(bool v)
>-{
>- return v ? "yes" : "no";
>-}
>-
> /* parse_write_buffer_into_params - Helper function to parse debugfs write buffer into an array
> *
> * Function takes in attributes passed to debugfs write entry
>diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
>index abd4dcd9f79c..e6da5a951132 100644
>--- a/drivers/gpu/drm/i915/i915_utils.h
>+++ b/drivers/gpu/drm/i915/i915_utils.h
>@@ -27,6 +27,7 @@
>
> #include <linux/list.h>
> #include <linux/overflow.h>
>+#include <linux/string.h>
> #include <linux/sched.h>
> #include <linux/types.h>
> #include <linux/workqueue.h>
>@@ -408,11 +409,6 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
> #define MBps(x) KBps(1000 * (x))
> #define GBps(x) ((u64)1000 * MBps((x)))
>
>-static inline const char *yesno(bool v)
>-{
>- return v ? "yes" : "no";
>-}
>-
> static inline const char *onoff(bool v)
> {
> return v ? "on" : "off";
>diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
>index 7d49fd4edc9e..c857d73abbd7 100644
>--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
>+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
>@@ -34,6 +34,7 @@
>
> #include <linux/seq_file.h>
> #include <linux/debugfs.h>
>+#include <linux/string.h>
> #include <linux/string_helpers.h>
> #include <linux/sort.h>
> #include <linux/ctype.h>
>@@ -2015,17 +2016,6 @@ static const struct file_operations rss_debugfs_fops = {
> /* RSS Configuration.
> */
>
>-/* Small utility function to return the strings "yes" or "no" if the supplied
>- * argument is non-zero.
>- */
>-static const char *yesno(int x)
>-{
>- static const char *yes = "yes";
>- static const char *no = "no";
>-
>- return x ? yes : no;
>-}
>-
> static int rss_config_show(struct seq_file *seq, void *v)
> {
> struct adapter *adapter = seq->private;
>diff --git a/include/linux/string.h b/include/linux/string.h
>index 9521d8cab18e..fd946a5e18c8 100644
>--- a/include/linux/string.h
>+++ b/include/linux/string.h
>@@ -308,4 +308,9 @@ static __always_inline size_t str_has_prefix(const char *str, const char *prefix
> return strncmp(str, prefix, len) == 0 ? len : 0;
> }
>
>+static inline const char *yesno(bool yes)
>+{
>+ return yes ? "yes" : "no";
>+}
>+
> #endif /* _LINUX_STRING_H_ */
>--
>2.30.0
>
>

2021-11-15 11:08:06

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Tue, Oct 05, 2021 at 02:34:23PM -0700, Lucas De Marchi wrote:
> On Mon, Feb 15, 2021 at 04:21:35PM +0200, Andy Shevchenko wrote:
> > We have already few similar implementation and a lot of code that can benefit
> > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
>
> I was taking a look on i915_utils.h to reduce it and move some of it
> elsewhere to be shared with others. I was starting with these helpers
> and had [1] done, then Jani pointed me to this thread and also his
> previous tentative. I thought the natural place for this would be
> include/linux/string_helpers.h, but I will leave it up to you.

Seems reasonable to use string_helpers (headers and/or C-file).

> After reading the threads, I don't see real opposition to it.
> Is there a tree you plan to take this through?

I rest my series in favour of Jani's approach, so I suppose there is no go
for _this_ series.

> [1] https://lore.kernel.org/lkml/[email protected]/T/#u

--
With Best Regards,
Andy Shevchenko



2021-11-15 11:43:23

by Jani Nikula

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon, 15 Nov 2021, Andy Shevchenko <[email protected]> wrote:
> On Tue, Oct 05, 2021 at 02:34:23PM -0700, Lucas De Marchi wrote:
>> On Mon, Feb 15, 2021 at 04:21:35PM +0200, Andy Shevchenko wrote:
>> > We have already few similar implementation and a lot of code that can benefit
>> > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
>>
>> I was taking a look on i915_utils.h to reduce it and move some of it
>> elsewhere to be shared with others. I was starting with these helpers
>> and had [1] done, then Jani pointed me to this thread and also his
>> previous tentative. I thought the natural place for this would be
>> include/linux/string_helpers.h, but I will leave it up to you.
>
> Seems reasonable to use string_helpers (headers and/or C-file).
>
>> After reading the threads, I don't see real opposition to it.
>> Is there a tree you plan to take this through?
>
> I rest my series in favour of Jani's approach, so I suppose there is no go
> for _this_ series.

If you want to make it happen, please pick it up and drive it. I'm
thoroughly had enough of this.

BR,
Jani.


>
>> [1] https://lore.kernel.org/lkml/[email protected]/T/#u

--
Jani Nikula, Intel Open Source Graphics Center

2021-11-15 14:24:01

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] string: Consolidate yesno() helpers under string.h hood

On Mon, Nov 15, 2021 at 01:43:02PM +0200, Jani Nikula wrote:
> On Mon, 15 Nov 2021, Andy Shevchenko <[email protected]> wrote:
> > On Tue, Oct 05, 2021 at 02:34:23PM -0700, Lucas De Marchi wrote:
> >> On Mon, Feb 15, 2021 at 04:21:35PM +0200, Andy Shevchenko wrote:
> >> > We have already few similar implementation and a lot of code that can benefit
> >> > of the yesno() helper. Consolidate yesno() helpers under string.h hood.
> >>
> >> I was taking a look on i915_utils.h to reduce it and move some of it
> >> elsewhere to be shared with others. I was starting with these helpers
> >> and had [1] done, then Jani pointed me to this thread and also his
> >> previous tentative. I thought the natural place for this would be
> >> include/linux/string_helpers.h, but I will leave it up to you.
> >
> > Seems reasonable to use string_helpers (headers and/or C-file).
> >
> >> After reading the threads, I don't see real opposition to it.
> >> Is there a tree you plan to take this through?
> >
> > I rest my series in favour of Jani's approach, so I suppose there is no go
> > for _this_ series.
>
> If you want to make it happen, please pick it up and drive it. I'm
> thoroughly had enough of this.

My point is still the same, so it's more to Lucas.

I'm not going to drive this activity due to lack of time.

> >> [1] https://lore.kernel.org/lkml/[email protected]/T/#u

--
With Best Regards,
Andy Shevchenko