Re: panic: pmap_mapdev: Couldn't alloc kernel virtual memory on mpt_attach

From: Pawel Worach <pawel.worach_at_telia.com>
Date: Sat, 08 Jan 2005 05:36:54 +0100
Pawel Worach wrote:
> Booting an IBM x345 box without ACPI (see other problem) generates this 
> panic during
> the scsi controller probe. It sits on the line before the panic message 
> for about 1-2 minutes.
> I got a similar/the same panic with ACPI before the other ACPI problem 
> showed up.
> 

Followup to self. Now that ACPI works again this problem persists, updated
kernel messages with resource monitor debug enabled. I can't find a single
change that I find suspicious since it stopped working in the middle of all
the December ACPI and PCI code updates. Stacktrace look the same above the
mpt_attach() call. No special kernel or loader.conf options used, tried
disabling pci and acpi powerstate which made no difference.

pcib4: <ACPI Host-PCI bridge> on acpi0
pci8: <ACPI PCI bus> on pcib4
pci8: physical bus=8
         map[10]: type 4, range 32, base 00002600, size  8, enabled
rman_reserve_resource: <I/O ports> request: [0x2600, 0x26ff], length 0x100, 
flags 0, device (null)
considering [0x25c0, 0xffff]
truncated region: [0x2600, 0x26ff]; size 0x100 (requested 0x100)
candidate region: [0x26ff, 0x2600], size 0x100
splitting region in three parts: [0x25c0, 0x25ff]; [0x2600, 0x26ff]; [0x2700, 
0xffff]
         map[14]: type 1, range 64, base f7ff0000, size 16, enabled
rman_reserve_resource: <I/O memory addresses> request: [0xf7ff0000, 0xf7ffffff], 
length 0x10000, flags 0, device (null)
considering [0, 0xf9fbffff]
truncated region: [0xf7ff0000, 0xf7ffffff]; size 0x10000 (requested 0x10000)
candidate region: [0xf7ffffff, 0xf7ff0000], size 0x10000
splitting region in three parts: [0, 0xf7feffff]; [0xf7ff0000, 0xf7ffffff]; 
[0xf8000000, 0xf9fbffff]
         map[1c]: type 1, range 64, base f7fe0000, size 16, enabled
rman_reserve_resource: <I/O memory addresses> request: [0xf7fe0000, 0xf7feffff], 
length 0x10000, flags 0, device (null)
considering [0, 0xf7feffff]
truncated region: [0xf7fe0000, 0xf7feffff]; size 0x10000 (requested 0x10000)
candidate region: [0xf7feffff, 0xf7fe0000], size 0x10000
allocating at the end
pcib4: matched entry for 8.7.INTA
pcib4: slot 7 INTA hardwired to IRQ 27
found-> vendor=0x1000, dev=0x0030, revid=0x07
         bus=8, slot=7, func=0
         class=01-00-00, hdrtype=0x00, mfdev=1
         cmdreg=0x0157, statreg=0x0230, cachelnsz=8 (dwords)
         lattimer=0x48 (2160 ns), mingnt=0x11 (4250 ns), maxlat=0x12 (4500 ns)
         intpin=a, irq=27
         powerspec 2  supports D0 D1 D2 D3  current D0
         MSI supports 1 message, 64 bit
         map[10]: type 4, range 32, base 00002700, size  8, enabled
rman_reserve_resource: <I/O ports> request: [0x2700, 0x27ff], length 0x100, 
flags 0, device (null)
considering [0x2700, 0xffff]
truncated region: [0x2700, 0x27ff]; size 0x100 (requested 0x100)
candidate region: [0x27ff, 0x2700], size 0x100
allocating from the beginning
         map[14]: type 1, range 64, base f7fd0000, size 16, enabled
rman_reserve_resource: <I/O memory addresses> request: [0xf7fd0000, 0xf7fdffff], 
length 0x10000, flags 0, device (null)
considering [0, 0xf7fdffff]
truncated region: [0xf7fd0000, 0xf7fdffff]; size 0x10000 (requested 0x10000)
candidate region: [0xf7fdffff, 0xf7fd0000], size 0x10000
allocating at the end
         map[1c]: type 1, range 64, base f7fc0000, size 16, enabled
rman_reserve_resource: <I/O memory addresses> request: [0xf7fc0000, 0xf7fcffff], 
length 0x10000, flags 0, device (null)
considering [0, 0xf7fcffff]
truncated region: [0xf7fc0000, 0xf7fcffff]; size 0x10000 (requested 0x10000)
candidate region: [0xf7fcffff, 0xf7fc0000], size 0x10000
allocating at the end
pcib4: matched entry for 8.7.INTB
pcib4: slot 7 INTB hardwired to IRQ 28
found-> vendor=0x1000, dev=0x0030, revid=0x07
         bus=8, slot=7, func=1
         class=01-00-00, hdrtype=0x00, mfdev=1
         cmdreg=0x0157, statreg=0x0230, cachelnsz=8 (dwords)
         lattimer=0x48 (2160 ns), mingnt=0x11 (4250 ns), maxlat=0x12 (4500 ns)
         intpin=b, irq=28
         powerspec 2  supports D0 D1 D2 D3  current D0
         MSI supports 1 message, 64 bit
mpt0: <LSILogic 1030 Ultra4 Adapter> port 0x2600-0x26ff mem 
0xf7fe0000-0xf7feffff,0xf7ff0000-0xf7ffffff irq 27 at device 7.0 on pci8
mpt0: Reserved 0x10000 bytes for rid 0x14 type 3 at 0xf7ff0000
rman_reserve_resource: <Interrupt request lines> request: [0x1b, 0x1b], length 
0x1, flags 4, device mpt0
considering [0x15, 0x1c]
truncated region: [0x1b, 0x1b]; size 0x1 (requested 0x1)
candidate region: [0x1b, 0x1b], size 0x1
splitting region in three parts: [0x15, 0x1a]; [0x1b, 0x1b]; [0x1c, 0x1c]
mpt0: [GIANT-LOCKED]

 >>>> long delay here, 1-2 minutes <<<<

mpt0: soft reset
mpt1: <LSILogic 1030 Ultra4 Adapter> port 0x2700-0x27ff mem 
0xf7fc0000-0xf7fcffff,0xf7fd0000-0xf7fdffff irq 28 at device 7.1 on pci8
mpt1: linking with peer (mpt0)
mpt1: Reserved 0x10000 bytes for rid 0x14 type 3 at 0xf7fd0000
panic: pmap_mapdev: Couldn't alloc kernel virtual memory
cpuid = 0
KDB: enter: panic
[thread pid 0 tid 0 ]
Stopped at      kdb_enter+0x32: leal    0(%esi),%esi
db> tr
Tracing pid 0 tid 0 td 0xc06ef960
kdb_enter(c06a9309,0,c06bb827,c0820998,0) at kdb_enter+0x32
panic(c06bb827,10000,c08209a8,0,0) at panic+0x1f3
pmap_mapdev(f7fd0000,10000,f7fd0000,c1fbb020,c1f91204) at pmap_mapdev+0xd2
nexus_activate_resource(c1f15000,c1f91180,3,14,c200ce80) at 
nexus_activate_resource+0xa4
pci_alloc_resource(c1f16c00,c1f91180,3,c200d690,0,ffffffff,0,2) at 
pci_alloc_resource+0x597
bus_alloc_resource(c1f91180,3,c200d690,0,ffffffff) at bus_alloc_resource+0x7d
mpt_attach(c1f91180,c1f91180,ffffffff,c06aa680,0) at mpt_attach+0x453
device_attach(c1f91180,c1f16d00,c0820b60,c07c526d,c1f16c00) at device_attach+0x2c9
bus_generic_attach(c1f16c00,c1e77480,1,c07c4ec0,c1f16c00) at bus_generic_attach+0x18
acpi_pci_attach(c1f16c00,c1f16c00,ffffffff,c06aa680,0) at acpi_pci_attach+0x11d
device_attach(c1f16c00,c1ed5d80,c0820bdc,c07c551c,c1f16d00) at device_attach+0x2c9
bus_generic_attach(c1f16d00,c07d9649,8,c0820bcc,8) at bus_generic_attach+0x18
acpi_pcib_attach(c1f16d00,c1fbb1d4,8,c0820c04,c07c00b7) at acpi_pcib_attach+0xec
acpi_pcib_acpi_attach(c1f16d00,c1f16d00,ffffffff,c06aa680,0) at 
acpi_pcib_acpi_attach+0xf9
device_attach(c1f16d00,2f,c0820cbc,c07c28e4,c1ed5d80) at device_attach+0x2c9
bus_generic_attach(c1ed5d80,2e,2f,c1f7dc88,2e) at bus_generic_attach+0x18
acpi_attach(c1ed5d80,c1f4604c,c06c14ec,c06aa680,0) at acpi_attach+0x7b4
device_attach(c1ed5d80,c1f15000,c0820d18,c0679ffa,c1f15000) at device_attach+0x2c9
bus_generic_attach(c1f15000,c1f1504c,c0820d54,c0520839,c1f15000) at 
bus_generic_attach+0x18
nexus_attach(c1f15000,c1f3c04c,c06c14ec,c06aa680,0) at nexus_attach+0x1a
device_attach(c1f15000,c06dda30,c0820d78,c06670d8,c1f15680) at device_attach+0x2c9
root_bus_configure(c1f15680,c06bb361,0,c0820d98,c04d1126) at root_bus_configure+0x19
configure(0,0,c1e6f774,81ec00,81e000) at configure+0x28
mi_startup() at mi_startup+0xd6
begin() at begin+0x2c
db>

(gdb) l *mpt_attach+0x453
0xc04ab7c3 is in mpt_attach (/usr/src/sys/dev/mpt/mpt_pci.c:316).
311             }
312
313             /* Set up the memory regions */
314             /* Allocate kernel virtual memory for the 9x9's Mem0 region */
315             mpt->pci_reg_id = MEM_MAP_REG;
316             mpt->pci_reg = bus_alloc_resource(dev, SYS_RES_MEMORY,
317                             &mpt->pci_reg_id, 0, ~0, 0, RF_ACTIVE);
318             if (mpt->pci_reg == NULL) {
319                     device_printf(dev, "unable to map any ports\n");
320                     goto bad;

> pcib8: <MPTable Host-PCI bridge> pcibus 8 on motherboard
> pci8: <PCI bus> on pcib8
> mpt0: <LSILogic 1030 Ultra4 Adapter> port 0x2600-0x26ff mem 0xf7fe0000-
> 0xf7feffff,0xf7ff0000-0xf7ffffff irq 27 at device 7.0 on pci8
> mpt0: [GIANT-LOCKED]
> mpt1: <LSILogic 1030 Ultra4 Adapter> port 0x2700-0x27ff mem 0xf7fc0000-
> 0xf7fcffff,0xf7fd0000-0xf7fdffff irq 28 at device 7.1 on pci8
> panic: pmap_mapdev: Couldn't alloc kernel virtual memory
> cpuid = 0
> KDB: enter: panic
> [thread pid 0 tid 0 ]
> Stopped at      kdb_enter+0x32: leal    0(%esi),%esi
> db> tr
> Tracing pid 0 tid 0 td 0xc06eda40
> kdb_enter(c06a75b3,0,c06b9a7d,c0820a20,0) at kdb_enter+0x32
> panic(c06b9a7d,10000,c1f5eb00,0,0) at panic+0x1f3
> pmap_mapdev(f7fd0000,10000,c1f5eb88,c1fcea80,c1f5eb84) at pmap_mapdev+0xd2
> nexus_activate_resource(c1ee6e00,c1f5eb00,3,14,c1f79980) at nexus_activate_resource+0xa4
> pci_alloc_resource(c1f5ed00,c1f5eb00,3,c1fdee90,0,ffffffff,0,2) at pci_alloc_resource+0x597
> bus_alloc_resource(c1f5eb00,3,c1fdee90,0,ffffffff) at bus_alloc_resource+0x7d
> mpt_attach(c1f5eb00,c1f5eb00,ffffffff,c06a8919,0) at mpt_attach+0x453
> device_attach(c1f5eb00,8,c0820bdc,c04b088a,c1f5ed00) at device_attach+0x2c9
> bus_generic_attach(c1f5ed00,8,78,c0820bd0,8) at bus_generic_attach+0x18
> pci_attach(c1f5ed00,c1f5ed00,ffffffff,c06a8919,0) at pci_attach+0x8a
> device_attach(c1f5ed00,c1ee6d80,c0820c4c,c0678171,c1ee6a00) at device_attach+0x2c9
> bus_generic_attach(c1ee6a00,c06b6d31,8,c0820c40,8) at bus_generic_attach+0x18
> mptable_hostb_attach(c1ee6a00,c1ee6a00,ffffffff,c06a8919,0) at mptable_hostb_attach+0x81
> device_attach(c1ee6a00,c1ee6dcc,c0820cbc,c0670bff,c1ee6d80) at device_attach+0x2c9
> bus_generic_attach(c1ee6d80,c1f373c0,c06bf6bc,c1ee6d80,c1ee6dcc) at bus_generic_attach+0x18
> legacy_attach(c1ee6d80,c1f3904c,c06bf6bc,c06a8919,0) at legacy_attach+0x1f
> device_attach(c1ee6d80,c1ee6e00,c0820d18,c067852a,c1ee6e00) at device_attach+0x2c9
> bus_generic_attach(c1ee6e00,c1ee6e4c,c0820d54,c051eb59,c1ee6e00) at bus_generic_attach+0x18
> nexus_attach(c1ee6e00,c1f3f04c,c06bf6bc,c06a8919,0) at nexus_attach+0x1a
> device_attach(c1ee6e00,c06dbb50,c0820d78,c0665758,c1e7f500) at device_attach+0x2c9
> root_bus_configure(c1e7f500,c06b95b7,0,c0820d98,c04d06a6) at root_bus_configure+0x19
> configure(0,0,c06bc314,81ec00,81e000) at configure+0x28
> mi_startup() at mi_startup+0xd6
> begin() at begin+0x2c
> db> 
> 
> (kgdb) l *pmap_mapdev+0xd2
> 0xc067d342 is at /usr/src/sys/i386/i386/pmap.c:2877.
> 2872            if (pa < KERNLOAD && pa + size <= KERNLOAD)
> 2873                    va = KERNBASE + pa;
> 2874            else
> 2875                    va = kmem_alloc_nofault(kernel_map, size);
> 2876            if (!va)
> 2877                    panic("pmap_mapdev: Couldn't alloc kernel virtual 
> memory");
> 2878
> 2879            for (tmpva = va; size > 0; ) {
> 2880                    pmap_kenter(tmpva, pa);
> 2881                    size -= PAGE_SIZE;
> (kgdb) l *nexus_activate_resource+0xa4
> 0xc06788f4 is in nexus_activate_resource (/usr/src/sys/i386/i386/nexus.
> c:419).
> 414
> 415                             paddr = rman_get_start(r);
> 416                             psize = rman_get_size(r);
> 417
> 418                             poffs = paddr - trunc_page(paddr);
> 419                             vaddr = (caddr_t) pmap_mapdev(paddr-poffs, 
> psize+poffs) + poffs;
> 420                     }
> 421                     rman_set_virtual(r, vaddr);
> 422     #ifdef PC98
> 423                     /* PC-98: the type of bus_space_handle_t is the 
> structure. */
> (kgdb) l *pci_alloc_resource+0x597
> 0xc04b1e87 is in pci_alloc_resource (/usr/src/sys/dev/pci/pci.c:1705).
> 1700                                        rman_get_size(rle->res), *rid, 
> type,
> 1701                                        rman_get_start(rle->res));
> 1702                            if ((flags & RF_ACTIVE) && 
> 1703                                bus_generic_activate_resource(dev, 
> child, type,
> 1704                                *rid, rle->res) != 0)
> 1705                                    return NULL;
> 1706                            return (rle->res);
> 1707                    }
> 1708            }
> 1709            return (resource_list_alloc(rl, dev, child, type, rid,
> (kgdb) l *bus_alloc_resource+0x7d
> 0xc051c7ed is in bus_alloc_resource (/usr/src/sys/kern/subr_bus.c:3179).
> 3174    {
> 3175            if (dev->parent == 0)
> 3176                    return (0);
> 3177            return (BUS_ALLOC_RESOURCE(dev->parent, dev, type, rid, 
> start, end,
> 3178                count, flags));
> 3179    }
> 3180
> 3181    /**
> 3182     * _at_brief Wrapper function for BUS_ACTIVATE_RESOURCE().
> 3183     *
> (kgdb) l *mpt_attach+0x453
> 0xc04aaf93 is in mpt_attach (/usr/src/sys/dev/mpt/mpt_pci.c:309).
> 304             }
> 305
> 306             /* Set up the memory regions */
> 307             /* Allocate kernel virtual memory for the 9x9's Mem0 region 
> */
> 308             mpt->pci_reg_id = MEM_MAP_REG;
> 309             mpt->pci_reg = bus_alloc_resource(dev, SYS_RES_MEMORY,
> 310                             &mpt->pci_reg_id, 0, ~0, 0, RF_ACTIVE);
> 311             if (mpt->pci_reg == NULL) {
> 312                     device_printf(dev, "unable to map any ports\n");
> 313                     goto bad;
> (kgdb) 
> 
> 


-- 
Pawel
Received on Sat Jan 08 2005 - 03:37:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:25 UTC