All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: Andy Yan <andy.yan@rock-chips.com>
Cc: robh+dt@kernel.org, sre@kernel.org, heiko@sntech.de,
	john.stultz@linaro.org, arnd@arndb.de, galak@codeaurora.org,
	ijc+devicetree@hellion.org.uk, catalin.marinas@arm.com,
	olof@lixom.net, alexandre.belloni@free-electrons.com,
	dbaryshkov@gmail.com, jun.nie@linaro.org, pawel.moll@arm.com,
	will.deacon@arm.com, linux-rockchip@lists.infradead.org,
	matthias.bgg@gmail.com, devicetree@vger.kernel.org,
	linux-pm@vger.kernel.org, f.fainelli@gmail.com,
	linux@arm.linux.org.uk, mbrugger@suse.com,
	linux-arm-kernel@lists.infradead.org, lorenzo.pieralisi@arm.com,
	moritz.fischer@ettus.com, linux-kernel@vger.kernel.org,
	wxt@rock-chips.com, dwmw2@infradead.org, mark.rutland@arm.com
Subject: Re: [PATCH v6 2/4] power: reset: add reboot mode driver
Date: Mon, 28 Mar 2016 17:05:24 +0900	[thread overview]
Message-ID: <56F8E5C4.5010000@samsung.com> (raw)
In-Reply-To: <56F8DFED.50905@rock-chips.com>

On 28.03.2016 16:40, Andy Yan wrote:
> Hi Krzysztof :
> 
> On 2016年03月28日 14:34, Krzysztof Kozlowski wrote:
>> On 24.03.2016 17:03, Andy Yan wrote:
>>> Hi Krzystof:
>> (...)
>>
>>>>> +static int get_reboot_mode_magic(struct reboot_mode_driver *reboot,
>>>>> +                                const char *cmd)
>>>>> +{
>>>>> +       const char *normal = "normal";
>>>>> +       int magic = 0;
>>>>> +       struct mode_info *info;
>>>>> +
>>>>> +       if (!cmd)
>>>>> +               cmd = normal;
>>>>> +
>>>>> +       list_for_each_entry(info, &reboot->head, list) {
>>>>> +               if (!strcmp(info->mode, cmd)) {
>>>>> +                       magic = info->magic;
>>>>> +                       break;
>>>>> +               }
>>>>> +       }
>>>>> +
>>>>> +       return magic;
>>>> In absence of 'normal' mode (it is not described as required property)
>>>> the magic will be '0'. It would be nice to document that in bindings.
>>>> Imagine someone forgets about this and will wonder why 0x0 is written
>>>> to his precious register on normal reboot...
>>>      If the magic value is '0', we won't touch the register, please see
>>> reboot_mode_notify bellow.
>> Ah, indeed... so we cannot use value of '0' for magic (e.g. to clear any
>> existing value for normal reboot)?
> 
>     It seems that the value '0' cannot be used.

How about mentioning it in bindings documentation?

(...)

>>>>> +               strcpy(info->mode, prop->name + len);
>>>> Ehm, and how do you protect that name of mode is shorter than 32
>>>> characters?
>>>      How about info->mode = prop->name + len ?
>> I don't get your answer.
>> As fair as I read the code, the prop->name can be very long and you are
>> copying it from 5 character. If the name of the mode has bazillion
>> characters then again my question: how do you protect that it will fit
>> in 32 bytes of 'mode'?
> 
>     What I mean is set info->mode as a pointer point to prop->name + len
> 
>    struct mode_info {
>             char *mode;
>             ..........
>             .........
>    }
> 
>    info->mode = prop->name + len

Ahh, I get it. Then I guess you should also do of_node_get() and
of_node_put()... and use kstrdup_const(). Looks good but I am not
familiar with overlays and life-cycle of OF nodes (documentation for the
life-cycle is a todo list item: Documentation/devicetree/todo.txt).

Best regards,
Krzysztof


WARNING: multiple messages have this Message-ID (diff)
From: k.kozlowski@samsung.com (Krzysztof Kozlowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 2/4] power: reset: add reboot mode driver
Date: Mon, 28 Mar 2016 17:05:24 +0900	[thread overview]
Message-ID: <56F8E5C4.5010000@samsung.com> (raw)
In-Reply-To: <56F8DFED.50905@rock-chips.com>

On 28.03.2016 16:40, Andy Yan wrote:
> Hi Krzysztof :
> 
> On 2016?03?28? 14:34, Krzysztof Kozlowski wrote:
>> On 24.03.2016 17:03, Andy Yan wrote:
>>> Hi Krzystof:
>> (...)
>>
>>>>> +static int get_reboot_mode_magic(struct reboot_mode_driver *reboot,
>>>>> +                                const char *cmd)
>>>>> +{
>>>>> +       const char *normal = "normal";
>>>>> +       int magic = 0;
>>>>> +       struct mode_info *info;
>>>>> +
>>>>> +       if (!cmd)
>>>>> +               cmd = normal;
>>>>> +
>>>>> +       list_for_each_entry(info, &reboot->head, list) {
>>>>> +               if (!strcmp(info->mode, cmd)) {
>>>>> +                       magic = info->magic;
>>>>> +                       break;
>>>>> +               }
>>>>> +       }
>>>>> +
>>>>> +       return magic;
>>>> In absence of 'normal' mode (it is not described as required property)
>>>> the magic will be '0'. It would be nice to document that in bindings.
>>>> Imagine someone forgets about this and will wonder why 0x0 is written
>>>> to his precious register on normal reboot...
>>>      If the magic value is '0', we won't touch the register, please see
>>> reboot_mode_notify bellow.
>> Ah, indeed... so we cannot use value of '0' for magic (e.g. to clear any
>> existing value for normal reboot)?
> 
>     It seems that the value '0' cannot be used.

How about mentioning it in bindings documentation?

(...)

>>>>> +               strcpy(info->mode, prop->name + len);
>>>> Ehm, and how do you protect that name of mode is shorter than 32
>>>> characters?
>>>      How about info->mode = prop->name + len ?
>> I don't get your answer.
>> As fair as I read the code, the prop->name can be very long and you are
>> copying it from 5 character. If the name of the mode has bazillion
>> characters then again my question: how do you protect that it will fit
>> in 32 bytes of 'mode'?
> 
>     What I mean is set info->mode as a pointer point to prop->name + len
> 
>    struct mode_info {
>             char *mode;
>             ..........
>             .........
>    }
> 
>    info->mode = prop->name + len

Ahh, I get it. Then I guess you should also do of_node_get() and
of_node_put()... and use kstrdup_const(). Looks good but I am not
familiar with overlays and life-cycle of OF nodes (documentation for the
life-cycle is a todo list item: Documentation/devicetree/todo.txt).

Best regards,
Krzysztof

  reply	other threads:[~2016-03-28  8:05 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-22 11:35 [PATCH v6 0/4] add reboot mode driver Andy Yan
2016-03-22 11:35 ` Andy Yan
2016-03-22 11:35 ` Andy Yan
2016-03-22 11:36 ` [PATCH v6 1/4] dt-bindings: power: reset: add document for reboot-mode driver Andy Yan
2016-03-22 11:36   ` Andy Yan
     [not found]   ` <1458646592-540-1-git-send-email-andy.yan-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-03-24  2:27     ` Krzysztof Kozlowski
2016-03-24  2:27       ` Krzysztof Kozlowski
2016-03-24  2:27       ` Krzysztof Kozlowski
2016-03-24  7:27       ` Andy Yan
2016-03-24  7:27         ` Andy Yan
2016-03-24  7:47         ` Krzysztof Kozlowski
2016-03-24  7:47           ` Krzysztof Kozlowski
     [not found] ` <1458646525-491-1-git-send-email-andy.yan-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-03-22 11:37   ` [PATCH v6 2/4] power: reset: add reboot mode driver Andy Yan
2016-03-22 11:37     ` Andy Yan
2016-03-22 11:37     ` Andy Yan
2016-03-24  2:50     ` Krzysztof Kozlowski
2016-03-24  2:50       ` Krzysztof Kozlowski
2016-03-24  8:03       ` Andy Yan
2016-03-24  8:03         ` Andy Yan
2016-03-28  6:34         ` Krzysztof Kozlowski
2016-03-28  6:34           ` Krzysztof Kozlowski
2016-03-28  7:40           ` Andy Yan
2016-03-28  7:40             ` Andy Yan
2016-03-28  8:05             ` Krzysztof Kozlowski [this message]
2016-03-28  8:05               ` Krzysztof Kozlowski
     [not found]       ` <CAJKOXPcKzGTAicbsXK-cC9WQT0vBhpSG_q2GCn37+72x2hdhsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-21 11:01         ` Andy Yan
2016-06-21 11:01           ` Andy Yan
2016-06-21 11:01           ` Andy Yan
2016-06-21 11:39           ` Krzysztof Kozlowski
2016-06-21 11:39             ` Krzysztof Kozlowski
2016-03-22 11:38   ` [PATCH v6 3/4] ARM: dts: rockchip: add syscon-reboot-mode DT node Andy Yan
2016-03-22 11:38     ` Andy Yan
2016-03-22 11:38     ` Andy Yan
2016-03-22 11:38 ` [PATCH v6 4/4] ARM64: " Andy Yan
2016-03-22 11:38   ` Andy Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56F8E5C4.5010000@samsung.com \
    --to=k.kozlowski@samsung.com \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=andy.yan@rock-chips.com \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=dbaryshkov@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=f.fainelli@gmail.com \
    --cc=galak@codeaurora.org \
    --cc=heiko@sntech.de \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=john.stultz@linaro.org \
    --cc=jun.nie@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mbrugger@suse.com \
    --cc=moritz.fischer@ettus.com \
    --cc=olof@lixom.net \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    --cc=will.deacon@arm.com \
    --cc=wxt@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.