From owner-freebsd-current Mon Jan 17 17: 4:47 2000 Delivered-To: freebsd-current@freebsd.org Received: from mass.cdrom.com (mass.cdrom.com [204.216.28.184]) by hub.freebsd.org (Postfix) with ESMTP id 7832D14F81 for ; Mon, 17 Jan 2000 17:04:27 -0800 (PST) (envelope-from msmith@mass.cdrom.com) Received: from mass.cdrom.com (localhost [127.0.0.1]) by mass.cdrom.com (8.9.3/8.9.3) with ESMTP id RAA02848; Mon, 17 Jan 2000 17:12:14 -0800 (PST) (envelope-from msmith@mass.cdrom.com) Message-Id: <200001180112.RAA02848@mass.cdrom.com> X-Mailer: exmh version 2.1.1 10/15/1999 To: Bill Fumerola Cc: current@FreeBSD.org Subject: Re: PNPBIOS + Dell PowerEdge = panic() In-reply-to: Your message of "Sun, 16 Jan 2000 00:21:13 EST." <20000116002113.B75768@jade.chc-chimes.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 17 Jan 2000 17:12:14 -0800 From: Mike Smith Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG The problem here is that the i386 nexus_alloc_resource() unconditionally calls pmap_mapdev() to map any memory-type resource into the kernel. This is definitely a bad idea; IMHO we should only do this when the resource is actually activated (and obviously free it when deactivated). Commentary? Should I just commit the change and see what happens? 8) > Hola, > > As the subject indicated PNPBIOS and Dell PowerEdge servers seem > to be a recipe for disaster. This doesn't bother me too terribly > much as I don't need PNPBIOS for anything on this machine, but I > figured the new-bus folks didn't have enough to do, so I'd help. > > This machine is a dual pIII/450 w/512MB. This is not SMP specific, BTW. > > This post exposes my DDB and newbus stupidity. If this was gdb, > I'd at least try and pull out some sort of relevent data. I have > a guess that the sheer amount/range of the ports and iomem has > something to do with it. That or the fact one starts with 0. > > Thanks and e-mail me privatly or catch me on IRC (bfumerola) if > you want me to try things with this server. > > -- > - bill fumerola - billf@chc-chimes.com - BF1560 - computer horizons corp - > - ph:(800) 252-2421 - bfumerol@computerhorizons.com - billf@FreeBSD.org - > > The relative part: > > unknown0: at port 0x800-0x83f,0x850-0x85f,0xe0-0xef,0x22,0x2e-0x2f,0x80,0xaa00-0xaa7f iomem 0-0x9ffff,0x100000-0x1fffdfff,0xfff80000-0xffffffff,0xf0000-0xfffff,0xec000-0xeffff irq 15 on isa0 > panic: pmap_mapdev: Couldn't alloc kernel virtual memory > mp_lock = 00000002; cpuid = 0; lapic.id = 01000000 > Debugger("panic") > Stopped at Debugger+0x35: movb $0,in_Debugger.555 > > The full boot -v: > > -- Forwarded message from Bill Fumerola -- > > SMAP type=01 base=00000000 00000000 len=00000000 000a0000 > SMAP type=02 base=00000000 000f0000 len=00000000 00010000 > SMAP type=01 base=00000000 00100000 len=00000000 1fefe000 > SMAP type=02 base=00000000 1fffe000 len=00000000 00002000 > SMAP type=02 base=00000000 fff80000 len=00000000 00080000 > SMAP type=02 base=00000000 fec00000 len=00000000 00010000 > SMAP type=02 base=00000000 fee00000 len=00000000 00010000 > Copyright (c) 1992-2000 The FreeBSD Project. > Copyright (c) 1982, 1986, 1989, 1991, 1993 > The Regents of the University of California. All rights reserved. > FreeBSD 4.0-CURRENT #0: Fri Jan 14 20:51:21 GMT 2000 > jkhblows@crazyhorse.internal.chc-chimes.com:/usr/src/sys/compile/GLUEPNP > Calibrating clock(s) ... TSC clock: 447668222 Hz, i8254 clock: 1193124 Hz > CLK_USE_I8254_CALIBRATION not specified - using default frequency > Timecounter "i8254" frequency 1193182 Hz > CLK_USE_TSC_CALIBRATION not specified - using old calibration method > CPU: Pentium III/Xeon (447.69-MHz 686-class CPU) > Origin = "GenuineIntel" Id = 0x673 Stepping = 3 > Features=0x383fbff > real memory = 536862720 (524280K bytes) > Physical memory chunk(s): > 0x00001000 - 0x0009efff, 647168 bytes (158 pages) > 0x00300000 - 0x1fffbfff, 533708800 bytes (130300 pages) > avail memory = 518021120 (505880K bytes) > Programming 24 pins in IOAPIC #0 > IOAPIC #0 intpin 2 -> irq 0 > SMP: CPU0 apic_initialize(): > lint0: 0x00000700 lint1: 0x00010400 TPR: 0x00000010 SVR: 0x000001ff > FreeBSD/SMP: Multiprocessor motherboard > cpu0 (BSP): apic id: 1, version: 0x00040011, at 0xfee00000 > cpu1 (AP): apic id: 0, version: 0x00040011, at 0xfee00000 > io0 (APIC): apic id: 2, version: 0x00170011, at 0xfec00000 > bios32: Found BIOS32 Service Directory header at 0xc00ffe80 > bios32: Entry = 0xffe90 (c00ffe90) Rev = 0 Len = 1 > pcibios: PCI BIOS entry at 0xcc0e > pnpbios: Found PnP BIOS data at 0xc00fe2d0 > pnpbios: Entry = f0000:e2f4 Rev = 1.0 > Other BIOS signatures found: > ACPI: 000fdef0 > Preloaded elf kernel "pnpbios" at 0xc02e4000. > Pentium Pro MTRR support enabled > md0: Malloc disk > Creating DISK md0 > Math emulator present > SMP: CPU0 bsp_apic_configure(): > lint0: 0x00010700 lint1: 0x00000400 TPR: 0x00000010 SVR: 0x000001ff > pci_open(1): mode 1 addr port (0x0cf8) is 0x80000090 > pci_open(1a): mode1res=0x80000000 (0x80000000) > pci_cfgcheck: device 0 [class=060000] [hdr=00] is there (id=71a08086) > devclass_alloc_unit: pcib0 already exists, using next available unit number > npx0: on motherboard > npx0: INT 16 interface > pci_open(1): mode 1 addr port (0x0cf8) is 0x00000000 > pci_open(1a): mode1res=0x80000000 (0x80000000) > pci_cfgcheck: device 0 [class=060000] [hdr=00] is there (id=71a08086) > pcib0: on motherboard > found-> vendor=0x8086, dev=0x71a0, revid=0x00 > class=06-00-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > map[10]: type 1, range 32, base f0000000, size 26 > found-> vendor=0x8086, dev=0x71a1, revid=0x00 > class=06-04-00, hdrtype=0x01, mfdev=0 > subordinatebus=1 secondarybus=1 > found-> vendor=0x1011, dev=0x0024, revid=0x03 > class=06-04-00, hdrtype=0x01, mfdev=0 > subordinatebus=3 secondarybus=2 > found-> vendor=0x8086, dev=0x7110, revid=0x02 > class=06-01-00, hdrtype=0x00, mfdev=1 > subordinatebus=0 secondarybus=0 > found-> vendor=0x8086, dev=0x7111, revid=0x01 > class=01-01-80, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > found-> vendor=0x8086, dev=0x7112, revid=0x01 > class=0c-03-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > intpin=d, irq=0 > found-> vendor=0x8086, dev=0x7113, revid=0x02 > class=06-80-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > map[90]: type 1, range 32, base 00000850, size 4 > Freeing (NOT implemented) redirected PCI irq 14. > found-> vendor=0x10b8, dev=0x0005, revid=0x08 > class=02-00-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > intpin=a, irq=20 > map[10]: type 1, range 32, base 0000dc00, size 8 > map[14]: type 1, range 32, base fe000000, size 12 > pci0: on pcib0 > pcib2: at device 1.0 on pci0 > found-> vendor=0x1002, dev=0x4744, revid=0x5c > class=03-00-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > map[10]: type 1, range 32, base fc000000, size 24 > map[14]: type 1, range 32, base 0000fc00, size 8 > map[18]: type 1, range 32, base fbfff000, size 12 > pci1: on pcib2 > vga-pci0: port 0xfc00-0xfcff mem 0xfbfff000-0xfbffffff,0xfc000000-0xfcffffff at device 0.0 on pci1 > pcib3: at device 2.0 on pci0 > Freeing (NOT implemented) redirected PCI irq 11. > found-> vendor=0x9005, dev=0x001f, revid=0x00 > class=01-00-00, hdrtype=0x00, mfdev=0 > subordinatebus=0 secondarybus=0 > intpin=a, irq=16 > map[10]: type 1, range 32, base 0000ec00, size 8 > map[14]: type 1, range 64, base f9fff000, size 12 > found-> vendor=0x8086, dev=0x0960, revid=0x03 > class=06-04-00, hdrtype=0x01, mfdev=1 > subordinatebus=3 secondarybus=3 > Freeing (NOT implemented) redirected PCI irq 10. > found-> vendor=0x8086, dev=0x1960, revid=0x03 > class=0e-00-01, hdrtype=0x00, mfdev=1 > subordinatebus=0 secondarybus=0 > intpin=a, irq=18 > map[10]: type 1, range 32, base f6c00000, size 22 > pci2: on pcib3 > ahc0: port 0xec00-0xecff mem 0xf9fff000-0xf9ffffff irq 16 at device 4.0 on pci2 > ahc0: Reading SEEPROM...done. > ahc0: Manual LVD Termination > ahc0: BIOS eeprom is present > ahc0: Secondary High byte termination Enabled > ahc0: Secondary Low byte termination Enabled > ahc0: Primary Low Byte termination Enabled > ahc0: Primary High Byte termination Enabled > ahc0: aic7890/91 Wide Channel A, SCSI Id=7, 16/255 SCBs > ahc0: Downloading Sequencer Program... 399 instructions downloaded > pcib4: at device 10.0 on pci2 > pci3: on pcib4 > amr0: mem 0xf6c00000-0xf6ffffff irq 18 at device 10.1 on pci2 > amr0: firmware 3.00 bios 1.36 16MB memory > amrd0: on amr0 > amrd0: 17136MB (35094528 sectors) RAID 5 (optimal) > Creating DISK amrd0 > isab0: at device 7.0 on pci0 > isa0: on isab0 > pci0: Intel PIIX4 ATA controller (vendor=0x8086, dev=0x7111) at 7.1 > pci0: Intel 82371AB/EB (PIIX4) USB controller (vendor=0x8086, dev=0x7112) at 7.2 irq 0 > Timecounter "PIIX" frequency 3579545 Hz > chip1: port 0x850-0x85f at device 7.3 on pci0 > tx0: port 0xdc00-0xdcff mem 0xfe000000-0xfe000fff irq 20 at device 8.0 on pci0 > tx0: address 00:e0:29:36:21:2d, type SMC9432TX, Auto-Neg 100Mbps bpf: tx0 attached > > pci_open(1): mode 1 addr port (0x0cf8) is 0x00000000 > pci_open(1a): mode1res=0x80000000 (0x80000000) > pci_cfgcheck: device 0 [class=060000] [hdr=00] is there (id=71a08086) > devclass_alloc_unit: pci1 already exists, using next available unit number > pcib1: on motherboard > pci4: on pcib1 > pnpbios: 16 devices, largest 179 bytes > PNP0c02: adding memory range 0-0x9ffff, size=0xa0000 > PNP0c02: adding memory range 0x100000-0x1fffdfff, size=0x1fefe000 > PNP0c02: adding memory range 0xfff80000-0xffffffff, size=0x80000 > PNP0c02: adding memory range 0xf0000-0xfffff, size=0x10000 > PNP0c02: adding memory range 0xec000-0xeffff, size=0x4000 > PNP0c02: adding io range 0x800-0x83f, size=0x40, align=0x1 > PNP0c02: adding io range 0x850-0x85f, size=0x10, align=0x1 > PNP0c02: adding io range 0xe0-0xef, size=0x10, align=0x1 > PNP0c02: adding io range 0x22-0x22, size=0x1, align=0x1 > PNP0c02: adding io range 0x2e-0x2f, size=0x2, align=0x1 > PNP0c02: adding io range 0x80-0x80, size=0x1, align=0x1 > PNP0c02: adding io range 0xaa00-0xaa7f, size=0x80, align=0x1 > PNP0c02: adding irq mask 0x8000 > PNP0c02: start dependant > pnpbios: handle 0 device ID PNP0c02 (020cd041) > PNP0501: adding irq mask 0x10 > PNP0501: adding io range 0x3f8-0x3ff, size=0x8, align=0x8 > PNP0501: start dependant > pnpbios: handle 2 device ID PNP0501 (0105d041) > PNP0501: adding irq mask 00x8 > PNP0501: adding io range 0x2f8-0x2ff, size=0x8, align=0x8 > PNP0501: start dependant > pnpbios: handle 3 device ID PNP0501 (0105d041) > PNP0401: adding dma mask 0x2 > PNP0401: adding irq mask 0x80 > PNP0401: adding io range 0x378-0x37f, size=0x8, align=0x8 > PNP0401: adding io range 0x778-0x77b, size=0x4, align=0x8 > PNP0401: start dependant > pnpbios: handle 4 device ID PNP0401 (0104d041) > PNP0700: adding irq mask 0x40 > PNP0700: adding io range 0x3f0-0x3f5, size=0x6, align=0x8 > PNP0700: adding dma mask 0x4 > PNP0700: start dependant > pnpbios: handle 5 device ID PNP0700 (0007d041) > PNP0f13: adding irq mask 0x1000 > PNP0f13: start dependant > pnpbios: handle 6 device ID PNP0f13 (130fd041) > PNP0a03: adding io range 0xcf8-0xcff, size=0x8, align=0x1 > PNP0a03: start dependant > pnpbios: handle 7 device ID PNP0a03 (030ad041) > PNP0c02: adding irq mask 0x200 > PNP0c02: start dependant > pnpbios: handle 8 device ID PNP0c02 (020cd041) > PNP0000: adding irq mask 00x4 > PNP0000: adding io range 0x20-0x21, size=0x2, align=0x1 > PNP0000: adding io range 0xa0-0xa1, size=0x2, align=0x1 > PNP0000: adding io range 0x4d0-0x4d1, size=0x2, align=0x1 > PNP0000: start dependant > pnpbios: handle 9 device ID PNP0000 (0000d041) > PNP0003: adding memory range 0xfee00000-0xfee0ffff, size=0x10000 > PNP0003: adding memory range 0xfec00000-0xfec0ffff, size=0x10000 > PNP0003: start dependant > pnpbios: handle 10 device ID PNP0003 (0300d041) > PNP0100: adding irq mask 00x1 > PNP0100: adding io range 0x40-0x43, size=0x4, align=0x1 > PNP0100: start dependant > pnpbios: handle 11 device ID PNP0100 (0001d041) > PNP0200: adding io range 0x81-0x8f, size=0xf, align=0x1 > PNP0200: adding io range 0-0xf, size=0x10, align=0x1 > PNP0200: adding io range 0xc0-0xdf, size=0x20, align=0x1 > PNP0200: adding dma mask 0x10 > PNP0200: start dependant > pnpbios: handle 12 device ID PNP0200 (0002d041) > PNP0303: adding irq mask 00x2 > PNP0303: adding io range 0x60-0x60, size=0x1, align=0x1 > PNP0303: adding io range 0x64-0x64, size=0x1, align=0x1 > PNP0303: start dependant > pnpbios: handle 13 device ID PNP0303 (0303d041) > PNP0800: adding io range 0x61-0x61, size=0x1, align=0x1 > PNP0800: start dependant > pnpbios: handle 14 device ID PNP0800 (0008d041) > PNP0b00: adding irq mask 0x100 > PNP0b00: adding io range 0x70-0x73, size=0x4, align=0x1 > PNP0b00: start dependant > pnpbios: handle 15 device ID PNP0b00 (000bd041) > PNP0c04: adding irq mask 0x2000 > PNP0c04: adding io range 0xf0-0xff, size=0x10, align=0x1 > PNP0c04: start dependant > pnpbios: handle 16 device ID PNP0c04 (040cd041) > Trying Read_Port at 203 > Trying Read_Port at 243 > Trying Read_Port at 283 > Trying Read_Port at 2c3 > Trying Read_Port at 303 > Trying Read_Port at 343 > Trying Read_Port at 383 > Trying Read_Port at 3c3 > isa_probe_children: disabling PnP devices > isa_probe_children: probing non-PnP devices > fdc0: at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 > fdc0: FIFO enabled, 8 bytes threshold > fd0: <1440-KB 3.5" drive> on fdc0 drive 0 > atkbdc0: at port 0x60-0x6f on isa0 > atkbd0: irq 1 on atkbdc0 > atkbd: the current kbd controller command byte 0065 > atkbd: keyboard ID 0x41ab (2) > kbdc: RESET_KBD return code:00fa > kbdc: RESET_KBD status:00aa > kbd0: atkbd0, AT 101/102 (2), config:0x0, flags:0x1d0000 > psm0: current command byte:0065 > kbdc: TEST_AUX_PORT status:0000 > kbdc: RESET_AUX return code:00fe > kbdc: RESET_AUX return code:00fe > kbdc: RESET_AUX return code:00fe > kbdc: DIAGNOSE status:0055 > kbdc: TEST_KBD_PORT status:0000 > psm0: failed to reset the aux device. > vga0: at port 0x3b0-0x3df iomem 0xa0000-0xbffff on isa0 > fb0: vga0, vga, type:VGA (5), flags:0x7007f > fb0: port:0x3b0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000 > fb0: init mode:24, bios mode:3, current mode:24 > fb0: window:0xc00b8000 size:32k gran:32k, buf:0 size:32k > VGA parameters upon power-up > 50 18 10 00 00 00 03 00 02 67 5f 4f 50 82 55 81 > bf 1f 00 4f 0d 0e 00 00 07 80 9c 8e 8f 28 1f 96 > b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c > 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff > VGA parameters in BIOS for mode 24 > 50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 > bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 > b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c > 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff > EGA/VGA parameters to be used for mode 24 > 50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 > bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 > b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c > 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff > sc0: on isa0 > sc0: VGA <16 virtual consoles, flags=0x0> > sc0: fb0 kbd0 > sio0: irq maps: 0x41 0x51 0x41 0x41 > sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 > sio0: type 16550A, console > sio1: irq maps: 0x41 0x49 0x41 0x41 > sio1 at port 0x2f8-0x2ff irq 3 on isa0 > sio1: type 16550A > ppc0: parallel port found at 0x378 > ppc0: ECP SPP ECP+EPP SPP > ppc0: at port 0x378-0x37f irq 7 flags 0x40 on isa0 > ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode > ppc0: FIFO with 16/16/8 bytes threshold > isa_probe_children: probing PnP devices > unknown0: at port 0x800-0x83f,0x850-0x85f,0xe0-0xef,0x22,0x2e-0x2f,0x80,0xaa00-0xaa7f iomem 0-0x9ffff,0x100000-0x1fffdfff,0xfff80000-0xffffffff,0xf0000-0xfffff,0xec000-0xeffff irq 15 on isa0 > panic: pmap_mapdev: Couldn't alloc kernel virtual memory > mp_lock = 00000002; cpuid = 0; lapic.id = 01000000 > Debugger("panic") > Stopped at Debugger+0x35: movb $0,in_Debugger.555 > db> trace > Debugger(c0242cd2) at Debugger+0x35 > panic(c0258d00,0,c148d540,3,c0296360) at panic+0xa4 > pmap_mapdev(100000,1fefdfff,2,1fefe000,1fffdfff) at pmap_mapdev+0x46 > nexus_alloc_resource(c147b200,c1483b80,3,c02f8cdc,100000) at nexus_alloc_resource+0xa8 > BUS_ALLOC_RESOURCE(c147b200,c1483b80,3,c02f8cdc,100000) at BUS_ALLOC_RESOURCE+0x43 > bus_generic_alloc_resource(c147b180,c1483b80,3,c02f8cdc,100000) at bus_generic_alloc_resource+0x2d > BUS_ALLOC_RESOURCE(c147b180,c1483b80,3,c02f8cdc,100000) at BUS_ALLOC_RESOURCE+0x43 > resource_list_alloc(c147c5c4,c147b000,c1483b80,3,c02f8cdc) at resource_list_alloc+0x69 > pci_alloc_resource(c147b000,c1483b80,3,c02f8cdc,100000) at pci_alloc_resource+0x38 > BUS_ALLOC_RESOURCE(c147b000,c1483b80,3,c02f8cdc,100000) at BUS_ALLOC_RESOURCE+0x43 > bus_generic_alloc_resource(c147dc00,c1483b80,3,c02f8cdc,100000) at bus_generic_alloc_resource+0x2d > BUS_ALLOC_RESOURCE(c147dc00,c1483b80,3,c02f8cdc,100000) at BUS_ALLOC_RESOURCE+0x43 > resource_list_alloc(c147c5c0,c1483f80,c1483b80,3,c02f8cdc,100000,ffffffff,1,2) at resource_list_alloc+0xf1 > isa_probe_children(c1483f80) at isa_probe_children+0x186 > configure(0,2f6c00,300000,0,c011c4d6) at configure+0x41 > mi_startup(c02f8fb4,0,0,a04,0) at mi_startup+0x70 > begin() at begin+0x4b > db> panic > panic: from debugger > mp_lock = 00000003; cpuid = 0; lapic.id = 01000000 > Uptime: 0s > amr0: flushing cache... > > ----- End forwarded message ----- > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message > -- \\ Give a man a fish, and you feed him for a day. \\ Mike Smith \\ Tell him he should learn how to fish himself, \\ msmith@freebsd.org \\ and he'll hate you for a lifetime. \\ msmith@cdrom.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message