Patchwork bug report: 3.1.0-rc4 doesn't discover my FC drives

login
register
mail settings
Submitter David Miller
Date Nov. 20, 2011, 10:29 p.m.
Message ID <20111120.172903.1343140327482060200.davem@davemloft.net>
Download mbox | patch
Permalink /patch/126668/
State RFC
Delegated to: David Miller
Headers show

Comments

David Miller - Nov. 20, 2011, 10:29 p.m.
From: Heinz Mauelshagen <heinzm@redhat.com>
Date: Fri, 18 Nov 2011 12:20:02 +0100

> I'm not able to discover any FC-drives on my E6500
> (same drives get discovered on an Intel box) with 3.1.0-rc4.
> 
> Is this a known issue?
> Wrong driver?
> Any hints to analyze further?

The common problem with hardware as old as these SBUS scsi controllers
is that the SCSI protocol sequence is done by firmware and this firmware
is 15 years old and hasn't been updated since.

So the more recent the devices are which you try to hook up to them,
the less likely they'll be usable with such an old controller.

There's a patch below for the qlogicpti driver that will add some
tracing to the SCSI bus probe, so you can try it out to see what might
be happening.

But, I wonder, are you sure the drives are attached to the qlogicpti
card?  You say FC disks, but qlogicpti is SCSI.

The SBUS fibre-channel controllers Sun made aren't supported, we had
to rip the old drivers we had out of the tree nearly 10 years ago
because 1) the drivers were unmaintained and rapidly rotting and 2) we
never were able to secure the right to distribute the firmware for
those cards in any way so people had to extract the firmware from the
Solaris drivers in a cumbersome way to even to try and use these
cards.

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Heinz Mauelshagen - Nov. 23, 2011, 4:28 p.m.
On Sun, 2011-11-20 at 17:29 -0500, David Miller wrote:
> From: Heinz Mauelshagen <heinzm@redhat.com>
> Date: Fri, 18 Nov 2011 12:20:02 +0100
> 
> > I'm not able to discover any FC-drives on my E6500
> > (same drives get discovered on an Intel box) with 3.1.0-rc4.
> > 
> > Is this a known issue?
> > Wrong driver?
> > Any hints to analyze further?
> 
> The common problem with hardware as old as these SBUS scsi controllers
> is that the SCSI protocol sequence is done by firmware and this firmware
> is 15 years old and hasn't been updated since.
> 
> So the more recent the devices are which you try to hook up to them,
> the less likely they'll be usable with such an old controller.
> 
> There's a patch below for the qlogicpti driver that will add some
> tracing to the SCSI bus probe, so you can try it out to see what might
> be happening.

Will try.

> 
> But, I wonder, are you sure the drives are attached to the qlogicpti
> card?  You say FC disks, but qlogicpti is SCSI.

If so, my wrong driver point from above applies.

> 
> The SBUS fibre-channel controllers Sun made aren't supported, we had
> to rip the old drivers we had out of the tree nearly 10 years ago
> because 1) the drivers were unmaintained and rapidly rotting and 2) we
> never were able to secure the right to distribute the firmware for
> those cards in any way so people had to extract the firmware from the
> Solaris drivers in a cumbersome way to even to try and use these
> cards.

They were in Aurora 2 still, which got released in 2006, because I could
access the drives with it IIRC. I don't remember to have been forced to
do FW tricks like that with it. Are the drivers floating around
somewhere still?

Thanks,
Heinz

> 
> diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c
> index e40dc1c..8d01193 100644
> --- a/drivers/scsi/qlogicpti.c
> +++ b/drivers/scsi/qlogicpti.c
> @@ -48,6 +48,7 @@
>  #include <scsi/scsi_eh.h>
>  #include <scsi/scsi_tcq.h>
>  #include <scsi/scsi_host.h>
> +#include <scsi/scsi_dbg.h>
>  
>  #define MAX_TARGETS	16
>  #define MAX_LUNS	8	/* 32 for 1.31 F/W */
> @@ -1011,6 +1012,8 @@ static int qlogicpti_queuecommand_lck(struct scsi_cmnd *Cmnd, void (*done)(struc
>  	u_int out_ptr;
>  	int in_ptr;
>  
> +	pr_info("qlogicpti: Queueing command %p\n", Cmnd);
> +	scsi_print_command(Cmnd);
>  	Cmnd->scsi_done = done;
>  
>  	in_ptr = qpti->req_in_ptr;
> @@ -1169,12 +1172,19 @@ static struct scsi_cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti)
>  			memcpy(Cmnd->sense_buffer, sts->req_sense_data,
>  			       SCSI_SENSE_BUFFERSIZE);
>  
> +		pr_info("qlogicpti: Completing command %p, entry_type[0x%02x]\n",
> +			Cmnd, sts->hdr.entry_type);
> +		pr_info("qlogicpti: sts->completion_status[0x%016x]\n",
> +			sts->completion_status);
> +
>  		if (sts->hdr.entry_type == ENTRY_STATUS)
>  			Cmnd->result =
>  			    qlogicpti_return_status(sts, qpti->qpti_id);
>  		else
>  			Cmnd->result = DID_ERROR << 16;
>  
> +		scsi_print_result(Cmnd);
> +
>  		if (scsi_bufflen(Cmnd))
>  			dma_unmap_sg(&qpti->op->dev,
>  				     scsi_sglist(Cmnd), scsi_sg_count(Cmnd),
> --
> To unsubscribe from this list: send the line "unsubscribe sparclinux" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tom \"spot\" Callaway - Nov. 23, 2011, 9:04 p.m.
On 11/23/2011 11:28 AM, Heinz Mauelshagen wrote:
> They were in Aurora 2 still, which got released in 2006, because I could
> access the drives with it IIRC. I don't remember to have been forced to
> do FW tricks like that with it. Are the drivers floating around
> somewhere still?

If it worked then, then you've almost certainly got SCSI as opposed to
FC, or you're on a qlogic FC controller (isp1000U, driven via
qla2xxx.ko). Aurora had firmware for that qlogic controller, Fedora has
it too as the ql2200-firmware package, but qlogic stopped maintaining
that firmware a long long time ago.

Caveat: All of this is from memory, I don't have a E6500.

~tom

==
Fedora Project
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Nov. 23, 2011, 9:15 p.m.
From: Heinz Mauelshagen <heinzm@redhat.com>
Date: Wed, 23 Nov 2011 17:28:06 +0100

> They were in Aurora 2 still, which got released in 2006, because I could
> access the drives with it IIRC. I don't remember to have been forced to
> do FW tricks like that with it. Are the drivers floating around
> somewhere still?

The Sun SOC/SOCAL drivers were removed before 2006.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c
index e40dc1c..8d01193 100644
--- a/drivers/scsi/qlogicpti.c
+++ b/drivers/scsi/qlogicpti.c
@@ -48,6 +48,7 @@ 
 #include <scsi/scsi_eh.h>
 #include <scsi/scsi_tcq.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_dbg.h>
 
 #define MAX_TARGETS	16
 #define MAX_LUNS	8	/* 32 for 1.31 F/W */
@@ -1011,6 +1012,8 @@  static int qlogicpti_queuecommand_lck(struct scsi_cmnd *Cmnd, void (*done)(struc
 	u_int out_ptr;
 	int in_ptr;
 
+	pr_info("qlogicpti: Queueing command %p\n", Cmnd);
+	scsi_print_command(Cmnd);
 	Cmnd->scsi_done = done;
 
 	in_ptr = qpti->req_in_ptr;
@@ -1169,12 +1172,19 @@  static struct scsi_cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti)
 			memcpy(Cmnd->sense_buffer, sts->req_sense_data,
 			       SCSI_SENSE_BUFFERSIZE);
 
+		pr_info("qlogicpti: Completing command %p, entry_type[0x%02x]\n",
+			Cmnd, sts->hdr.entry_type);
+		pr_info("qlogicpti: sts->completion_status[0x%016x]\n",
+			sts->completion_status);
+
 		if (sts->hdr.entry_type == ENTRY_STATUS)
 			Cmnd->result =
 			    qlogicpti_return_status(sts, qpti->qpti_id);
 		else
 			Cmnd->result = DID_ERROR << 16;
 
+		scsi_print_result(Cmnd);
+
 		if (scsi_bufflen(Cmnd))
 			dma_unmap_sg(&qpti->op->dev,
 				     scsi_sglist(Cmnd), scsi_sg_count(Cmnd),