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: [email protected] [mailto:[email protected]] On Behalf Of Meelis
> Roos
> Sent: Monday, July 10, 2017 9:08 AM
> To: Christoph Hellwig <[email protected]>
> Cc: Laurence Oberman <[email protected]>; Jens Axboe
> <[email protected]>; Linux Kernel list <[email protected]>; linux-
> [email protected]; Don Brace <[email protected]>; Scott
> Benesh <[email protected]>; Scott Teel
> <[email protected]>; Kevin Barnett
> <[email protected]>; [email protected]; Hannes
> Reinecke <[email protected]>
> 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 ([email protected])