From owner-freebsd-current Mon Jun 11 5:32:32 2001 Delivered-To: freebsd-current@freebsd.org Received: from zibbi.icomtek.csir.co.za (zibbi.icomtek.csir.co.za [146.64.24.58]) by hub.freebsd.org (Postfix) with ESMTP id 9ED0337B407 for ; Mon, 11 Jun 2001 05:30:46 -0700 (PDT) (envelope-from jhay@zibbi.icomtek.csir.co.za) Received: (from jhay@localhost) by zibbi.icomtek.csir.co.za (8.11.1/8.11.1) id f5BCUTM60905 for current@freebsd.org; Mon, 11 Jun 2001 14:30:29 +0200 (SAT) (envelope-from jhay) From: John Hay Message-Id: <200106111230.f5BCUTM60905@zibbi.icomtek.csir.co.za> Subject: TI-1225 and -current OLDCARD problem To: current@freebsd.org Date: Mon, 11 Jun 2001 14:30:29 +0200 (SAT) X-Mailer: ELM [version 2.4ME+ PL54 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG I have tried the new OLDCARD code in -current on a desktop with an Orinoco/ Lucent PCI Cardbus bridge (TI PCI-1225) and a Lucent 802.11 card. I found that the kernel would hang almost at the end of the boot process with the last message "pccard: card inserted, slot 1". But those cards only have slot 0, so on a whim I hacked pccard/pcic_pci.c to only probe/attach the first function on the card and not the second one and I have a working system. My very crude hack looks like this: --- /sys/pccard/pcic_pci.c.org Sat Jun 9 14:16:16 2001 +++ /sys/pccard/pcic_pci.c Mon Jun 11 10:12:36 2001 @@ -354,6 +354,7 @@ struct pcic_pci_table *itm; struct resource *res; int rid; + int func; device_id = pci_get_devid(dev); desc = NULL; @@ -373,6 +374,12 @@ if (desc == NULL) return (ENXIO); device_set_desc(dev, desc); + + func = pci_get_function(dev); + if(func == 1) { + printf("Leave second slot alone\n"); + return (ENXIO); + } /* * Take us out of power down mode. One thing that I noticed is that with a verbose boot with the original code (attached at the end of my email), is that slot 0 give "stat is 4c" while the phantom slot 1 gives "stat is c". Maybe that can be used to detect that it is a phantom slot or maybe a timeout can be implemented? I do know that when the machine is hanging at the end of the boot, I can still break into the debugger, so the machine is totally gone. I guess it is just sitting in some kind of loop waiting for something from the phantom slot. One question, why do I see 2 "card inserted" messages for each slot? Even with my hacked up version I see 2 "pccard: card inserted, slot 0" messages from the kernel. John -- John Hay -- John.Hay@icomtek.csir.co.za Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/boot/kernel/kernel] in 9 seconds... Type '?' for a list of commands, 'help' for more detailed help. ok boot -v 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 07efc000 SMAP type=03 base=00000000 07ffc000 len=00000000 00003000 SMAP type=04 base=00000000 07fff000 len=00000000 00001000 SMAP type=02 base=00000000 ffff0000 len=00000000 00010000 Copyright (c) 1992-2001 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 5.0-CURRENT #0: Sat Jun 9 19:49:22 SAST 2001 jhay@d-5-71.icomtek.csir.co.za:/usr/src/sys/compile/PCIPCMCIA Setting adv 0 at to isa (string) Setting aha 0 at to isa (string) Setting aic 0 at to isa (string) Setting apm 0 at to nexus (string) Setting apm 0 disabled to 1 (int) Setting apm 0 flags to 32 (int) Setting ata 0 at to isa (string) Setting ata 0 irq to 14 (int) Setting ata 0 port to 496 (int) Setting ata 1 at to isa (string) Setting ata 1 irq to 15 (int) Setting ata 1 port to 368 (int) Setting atkbd 0 at to atkbdc (string) Setting atkbd 0 flags to 1 (int) Setting atkbd 0 irq to 1 (int) Setting atkbdc 0 at to isa (string) Setting atkbdc 0 port to 96 (int) Setting bt 0 at to isa (string) Setting cs 0 at to isa (string) Setting cs 0 port to 768 (int) Setting ed 0 at to isa (string) Setting ed 0 irq to 10 (int) Setting ed 0 maddr to 884736 (int) Setting ed 0 port to 640 (int) Setting fd 0 at to fdc0 (string) Setting fd 0 drive to 0 (int) Setting fd 1 at to fdc0 (string) Setting fd 1 drive to 1 (int) Setting fdc 0 at to isa (string) Setting fdc 0 drq to 2 (int) Setting fdc 0 irq to 6 (int) Setting fdc 0 port to 1008 (int) Setting fe 0 at to isa (string) Setting fe 0 port to 768 (int) Setting ie 0 at to isa (string) Setting ie 0 irq to 10 (int) Setting ie 0 maddr to 851968 (int) Setting ie 0 port to 768 (int) Setting le 0 at to isa (string) Setting le 0 irq to 5 (int) Setting le 0 maddr to 851968 (int) Setting le 0 port to 768 (int) Setting lnc 0 at to isa (string) Setting lnc 0 drq to 0 (int) Setting lnc 0 irq to 10 (int) Setting lnc 0 port to 640 (int) Setting npx 0 at to nexus (string) Setting npx 0 irq to 13 (int) Setting npx 0 port to 240 (int) Setting pcic 0 at to isa (string) Setting pcic 0 disabled to 1 (int) Setting pcic 0 irq to 10 (int) Setting pcic 0 maddr to 851968 (int) Setting pcic 0 port to 992 (int) Setting pcic 1 at to isa (string) Setting pcic 1 disabled to 1 (int) Setting pcic 1 irq to 11 (int) Setting pcic 1 maddr to 868352 (int) Setting pcic 1 port to 994 (int) Setting pmtimer 0 at to isa (string) Setting ppc 0 at to isa (string) Setting ppc 0 irq to 7 (int) Setting psm 0 at to atkbdc (string) Setting psm 0 irq to 12 (int) Setting sc 0 at to isa (string) Setting sc 0 flags to 256 (int) Setting sio 0 at to isa (string) Setting sio 0 flags to 16 (int) Setting sio 0 irq to 4 (int) Setting sio 0 port to 1016 (int) Setting sio 1 at to isa (string) Setting sio 1 irq to 3 (int) Setting sio 1 port to 760 (int) Setting sio 2 at to isa (string) Setting sio 2 disabled to 1 (int) Setting sio 2 irq to 5 (int) Setting sio 2 port to 1000 (int) Setting sio 3 at to isa (string) Setting sio 3 disabled to 1 (int) Setting sio 3 irq to 9 (int) Setting sio 3 port to 744 (int) Setting sn 0 at to isa (string) Setting sn 0 irq to 10 (int) Setting sn 0 port to 768 (int) Setting vga 0 at to isa (string) Setting vt 0 at to isa (string) Calibrating clock(s) ... TSC clock: 664924976 Hz, i8254 clock: 1193102 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 Timecounter "TSC" frequency 664972605 Hz CPU: Pentium III/Pentium III Xeon/Celeron (664.97-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x683 Stepping = 3 Features=0x387f9ff real memory = 134201344 (131056K bytes) Physical memory chunk(s): 0x00001000 - 0x0009ffff, 651264 bytes (159 pages) 0x00414000 - 0x07ff3fff, 129892352 bytes (31712 pages) avail memory = 126623744 (123656K bytes) bios32: Found BIOS32 Service Directory header at 0xc00f92a0 bios32: Entry = 0xf0690 (c00f0690) Rev = 0 Len = 1 pcibios: PCI BIOS entry at 0xf0000+0x890 pnpbios: Found PnP BIOS data at 0xc00fc260 pnpbios: Entry = f0000:c290 Rev = 1.0 pnpbios: OEM ID cd041 Other BIOS signatures found: Preloaded elf kernel "kernel" at 0xc03ee000. null: random: mem: Pentium Pro MTRR support enabled Using $PIR table, 8 entries at 0xc00f0e60 npx0: on motherboard npx0: INT 16 interface pcib0: at pcibus 0 on motherboard pci0: physical bus=0 map[10]: type 3, range 32, base e4000000, size 26, enabled found-> vendor=0x1106, dev=0x0605, revid=0x81 bus=0, slot=0, func=0 class=06-00-00, hdrtype=0x00, mfdev=0 powerspec 2 supports D0 D3 current D0 found-> vendor=0x1106, dev=0x8605, revid=0x00 bus=0, slot=1, func=0 class=06-04-00, hdrtype=0x01, mfdev=0 found-> vendor=0x1106, dev=0x0686, revid=0x22 bus=0, slot=4, func=0 class=06-01-00, hdrtype=0x00, mfdev=1 map[20]: type 4, range 32, base 0000d800, size 4, enabled found-> vendor=0x1106, dev=0x0571, revid=0x10 bus=0, slot=4, func=1 class=01-01-8a, hdrtype=0x00, mfdev=0 powerspec 2 supports D0 D3 current D0 map[20]: type 4, range 32, base 0000d400, size 5, enabled found-> vendor=0x1106, dev=0x3038, revid=0x10 bus=0, slot=4, func=2 class=0c-03-00, hdrtype=0x00, mfdev=0 intpin=d, irq=12 powerspec 2 supports D0 D3 current D0 map[20]: type 4, range 32, base 0000d000, size 5, enabled found-> vendor=0x1106, dev=0x3038, revid=0x10 bus=0, slot=4, func=3 class=0c-03-00, hdrtype=0x00, mfdev=0 intpin=d, irq=12 powerspec 2 supports D0 D3 current D0 found-> vendor=0x1106, dev=0x3057, revid=0x30 bus=0, slot=4, func=4 class=06-00-00, hdrtype=0x00, mfdev=0 powerspec 2 supports D0 D3 current D0 map[10]: type 4, range 32, base 0000b800, size 8, enabled map[14]: type 1, range 32, base d5800000, size 12, enabled found-> vendor=0x9004, dev=0x5078, revid=0x03 bus=0, slot=13, func=0 class=01-00-00, hdrtype=0x00, mfdev=0 intpin=a, irq=11 powerspec 1 supports D0 D3 current D0 found-> vendor=0x104c, dev=0xac1c, revid=0x01 bus=0, slot=15, func=0 class=06-07-00, hdrtype=0x02, mfdev=1 intpin=a, irq=10 powerspec 1 supports D0 D1 D2 D3 current D0 found-> vendor=0x104c, dev=0xac1c, revid=0x01 bus=0, slot=15, func=1 class=06-07-00, hdrtype=0x02, mfdev=1 intpin=a, irq=10 powerspec 1 supports D0 D1 D2 D3 current D0 map[10]: type 4, range 32, base 0000b400, size 6, enabled found-> vendor=0x1274, dev=0x5880, revid=0x02 bus=0, slot=16, func=0 class=04-01-00, hdrtype=0x00, mfdev=0 intpin=a, irq=12 powerspec 1 supports D0 D2 D3 current D3 map[10]: type 3, range 32, base d7000000, size 12, enabled map[14]: type 4, range 32, base 0000b000, size 5, enabled map[18]: type 1, range 32, base d5000000, size 20, enabled found-> vendor=0x8086, dev=0x1229, revid=0x02 bus=0, slot=17, func=0 class=02-00-00, hdrtype=0x00, mfdev=0 intpin=a, irq=11 pci0: on pcib0 pcib1: at device 1.0 on pci0 pcib1: secondary bus 1 pcib1: subordinate bus 1 pcib1: I/O decode 0xe000-0xdfff pcib1: memory decode 0xd6000000-0xd6efffff pcib1: prefetched decode 0xd7f00000-0xe3ffffff pci1: physical bus=1 map[10]: type 1, range 32, base d6000000, size 19, enabled map[14]: type 3, range 32, base d8000000, size 27, enabled found-> vendor=0x5333, dev=0x8a22, revid=0x04 bus=1, slot=0, func=0 class=03-00-00, hdrtype=0x00, mfdev=0 intpin=a, irq=11 powerspec 1 supports D0 D1 D2 D3 current D0 pci1: on pcib1 pci1: at 0.0 (no driver attached) isab0: at device 4.0 on pci0 isa0: on isab0 atapci0: port 0xd800-0xd80f at device 4.1 on pci0 ata0: iobase=0x01f0 altiobase=0x03f6 bmaddr=0xd800 ata0: mask=03 ostat0=50 ostat2=00 ata0-master: ATAPI probe 00 00 ata0-slave: ATAPI probe 00 00 ata0: mask=03 stat0=50 stat1=00 ata0-master: ATA probe 01 a5 ata0: devices=01 ata0: at 0x1f0 irq 14 on atapci0 ata1: iobase=0x0170 altiobase=0x0376 bmaddr=0xd808 ata1: at 0x170 irq 15 on atapci0 uhci0: port 0xd400-0xd41f irq 12 at device 4.2 on pci0 usb0: on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered uhci1: port 0xd000-0xd01f irq 12 at device 4.3 on pci0 usb1: on uhci1 usb1: USB revision 1.0 uhub1: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub1: 2 ports with 2 removable, self powered ahc0: port 0xb800-0xb8ff mem 0xd5800000-0xd5800fff irq 11 at device 13.0 on pci0 ahc0: No SEEPROM available. ahc0: Host Adapter Bios disabled. Using default SCSI device parameters ahc0: Downloading Sequencer Program... 443 instructions downloaded aic7850: Single Channel A, SCSI Id=7, 3/255 SCBs pcic0: irq 10 at device 15.0 on pci0 pcic0: PCI Memory allocated: 0x44000000 pcic0: TI12XX PCI Config Reg: [pwr save][pci only] pccard0: on pcic0 stat is 4c pcic1: irq 10 at device 15.1 on pci0 pcic1: PCI Memory allocated: 0x44001000 pcic1: TI12XX PCI Config Reg: [pwr save][pci only] pccard1: on pcic1 stat is c pci0: at 16.0 (no driver attached) fxp0: port 0xb000-0xb01f mem 0xd5000000-0xd50fffff,0xd7000000-0xd7000fff irq 11 at device 17.0 on pci0 fxp0: using memory space register mapping fxp0: Ethernet address 00:a0:c9:42:7a:98 fxp0: PCI IDs: 8086 1229 8086 0001 0002 fxp0: Chip Type: 1 inphy0: on miibus0 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto bpf: fxp0 attached ata-: ata0 already exists, using ata2 instead ata-: ata1 already exists, using ata3 instead pcic-: pcic0 already exists, using pcic2 instead pcic-: pcic1 already exists, using pcic3 instead 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 pnpbios: 15 devices, largest 114 bytes PNP0401: adding dma mask 0x8 PNP0401: adding irq mask 0x80 PNP0401: adding io range 0x378-0x37f, size=0x8, align=0 PNP0401: adding io range 0x778-0x77f, size=0x8, align=0 PNP0401: end config pnpbios: handle 1 device ID PNP0401 (0104d041) PNP0501: adding irq mask 0x10 PNP0501: adding io range 0x3f8-0x3ff, size=0x8, align=0 PNP0501: end config pnpbios: handle 2 device ID PNP0501 (0105d041) PNP0501: adding irq mask 0x8 PNP0501: adding io range 0x2f8-0x2ff, size=0x8, align=0 PNP0501: end config pnpbios: handle 3 device ID PNP0501 (0105d041) PNP0700: adding irq mask 0x40 PNP0700: adding dma mask 0x4 PNP0700: adding io range 0x3f2-0x3f5, size=0x4, align=0 PNP0700: end config pnpbios: handle 4 device ID PNP0700 (0007d041) PNPb02f: adding io range 0x200-0x207, size=0x8, align=0 PNPb02f: end config pnpbios: handle 5 device ID PNPb02f (2fb0d041) PNP0c01: adding fixed memory32 range 0-0x9ffff, size=0xa0000 PNP0c01: adding fixed memory32 range 0x100000-0x7ffffff, size=0x7f00000 PNP0c01: adding fixed memory32 range 0xe8000-0xeffff, size=0x8000 PNP0c01: adding fixed memory32 range 0xf0000-0xf3fff, size=0x4000 PNP0c01: adding fixed memory32 range 0xf4000-0xf7fff, size=0x4000 PNP0c01: adding fixed memory32 range 0xf8000-0xfffff, size=0x8000 PNP0c01: adding fixed memory32 range 0xcf000-0xcffff, size=0x1000 PNP0c01: adding fixed memory32 range 0xfffe0000-0xffffffff, size=0x20000 PNP0c01: end config pnpbios: handle 9 device ID PNP0c01 (010cd041) PNP0000: adding irq mask 0x4 PNP0000: adding io range 0x20-0x21, size=0x2, align=0 PNP0000: adding io range 0xa0-0xa1, size=0x2, align=0 PNP0000: adding io range 0x4d0-0x4d1, size=0x2, align=0 PNP0000: end config pnpbios: handle 10 device ID PNP0000 (0000d041) PNP0100: adding irq mask 0x1 PNP0100: adding io range 0x40-0x43, size=0x4, align=0 PNP0100: end config pnpbios: handle 11 device ID PNP0100 (0001d041) PNP0b00: adding irq mask 0x100 PNP0b00: adding io range 0x70-0x75, size=0x6, align=0 PNP0b00: end config pnpbios: handle 12 device ID PNP0b00 (000bd041) PNP0303: adding irq mask 0x2 PNP0303: adding io range 0x60-0x60, size=0x1, align=0 PNP0303: adding io range 0x64-0x64, size=0x1, align=0 PNP0303: end config pnpbios: handle 13 device ID PNP0303 (0303d041) PNP0c04: adding irq mask 0x2000 PNP0c04: adding io range 0xf0-0xf0, size=0x1, align=0 PNP0c04: end config pnpbios: handle 14 device ID PNP0c04 (040cd041) PNP0200: adding dma mask 0x10 PNP0200: adding io range 0-0xf, size=0x10, align=0 PNP0200: adding io range 0x80-0x90, size=0x11, align=0 PNP0200: adding io range 0x94-0x9f, size=0xc, align=0 PNP0200: adding io range 0xc0-0xde, size=0x1f, align=0 PNP0200: end config pnpbios: handle 15 device ID PNP0200 (0002d041) PNP0800: adding io range 0x61-0x61, size=0x1, align=0x1 PNP0800: end config pnpbios: handle 16 device ID PNP0800 (0008d041) PNP0a03: adding io range 0xcf8-0xcff, size=0x8, align=0 PNP0a03: end config pnpbios: handle 17 device ID PNP0a03 (030ad041) PNP0c02: adding io range 0xe400-0xe47f, size=0x80, align=0 PNP0c02: adding io range 0xe800-0xe83f, size=0x40, align=0 PNP0c02: end config pnpbios: handle 18 device ID PNP0c02 (020cd041) sc-: sc0 already exists, using sc1 instead vga-: vga0 already exists, using vga1 instead isa_probe_children: disabling PnP devices isa_probe_children: probing non-PnP devices orm0: