lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <556F1758.4030207@roeck-us.net>
Date:	Wed, 03 Jun 2015 08:03:52 -0700
From:	Guenter Roeck <linux@...ck-us.net>
To:	Marek Szyprowski <m.szyprowski@...sung.com>,
	Heiko Stübner <heiko@...ech.de>,
	Ulf Hansson <ulf.hansson@...aro.org>,
	Alexandre Courbot <acourbot@...dia.com>
CC:	linux-mmc@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: Usage of restart_handler in pwrseq_emmc

On 06/03/2015 03:01 AM, Marek Szyprowski wrote:
> Hello,
>
> On 2015-06-02 17:29, Heiko Stübner wrote:
>> I'm confused by the pwrseq-emmc registering a restart_handler for resetting an
>> emmc in a panic-reboot case at priority 129 to "schedules it just before
>> system reboot".
>>
>> >From what I remember from the restart-handler discussion the actuall usage is
>> traversing the ordered list until one registered handler sucessfully restarts
>> the system and not to have arbitary actions in there not related to the actual
>> restart process?
>>
>> The actual documentation in kernel/reboot.c supports this assumption,
>> describing register_restart_handler as "Register function to be called to
>> reset the system".
>>
>>
>> Additionally, 128 isn't even _the_ priority to reboot the system as described
>> above and some drivers use higher priorities per default, see in
>> drivers/power/reset arm-versatile-reboot.c; at91-reset.c; rmobile-reset.c and
>> some more.
>>
>>
>> So I guess this should use some other mechanism (reboot notifier) instead of
>> restart_handlers?
>
> The first problem with reboot notifiers is that they are called too early - before
> device_shutdown(), what interferes with the code in mmc_bus_shutdown and causes
> lockup. The second problem is
> that reboot notifiers are not called from emergency_restart() path. I agree that
> 129 value for priority might not be the best, maybe according to documentation,
> 255 value should be used to ensure that the handler will be called first before
> any real restart handler.
>

There is no non-real restart handler, and the documentation does not say anything
about "called first before any real restart handler". Even with a priority of 255
you would have no guarantee that your handler is called. Restart handlers are
supposed to restart the system, nothing else. Actually, you have no guarantee
that the restart handler is called in the first place - not all architectures
support it (currently only arm, arm64, and mips do). Presumably mmc support is
not limited to those architectures.

> If you have any idea how to avoid restart handler and ensure proper eMMC card
> reboot sequence on any system reboot, I'm open for suggestions.
>

Why not execute the device-specific restart in the shutdown function ?
You could register a reboot notifier to mark that a reboot is happening,
and then execute the restart at the end of mmc_bus_shutdown.

Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ