Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Apr 2001 16:49:01 +0300
From:      Peter Pentchev <roam@orbitel.bg>
To:        Lists Account <lists@security.za.net>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: More PCI->PCMCIA bridge stuff
Message-ID:  <20010426164901.B97626@ringworld.oblivion.bg>
In-Reply-To: <Pine.BSF.4.21.0104261400370.96735-100000@security.za.net>; from lists@security.za.net on Thu, Apr 26, 2001 at 02:02:40PM %2B0200
References:  <Pine.BSF.4.21.0104261400370.96735-100000@security.za.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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




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