Re: [BUG] PCMCIA CardBus problems

From: Linus Torvalds (torvalds@transmeta.com)
Date: Sat Aug 12 2000 - 13:54:07 EST


On Sat, 12 Aug 2000, Richard Gooch wrote:
>
> I tried a quick hack: I made a symlink: i82365.o -> yenta_socket.o
> The cardmgr starts up now, except that only one socket is watched (I
> have two).

Why do you do that symlink instead of just loading yenta_socket directly?
Or just compile it into the kernel.

>From the logs, the driver certainly finds both sockets, and they both look
functional.

> And still it doesn't work. Kernel logs appended. Note that with 2.2.x,
> the i82365 contoller and both card functions (EtherNet and modem) are
> sitting on IRQ 11 (and they work).

Ahh, this is plain pre6. There's a silly "we access the wrong resource"
thinko there.

The simple fix is in the test7-pre series, or for just this problem
appended here..

                Linus

----
diff -u --recursive --new-file v2.4.0-test6/linux/drivers/pci/setup-res.c linux/drivers/pci/setup-res.c
--- v2.4.0-test6/linux/drivers/pci/setup-res.c	Wed Aug  9 19:19:50 2000
+++ linux/drivers/pci/setup-res.c	Thu Aug 10 15:19:40 2000
@@ -60,7 +60,8 @@
 	struct resource *res,
 	unsigned long size,
 	unsigned long min,
-	unsigned int type_mask)
+	unsigned int type_mask,
+	int resno)
 {
 	int i;
 
@@ -83,7 +84,7 @@
 			continue;
 
 		/* Update PCI config space.  */
-		pcibios_update_resource(dev, r, res, i);
+		pcibios_update_resource(dev, r, res, resno);
 		return 0;
 	}
 	return -EBUSY;
@@ -100,14 +101,14 @@
 	min = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM;
 
 	/* First, try exact prefetching match.. */
-	if (pci_assign_bus_resource(bus, dev, res, size, min, IORESOURCE_PREFETCH) < 0) {
+	if (pci_assign_bus_resource(bus, dev, res, size, min, IORESOURCE_PREFETCH, i) < 0) {
 		/*
 		 * That failed.
 		 *
 		 * But a prefetching area can handle a non-prefetching
 		 * window (it will just not perform as well).
 		 */
-		if (!(res->flags & IORESOURCE_PREFETCH) || pci_assign_bus_resource(bus, dev, res, size, min, 0) < 0) {
+		if (!(res->flags & IORESOURCE_PREFETCH) || pci_assign_bus_resource(bus, dev, res, size, min, 0, i) < 0) {
 			printk(KERN_ERR "PCI: Failed to allocate resource %d for %s\n", i, dev->name);
 			return -EBUSY;
 		}

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Aug 15 2000 - 21:00:27 EST