Subject: Re: promise raid array
To: None <simon@bigblue.demon.co.uk>
From: Andrew Doran <ad@netbsd.org>
List: port-i386
Date: 10/17/2003 00:14:29
Hi,

> I wanted to try out a promise SX6000 raid array with NetBSD but 
> installing 1.6.1 has poven impossible.
> the card should have appeared as an I2O array, but the install kernel 
> say its not configured.

Try a kernel with the below patch.

Andrew

--- sys/dev/pci/iop_pci.c.orig	2003-10-16 23:44:24.000000000 +0100
+++ sys/dev/pci/iop_pci.c	2003-10-16 23:51:32.000000000 +0100
@@ -76,6 +76,8 @@
 iop_pci_match(struct device *parent, struct cfdata *match, void *aux)
 {
 	struct pci_attach_args *pa;
+	u_int product, vendor;
+	pcireg_t reg;
 
 	pa = aux;
 
@@ -90,13 +92,24 @@
 		return (1);
 
 	/*
-	 * Match DPT/Adaptec boards that don't conform exactly to the spec.
+	 * Match boards that don't conform exactly to the spec.
 	 */
-	if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_DPT && 
-	    (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_DPT_RAID_I2O ||
-	    PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_DPT_RAID_2005S))
+	vendor = PCI_VENDOR(pa->pa_id);
+	product = PCI_PRODUCT(pa->pa_id);
+
+	if (vendor == PCI_VENDOR_DPT && 
+	    (product == PCI_PRODUCT_DPT_RAID_I2O ||
+	    product == PCI_PRODUCT_DPT_RAID_2005S))
 		return (1);
 
+	if (vendor == PCI_VENDOR_INTEL &&
+	    (product == 0x1962 ||
+	    product == PCI_PRODUCT_INTEL_80960_RP)) {
+		reg = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_SUBSYS_ID_REG);
+		if (PCI_VENDOR(reg) == PCI_VENDOR_PROMISE)
+			return (1);
+	}
+
 	return (0);
 }