On Mon, Apr 18, 2022 at 3:29 AM Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> wrote: > > On 4/14/22 14:19, Rafael J. Wysocki wrote: > > On Thu, Apr 14, 2022 at 12:24 AM Dmitry Osipenko > > <dmitry.osipenko@xxxxxxxxxxxxx> wrote: > >> > >> On 4/13/22 21:48, Rafael J. Wysocki wrote: > >>> On Tue, Apr 12, 2022 at 1:39 AM Dmitry Osipenko > >>> <dmitry.osipenko@xxxxxxxxxxxxx> wrote: > >>>> > >>>> Add sanity check which ensures that there are no two restart handlers > >>>> registered using the same priority. This requirement will become mandatory > >>>> once all drivers will be converted to the new API and such errors will be > >>>> fixed. > >>>> > >>>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> > >>> > >>> The first two patches in the series are fine with me and there's only > >>> one minor nit regarding this one (below). > >>> > >>>> --- > >>>> kernel/reboot.c | 15 +++++++++++++++ > >>>> 1 file changed, 15 insertions(+) > >>>> > >>>> diff --git a/kernel/reboot.c b/kernel/reboot.c > >>>> index ed4e6dfb7d44..acdae4e95061 100644 > >>>> --- a/kernel/reboot.c > >>>> +++ b/kernel/reboot.c > >>>> @@ -182,6 +182,21 @@ static ATOMIC_NOTIFIER_HEAD(restart_handler_list); > >>>> */ > >>>> int register_restart_handler(struct notifier_block *nb) > >>>> { > >>>> + int ret; > >>>> + > >>>> + ret = atomic_notifier_chain_register_unique_prio(&restart_handler_list, nb); > >>>> + if (ret != -EBUSY) > >>>> + return ret; > >>>> + > >>>> + /* > >>>> + * Handler must have unique priority. Otherwise call order is > >>>> + * determined by registration order, which is unreliable. > >>>> + * > >>>> + * This requirement will become mandatory once all drivers > >>>> + * will be converted to use new sys-off API. > >>>> + */ > >>>> + pr_err("failed to register restart handler using unique priority\n"); > >>> > >>> I would use pr_info() here, because this is not a substantial error AFAICS. > >> > >> It's indeed not a substantial error so far, but it will become > >> substantial later on once only unique priorities will be allowed. The > >> pr_warn() could be a good compromise here, pr_info() is too mild, IMO. > > > > Well, I'm still unconvinced about requiring all of the users of this > > interface to use unique priorities. > > > > Arguably, there are some of them who don't really care about the > > ordering, so could there be an option for them to specify the lack of > > care by, say, passing 0 as the priority that would be regarded as a > > special case? > > > > IOW, if you pass 0, you'll be run along the others who've also passed > > 0, but if you pass anything different from 0, it must be unique. What > > do you think? > > There are indeed cases where ordering is unimportant. Like a case of > PMIC and watchdog restart handlers for example, both handlers will > produce equal effect from a user's perspective. Perhaps indeed it's more > practical to have at least one shared level. > > In this patchset the level 0 is specified as an alias to the default > level 128. If one user registers handler using unique level 128 and the > other user uses non-unique level 0, then we have ambiguity. > > One potential option is to make the whole default level 128 non-unique. > This will allow users to not care about the uniqueness by default like > they always did it previously, but it will hide potential problems for > users who actually need unique level and don't know about it yet due to > a lucky registration ordering that they have today. Are you okay with > this option? Yes, I am.