From owner-freebsd-hackers Thu Apr 26 6:51:11 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from ringworld.nanolink.com (ringworld.nanolink.com [195.24.48.13]) by hub.freebsd.org (Postfix) with SMTP id BA10737B43C for ; Thu, 26 Apr 2001 06:50:58 -0700 (PDT) (envelope-from roam@ringworld.nanolink.com) Received: (qmail 97894 invoked by uid 1000); 26 Apr 2001 13:49:01 -0000 Date: Thu, 26 Apr 2001 16:49:01 +0300 From: Peter Pentchev To: Lists Account Cc: freebsd-hackers@freebsd.org Subject: Re: More PCI->PCMCIA bridge stuff Message-ID: <20010426164901.B97626@ringworld.oblivion.bg> Mail-Followup-To: Lists Account , freebsd-hackers@freebsd.org References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from lists@security.za.net on Thu, Apr 26, 2001 at 02:02:40PM +0200 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, Apr 26, 2001 at 02:02:40PM +0200, Lists Account wrote: > Hi All > > Ok, the newcard stuff under version 5 picks up my bridge fine, and it > finds my wi0 (orinoco gold card) perfectly, this is all great and I was > rather ecstatic as I watched it boot and tell me all this... > > However the problem comes in the fact that it tries to probe pccard1 after > finishing with pccard0, and the moment it does this (there is only one > bridge, and only space for one card), it hangs the machine solid, not even > a numlock, says something about printing cis tuplets and *boom* nothing > left. Yes, I had the same problem with my PCMCIA->PCI bridge. I solved it with the following patch, which adds a new option to pccardd: -S maxslot. Then, add -S 1 to pccardd_flags in your /etc/rc.conf, and you're all set. The patch is against -current; I can provide one against -stable if somebody is interested. G'luck, Peter -- What would this sentence be like if pi were 3? Index: src/usr.sbin/pccard/pccardd/cardd.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/cardd.c,v retrieving revision 1.65 diff -u -r1.65 cardd.c --- src/usr.sbin/pccard/pccardd/cardd.c 2000/12/24 15:30:36 1.65 +++ src/usr.sbin/pccard/pccardd/cardd.c 2001/04/26 13:47:46 @@ -51,6 +51,7 @@ static void read_ether_attr2(struct slot *sp); struct slot *slots; +int slot_max = MAXSLOT; /* * Dump configuration file data. @@ -112,7 +113,7 @@ struct slot *sp; slots = NULL; - for (i = 0; i < MAXSLOT; i++) { + for (i = 0; i < slot_max; i++) { sprintf(name, CARD_DEVICE, i); fd = open(name, O_RDWR); if (fd < 0) Index: src/usr.sbin/pccard/pccardd/cardd.h =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/cardd.h,v retrieving revision 1.27 diff -u -r1.27 cardd.h --- src/usr.sbin/pccard/pccardd/cardd.h 2000/10/20 13:08:18 1.27 +++ src/usr.sbin/pccard/pccardd/cardd.h 2001/04/26 13:47:46 @@ -141,6 +141,7 @@ EXTERN struct slot *slots, *current_slot; EXTERN int slen; +EXTERN int slot_max; EXTERN struct allocblk *pool_ioblks; /* I/O blocks in the pool */ EXTERN struct allocblk *pool_mem; /* Memory in the pool */ Index: src/usr.sbin/pccard/pccardd/pccardd.8 =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/pccardd.8,v retrieving revision 1.22 diff -u -r1.22 pccardd.8 --- src/usr.sbin/pccard/pccardd/pccardd.8 2000/12/27 15:30:15 1.22 +++ src/usr.sbin/pccard/pccardd/pccardd.8 2001/04/26 13:47:47 @@ -39,6 +39,7 @@ .Op Fl i Ar IRQ .Op Fl I .Op Fl f Ar configfile +.Op Fl S Ar maxslot .Sh DESCRIPTION .Nm Pccardd is normally started at boot time, and manages the insertion @@ -153,6 +154,12 @@ .Nm , and the kernel drivers and devices that are used to interface to the card. +.It Fl S Ar maxslot +Specifies the maximum number of slots to probe (default 16). +This may be useful with e.g. some PCMCIA->PCI bridges, when probing +the second slot causes +.Nm +to enter an infinite loop. .El .Sh FILES .Bl -tag -width /etc/defaults/pccard.conf -compact Index: src/usr.sbin/pccard/pccardd/pccardd.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/pccardd.c,v retrieving revision 1.12 diff -u -r1.12 pccardd.c --- src/usr.sbin/pccard/pccardd/pccardd.c 2000/10/20 13:08:18 1.12 +++ src/usr.sbin/pccard/pccardd/pccardd.c 2001/04/26 13:47:47 @@ -161,7 +161,7 @@ int irq_specified = 0; int i; struct sockaddr_un sun; -#define COM_OPTS ":Idvf:s:i:z" +#define COM_OPTS ":Idvf:S:s:i:z" bzero(irq_arg, sizeof(irq_arg)); use_kern_irq = 1; @@ -192,6 +192,13 @@ } irq_arg[i] = 1; irq_specified = 1; + break; + case 'S': + if (sscanf(optarg, "%d", &i) != 1) { + fprintf(stderr, "%s: -S number\n", argv[0]); + exit(1); + } + slot_max = i; break; case 's': sock = optarg; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message