From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Raphael Poggi <raphael.poggi@lynxleap.co.uk>,
Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, luc@lmichel.fr, damien.hedde@dahe.fr
Subject: Re: [PATCH] hw/core/clock: always iterate through childs in clock_propagate_period
Date: Fri, 19 Apr 2024 18:30:19 +0200 [thread overview]
Message-ID: <acd540fc-8198-4b02-bd35-24c53891f667@linaro.org> (raw)
In-Reply-To: <CACqcpZDv8gjKhMygmAWkyfYqPH-NVz4RpPb8Q0tBTege_Gro4Q@mail.gmail.com>
On 19/4/24 18:08, Raphael Poggi wrote:
> Hi Peter,
>
> Le ven. 19 avr. 2024 à 16:08, Peter Maydell <peter.maydell@linaro.org> a écrit :
>>
>> On Thu, 18 Apr 2024 at 21:39, Raphael Poggi
>> <raphael.poggi@lynxleap.co.uk> wrote:
>>>
>>> Hi Philippe,
>>>
>>> Le jeu. 18 avr. 2024 à 20:43, Philippe Mathieu-Daudé
>>> <philmd@linaro.org> a écrit :
>>>>
>>>> Hi Raphael,
>>>>
>>>> On 18/4/24 21:16, Raphael Poggi wrote:
>>>>> When dealing with few clocks depending with each others, sometimes
>>>>> we might only want to update the multiplier/diviser on a specific clock
>>>>> (cf clockB in drawing below) and call "clock_propagate(clockA)" to
>>>>> update the childs period according to the potential new multiplier/diviser values.
>>>>>
>>>>> +--------+ +--------+ +--------+
>>>>> | clockA | --> | clockB | --> | clockC |
>>>>> +--------+ +--------+ +--------+
>>>>>
>>>>> The actual code would not allow that because, since we cannot call
>>>>> "clock_propagate" directly on a child, it would exit on the
>>>>> first child has the period has not changed for clockB, only clockC is
>>>>
>>>> Typo "as the period has not changed"?
>>>
>>> That's a typo indeed, thanks!
>>>
>>>>
>>>> Why can't you call clock_propagate() on a child?
>>>
>>> There is an assert "assert(clk->source == NULL);" in clock_propagate().
>>> If I am not wrong, clk->source is set when the clock has a parent.
>>
>> I think that assertion is probably there because we didn't
>> originally have the idea of a clock having a multiplier/divider
>> setting. So the idea was that calling clock_propagate() on a
>> clock with a parent would always be wrong, because the only
>> reason for its period to change would be if the parent had
>> changed, and if the parent changes then clock_propagate()
>> should be called on the parent.
>>
>> We added mul/div later, and we (I) didn't think through all
>> the consequences. If you change the mul/div settings on
>> clockB in this example then you need to call clock_propagate()
>> on it, so we should remove that assert(). Then when you change
>> the mul/div on clockB you can directly clock_propagate(clockB),
>> and I don't think you need this patch at that point.
>
> Alright, that makes sense, is that OK if I send a patch removing the assert ?
Sure, that is welcomed :)
Regards,
Phil.
prev parent reply other threads:[~2024-04-19 16:30 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-18 19:16 [PATCH] hw/core/clock: always iterate through childs in clock_propagate_period Raphael Poggi
2024-04-18 19:43 ` Philippe Mathieu-Daudé
2024-04-18 20:39 ` Raphael Poggi
2024-04-19 15:08 ` Peter Maydell
2024-04-19 16:08 ` Raphael Poggi
2024-04-19 16:24 ` Peter Maydell
2024-04-19 16:30 ` Philippe Mathieu-Daudé [this message]
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=acd540fc-8198-4b02-bd35-24c53891f667@linaro.org \
--to=philmd@linaro.org \
--cc=damien.hedde@dahe.fr \
--cc=luc@lmichel.fr \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=raphael.poggi@lynxleap.co.uk \
/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;
as well as URLs for NNTP newsgroup(s).