Re: ATAng: reboot after panic, crashdumps [PATCH]

From: Doug White <dwhite_at_gumbysoft.com>
Date: Wed, 16 Mar 2005 10:11:58 -0800 (PST)
On Wed, 16 Mar 2005, Max Khon wrote:

> Hi!
>
> Attached patch fixes reboot after panic for me on RELENG_5 and RELENG_5_3.
> Crashdumps work again for me as well.
>
> The problem was in ata_shutdown() -- ATA_FLUSHCACHE request issued from
> ata_shutdown() never completes (ata_queue_request() sleeps in
> sema_wait(&request->done)) because ata_interrupt() is never called
> (callouts do not work as well, so that if the controller is busy
> ATA_FLUSHCACHE was not retried).
>
> I am not sure if "if (panicstr == NULL)" check is required (for normal
> shutdown sequence). addump() does not check if we are shutting down
> cleanly (ata_flushcache() was copy-n-pasted from addump()) and always
> uses atadev->channel->hw.begin_transaction(&request)/end_transaction(&request)
> directly.

This part here:

+    if (atadev->channel->hw.begin_transaction(&request) ==
ATA_OP_CONTINUES) {
+       do {
+           DELAY(20);
+       } while (atadev->channel->hw.end_transaction(&request) ==
ATA_OP_CONTINUES);

looks like it could get stuck in an infinite loop if the controller is
hung.  I'm not familiar with the ata code so i don't nkow if this is
handled elsewhere, but I figure I'd ask :)

-- 
Doug White                    |  FreeBSD: The Power to Serve
dwhite_at_gumbysoft.com          |  www.FreeBSD.org
Received on Wed Mar 16 2005 - 17:11:58 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:30 UTC