Thread (25 messages) 25 messages, 3 authors, 2013-11-15

[rtc-linux] [PATCH 3/3] ARM: at91: fix hanged boot

flat view

From: Jean-Christophe PLAGNIOL-VILLARD <hidden>
Date: 2013-03-11 13:06:07
Also in: lkml

On 11:02 Mon 11 Mar     , Johan Hovold wrote:
On Fri, Mar 08, 2013 at 05:02:58PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
quoted
On 13:51 Fri 08 Mar     , Johan Hovold wrote:
quoted
Make sure the RTC and RTT-interrupts are masked at boot by adding a new
SOC-initialiser and helpers functions.

This fixes hanged boot on all AT91 SOCs but RM9200, for example, after a
reset during an RTC-update or if an RTC or RTT-alarm goes off after a
non-clean shutdown.

The RTC and RTT-peripherals are powered by backup power (VDDBU) (on all
AT91 SOCs but RM9200) and are not reset on wake-up, user, watchdog or
software reset. This means that their interrupts may be enabled during
early boot if, for example, they where not disabled during a previous
shutdown (e.g. due to a buggy driver or a non-clean shutdown such as a
user reset). Furthermore, an RTC or RTT-alarm may also be active.

The RTC and RTT-interrupts use the shared system-interrupt line, and if
an interrupt occurs before a handler (e.g. RTC-driver) has been
installed this leads to the system interrupt being disabled and prevents
the system from booting.

Note that when boot hangs due to an early RTC or RTT-interrupt, the only
way to get the system to start again is to remove the backup power (e.g.
battery) or to disable the interrupt manually from the bootloader. In
particular, a user reset is not sufficient.

Tested on at91sam9263 and at91sam9g45.

Signed-off-by: Johan Hovold <redacted>
---
 arch/arm/mach-at91/at91rm9200.c               |  9 ++++++++
 arch/arm/mach-at91/at91sam9260.c              |  6 ++++++
 arch/arm/mach-at91/at91sam9261.c              |  6 ++++++
 arch/arm/mach-at91/at91sam9263.c              |  7 ++++++
 arch/arm/mach-at91/at91sam9g45.c              |  7 ++++++
 arch/arm/mach-at91/at91sam9n12.c              |  6 ++++++
 arch/arm/mach-at91/at91sam9rl.c               |  7 ++++++
 arch/arm/mach-at91/at91sam9x5.c               |  6 ++++++
 arch/arm/mach-at91/generic.h                  |  2 ++
 arch/arm/mach-at91/include/mach/at91sam9n12.h |  5 +++++
 arch/arm/mach-at91/include/mach/at91sam9x5.h  |  5 +++++
nack for DT probe te address via DT
Fair enough. I'll respin and add proper DT-support. 
quoted
quoted
 arch/arm/mach-at91/setup.c                    | 31 +++++++++++++++++++++++++++
 arch/arm/mach-at91/soc.h                      |  1 +
 13 files changed, 98 insertions(+)
at boot time we can disable all the irq as we need none of them
Yes, but all but the VDDBU-powered-peripheral ones will already have
been disabled at reset. If a buggy bootloader enables something it
should not, then the bootloader should be fixed.
so fix the bootloader NACK in the kernel
it's too much ugly

the kernel requirere the interrupt to be disabled

Best Regards,
J.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help