Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Mar 2002 20:45:58 -0800
From:      Alfred Perlstein <bright@mu.org>
To:        scott_long@btc.adaptec.com, mark_salyzyn@adaptec.com, obrien@freebsd.org
Cc:        current@freebsd.org
Subject:   asr can not map memory?
Message-ID:  <20020331044558.GD93885@elvis.mu.org>

next in thread | raw e-mail | index | archive | help
I just got the Adaptec 4 port IDE raid card 2400A.

It doesn't probe right:
asr0: could not map memory

I added some debug printouts to the asr driver and pci code.

asr0: <Adaptec Caching SCSI RAID> mem 0xf6000000-0xf7ffffff irq 5 at device 5.1 on pci2
pcib2: device asr0 requested unsupported memory range 0xf6000000-0xf6400000
pcib2: device asr0 requested unsupported memory range 0x0-0xec9fffff (decoding 0xec900000-0xec9fffff, 0xf6000000-0xfbffffff)
asr: map failed at: 2602 p:f6000000 f6400000 l:00400000
asr0: could not map memory
device_probe_and_attach: asr0 attach returned 6

wtf is going on here?

? pci/.pci_pci.c.swp
cvs server: Diffing pci
Index: pci/pci_pci.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/pci/pci_pci.c,v
retrieving revision 1.12
diff -u -r1.12 pci_pci.c
--- pci/pci_pci.c	26 Feb 2002 03:31:35 -0000	1.12
+++ pci/pci_pci.c	31 Mar 2002 04:44:57 -0000
@@ -345,6 +345,12 @@
 	case SYS_RES_MEMORY:
 	    if (!pcib_is_isa_mem(start)) {
 #ifndef PCI_ALLOW_UNSUPPORTED_IO_RANGE
+		if (bootverbose)
+		    device_printf(dev,
+			"device %s%d requested unsupported memory range "
+			"0x%lx-0x%lx\n",
+			device_get_name(child), device_get_unit(child), start,
+			end);
 		if (start < sc->membase && end > sc->membase)
 		    start = sc->membase;
 		if (end > sc->memlimit)
cvs server: Diffing asr
Index: asr/asr.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/asr/asr.c,v
retrieving revision 1.18
diff -u -r1.18 asr.c
--- asr/asr.c	20 Mar 2002 02:02:35 -0000	1.18
+++ asr/asr.c	31 Mar 2002 04:45:12 -0000
@@ -2598,16 +2598,20 @@
         sc->ha_mem_res = bus_alloc_resource(tag, SYS_RES_MEMORY, &rid,
           p, p + l, l, RF_ACTIVE);
         if (sc->ha_mem_res == (struct resource *)NULL) {
+		printf("asr: map failed at: %d p:%08x %08x l:%08x\n",
+		    __LINE__, p, p+l, l);
                 return (0);
         }
         sc->ha_Base = (void *)rman_get_start(sc->ha_mem_res);
         if (sc->ha_Base == (void *)NULL) {
+		printf("map failed at: %d\n", __LINE__);
                 return (0);
         }
         sc->ha_Virt = (i2oRegs_t *) rman_get_virtual(sc->ha_mem_res);
         if (s == 0xA5111044) { /* Split BAR Raptor Daptor */
                 if ((rid += sizeof(u_int32_t))
                   >= (PCIR_MAPS + 4 * sizeof(u_int32_t))) {
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 }
                 p = pci_read_config(tag, rid, sizeof(p));
@@ -2621,9 +2625,11 @@
                 sc->ha_mes_res = bus_alloc_resource(tag, SYS_RES_MEMORY, &rid,
                   p, p + l, l, RF_ACTIVE);
                 if (sc->ha_mes_res == (struct resource *)NULL) {
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 }
                 if ((void *)rman_get_start(sc->ha_mes_res) == (void *)NULL) {
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 }
                 sc->ha_Fvirt = (U8 *) rman_get_virtual(sc->ha_mes_res);
@@ -2671,6 +2677,7 @@
                 debug_asr_printf (
                   "asr_pci_map_mem failed: bad memory type=0x%x\n",
                   (unsigned) l);
+		printf("map failed at: %d\n", __LINE__);
                 return (0);
         };
 
@@ -2703,6 +2710,7 @@
         if ((sc->ha_Base == (void *)NULL)
          || (sc->ha_Base == (void *)PCI_MAP_MEMORY_ADDRESS_MASK)) {
                 debug_asr_printf ("asr_pci_map_mem: not configured by bios.\n");
+		printf("map failed at: %d\n", __LINE__);
                 return (0);
         };
 
@@ -2716,6 +2724,7 @@
           psize + poffs);
 
         if (sc->ha_Virt == (i2oRegs_t *)NULL) {
+		printf("map failed at: %d\n", __LINE__);
                 return (0);
         }
 
@@ -2723,6 +2732,7 @@
         if (s == 0xA5111044) {
                 if ((rid += sizeof(u_int32_t))
                   >= (PCI_MAP_REG_START + 4 * sizeof(u_int32_t))) {
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 }
 
@@ -2757,6 +2767,7 @@
                         debug_asr_printf (
                           "asr_pci_map_mem failed: bad memory type=0x%x\n",
                           (unsigned) l);
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 };
 
@@ -2778,6 +2789,7 @@
                 sc->ha_Fvirt = (U8 *)pmap_mapdev (p - poffs, psize + poffs);
 
                 if (sc->ha_Fvirt == (U8 *)NULL) {
+			printf("map failed at: %d\n", __LINE__);
                         return (0);
                 }
 
@@ -2786,6 +2798,7 @@
                 sc->ha_Fvirt = (U8 *)(sc->ha_Virt);
         }
 #endif
+	printf("map ok at: %d\n", __LINE__);
         return (1);
 } /* asr_pci_map_mem */
 





-- 
-Alfred Perlstein [alfred@freebsd.org]
'Instead of asking why a piece of software is using "1970s technology,"
 start asking why software is ignoring 30 years of accumulated wisdom.'
Tax deductible donations for FreeBSD: http://www.freebsdfoundation.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020331044558.GD93885>