Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 May 2009 05:41:04 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Magnus Kling <klingfon@gmail.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Kernel panic when reboot on server with a Promise SX4000 and two 	ATA disks RAID1.
Message-ID:  <4A121C40.7040201@FreeBSD.org>
In-Reply-To: <43b1bb350905181331r44b35b13i22aa1ba6a18103ed@mail.gmail.com>
References:  <43b1bb350905150939s5d503f00x27116e7ffe79a37@mail.gmail.com>	 <4A10F3E3.40306@FreeBSD.org>	 <43b1bb350905180025g682d3764qba5a450d85d8f961@mail.gmail.com> <43b1bb350905181331r44b35b13i22aa1ba6a18103ed@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------030500010006020409010308
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit

Magnus Kling wrote:
> Compiled once again. No change. The kernel panics.

I don't see obvious problems there. I think something else may erase 
that controller softc pointer. Can you try to apply attached patch. It 
may give us some more clues about what is actually become wrong there.

May be it is somehow related to the RAID array built on controller. 
ata-raid part is quite complicated and historically was buggy quite 
often. Can you instead of your array drives try to attach some other one 
without any array built or just disable ata-raid module? Are you booting 
from some other device now?

-- 
Alexander Motin

--------------030500010006020409010308
Content-Type: text/plain;
 name="ata-promise.c.debug.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ata-promise.c.debug.patch"

--- ata-promise.c.prev	2009-05-14 17:57:13.000000000 +0300
+++ ata-promise.c	2009-05-19 05:20:13.000000000 +0300
@@ -1053,6 +1053,15 @@ ata_promise_sx4_command(struct ata_reque
 {
     device_t gparent = GRANDPARENT(request->dev);
     struct ata_pci_controller *ctlr = device_get_softc(gparent);
+
+if (ctlr == NULL) {
+    printf("ctlr IS NULL!!!\n");
+    device_printf(request->dev, "request->dev\n");
+    device_printf(request->parent, "request->parent\n");
+    device_printf(device_get_parent(request->dev), "device_get_parent(request->dev)\n");
+    device_printf(gparent, "gparent\n");
+}
+
     struct ata_channel *ch = device_get_softc(request->parent);
     struct ata_dma_prdentry *prd = request->dma->sg;
     caddr_t window = rman_get_virtual(ctlr->r_res1);

--------------030500010006020409010308--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A121C40.7040201>