Re: What breaks aic7xxx in post 2.6.12-rc2 ?

Grégoire Favre
2005-05-21T23:22:22Z

On Tue, May 17, 2005 at 04:06:11PM -0500, James Bottomley wrote:

> Well, the attached is what I'd like you to try, capturing the
> information from the initial inquiry on ... it will be quite a bit.
>
> Hopefully it will give me a clearer idea of what's going on.

I have found a way to fetch the console :-)

Against which kernel revision is your patch made for ?

Thank you very much :-)

> Thanks,
>
> James
>
> --- a/drivers/scsi/scsi_transport_spi.c
> +++ b/drivers/scsi/scsi_transport_spi.c
> @@ -669,14 +669,23 @@ spi_dv_retrain(struct scsi_request *sreq
> {
> struct spi_internal *i = to_spi_internal(sreq->sr_host->transportt);
> struct scsi_device *sdev = sreq->sr_device;
> + struct scsi_target *starget = sdev->sdev_target;
> int period = 0, prevperiod = 0;
> enum spi_compare_returns retval;
>
>
> for (;;) {
> int newperiod;
> +
> retval = compare_fn(sreq, buffer, ptr, DV_LOOPS);
>
> + if(i->f->get_period)
> + i->f->get_period(starget);
> + if (i->f->get_offset)
> + i->f->get_offset(starget);
> +
> + spi_display_xfer_agreement(starget);
> +
> if (retval == SPI_COMPARE_SUCCESS
> || retval == SPI_COMPARE_SKIP_TEST)
> break;
> @@ -765,6 +774,8 @@ spi_dv_device_internal(struct scsi_reque
> /* first set us up for narrow async */
> DV_SET(offset, 0);
> DV_SET(width, 0);
> +
> + printk("BEGINNING ASYNC, inq len = %d\n", sdev->inquiry_len);
>
> if (spi_dv_device_compare_inquiry(sreq, buffer, buffer, DV_LOOPS)
> != SPI_COMPARE_SUCCESS) {
> @@ -773,11 +784,13 @@ spi_dv_device_internal(struct scsi_reque
> return;
> }
>
> + printk("ASYNC INQUIRY SUCCEEDED\n");
> +
> /* test width */
> if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) {
> i->f->set_width(sdev->sdev_target, 1);
>
> - printk("WIDTH IS %d\n", spi_max_width(starget));
> + printk("TRYING WIDE ASYNC INQUIRY\n");
>
> if (spi_dv_device_compare_inquiry(sreq, buffer,
> buffer + len,
> @@ -802,12 +815,17 @@ spi_dv_device_internal(struct scsi_reque
> if (sdev->ppr)
> len = spi_dv_device_get_echo_buffer(sreq, buffer);
>
> + printk("ECHO BUFFER HAS LEN %d\n", len);
> +
> retry:
>
> /* now set up to the maximum */
> DV_SET(offset, spi_max_offset(starget));
> DV_SET(period, spi_min_period(starget));
>
> + printk("DV SETTING TO period %d, offset %d\n", spi_min_period(starget),
> + spi_max_offset(starget));
> +
> if (len == 0) {
> SPI_PRINTK(sdev->sdev_target, KERN_INFO, "Domain Validation skipping write tests\n");
> spi_dv_retrain(sreq, buffer, buffer + len,
>

--
Grégoire Favre
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html