Re: [PATCH] clk: debug clock tree

2012-12-24 Thread Prashant Gaikwad

On Monday 24 December 2012 11:07 PM, Mike Turquette wrote:

On Sun, Dec 23, 2012 at 4:26 AM, Prashant Gaikwad  wrote:

On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:

On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad 
wrote:

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad 
wrote:

Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
  clockenable_cnt  prepare_cnt  rate
-
i2s0_sync  0   02400
spdif_in_sync  0   02400
   spdif_mux   0   02400
  spdif0   02400
 spdif_doubler 0   04800
spdif_div  0   04800
   spdif_2x0   04800



Even I think that output must be easily human-readable. How about adding
sysfs to switch between human-readable and machine-readable format?
I will try come up with a implementation.


Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).


It is also fine. Is this patch ok for human-readable format? or any
suggestions?
I will change the file name to clk-summary.


Prashant,

Yes the format seems to be agreeable for human-readable format based
on the feedback on the list.  Go ahead and keep the column titles and
the dashed lines that I commented on earlier... my comments are less
relevant if a separate machine-readable clk-dump file exists.


Thanks Mike!!


Are you going to take a crack at JSON-formatted output for clk-dump?


I will work on it.


Thanks,
Mike


Regards,
Mike




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-24 Thread Mike Turquette
On Sun, Dec 23, 2012 at 4:26 AM, Prashant Gaikwad  wrote:
> On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:
>>
>> On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad 
>> wrote:
>>>
>>> On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

 On 12/13/2012 09:27 AM, Mike Turquette wrote:
>
> On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad 
> wrote:
>>
>> Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
>> It helps to view all the clock registered in tree format.
>>
> Prashant,
>
> Thanks for submitting this.  We've been talking about having a single
> file for representing the tree for some time.
>
> Regarding the output format had you considered using a well known
> format which can be parsed using well known parsing libs?  This avoids
> needing a custom parser just for this one file.  JSON springs to mind
> as something lightweight and well-understood.

 One advantage of the format below is that it's very easily
 human-readable, and it's not too hard to parse (although I guess you'd
 have to parse the indent level to get parent/child relation, which would
 suck a bit). Is there room to provide both? Otherwise, I guess the
 kernel could include a script to convert from JSON/whatever into the
 format below.

>> For example:
>>  clockenable_cnt  prepare_cnt  rate
>> -
>>i2s0_sync  0   02400
>>spdif_in_sync  0   02400
>>   spdif_mux   0   02400
>>  spdif0   02400
>> spdif_doubler 0   04800
>>spdif_div  0   04800
>>   spdif_2x0   04800


>>> Even I think that output must be easily human-readable. How about adding
>>> sysfs to switch between human-readable and machine-readable format?
>>> I will try come up with a implementation.
>>>
>> Do you mean a sysfs file which controls the output format?  How about
>> just two different files?  One can be clk-dump (machine readable) and
>> the other is clk-summary (human readable).
>
>
> It is also fine. Is this patch ok for human-readable format? or any
> suggestions?
> I will change the file name to clk-summary.
>

Prashant,

Yes the format seems to be agreeable for human-readable format based
on the feedback on the list.  Go ahead and keep the column titles and
the dashed lines that I commented on earlier... my comments are less
relevant if a separate machine-readable clk-dump file exists.

Are you going to take a crack at JSON-formatted output for clk-dump?

Thanks,
Mike

>>
>> Regards,
>> Mike
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-24 Thread Mike Turquette
On Sun, Dec 23, 2012 at 4:26 AM, Prashant Gaikwad pgaik...@nvidia.com wrote:
 On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:

 On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad pgaik...@nvidia.com
 wrote:

 On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

 On 12/13/2012 09:27 AM, Mike Turquette wrote:

 On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com
 wrote:

 Adds debug file clock_tree in /sys/kernel/debug/clk dir.
 It helps to view all the clock registered in tree format.

 Prashant,

 Thanks for submitting this.  We've been talking about having a single
 file for representing the tree for some time.

 Regarding the output format had you considered using a well known
 format which can be parsed using well known parsing libs?  This avoids
 needing a custom parser just for this one file.  JSON springs to mind
 as something lightweight and well-understood.

 One advantage of the format below is that it's very easily
 human-readable, and it's not too hard to parse (although I guess you'd
 have to parse the indent level to get parent/child relation, which would
 suck a bit). Is there room to provide both? Otherwise, I guess the
 kernel could include a script to convert from JSON/whatever into the
 format below.

 For example:
  clockenable_cnt  prepare_cnt  rate
 -
i2s0_sync  0   02400
spdif_in_sync  0   02400
   spdif_mux   0   02400
  spdif0   02400
 spdif_doubler 0   04800
spdif_div  0   04800
   spdif_2x0   04800


 Even I think that output must be easily human-readable. How about adding
 sysfs to switch between human-readable and machine-readable format?
 I will try come up with a implementation.

 Do you mean a sysfs file which controls the output format?  How about
 just two different files?  One can be clk-dump (machine readable) and
 the other is clk-summary (human readable).


 It is also fine. Is this patch ok for human-readable format? or any
 suggestions?
 I will change the file name to clk-summary.


Prashant,

Yes the format seems to be agreeable for human-readable format based
on the feedback on the list.  Go ahead and keep the column titles and
the dashed lines that I commented on earlier... my comments are less
relevant if a separate machine-readable clk-dump file exists.

Are you going to take a crack at JSON-formatted output for clk-dump?

Thanks,
Mike


 Regards,
 Mike


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-24 Thread Prashant Gaikwad

On Monday 24 December 2012 11:07 PM, Mike Turquette wrote:

On Sun, Dec 23, 2012 at 4:26 AM, Prashant Gaikwad pgaik...@nvidia.com wrote:

On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:

On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad pgaik...@nvidia.com
wrote:

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com
wrote:

Adds debug file clock_tree in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
  clockenable_cnt  prepare_cnt  rate
-
i2s0_sync  0   02400
spdif_in_sync  0   02400
   spdif_mux   0   02400
  spdif0   02400
 spdif_doubler 0   04800
spdif_div  0   04800
   spdif_2x0   04800



Even I think that output must be easily human-readable. How about adding
sysfs to switch between human-readable and machine-readable format?
I will try come up with a implementation.


Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).


It is also fine. Is this patch ok for human-readable format? or any
suggestions?
I will change the file name to clk-summary.


Prashant,

Yes the format seems to be agreeable for human-readable format based
on the feedback on the list.  Go ahead and keep the column titles and
the dashed lines that I commented on earlier... my comments are less
relevant if a separate machine-readable clk-dump file exists.


Thanks Mike!!


Are you going to take a crack at JSON-formatted output for clk-dump?


I will work on it.


Thanks,
Mike


Regards,
Mike




--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-23 Thread Prashant Gaikwad

On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:

On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad  wrote:

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad 
wrote:

Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
 clockenable_cnt  prepare_cnt  rate
-
   i2s0_sync  0   02400
   spdif_in_sync  0   02400
  spdif_mux   0   02400
 spdif0   02400
spdif_doubler 0   04800
   spdif_div  0   04800
  spdif_2x0   04800



Even I think that output must be easily human-readable. How about adding
sysfs to switch between human-readable and machine-readable format?
I will try come up with a implementation.


Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).


It is also fine. Is this patch ok for human-readable format? or any 
suggestions?

I will change the file name to clk-summary.



Regards,
Mike


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-23 Thread Prashant Gaikwad

On Saturday 22 December 2012 04:26 AM, Mike Turquette wrote:

On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad pgaik...@nvidia.com wrote:

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com
wrote:

Adds debug file clock_tree in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
 clockenable_cnt  prepare_cnt  rate
-
   i2s0_sync  0   02400
   spdif_in_sync  0   02400
  spdif_mux   0   02400
 spdif0   02400
spdif_doubler 0   04800
   spdif_div  0   04800
  spdif_2x0   04800



Even I think that output must be easily human-readable. How about adding
sysfs to switch between human-readable and machine-readable format?
I will try come up with a implementation.


Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).


It is also fine. Is this patch ok for human-readable format? or any 
suggestions?

I will change the file name to clk-summary.



Regards,
Mike


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-21 Thread Mike Turquette
On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad  wrote:
> On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:
>>
>> On 12/13/2012 09:27 AM, Mike Turquette wrote:
>>>
>>> On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad 
>>> wrote:

 Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
 It helps to view all the clock registered in tree format.

>>> Prashant,
>>>
>>> Thanks for submitting this.  We've been talking about having a single
>>> file for representing the tree for some time.
>>>
>>> Regarding the output format had you considered using a well known
>>> format which can be parsed using well known parsing libs?  This avoids
>>> needing a custom parser just for this one file.  JSON springs to mind
>>> as something lightweight and well-understood.
>>
>> One advantage of the format below is that it's very easily
>> human-readable, and it's not too hard to parse (although I guess you'd
>> have to parse the indent level to get parent/child relation, which would
>> suck a bit). Is there room to provide both? Otherwise, I guess the
>> kernel could include a script to convert from JSON/whatever into the
>> format below.
>>
 For example:
 clockenable_cnt  prepare_cnt  rate
 -
   i2s0_sync  0   02400
   spdif_in_sync  0   02400
  spdif_mux   0   02400
 spdif0   02400
spdif_doubler 0   04800
   spdif_div  0   04800
  spdif_2x0   04800
>>
>>
>
> Even I think that output must be easily human-readable. How about adding
> sysfs to switch between human-readable and machine-readable format?
> I will try come up with a implementation.
>

Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).

Regards,
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-21 Thread Mike Turquette
On Wed, Dec 19, 2012 at 11:53 PM, Prashant Gaikwad pgaik...@nvidia.com wrote:
 On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

 On 12/13/2012 09:27 AM, Mike Turquette wrote:

 On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com
 wrote:

 Adds debug file clock_tree in /sys/kernel/debug/clk dir.
 It helps to view all the clock registered in tree format.

 Prashant,

 Thanks for submitting this.  We've been talking about having a single
 file for representing the tree for some time.

 Regarding the output format had you considered using a well known
 format which can be parsed using well known parsing libs?  This avoids
 needing a custom parser just for this one file.  JSON springs to mind
 as something lightweight and well-understood.

 One advantage of the format below is that it's very easily
 human-readable, and it's not too hard to parse (although I guess you'd
 have to parse the indent level to get parent/child relation, which would
 suck a bit). Is there room to provide both? Otherwise, I guess the
 kernel could include a script to convert from JSON/whatever into the
 format below.

 For example:
 clockenable_cnt  prepare_cnt  rate
 -
   i2s0_sync  0   02400
   spdif_in_sync  0   02400
  spdif_mux   0   02400
 spdif0   02400
spdif_doubler 0   04800
   spdif_div  0   04800
  spdif_2x0   04800



 Even I think that output must be easily human-readable. How about adding
 sysfs to switch between human-readable and machine-readable format?
 I will try come up with a implementation.


Do you mean a sysfs file which controls the output format?  How about
just two different files?  One can be clk-dump (machine readable) and
the other is clk-summary (human readable).

Regards,
Mike
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-19 Thread Prashant Gaikwad

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad  wrote:

Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
clockenable_cnt  prepare_cnt  rate
-
  i2s0_sync  0   02400
  spdif_in_sync  0   02400
 spdif_mux   0   02400
spdif0   02400
   spdif_doubler 0   04800
  spdif_div  0   04800
 spdif_2x0   04800




Even I think that output must be easily human-readable. How about adding 
sysfs to switch between human-readable and machine-readable format?

I will try come up with a implementation.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-19 Thread Prashant Gaikwad

On Thursday 13 December 2012 11:31 PM, Stephen Warren wrote:

On 12/13/2012 09:27 AM, Mike Turquette wrote:

On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com wrote:

Adds debug file clock_tree in /sys/kernel/debug/clk dir.
It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.


For example:
clockenable_cnt  prepare_cnt  rate
-
  i2s0_sync  0   02400
  spdif_in_sync  0   02400
 spdif_mux   0   02400
spdif0   02400
   spdif_doubler 0   04800
  spdif_div  0   04800
 spdif_2x0   04800




Even I think that output must be easily human-readable. How about adding 
sysfs to switch between human-readable and machine-readable format?

I will try come up with a implementation.

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-14 Thread Mike Turquette
On Fri, Dec 14, 2012 at 2:43 AM, Peter De Schrijver
 wrote:
> On Thu, Dec 13, 2012 at 07:01:31PM +0100, Stephen Warren wrote:
>> On 12/13/2012 09:27 AM, Mike Turquette wrote:
>> > On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad  
>> > wrote:
>> >> Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
>> >> It helps to view all the clock registered in tree format.
>> >>
>> >
>> > Prashant,
>> >
>> > Thanks for submitting this.  We've been talking about having a single
>> > file for representing the tree for some time.
>> >
>> > Regarding the output format had you considered using a well known
>> > format which can be parsed using well known parsing libs?  This avoids
>> > needing a custom parser just for this one file.  JSON springs to mind
>> > as something lightweight and well-understood.
>>
>> One advantage of the format below is that it's very easily
>> human-readable, and it's not too hard to parse (although I guess you'd
>> have to parse the indent level to get parent/child relation, which would
>> suck a bit). Is there room to provide both? Otherwise, I guess the
>> kernel could include a script to convert from JSON/whatever into the
>> format below.
>
> We already have the clk directory for an easy to parse version. So I think
> this one should be focused on being human readable.
>

I'm really not sure the clk directory structure is such a good idea.
Hopping around directories and dumping a few files feels like a
strange way to get at the data.

Another key point is atomicity.  The prepare_lock mutex is only held
for each individual read of a file under the current clock directory
implementation.  So if you wish to read several different clock rates
there is a caveat that the rates could change between reads.  The
"summary" file that dumps all of the data improves on this since it
could hold the prepare_lock mutex across the operation.

This last point makes me realize that the current code above either
needs to hold that lock or at least use hlist_for_each_entry_safe
since clocks could be removed from the lists during the operation.  As
such it is a bit unsafe.

I'm OK letting the two implementations live along side each other but
I am also sure that the clock summary dump should be reasonably
machine readable.

Regards,
Mike

> Cheers,
>
> Peter.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-14 Thread Peter De Schrijver
On Thu, Dec 13, 2012 at 07:01:31PM +0100, Stephen Warren wrote:
> On 12/13/2012 09:27 AM, Mike Turquette wrote:
> > On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad  
> > wrote:
> >> Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
> >> It helps to view all the clock registered in tree format.
> >>
> > 
> > Prashant,
> > 
> > Thanks for submitting this.  We've been talking about having a single
> > file for representing the tree for some time.
> > 
> > Regarding the output format had you considered using a well known
> > format which can be parsed using well known parsing libs?  This avoids
> > needing a custom parser just for this one file.  JSON springs to mind
> > as something lightweight and well-understood.
> 
> One advantage of the format below is that it's very easily
> human-readable, and it's not too hard to parse (although I guess you'd
> have to parse the indent level to get parent/child relation, which would
> suck a bit). Is there room to provide both? Otherwise, I guess the
> kernel could include a script to convert from JSON/whatever into the
> format below.

We already have the clk directory for an easy to parse version. So I think
this one should be focused on being human readable.

Cheers,

Peter.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-14 Thread Peter De Schrijver
On Thu, Dec 13, 2012 at 07:01:31PM +0100, Stephen Warren wrote:
 On 12/13/2012 09:27 AM, Mike Turquette wrote:
  On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com 
  wrote:
  Adds debug file clock_tree in /sys/kernel/debug/clk dir.
  It helps to view all the clock registered in tree format.
 
  
  Prashant,
  
  Thanks for submitting this.  We've been talking about having a single
  file for representing the tree for some time.
  
  Regarding the output format had you considered using a well known
  format which can be parsed using well known parsing libs?  This avoids
  needing a custom parser just for this one file.  JSON springs to mind
  as something lightweight and well-understood.
 
 One advantage of the format below is that it's very easily
 human-readable, and it's not too hard to parse (although I guess you'd
 have to parse the indent level to get parent/child relation, which would
 suck a bit). Is there room to provide both? Otherwise, I guess the
 kernel could include a script to convert from JSON/whatever into the
 format below.

We already have the clk directory for an easy to parse version. So I think
this one should be focused on being human readable.

Cheers,

Peter.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-14 Thread Mike Turquette
On Fri, Dec 14, 2012 at 2:43 AM, Peter De Schrijver
pdeschrij...@nvidia.com wrote:
 On Thu, Dec 13, 2012 at 07:01:31PM +0100, Stephen Warren wrote:
 On 12/13/2012 09:27 AM, Mike Turquette wrote:
  On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com 
  wrote:
  Adds debug file clock_tree in /sys/kernel/debug/clk dir.
  It helps to view all the clock registered in tree format.
 
 
  Prashant,
 
  Thanks for submitting this.  We've been talking about having a single
  file for representing the tree for some time.
 
  Regarding the output format had you considered using a well known
  format which can be parsed using well known parsing libs?  This avoids
  needing a custom parser just for this one file.  JSON springs to mind
  as something lightweight and well-understood.

 One advantage of the format below is that it's very easily
 human-readable, and it's not too hard to parse (although I guess you'd
 have to parse the indent level to get parent/child relation, which would
 suck a bit). Is there room to provide both? Otherwise, I guess the
 kernel could include a script to convert from JSON/whatever into the
 format below.

 We already have the clk directory for an easy to parse version. So I think
 this one should be focused on being human readable.


I'm really not sure the clk directory structure is such a good idea.
Hopping around directories and dumping a few files feels like a
strange way to get at the data.

Another key point is atomicity.  The prepare_lock mutex is only held
for each individual read of a file under the current clock directory
implementation.  So if you wish to read several different clock rates
there is a caveat that the rates could change between reads.  The
summary file that dumps all of the data improves on this since it
could hold the prepare_lock mutex across the operation.

This last point makes me realize that the current code above either
needs to hold that lock or at least use hlist_for_each_entry_safe
since clocks could be removed from the lists during the operation.  As
such it is a bit unsafe.

I'm OK letting the two implementations live along side each other but
I am also sure that the clock summary dump should be reasonably
machine readable.

Regards,
Mike

 Cheers,

 Peter.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-13 Thread Stephen Warren
On 12/13/2012 09:27 AM, Mike Turquette wrote:
> On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad  wrote:
>> Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
>> It helps to view all the clock registered in tree format.
>>
> 
> Prashant,
> 
> Thanks for submitting this.  We've been talking about having a single
> file for representing the tree for some time.
> 
> Regarding the output format had you considered using a well known
> format which can be parsed using well known parsing libs?  This avoids
> needing a custom parser just for this one file.  JSON springs to mind
> as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.

>> For example:
>>clockenable_cnt  prepare_cnt  rate
>> -
>>  i2s0_sync  0   02400
>>  spdif_in_sync  0   02400
>> spdif_mux   0   02400
>>spdif0   02400
>>   spdif_doubler 0   04800
>>  spdif_div  0   04800
>> spdif_2x0   04800


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] clk: debug clock tree

2012-12-13 Thread Mike Turquette
On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad  wrote:
> Adds debug file "clock_tree" in /sys/kernel/debug/clk dir.
> It helps to view all the clock registered in tree format.
>

Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

> For example:
>clockenable_cnt  prepare_cnt  rate
> -
>  i2s0_sync  0   02400
>  spdif_in_sync  0   02400
> spdif_mux   0   02400
>spdif0   02400
>   spdif_doubler 0   04800
>  spdif_div  0   04800
> spdif_2x0   04800
>  clk_32k2   232768
> blink_override  1   132768
>blink1   132768
>  clk_m  2   21200
> clk_out_3_mux   0   01200
>clk_out_30   01200
> pll_ref 3   31200
>pll_e_mux0   01200
>   pll_e 0   01
>  cml0   0   01
>  cml1   0   01
>  pciex  0   01
>pll_d2   0   0100
>   pll_d2_out0   0   050
>pll_d0   0100
>   pll_d_out00   050
>  dsib_mux   0   050
> dsib0   050
>  dsia   0   050
>
> Signed-off-by: Prashant Gaikwad 
> ---
>  drivers/clk/clk.c |   59 
> +
>  1 files changed, 59 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 56e4495e..7daf201 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -34,6 +34,59 @@ static struct dentry *rootdir;
>  static struct dentry *orphandir;
>  static int inited = 0;
>
> +static void clk_tree_show_one(struct seq_file *s, struct clk *c, int level)
> +{
> +   if (!c)
> +   return;
> +
> +   seq_printf(s, "%*s%-*s %-11d %-12d %-10lu",
> +  level * 3 + 1, "",
> +  30 - level * 3, c->name,
> +  c->enable_count, c->prepare_count, c->rate);
> +   seq_printf(s, "\n");
> +}
> +
> +static void clk_tree_show_subtree(struct seq_file *s, struct clk *c, int 
> level)
> +{
> +   struct clk *child;
> +   struct hlist_node *tmp;
> +
> +   if (!c)
> +   return;
> +
> +   clk_tree_show_one(s, c, level);
> +
> +   hlist_for_each_entry(child, tmp, >children, child_node)
> +   clk_tree_show_subtree(s, child, level + 1);
> +}
> +
> +static int clk_tree_show(struct seq_file *s, void *data)
> +{
> +   struct clk *c;
> +   struct hlist_node *tmp;
> +
> +   seq_printf(s, "   clockenable_cnt  
> prepare_cnt  rate\n");
> +   seq_printf(s, 
> "-\n");
> +

If we want this to be machine readable then we can probably drop the
heading and line of dashes altogether.

> +   hlist_for_each_entry(c, tmp, _root_list, child_node)
> +   clk_tree_show_subtree(s, c, 0);
> +
> +   return 0;
> +}
> +
> +
> +static int clk_tree_open(struct inode *inode, struct file *file)
> +{
> +   return single_open(file, clk_tree_show, inode->i_private);
> +}
> +
> +static const struct file_operations clk_tree_fops = {
> +   .open   = clk_tree_open,
> +   .read   = seq_read,
> +   .llseek = seq_lseek,
> +   .release= single_release,
> +};
> +
>  /* caller must hold prepare_lock */
>  static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
>  {
> @@ -167,12 +220,18 @@ static int __init clk_debug_init(void)
>  {
> struct clk *clk;
> struct hlist_node *tmp;
> +   struct dentry *d;
>
> rootdir = debugfs_create_dir("clk", NULL);
>
> if 

Re: [PATCH] clk: debug clock tree

2012-12-13 Thread Mike Turquette
On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com wrote:
 Adds debug file clock_tree in /sys/kernel/debug/clk dir.
 It helps to view all the clock registered in tree format.


Prashant,

Thanks for submitting this.  We've been talking about having a single
file for representing the tree for some time.

Regarding the output format had you considered using a well known
format which can be parsed using well known parsing libs?  This avoids
needing a custom parser just for this one file.  JSON springs to mind
as something lightweight and well-understood.

 For example:
clockenable_cnt  prepare_cnt  rate
 -
  i2s0_sync  0   02400
  spdif_in_sync  0   02400
 spdif_mux   0   02400
spdif0   02400
   spdif_doubler 0   04800
  spdif_div  0   04800
 spdif_2x0   04800
  clk_32k2   232768
 blink_override  1   132768
blink1   132768
  clk_m  2   21200
 clk_out_3_mux   0   01200
clk_out_30   01200
 pll_ref 3   31200
pll_e_mux0   01200
   pll_e 0   01
  cml0   0   01
  cml1   0   01
  pciex  0   01
pll_d2   0   0100
   pll_d2_out0   0   050
pll_d0   0100
   pll_d_out00   050
  dsib_mux   0   050
 dsib0   050
  dsia   0   050

 Signed-off-by: Prashant Gaikwad pgaik...@nvidia.com
 ---
  drivers/clk/clk.c |   59 
 +
  1 files changed, 59 insertions(+), 0 deletions(-)

 diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
 index 56e4495e..7daf201 100644
 --- a/drivers/clk/clk.c
 +++ b/drivers/clk/clk.c
 @@ -34,6 +34,59 @@ static struct dentry *rootdir;
  static struct dentry *orphandir;
  static int inited = 0;

 +static void clk_tree_show_one(struct seq_file *s, struct clk *c, int level)
 +{
 +   if (!c)
 +   return;
 +
 +   seq_printf(s, %*s%-*s %-11d %-12d %-10lu,
 +  level * 3 + 1, ,
 +  30 - level * 3, c-name,
 +  c-enable_count, c-prepare_count, c-rate);
 +   seq_printf(s, \n);
 +}
 +
 +static void clk_tree_show_subtree(struct seq_file *s, struct clk *c, int 
 level)
 +{
 +   struct clk *child;
 +   struct hlist_node *tmp;
 +
 +   if (!c)
 +   return;
 +
 +   clk_tree_show_one(s, c, level);
 +
 +   hlist_for_each_entry(child, tmp, c-children, child_node)
 +   clk_tree_show_subtree(s, child, level + 1);
 +}
 +
 +static int clk_tree_show(struct seq_file *s, void *data)
 +{
 +   struct clk *c;
 +   struct hlist_node *tmp;
 +
 +   seq_printf(s,clockenable_cnt  
 prepare_cnt  rate\n);
 +   seq_printf(s, 
 -\n);
 +

If we want this to be machine readable then we can probably drop the
heading and line of dashes altogether.

 +   hlist_for_each_entry(c, tmp, clk_root_list, child_node)
 +   clk_tree_show_subtree(s, c, 0);
 +
 +   return 0;
 +}
 +
 +
 +static int clk_tree_open(struct inode *inode, struct file *file)
 +{
 +   return single_open(file, clk_tree_show, inode-i_private);
 +}
 +
 +static const struct file_operations clk_tree_fops = {
 +   .open   = clk_tree_open,
 +   .read   = seq_read,
 +   .llseek = seq_lseek,
 +   .release= single_release,
 +};
 +
  /* caller must hold prepare_lock */
  static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
  {
 @@ -167,12 +220,18 @@ static int __init clk_debug_init(void)
  {
 struct clk *clk;
 struct hlist_node *tmp;
 +   struct dentry *d;

 rootdir = debugfs_create_dir(clk, NULL);

 if (!rootdir)
 return -ENOMEM;

 +   d = debugfs_create_file(clock_tree, S_IRUGO, 

Re: [PATCH] clk: debug clock tree

2012-12-13 Thread Stephen Warren
On 12/13/2012 09:27 AM, Mike Turquette wrote:
 On Wed, Dec 12, 2012 at 7:49 PM, Prashant Gaikwad pgaik...@nvidia.com wrote:
 Adds debug file clock_tree in /sys/kernel/debug/clk dir.
 It helps to view all the clock registered in tree format.

 
 Prashant,
 
 Thanks for submitting this.  We've been talking about having a single
 file for representing the tree for some time.
 
 Regarding the output format had you considered using a well known
 format which can be parsed using well known parsing libs?  This avoids
 needing a custom parser just for this one file.  JSON springs to mind
 as something lightweight and well-understood.

One advantage of the format below is that it's very easily
human-readable, and it's not too hard to parse (although I guess you'd
have to parse the indent level to get parent/child relation, which would
suck a bit). Is there room to provide both? Otherwise, I guess the
kernel could include a script to convert from JSON/whatever into the
format below.

 For example:
clockenable_cnt  prepare_cnt  rate
 -
  i2s0_sync  0   02400
  spdif_in_sync  0   02400
 spdif_mux   0   02400
spdif0   02400
   spdif_doubler 0   04800
  spdif_div  0   04800
 spdif_2x0   04800


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/