Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-20 Thread Joe Perches
On Thu, 2017-07-20 at 10:57 -0700, Mark Salyzyn wrote:
> It would probably need to take struct timespec64 as an argument. Pass by 
> structure might be difficult to swallow, so pass by pointer?

Every %p extension is passed via a pointer.



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-20 Thread Mark Salyzyn

On 07/20/2017 03:33 AM, Andy Shevchenko wrote:

On Tue, 2017-07-18 at 12:57 -0700, Mark Salyzyn wrote:

On 07/18/2017 10:50 AM, Joe Perches wrote:

On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:

Recently I have noticed too many users of struct rtc_time that
printing
its content field by field.

In this series I introduce %pt[dt][rv] specifier to make life a
bit
easier.

Hey Andy.

I just saw a patch with a printk for rtc time from Mark Salyzyn.
https://lkml.org/lkml/2017/7/18/885

Any idea if you want to push this extension?

I like the concept and still think it could be extended a bit more.

from: https://lkml.org/lkml/2017/6/8/1134

My preference would be for %pt[type]
where  is mandatory and could be:

  r for struct rtc_time
  6 for time64_t
  k for ktime_t
  T for struct timespec64
  etc

and  has an unspecified default of
-MM-DD:hh:mm:ss

Perhaps use the "date" formats without the leading
% uses for  for additional styles.


-MM-DD hh:mm:ss.n ?

As a separate modifier, yes.

See my answer to subthread in patch 4.

It would probably need to take struct timespec64 as an argument. Pass by 
structure might be difficult to swallow, so pass by pointer?


As for my need for this in my suspend/resume/hibernate/restore patch 
set, we have already been told three times to _not_ report wall clock 
time. I could imagine being a consumer of it in the future if we have 
difficulty migrating the analysis tools ... so tepid support from me.


-- Mark



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-20 Thread Andy Shevchenko
On Tue, 2017-07-18 at 12:57 -0700, Mark Salyzyn wrote:
> On 07/18/2017 10:50 AM, Joe Perches wrote:
> > On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> > > Recently I have noticed too many users of struct rtc_time that
> > > printing
> > > its content field by field.
> > > 
> > > In this series I introduce %pt[dt][rv] specifier to make life a
> > > bit
> > > easier.
> > 
> > Hey Andy.
> > 
> > I just saw a patch with a printk for rtc time from Mark Salyzyn.
> > https://lkml.org/lkml/2017/7/18/885
> > 
> > Any idea if you want to push this extension?
> > 
> > I like the concept and still think it could be extended a bit more.
> > 
> > from: https://lkml.org/lkml/2017/6/8/1134
> > 
> > My preference would be for %pt[type]
> > where  is mandatory and could be:
> > 
> >  r for struct rtc_time
> >  6 for time64_t
> >  k for ktime_t
> >  T for struct timespec64
> >  etc
> > 
> > and  has an unspecified default of
> > -MM-DD:hh:mm:ss
> > 
> > Perhaps use the "date" formats without the leading
> > % uses for  for additional styles.
> > 
> 
> -MM-DD hh:mm:ss.n ?

As a separate modifier, yes.

See my answer to subthread in patch 4.

-- 
Andy Shevchenko 
Intel Finland Oy


Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-18 Thread Mark Salyzyn

On 07/18/2017 10:50 AM, Joe Perches wrote:

On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:

Recently I have noticed too many users of struct rtc_time that printing
its content field by field.

In this series I introduce %pt[dt][rv] specifier to make life a bit
easier.

Hey Andy.

I just saw a patch with a printk for rtc time from Mark Salyzyn.
https://lkml.org/lkml/2017/7/18/885

Any idea if you want to push this extension?

I like the concept and still think it could be extended a bit more.

from: https://lkml.org/lkml/2017/6/8/1134

My preference would be for %pt[type]
where  is mandatory and could be:

 r for struct rtc_time
 6 for time64_t
 k for ktime_t
 T for struct timespec64
 etc

and  has an unspecified default of
-MM-DD:hh:mm:ss

Perhaps use the "date" formats without the leading
% uses for  for additional styles.


-MM-DD hh:mm:ss.n ?



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-18 Thread Joe Perches
On Tue, 2017-07-18 at 20:55 +0300, Andy Shevchenko wrote:
> On Tue, 2017-07-18 at 10:50 -0700, Joe Perches wrote:
> > On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> > > Recently I have noticed too many users of struct rtc_time that
> > > printing
> > > its content field by field.
> > > 
> > > In this series I introduce %pt[dt][rv] specifier to make life a bit
> > > easier.
> > 
> > Hey Andy.
> > 
> > I just saw a patch with a printk for rtc time from Mark Salyzyn.
> > https://lkml.org/lkml/2017/7/18/885
> 
> Same!
> 
> > Any idea if you want to push this extension?
> 
> Yes, just really lack of time for everything.
> 
> I like the idea to make it conditional (config BLABLABLA). It will
> address some comments about footprint for no users.

Only one of the other %p extensions is conditional
and that
conditional is probably not too useful.

I think the code size is relatively small and not
particularly valuable for the additional complexity.

For instance, all of the code that emits MAC and
IP[46] addresses %pM and %pI variants is 2.5K.
(x86 allnoconfig)

There are lots more code size savings than that
lying about.

And auditing all the code that might emit a MAC
address when CONFIG_NET is not set is probably
not worth the effort for the size reduction.

$ size lib/vsprintf.o*
   text    data bss dec hex 
filename
  12140   4   0   12144    2f70 
lib/vsprintf.o.allnoconfig.new
  14785   4   0   14789    39c5 
lib/vsprintf.o.allnoconfig.old
---
 lib/vsprintf.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 86c3385b9eb3..de95e78ca5f0 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -933,6 +933,7 @@ char *bitmap_list_string(char *buf, char *end, unsigned 
long *bitmap,
return buf;
 }
 
+#ifdef CONFIG_NET
 static noinline_for_stack
 char *mac_address_string(char *buf, char *end, u8 *addr,
 struct printf_spec spec, const char *fmt)
@@ -1241,6 +1242,7 @@ char *ip4_addr_string_sa(char *buf, char *end, const 
struct sockaddr_in *sa,
 
return string(buf, end, ip4_addr, spec);
 }
+#endif
 
 static noinline_for_stack
 char *escaped_string(char *buf, char *end, u8 *addr, struct printf_spec spec,
@@ -1741,6 +1743,7 @@ char *pointer(const char *fmt, char *buf, char *end, void 
*ptr,
default:
return bitmap_string(buf, end, ptr, spec, fmt);
}
+#ifdef CONFIG_NET
case 'M':   /* Colon separated: 00:01:02:03:04:05 */
case 'm':   /* Contiguous: 000102030405 */
/* [mM]F (FDDI) */
@@ -1777,6 +1780,7 @@ char *pointer(const char *fmt, char *buf, char *end, void 
*ptr,
}}
}
break;
+#endif
case 'E':
return escaped_string(buf, end, ptr, spec, fmt);
case 'U':



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-18 Thread Andy Shevchenko
On Tue, 2017-07-18 at 10:50 -0700, Joe Perches wrote:
> On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> > Recently I have noticed too many users of struct rtc_time that
> > printing
> > its content field by field.
> > 
> > In this series I introduce %pt[dt][rv] specifier to make life a bit
> > easier.
> 
> Hey Andy.
> 
> I just saw a patch with a printk for rtc time from Mark Salyzyn.
> https://lkml.org/lkml/2017/7/18/885

Same!

> Any idea if you want to push this extension?

Yes, just really lack of time for everything.

I like the idea to make it conditional (config BLABLABLA). It will
address some comments about footprint for no users.

> I like the concept and still think it could be extended a bit more.
> 
> from: https://lkml.org/lkml/2017/6/8/1134
> 
> My preference would be for %pt[type]
> where  is mandatory and could be:
> 
> r for struct rtc_time
> 6 for time64_t
> k for ktime_t
> T for struct timespec64
> etc

I dunno about this.

However, I like this more than do conversion in each case where input
reference has different type.

> and  has an unspecified default of
> -MM-DD:hh:mm:ss

I'm against this, sorry. Too many variations for almost no use (users).

> Perhaps use the "date" formats without the leading
> % uses for  for additional styles.

-- 
Andy Shevchenko 
Intel Finland Oy


Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-07-18 Thread Joe Perches
On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> Recently I have noticed too many users of struct rtc_time that printing
> its content field by field.
> 
> In this series I introduce %pt[dt][rv] specifier to make life a bit
> easier.

Hey Andy.

I just saw a patch with a printk for rtc time from Mark Salyzyn.
https://lkml.org/lkml/2017/7/18/885

Any idea if you want to push this extension?

I like the concept and still think it could be extended a bit more.

from: https://lkml.org/lkml/2017/6/8/1134

My preference would be for %pt[type]
where  is mandatory and could be:

r for struct rtc_time
6 for time64_t
k for ktime_t
T for struct timespec64
etc

and  has an unspecified default of
-MM-DD:hh:mm:ss

Perhaps use the "date" formats without the leading
% uses for  for additional styles.



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-06-08 Thread Joe Perches
On Thu, 2017-06-08 at 18:02 +0300, Andy Shevchenko wrote:
> On Thu, Jun 8, 2017 at 5:52 PM, Joe Perches  wrote:
> > On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> > > Recently I have noticed too many users of struct rtc_time that printing
> > > its content field by field.
> > > 
> > > In this series I introduce %pt[dt][rv] specifier to make life a bit
> > > easier.
[]
> > > Most of the users currently are RTC drivers, thus the patch series is
> > > assumed to go via RTC tree.
> > 
> > What I wonder about this series is how much
> > larger it makes a typical kernel and how
> > often multiple rtc clocks are built for a
> > single kernel?
> 
> We may hide it under CONFIG_RTC_??? if we want to reduce kernel for
> non RTC cases.

Depends whether it is for rtc_time only

> > What is the size impact on an embedded kernel
> > that uses a single rtc driver?
> 
> I would

You would what?



Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-06-08 Thread Andy Shevchenko
On Thu, Jun 8, 2017 at 5:52 PM, Joe Perches  wrote:
> On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
>> Recently I have noticed too many users of struct rtc_time that printing
>> its content field by field.
>>
>> In this series I introduce %pt[dt][rv] specifier to make life a bit
>> easier.
>>
>> There are still users of detailed output of the struct rtc_time, but we
>> can introduce an additional extension for them in the future if needed,
>> otherwise they might be converted to the proposed output format.
>>
>> Some of the changes slightly modify the output. In those cases we are on
>> the safe side since they are pure debug. Nevertheless I tried to leave
>> numbers to be the same or quite close: in some cases year is printed +
>> 1900, though month is left in the range [0,11] instead of [1,12].
>>
>> I didn't compile everything there, though I did a basic smoke test on
>> some x86 hardware. So, I rely on kbuild test robot as well :-)
>>
>> Most of the users currently are RTC drivers, thus the patch series is
>> assumed to go via RTC tree.
>
> What I wonder about this series is how much
> larger it makes a typical kernel and how
> often multiple rtc clocks are built for a
> single kernel?

We may hide it under CONFIG_RTC_??? if we want to reduce kernel for
non RTC cases.

> What is the size impact on an embedded kernel
> that uses a single rtc driver?

I would

> trivia:

Actually not. See my answer to Arnd. I have patches for 4 users of
struct tm, but it should be converted first to struct rtc_time first
(otherwise it might uglify the code due to endianess of tm_year
memeber)

>
> Aren't there also uses of struct tm that are
> nearly identical?
>
> e.g.: drivers/usb/host/xhci-tegra.c



-- 
With Best Regards,
Andy Shevchenko


Re: [PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-06-08 Thread Joe Perches
On Thu, 2017-06-08 at 16:47 +0300, Andy Shevchenko wrote:
> Recently I have noticed too many users of struct rtc_time that printing
> its content field by field.
> 
> In this series I introduce %pt[dt][rv] specifier to make life a bit
> easier.
> 
> There are still users of detailed output of the struct rtc_time, but we
> can introduce an additional extension for them in the future if needed,
> otherwise they might be converted to the proposed output format.
> 
> Some of the changes slightly modify the output. In those cases we are on
> the safe side since they are pure debug. Nevertheless I tried to leave
> numbers to be the same or quite close: in some cases year is printed +
> 1900, though month is left in the range [0,11] instead of [1,12].
> 
> I didn't compile everything there, though I did a basic smoke test on
> some x86 hardware. So, I rely on kbuild test robot as well :-)
> 
> Most of the users currently are RTC drivers, thus the patch series is
> assumed to go via RTC tree.

What I wonder about this series is how much
larger it makes a typical kernel and how
often multiple rtc clocks are built for a
single kernel?

What is the size impact on an embedded kernel
that uses a single rtc driver?

trivia:

Aren't there also uses of struct tm that are
nearly identical?

e.g.: drivers/usb/host/xhci-tegra.c


[PATCH v1 00/25] lib, rtc: Print rtc_time via %pt[dt][rv]

2017-06-08 Thread Andy Shevchenko
Recently I have noticed too many users of struct rtc_time that printing
its content field by field.

In this series I introduce %pt[dt][rv] specifier to make life a bit
easier.

There are still users of detailed output of the struct rtc_time, but we
can introduce an additional extension for them in the future if needed,
otherwise they might be converted to the proposed output format.

Some of the changes slightly modify the output. In those cases we are on
the safe side since they are pure debug. Nevertheless I tried to leave
numbers to be the same or quite close: in some cases year is printed +
1900, though month is left in the range [0,11] instead of [1,12].

I didn't compile everything there, though I did a basic smoke test on
some x86 hardware. So, I rely on kbuild test robot as well :-)

Most of the users currently are RTC drivers, thus the patch series is
assumed to go via RTC tree.

Andy Shevchenko (25):
  lib/vsprintf: Remove useless NULL checks
  lib/vsprintf: Make decspec global
  lib/vsprintf: Make strspec global
  lib/vsprintf: Print time and date in human readable format via %pt
  ds1302: Switch to use %pt
  rtc: Switch to use %pt
  rtc: at91rm9200: Switch to use %pt
  rtc: at91sam9: Switch to use %pt
  rtc: m41t80: Switch to use %pt
  rtc: m48t59: Switch to use %pt
  rtc: mcp795: Switch to use %pt
  rtc: pcf50633: Switch to use %pt
  rtc: pic32: Switch to use %pt
  rtc: pm8xxx: Switch to use %pt
  rtc: puv3: Switch to use %pt
  rtc: rk808: Switch to use %pt
  rtc: rx6110: Switch to use %pt
  rtc: rx8025: Switch to use %pt
  rtc: s3c: Switch to use %pt
  rtc: s5m: Switch to use %pt
  rtc: tegra: Switch to use %pt
  mk68/mac: Switch to use %pt
  Input: hp_sdc_rtc - Switch to use %pt
  kdb: Switch to use %pt
  PM: Switch to use %pt

 Documentation/printk-formats.txt |  17 
 arch/m68k/mac/misc.c |   8 +-
 drivers/base/power/trace.c   |   4 +-
 drivers/char/ds1302.c|  38 +++--
 drivers/char/rtc.c   |   7 +-
 drivers/input/misc/hp_sdc_rtc.c  |   8 +-
 drivers/rtc/hctosys.c|   8 +-
 drivers/rtc/interface.c  |   8 +-
 drivers/rtc/rtc-at91rm9200.c |  16 +---
 drivers/rtc/rtc-at91sam9.c   |  16 +---
 drivers/rtc/rtc-m41t80.c |   6 +-
 drivers/rtc/rtc-m48t59.c |   8 +-
 drivers/rtc/rtc-mcp795.c |  18 ++---
 drivers/rtc/rtc-pcf50633.c   |   8 +-
 drivers/rtc/rtc-pic32.c  |  18 +
 drivers/rtc/rtc-pm8xxx.c |  16 ++--
 drivers/rtc/rtc-proc.c   |  36 ++---
 drivers/rtc/rtc-puv3.c   |  18 +
 drivers/rtc/rtc-rk808.c  |  20 ++---
 drivers/rtc/rtc-rx6110.c |  12 +--
 drivers/rtc/rtc-rx8025.c |  19 +
 drivers/rtc/rtc-s3c.c|  21 ++---
 drivers/rtc/rtc-s5m.c|  27 ++-
 drivers/rtc/rtc-sysfs.c  |  12 +--
 drivers/rtc/rtc-tegra.c  |  30 +--
 kernel/debug/kdb/kdb_main.c  |   7 +-
 lib/vsprintf.c   | 167 ---
 27 files changed, 248 insertions(+), 325 deletions(-)

-- 
2.11.0