linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv2] RTC/i.MX/DryICE: add recovery routines to the driver
@ 2015-04-27 13:59 Juergen Borleis
  2015-04-27 13:59 ` [PATCH 1/6] RTC/i.MX/DryIce: avoid the __raw* register access functions Juergen Borleis
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Juergen Borleis @ 2015-04-27 13:59 UTC (permalink / raw)
  To: linux-arm-kernel

The built-in RTC unit on some i.MX SoCs isn't an RTC only. It is also a tamper
monitor unit which can keep some (secret) keys. When it does its tamper
detection job and a security violation is detected, the whole DryICE unit
including the real-time counter locks completely. In this state the whole unit
is completely useless. The only way to bring it out of this locked state is a
power cylce with a POR (most of the case) or additionally a battery power
cycle which includes the loss of the secret keys.
At the next boot time some flags signals the security violation and a specific
register access sequence must be done to finaly bring this unit into life
again. Until this is done, there is no way to use it again as an RTC.

But also without any enabled tamper detection sometimes this unit tends to
lock. And in this case the same steps must be done to bring it into life
again.

The current implementation of the DryIce driver isn't able to unlock the
device successfully in the case it is locked somehow. Only a full power cycle
including *battery power* can help in this case.

The attached change set adds the required routines to be able to unlock the
DryIce unit in the case the driver detects a locked unit. This includes
unlocking it if it is locked by accident or malfunction and not by a real
security violation.

The last patch of this series is for reference only and should not be part
of the kernel. It just adds some code to force a locked DryIce unit to check
if the new routines are able to unlock it again. This code was required
because I had no hardware which really uses the tamper detection features of
this unit.

This is the 2nd version of the patch series. Hopefully I addressed all comments
from Alexandre.

In this version I added a new patch which replaces all __raw* register functions
as recommended by Alexandre.

Comments are welcome.

jbe

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-05-04 10:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-27 13:59 [PATCHv2] RTC/i.MX/DryICE: add recovery routines to the driver Juergen Borleis
2015-04-27 13:59 ` [PATCH 1/6] RTC/i.MX/DryIce: avoid the __raw* register access functions Juergen Borleis
2015-04-27 13:59 ` [PATCH 2/6] RTC/i.MX/DryIce: add some background info about the states the machine can be in Juergen Borleis
2015-04-27 13:59 ` [PATCH 3/6] RTC/i.MX/DryIce: add the unit recovery code Juergen Borleis
2015-04-27 13:59 ` [PATCH 4/6] RTC/i.MX/DryIce: monitor a security violation at runtime Juergen Borleis
2015-04-27 13:59 ` [PATCH 5/6] RTC/i.MX/DryIce: when locked, do not fail silently Juergen Borleis
2015-04-27 13:59 ` [PATCH 6/6] RTC/i.MX/DryIce: prepare to force a security violation Juergen Borleis
2015-05-03 15:12 ` [rtc-linux] [PATCHv2] RTC/i.MX/DryICE: add recovery routines to the driver Alexandre Belloni
2015-05-03 15:13   ` Marc Kleine-Budde
2015-05-03 15:38     ` Alexandre Belloni
2015-05-04 10:12   ` Jürgen Borleis

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).