From: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: "Heiko Stübner" <heiko@sntech.de>,
"Arnd Bergmann" <arnd@arndb.de>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/9] misc: sram: fix enabled clock leak on error path
Date: Fri, 29 May 2015 14:31:13 +0300 [thread overview]
Message-ID: <55684E01.70502@mentor.com> (raw)
In-Reply-To: <1432630462.3743.15.camel@pengutronix.de>
Hi Philipp,
On 26.05.2015 11:54, Philipp Zabel wrote:
> Hi Vladimir,
>
> Am Sonntag, den 24.05.2015, 23:12 +0300 schrieb Vladimir Zapolskiy:
>> Hi Philipp,
>>
>> On 20.05.2015 14:30, Philipp Zabel wrote:
>>> Hi Vladimir,
>>>
>>> Am Dienstag, den 19.05.2015, 16:11 +0300 schrieb Vladimir Zapolskiy:
>>>> Hi Philipp,
>>>>
>>>> On 19.05.2015 13:41, Philipp Zabel wrote:
>>>>> Am Montag, den 18.05.2015, 22:08 +0300 schrieb Vladimir Zapolskiy:
>>>>>> If devm_gen_pool_create() fails, the previously enabled sram->clk is
>>>>>> not disabled on probe() exit.
>>>>>>
>>>>>> Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
>>>>>> ---
>>>>>> drivers/misc/sram.c | 9 +++++----
>>>>>> 1 file changed, 5 insertions(+), 4 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
>>>>>> index eeaaf5f..b44a423 100644
>>>>>> --- a/drivers/misc/sram.c
>>>>>> +++ b/drivers/misc/sram.c
>>>>>> @@ -90,16 +90,17 @@ static int sram_probe(struct platform_device *pdev)
>>>>>> if (!sram)
>>>>>> return -ENOMEM;
>>>>>>
>>>>>> + sram->pool = devm_gen_pool_create(&pdev->dev,
>>>>>> + ilog2(SRAM_GRANULARITY), -1);
>>>>>> + if (!sram->pool)
>>>>>> + return -ENOMEM;
>>>>>> +
>>>>>> sram->clk = devm_clk_get(&pdev->dev, NULL);
>>>>>> if (IS_ERR(sram->clk))
>>>>>> sram->clk = NULL;
>>>>>> else
>>>>>> clk_prepare_enable(sram->clk);
>>>>>
>>>>> Here you move sram->clk around, and later in patch 7 it gets moved
>>>>> again. To me it looks like the two should be squashed together.
>>>>
>>>> I agree with you, instead of moving sram->pool up it is better to place
>>>> sram->clk right at the end of probe(), in other words this patch can be
>>>> safely merged with patch 7 and the series becomes a bit shorter.
>>>>
>>>> Thank you for the finding, I'm going to resend the change, please let me
>>>> know your opinion about "%pa" vs "0x%llx", if it is needed to be changed
>>>> or not.
>>>
>>> I'd prefer to use %pa for the phys_addr_t types. You could argue that
>>> %pa is inappropriate as those are addresses relative to the SRAM region,
>>> not physical addresses as seen by the CPU. But following that argument,
>>> using phys_addr_t in the first place would not be correct either.
>>
>> The driver utilizes genalloc gen_pool_add_virt() function, whose
>> corresponding argument is of phys_addr_t type (and it is correct in my
>> opinion), the interface to this function dictates the type of its
>> arguments on client's side.
>
> res->start is of type phys_addr_t (well, resource_size_t) already.
> block->start/size and cur_start/size are just offsets added to it.
I agree.
> I wonder if it wouldn't be more appropriate to use resource_size_t for
> the sram_reserve .start field.
Assuming that the sram_reserve .start field represents only the difference
of two res->start and this difference fits into u32 storage, it should be
safe to keep it as is.
In my opinion integer overflow case should not be considered or handled
by the driver, so probably the best option would be just to drop
phys_addr_t commit, since it attempts to solve a nonexistent problem.
Please let me know your opinion, if it is fine with you, I'll remove
"use phys_addr_t instead of u32 for physical address" commit and resend
the series.
>>> Which leads me to question whether we will see larger than 4 GiB SRAM
>>> regions in the foreseeable future?
>>
>> The question is not only about SRAM region size, but mainly it is about
>> the base address of SRAM, and don't want to exclude a situation, when
>> some kind of SRAM device is found outside of u32 addressable memory
>> space. Actually I believe an arbitrary physical memory region may be
>> claimed as it were a "SRAM device" and the driver still works fine.
>
> See above, start addresses above 4 GiB should be supported even without
> extending the offsets to 64-bit.
>
>> If phys_addr_t arguments are accepted, then back to "%pa" vs "0x%llx"
>> question:
>>
> [...]
>> I see that the change preserves the functionality, so I'll change printk
>> format to "%pa", will resend the series tomorrow.
>
--
With best wishes,
Vladimir
next prev parent reply other threads:[~2015-05-29 11:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-18 19:08 [PATCH v3 0/9] misc: sram: minor fixes and clean up Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 1/9] misc: sram: fix enabled clock leak on error path Vladimir Zapolskiy
2015-05-19 10:41 ` Philipp Zabel
2015-05-19 13:11 ` Vladimir Zapolskiy
2015-05-20 11:30 ` Philipp Zabel
2015-05-24 20:12 ` Vladimir Zapolskiy
2015-05-26 8:54 ` Philipp Zabel
2015-05-29 11:31 ` Vladimir Zapolskiy [this message]
2015-05-29 15:38 ` Philipp Zabel
2015-05-18 19:08 ` [PATCH v3 2/9] misc: sram: fix device node reference leak on error Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 3/9] misc: sram: use phys_addr_t instead of u32 for physical address Vladimir Zapolskiy
2015-05-19 10:38 ` Philipp Zabel
2015-05-19 12:30 ` Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 4/9] misc: sram: bump error message level on unclean driver unbinding Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 5/9] misc: sram: report correct SRAM pool size Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 6/9] misc: sram: add private struct device and virt_base members Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 7/9] misc: sram: simplify probe error path Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 8/9] misc: sram: move reserved block logic out of probe function Vladimir Zapolskiy
2015-05-18 19:08 ` [PATCH v3 9/9] misc: sram: sort and clean up included headers Vladimir Zapolskiy
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=55684E01.70502@mentor.com \
--to=vladimir_zapolskiy@mentor.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=heiko@sntech.de \
--cc=linux-kernel@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox