All of lore.kernel.org
 help / color / mirror / Atom feed
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [rtc-linux] Re: [PATCH v2 0/5] ARM: at91: fix hanged boot
Date: Fri, 12 Apr 2013 14:09:22 +0200	[thread overview]
Message-ID: <5167F972.2000707@atmel.com> (raw)
In-Reply-To: <20130412093333.GF21305@localhost>

On 04/12/2013 11:33 AM, Johan Hovold :
> On Thu, Apr 11, 2013 at 06:54:14PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> On 17:55 Thu 11 Apr     , Johan Hovold wrote:
>>> On Mon, Mar 11, 2013 at 07:07:54PM +0100, Johan Hovold wrote:
>>>> These patches fix a few severe issues affecting most AT91 SOCs where
>>>> boot can hang after a non-general reset, and where the only way to get
>>>> the system booting again is to do a general reset -- something which
>>>> could require physically removing any backup battery.
>>>
>>> Have you had time to look at these patches yet, Nicolas?
>>>
>>> I don't think not having decided on the path forward for DT-support for
>>> rtc-at91sam9 needs to be a blocker. The rtt-nodes will be needed in any
>>> case.
>>>
>>> I could respin the series on top of the DT-patch for rtc-at91rm9200, and
>>> add interrupt and status-disabled properties to the DT-nodes as well.
>> for this this is still a no go
>>
>> this way too much ugly
> 
> I understand that you prefer fixing every bootloader. I was just making
> sure everyone agrees that that is the best solution.
> 
> The two interrupt masks has to be cleared before the kernel enables the
> system interrupt; either it needs to be done by the bootloader or by the
> at91 arch code.
> 
> The various bootloaders may not know anything about RTT or RTC, but
> have all made sure interrupts are disabled before executing the kernel.
> That is, they have fulfilled the requirement that interrupts must be
> disabled.
> 
> So the trade-off seems to be: Either we fix this once and for all using
> the infrastructure already in place in the kernel (DT), or risk further
> (apparently) bricked systems as there are bound to be bootloaders that
> won't get updated.

Note that I didn't read your patch series yet, so I am not commenting on
the implementation.

BUT, from my experience with customers facing this issue, I do thing
that we must provide a solution (even in Linux kernel itself).


> [...]
> 
>>>> The problems stem from the fact that the RTC and RTT-peripherals are
>>>> powered by backup power (VDDBU) and are not reset on wake-up, user,
>>>> watchdog or software reset. Consequently, RTC and RTT-alarms and their
>>>> interrupts may be enabled at boot, leading to a system lock-up when an
>>>> interrupt arrives on the shared system-interrupt line before the
>>>> appropriate handler (e.g. RTC-driver) has been installed.
>>>>
>>>> The easiest way to trigger this is to simply wake up from an RTC-alarm
>>>> on at91sam9g45. The RTC-driver currently does not disable interrupts at
>>>> shutdown so even after a clean shut-down the system will always hang
>>>> after waking up.
>>>>
>>>> The first patch fixes this very general case of RTC-wake up after a
>>>> clean shutdown in the RTC-driver and is marked for stable as it is
>>>> perfectly straight-forward. [ Note that the other, RTT-based, AT91
>>>> RTC-driver already disables its interrupts at shutdown. ]
> 
> And what about this patch? If it's decided that every bootloader needs
> to be updated, then perhaps it's better to risk bricked systems also
> after a clean shutdown to enforce those updates? Should we then remove
> the corresponding disable of interrupts at shutdown from the rtc-at91sam9
> driver by the same logic?
> 
>>>> The more general problem can be triggered, for example, by doing a
>>>> user-reset while updating the RTC-time or if an RTC or RTT-alarm goes
>>>> off after a non-clean shutdown.
>>>>
>>>> To fix this I propose that arch-code should mask the relevant interrupts
>>>> before enabling the system interrupt at early boot, and this is what
>>>> the fifth patch does. To access the RTC-registers I choose to revert a
>>>> recent patch that moved the register definitions to drivers/rtc.
>>>>
>>>> Arguably, the relevant interrupts could also be disabled in bootloaders,
>>>> but I suggest fixing it in the kernel once and for all.
> 
> Thanks,
> Johan
> 
> 


-- 
Nicolas Ferre

WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Johan Hovold <jhovold@gmail.com>,
	Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: <rtc-linux@googlegroups.com>, Andrew Victor <linux@maxim.org.za>,
	Alessandro Zummo <a.zummo@towertech.it>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [rtc-linux] Re: [PATCH v2 0/5] ARM: at91: fix hanged boot
Date: Fri, 12 Apr 2013 14:09:22 +0200	[thread overview]
Message-ID: <5167F972.2000707@atmel.com> (raw)
In-Reply-To: <20130412093333.GF21305@localhost>

On 04/12/2013 11:33 AM, Johan Hovold :
> On Thu, Apr 11, 2013 at 06:54:14PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> On 17:55 Thu 11 Apr     , Johan Hovold wrote:
>>> On Mon, Mar 11, 2013 at 07:07:54PM +0100, Johan Hovold wrote:
>>>> These patches fix a few severe issues affecting most AT91 SOCs where
>>>> boot can hang after a non-general reset, and where the only way to get
>>>> the system booting again is to do a general reset -- something which
>>>> could require physically removing any backup battery.
>>>
>>> Have you had time to look at these patches yet, Nicolas?
>>>
>>> I don't think not having decided on the path forward for DT-support for
>>> rtc-at91sam9 needs to be a blocker. The rtt-nodes will be needed in any
>>> case.
>>>
>>> I could respin the series on top of the DT-patch for rtc-at91rm9200, and
>>> add interrupt and status-disabled properties to the DT-nodes as well.
>> for this this is still a no go
>>
>> this way too much ugly
> 
> I understand that you prefer fixing every bootloader. I was just making
> sure everyone agrees that that is the best solution.
> 
> The two interrupt masks has to be cleared before the kernel enables the
> system interrupt; either it needs to be done by the bootloader or by the
> at91 arch code.
> 
> The various bootloaders may not know anything about RTT or RTC, but
> have all made sure interrupts are disabled before executing the kernel.
> That is, they have fulfilled the requirement that interrupts must be
> disabled.
> 
> So the trade-off seems to be: Either we fix this once and for all using
> the infrastructure already in place in the kernel (DT), or risk further
> (apparently) bricked systems as there are bound to be bootloaders that
> won't get updated.

Note that I didn't read your patch series yet, so I am not commenting on
the implementation.

BUT, from my experience with customers facing this issue, I do thing
that we must provide a solution (even in Linux kernel itself).


> [...]
> 
>>>> The problems stem from the fact that the RTC and RTT-peripherals are
>>>> powered by backup power (VDDBU) and are not reset on wake-up, user,
>>>> watchdog or software reset. Consequently, RTC and RTT-alarms and their
>>>> interrupts may be enabled at boot, leading to a system lock-up when an
>>>> interrupt arrives on the shared system-interrupt line before the
>>>> appropriate handler (e.g. RTC-driver) has been installed.
>>>>
>>>> The easiest way to trigger this is to simply wake up from an RTC-alarm
>>>> on at91sam9g45. The RTC-driver currently does not disable interrupts at
>>>> shutdown so even after a clean shut-down the system will always hang
>>>> after waking up.
>>>>
>>>> The first patch fixes this very general case of RTC-wake up after a
>>>> clean shutdown in the RTC-driver and is marked for stable as it is
>>>> perfectly straight-forward. [ Note that the other, RTT-based, AT91
>>>> RTC-driver already disables its interrupts at shutdown. ]
> 
> And what about this patch? If it's decided that every bootloader needs
> to be updated, then perhaps it's better to risk bricked systems also
> after a clean shutdown to enforce those updates? Should we then remove
> the corresponding disable of interrupts at shutdown from the rtc-at91sam9
> driver by the same logic?
> 
>>>> The more general problem can be triggered, for example, by doing a
>>>> user-reset while updating the RTC-time or if an RTC or RTT-alarm goes
>>>> off after a non-clean shutdown.
>>>>
>>>> To fix this I propose that arch-code should mask the relevant interrupts
>>>> before enabling the system interrupt at early boot, and this is what
>>>> the fifth patch does. To access the RTC-registers I choose to revert a
>>>> recent patch that moved the register definitions to drivers/rtc.
>>>>
>>>> Arguably, the relevant interrupts could also be disabled in bootloaders,
>>>> but I suggest fixing it in the kernel once and for all.
> 
> Thanks,
> Johan
> 
> 


-- 
Nicolas Ferre

  reply	other threads:[~2013-04-12 12:09 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-08 12:51 [PATCH 0/3] ARM: at91: fix hanged boot Johan Hovold
2013-03-08 12:51 ` Johan Hovold
2013-03-08 12:51 ` [PATCH 1/3] ARM: at91/rtc: fix boot after RTC wake-up Johan Hovold
2013-03-08 12:51   ` Johan Hovold
2013-03-08 12:51 ` [PATCH 2/3] Revert "arm: at91: move at91rm9200 rtc header in drivers/rtc" Johan Hovold
2013-03-08 12:51   ` Johan Hovold
2013-03-08 12:51 ` [PATCH 3/3] ARM: at91: fix hanged boot Johan Hovold
2013-03-08 12:51   ` Johan Hovold
2013-03-08 16:02   ` [rtc-linux] " Jean-Christophe PLAGNIOL-VILLARD
2013-03-08 16:02     ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-11 10:02     ` Johan Hovold
2013-03-11 10:02       ` Johan Hovold
2013-03-11 11:06       ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-11 11:06         ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-11 18:06         ` Johan Hovold
2013-03-11 18:06           ` Johan Hovold
2013-03-11 18:07           ` [PATCH v2 0/5] " Johan Hovold
2013-03-11 18:07             ` Johan Hovold
2013-03-11 18:07             ` [PATCH v2 1/5] ARM: at91/rtc: fix boot after RTC wake-up Johan Hovold
2013-03-11 18:07               ` Johan Hovold
2013-03-11 18:07             ` [PATCH v2 2/5] ARM: at91/dts: add RTC nodes Johan Hovold
2013-03-11 18:07               ` Johan Hovold
2013-03-11 18:07             ` [PATCH v2 3/5] ARM: at91/dts: add RTT nodes Johan Hovold
2013-03-11 18:07               ` Johan Hovold
2013-03-11 18:07             ` [PATCH v2 4/5] Revert "arm: at91: move at91rm9200 rtc header in drivers/rtc" Johan Hovold
2013-03-11 18:07               ` Johan Hovold
2013-03-11 18:07             ` [PATCH v2 5/5] ARM: at91: fix hanged boot Johan Hovold
2013-03-11 18:07               ` Johan Hovold
2013-04-11 15:55             ` [PATCH v2 0/5] " Johan Hovold
2013-04-11 15:55               ` Johan Hovold
2013-04-11 16:54               ` [rtc-linux] " Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 16:54                 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-12  9:33                 ` Johan Hovold
2013-04-12  9:33                   ` Johan Hovold
2013-04-12 12:09                   ` Nicolas Ferre [this message]
2013-04-12 12:09                     ` Nicolas Ferre
2013-10-16  9:56             ` [PATCH v3 0/3] " Johan Hovold
2013-10-16  9:56               ` Johan Hovold
2013-10-16  9:56               ` [PATCH v3 1/3] ARM: at91: fix hanged boot due to early rtc-interrupt Johan Hovold
2013-10-16  9:56                 ` Johan Hovold
2013-11-15 11:09                 ` Nicolas Ferre
2013-11-15 11:09                   ` Nicolas Ferre
2013-10-16  9:56               ` [PATCH v3 2/3] ARM: at91: fix hanged boot due to early rtt-interrupt Johan Hovold
2013-10-16  9:56                 ` Johan Hovold
2013-11-15 11:10                 ` Nicolas Ferre
2013-11-15 11:10                   ` Nicolas Ferre
2013-10-16  9:56               ` [PATCH v3 3/3] ARM: at91/rtc: disable interrupts at shutdown Johan Hovold
2013-10-16  9:56                 ` Johan Hovold
2013-11-15 10:43                 ` Nicolas Ferre
2013-11-15 10:43                   ` Nicolas Ferre

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=5167F972.2000707@atmel.com \
    --to=nicolas.ferre@atmel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.