From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Matthias Brugger <matthias.bgg@gmail.com>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
walter.chang@mediatek.com,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
"Maciej W . Rozycki" <macro@orcam.me.uk>,
John Stultz <jstultz@google.com>
Cc: wsd_upstream@mediatek.com, stanley.chu@mediatek.com,
Chun-hung.Wu@mediatek.com, Freddy.Hsin@mediatek.com,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: Re: [PATCH 1/3] time/sched_clock: Export sched_clock_register()
Date: Thu, 9 Feb 2023 14:15:07 +0100 [thread overview]
Message-ID: <076e1d36-351d-ca36-dde9-50075f02d5c6@collabora.com> (raw)
In-Reply-To: <a021950c-f3d8-8623-4b8f-76c70751c005@gmail.com>
Il 08/02/23 23:22, Matthias Brugger ha scritto:
>
>
> On 08/02/2023 20:45, Krzysztof Kozlowski wrote:
>> On 08/02/2023 20:41, Matthias Brugger wrote:
>>>
>>>
>>> On 08/02/2023 15:24, Krzysztof Kozlowski wrote:
>>>> On 08/02/2023 10:48, walter.chang@mediatek.com wrote:
>>>>> From: Chun-Hung Wu <chun-hung.wu@mediatek.com>
>>>>>
>>>>> clocksource driver may use sched_clock_register()
>>>>> to resigter itself as a sched_clock source.
>>>>> Export it to support building such driver
>>>>> as module, like timer-mediatek.c
>>>>>
>>>>> Signed-off-by: Chun-Hung Wu <chun-hung.wu@mediatek.com>
>>>>> ---
>>>>> kernel/time/sched_clock.c | 4 ++--
>>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
>>>>> index 8464c5acc913..8e49e87d1221 100644
>>>>> --- a/kernel/time/sched_clock.c
>>>>> +++ b/kernel/time/sched_clock.c
>>>>> @@ -150,8 +150,7 @@ static enum hrtimer_restart sched_clock_poll(struct
>>>>> hrtimer *hrt)
>>>>> return HRTIMER_RESTART;
>>>>> }
>>>>> -void __init
>>>>> -sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
>>>>> +void sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
>>>>
>>>> Is there a non-init caller?
>>>>
>>>>> {
>>>>> u64 res, wrap, new_mask, new_epoch, cyc, ns;
>>>>> u32 new_mult, new_shift;
>>>>> @@ -223,6 +222,7 @@ sched_clock_register(u64 (*read)(void), int bits, unsigned
>>>>> long rate)
>>>>> pr_debug("Registered %pS as sched_clock source\n", read);
>>>>> }
>>>>> +EXPORT_SYMBOL_GPL(sched_clock_register);
>>>>
>>>> Where is the module using it?
>>>>
>>>> You need to bring users of these two changes, not just prepare something
>>>> for your out of tree patches.
>>>>
>>>
>>> I'd propose to add at least one driver that will need these changes, to make it
>>> clear why you need that.
>>
>> ... and actually test if the system works fine when booted from such
>> clocksource as a module. I have doubts that and unfortunately folks
>> working on GKI like to put whatever stuff from mainline into modules
>> even if it does not make sense for us (see long time ago discussion
>> about pinctrl drivers).
>>
>
> Yes thinking about it twice, it makes only sense if the Arm architecture timer is
> running. Otherwise the system will hang on boot. I know that older MediaTek devices
> had problems with that...
I think also some very old Qualcomm SoCs have the same timer "issue" and I bet that
some others as well do.
Now, I won't argue about the benefits or drawbacks of having X, Y or Z as a module
because it's probably not the right time/place to... but!
I was trying to get my brain ticking on this one and I immediately didn't like it:
as a matter of fact, this kind of clocksources (especially the arch timer[s]) is
boot critical and that's not limited to ARM, anyway... this means that a such a
change can't be *that* easy, at all.
If you really want to register such a clocksource driver, I would suggest instead
to make an addition that allows you to do so, while *not* touching common code
paths that are called by multiple architectures and that may need those to stay
as they are for one reason or another.
*If* this kind of modularization will ever happen, it's something that must be
done slowly and again, not in one shot, especially not with one series "taking
care of 'em all". Please be careful when touching *core* code.
That was just an opinion on something that I can envision to be eventually going
wrong in many, many ways...
Regards,
Angelo
next prev parent reply other threads:[~2023-02-09 13:15 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-08 9:48 [PATCH 0/3] Support timer drivers as loadable modules walter.chang
2023-02-08 9:48 ` [PATCH 1/3] time/sched_clock: Export sched_clock_register() walter.chang
2023-02-08 14:24 ` Krzysztof Kozlowski
2023-02-08 19:41 ` Matthias Brugger
2023-02-08 19:45 ` Krzysztof Kozlowski
2023-02-08 22:22 ` Matthias Brugger
2023-02-09 13:15 ` AngeloGioacchino Del Regno [this message]
2023-02-09 15:34 ` Daniel Lezcano
2023-02-09 16:08 ` Sudeep Holla
2023-02-10 10:08 ` Walter Chang (張維哲)
2023-02-08 9:48 ` [PATCH 2/3] clocksource/drivers/mmio: Export clocksource_mmio_init() walter.chang
2023-02-08 9:48 ` [PATCH 3/3] clocksource/drivers/timer-of: Remove __init markings walter.chang
2023-02-09 15:36 ` [PATCH 0/3] Support timer drivers as loadable modules Daniel Lezcano
2023-02-09 19:50 ` John Stultz
2023-02-10 8:51 ` Daniel Lezcano
2023-02-10 19:58 ` John Stultz
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=076e1d36-351d-ca36-dde9-50075f02d5c6@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=Chun-hung.Wu@mediatek.com \
--cc=Freddy.Hsin@mediatek.com \
--cc=daniel.lezcano@linaro.org \
--cc=jstultz@google.com \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=macro@orcam.me.uk \
--cc=matthias.bgg@gmail.com \
--cc=stanley.chu@mediatek.com \
--cc=tglx@linutronix.de \
--cc=walter.chang@mediatek.com \
--cc=wsd_upstream@mediatek.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox