OOPS from cciss_ioctl in 4.12+git
diff mbox

Message ID 20170705225134.GA31786@infradead.org
State New
Headers show

Commit Message

Christoph Hellwig July 5, 2017, 10:51 p.m. UTC
Hi Meelis,

can you try the patch below?

Also we're trying to move people away from the cciss driver, can you
check if the hpsa SCSI driver works for you as well?

Comments

Meelis Roos July 6, 2017, 9:55 a.m. UTC | #1
> Hi Meelis,
> 
> can you try the patch below?

Yes, the OOPS is gone and everything seems to be working.

> Also we're trying to move people away from the cciss driver, can you
> check if the hpsa SCSI driver works for you as well?

I have older adapter:

Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)

That does not seem to be supported by hpsa AFAICS.
Christoph Hellwig July 7, 2017, 3 p.m. UTC | #2
On Thu, Jul 06, 2017 at 12:55:04PM +0300, Meelis Roos wrote:
> > Also we're trying to move people away from the cciss driver, can you
> > check if the hpsa SCSI driver works for you as well?
> 
> I have older adapter:
> 
> Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)
> 
> That does not seem to be supported by hpsa AFAICS.

Looks like.  Although hpsa has support for various SA5 controllers
it seems like it decided to skip all Compaq branded controllers.

As far as I can tell we could simply add support for those to
hpsa.  Ccing hpsa folks to figure out if that's the case.
Jens Axboe July 7, 2017, 3:03 p.m. UTC | #3
On 07/07/2017 09:00 AM, Christoph Hellwig wrote:
> On Thu, Jul 06, 2017 at 12:55:04PM +0300, Meelis Roos wrote:
>>> Also we're trying to move people away from the cciss driver, can you
>>> check if the hpsa SCSI driver works for you as well?
>>
>> I have older adapter:
>>
>> Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)
>>
>> That does not seem to be supported by hpsa AFAICS.
> 
> Looks like.  Although hpsa has support for various SA5 controllers
> it seems like it decided to skip all Compaq branded controllers.
> 
> As far as I can tell we could simply add support for those to
> hpsa.  Ccing hpsa folks to figure out if that's the case.

Pretty sure Hannes had a patch he tested for that, he talked about
that back at LSFMM earlier this year. Hannes?
Laurence Oberman July 7, 2017, 3:42 p.m. UTC | #4
On 07/07/2017 11:03 AM, Jens Axboe wrote:
> On 07/07/2017 09:00 AM, Christoph Hellwig wrote:
>> On Thu, Jul 06, 2017 at 12:55:04PM +0300, Meelis Roos wrote:
>>>> Also we're trying to move people away from the cciss driver, can you
>>>> check if the hpsa SCSI driver works for you as well?
>>>
>>> I have older adapter:
>>>
>>> Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)
>>>
>>> That does not seem to be supported by hpsa AFAICS.
>>
>> Looks like.  Although hpsa has support for various SA5 controllers
>> it seems like it decided to skip all Compaq branded controllers.
>>
>> As far as I can tell we could simply add support for those to
>> hpsa.  Ccing hpsa folks to figure out if that's the case.
> 
> Pretty sure Hannes had a patch he tested for that, he talked about
> that back at LSFMM earlier this year. Hannes?
> 

What happens when  hpsa_allow_any=1 with the Smart Array 64xx
It should probe.
Hannes Reinecke July 7, 2017, 4:05 p.m. UTC | #5
On 07/07/2017 05:03 PM, Jens Axboe wrote:
> On 07/07/2017 09:00 AM, Christoph Hellwig wrote:
>> On Thu, Jul 06, 2017 at 12:55:04PM +0300, Meelis Roos wrote:
>>>> Also we're trying to move people away from the cciss driver, can you
>>>> check if the hpsa SCSI driver works for you as well?
>>>
>>> I have older adapter:
>>>
>>> Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)
>>>
>>> That does not seem to be supported by hpsa AFAICS.
>>
>> Looks like.  Although hpsa has support for various SA5 controllers
>> it seems like it decided to skip all Compaq branded controllers.
>>
>> As far as I can tell we could simply add support for those to
>> hpsa.  Ccing hpsa folks to figure out if that's the case.
> 
> Pretty sure Hannes had a patch he tested for that, he talked about
> that back at LSFMM earlier this year. Hannes?
> 
Oh, I do.
hpsa is working happily on SLES for _all_ SmartArray controllers.
You need to enable 'hpsa_allow_any=1', though.
But I'm perfectly happy with making that the default and drop cciss
completely.

Cheers,

Hannes
Christoph Hellwig July 7, 2017, 6:08 p.m. UTC | #6
On Fri, Jul 07, 2017 at 11:42:38AM -0400, Laurence Oberman wrote:
> What happens when  hpsa_allow_any=1 with the Smart Array 64xx
> It should probe.

But only if it has a HP vendor ID as far as I can tell.  We'd
still need to add the compaq ids so that these controllers get
probed.  But maybe it's time to add them and flip the hpsa_allow_any
default (maybe conditionally on a config option?) and mark cciss
deprecated.
Laurence Oberman July 7, 2017, 6:20 p.m. UTC | #7
On 07/07/2017 02:08 PM, Christoph Hellwig wrote:
> On Fri, Jul 07, 2017 at 11:42:38AM -0400, Laurence Oberman wrote:
>> What happens when  hpsa_allow_any=1 with the Smart Array 64xx
>> It should probe.
> 
> But only if it has a HP vendor ID as far as I can tell.  We'd
> still need to add the compaq ids so that these controllers get
> probed.  But maybe it's time to add them and flip the hpsa_allow_any
> default (maybe conditionally on a config option?) and mark cciss
> deprecated.
> 
Agreed, I vote yes.
Don Brace July 7, 2017, 7:15 p.m. UTC | #8
> -----Original Message-----

> From: Hannes Reinecke [mailto:hare@suse.de]

> Sent: Friday, July 07, 2017 11:05 AM

> To: Jens Axboe <axboe@kernel.dk>; Christoph Hellwig

> <hch@infradead.org>; Meelis Roos <mroos@linux.ee>

> Cc: Linux Kernel list <linux-kernel@vger.kernel.org>; linux-

> block@vger.kernel.org; Don Brace <don.brace@microsemi.com>; Scott

> Benesh <scott.benesh@microsemi.com>; Scott Teel

> <scott.teel@microsemi.com>; Kevin Barnett

> <kevin.barnett@microsemi.com>; linux-scsi@vger.kernel.org

> Subject: Re: device support in hpasa, was: Re: OOPS from cciss_ioctl in

> 4.12+git

> 

> EXTERNAL EMAIL

> 

> 

> On 07/07/2017 05:03 PM, Jens Axboe wrote:

> > On 07/07/2017 09:00 AM, Christoph Hellwig wrote:

> >> On Thu, Jul 06, 2017 at 12:55:04PM +0300, Meelis Roos wrote:

> >>>> Also we're trying to move people away from the cciss driver, can you

> >>>> check if the hpsa SCSI driver works for you as well?

> >>>

> >>> I have older adapter:

> >>>

> >>> Compaq Computer Corporation Smart Array 64xx [0e11:0046] (rev 01)

> >>>

> >>> That does not seem to be supported by hpsa AFAICS.

> >>

> >> Looks like.  Although hpsa has support for various SA5 controllers

> >> it seems like it decided to skip all Compaq branded controllers.

> >>

> >> As far as I can tell we could simply add support for those to

> >> hpsa.  Ccing hpsa folks to figure out if that's the case.

> >

> > Pretty sure Hannes had a patch he tested for that, he talked about

> > that back at LSFMM earlier this year. Hannes?

> >

> Oh, I do.

> hpsa is working happily on SLES for _all_ SmartArray controllers.

> You need to enable 'hpsa_allow_any=1', though.

> But I'm perfectly happy with making that the default and drop cciss

> completely.

> 

> Cheers,

> 

> Hannes

> --

> Dr. Hannes Reinecke                Teamlead Storage & Networking

> hare@suse.de                                   +49 911 74053 688

> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg

> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton

> HRB 21284 (AG Nürnberg)


The 6400 controllers are quite old and are no longer tested. 
So, it would be nice to deprecate the cciss driver, but we would not support those formerly cciss devices with hpsa.
I do not recall seeing a cciss_ioctl issue, what was the issue?

Thanks,
Don Brace
ESC - Smart Storage
Microsemi Corporation
Meelis Roos July 10, 2017, 2:08 p.m. UTC | #9
> On Fri, Jul 07, 2017 at 11:42:38AM -0400, Laurence Oberman wrote:
> > What happens when  hpsa_allow_any=1 with the Smart Array 64xx
> > It should probe.
> 
> But only if it has a HP vendor ID as far as I can tell.  We'd
> still need to add the compaq ids so that these controllers get
> probed.  But maybe it's time to add them and flip the hpsa_allow_any
> default (maybe conditionally on a config option?) and mark cciss
> deprecated.

I added hpsa_allow_any=1, did not help.

Added a wildcard Compaq entry with RAID class, like the one for HP, 
still no go:

[    5.199125] hpsa 0000:00:04.0: unrecognized board ID: 0x40800e11, ignoring.
[    5.282517] hpsa 0000:00:04.0: Board ID not found

Added specific PCI ID and subdevice ID quad and I still get the same 
messages and the adapter is ignored.

What am I doing wrong?
Don Brace July 10, 2017, 9:56 p.m. UTC | #10
So, adding adding  hpsa_allow_any=1 did not work...

When you added the 0x40800e11, did you add it to both tables?

/* define the PCI info for the cards we can control */
static const struct pci_device_id hpsa_pci_device_id[] = {
       {PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_CISSB, 0x0E11, 0x4080},
...
{0,}
};

/*  board_id = Subsystem Device ID & Vendor ID
 *  product = Marketing Name for the board
 *  access = Address of the struct of function pointers
 */
static struct board_type products[] = {
{0x40800E11, "Smart Array 5i", &SA5B_access},


...
};

I added it at the very first entry to make it easier.


---
However, there is not a SA5B_access table in hpsa.h.

/*
 *  This card is the opposite of the other cards.
 *   0 turns interrupts on...
 *   0x04 turns them off...
 */
static void SA5B_intr_mask(ctlr_info_t *h, unsigned long val)
{
        if (val)
        { /* Turn interrupts on */
                h->interrupts_enabled = 1;
                writel(0, h->vaddr + SA5_REPLY_INTR_MASK_OFFSET);
                (void) readl(h->vaddr + SA5_REPLY_INTR_MASK_OFFSET);
        } else /* Turn them off */
        {
                h->interrupts_enabled = 0;
                writel( SA5B_INTR_OFF,
                        h->vaddr + SA5_REPLY_INTR_MASK_OFFSET);
                (void) readl(h->vaddr + SA5_REPLY_INTR_MASK_OFFSET);
        }
}


/*
 *      Returns true if an interrupt is pending..
 */
static bool SA5B_intr_pending(ctlr_info_t *h)
{
        unsigned long register_value  =
                readl(h->vaddr + SA5_INTR_STATUS);
#ifdef CCISS_DEBUG
        printk("cciss: intr_pending %lx\n", register_value);
#endif  /* CCISS_DEBUG */
        if( register_value &  SA5B_INTR_PENDING)
                return  1;
        return 0 ;
}


static struct access_method SA5B_access = {
        .submit_command = SA5_submit_command,
        .set_intr_mask = SA5B_intr_mask,
        .fifo_full = SA5_fifo_full,
        .intr_pending = SA5B_intr_pending,
        .command_completed = SA5_completed,
};



Can you try adding the two table entries and the SA5B definitions in hpsa.h?



> -----Original Message-----
> From: mroos@math.ut.ee [mailto:mroos@math.ut.ee] On Behalf Of Meelis
> Roos
> Sent: Monday, July 10, 2017 9:08 AM
> To: Christoph Hellwig <hch@infradead.org>
> Cc: Laurence Oberman <loberman@redhat.com>; Jens Axboe
> <axboe@kernel.dk>; Linux Kernel list <linux-kernel@vger.kernel.org>; linux-
> block@vger.kernel.org; Don Brace <don.brace@microsemi.com>; Scott
> Benesh <scott.benesh@microsemi.com>; Scott Teel
> <scott.teel@microsemi.com>; Kevin Barnett
> <kevin.barnett@microsemi.com>; linux-scsi@vger.kernel.org; Hannes
> Reinecke <hare@suse.de>
> Subject: Re: device support in hpsa, was: Re: OOPS from cciss_ioctl in 4.12+git
> 
> EXTERNAL EMAIL
> 
> 
> > On Fri, Jul 07, 2017 at 11:42:38AM -0400, Laurence Oberman wrote:
> > > What happens when  hpsa_allow_any=1 with the Smart Array 64xx
> > > It should probe.
> >
> > But only if it has a HP vendor ID as far as I can tell.  We'd
> > still need to add the compaq ids so that these controllers get
> > probed.  But maybe it's time to add them and flip the hpsa_allow_any
> > default (maybe conditionally on a config option?) and mark cciss
> > deprecated.
> 
> I added hpsa_allow_any=1, did not help.
> 
> Added a wildcard Compaq entry with RAID class, like the one for HP,
> still no go:
> 
> [    5.199125] hpsa 0000:00:04.0: unrecognized board ID: 0x40800e11, ignoring.
> [    5.282517] hpsa 0000:00:04.0: Board ID not found
> 
> Added specific PCI ID and subdevice ID quad and I still get the same
> messages and the adapter is ignored.
> 
> What am I doing wrong?
> 
> --
> Meelis Roos (mroos@linux.ee)

Patch
diff mbox

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 02a611993bb4..678af946be30 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -1944,6 +1944,13 @@  static void cciss_get_serial_no(ctlr_info_t *h, int logvol,
 	return;
 }
 
+static void cciss_initialize_rq(struct request *rq)
+{
+	struct scsi_request *sreq = blk_mq_rq_to_pdu(rq);
+
+	scsi_req_init(sreq);
+}
+
 /*
  * cciss_add_disk sets up the block device queue for a logical drive
  */
@@ -1956,6 +1963,7 @@  static int cciss_add_disk(ctlr_info_t *h, struct gendisk *disk,
 
 	disk->queue->cmd_size = sizeof(struct scsi_request);
 	disk->queue->request_fn = do_cciss_request;
+	disk->queue->initialize_rq_fn = cciss_initialize_rq;
 	disk->queue->queue_lock = &h->lock;
 	queue_flag_set_unlocked(QUEUE_FLAG_SCSI_PASSTHROUGH, disk->queue);
 	if (blk_init_allocated_queue(disk->queue) < 0)