linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Re : [BUG] cardbus/hotplugging still broken in 2.5.56
@ 2003-01-14 18:39 Yaacov Akiba Slama
  0 siblings, 0 replies; 7+ messages in thread
From: Yaacov Akiba Slama @ 2003-01-14 18:39 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 212 bytes --]

Hello all !

I have a xircom (RBEM56G-100) lan+modem, and it seems that the following 
patch solves the problem of ressources collisions.
Now, I can use 2.5.58mm1 in my laptop and I am happy.

Yaacov Akiba Slama

[-- Attachment #2: cardbus.patch --]
[-- Type: text/plain, Size: 708 bytes --]

--- a/drivers/pcmcia/cardbus.c	2003-01-14 19:38:49.000000000 +0200
+++ b/drivers/pcmcia/cardbus.c	2003-01-14 19:57:13.000000000 +0200
@@ -285,18 +285,19 @@
 		dev->dev.dma_mask = &dev->dma_mask;
 
 		pci_setup_device(dev);
-		if (pci_enable_device(dev))
-			continue;
 
 		strcpy(dev->dev.bus_id, dev->slot_name);
 
 		/* FIXME: Do we need to enable the expansion ROM? */
 		for (r = 0; r < 7; r++) {
 			struct resource *res = dev->resource + r;
-			if (res->flags)
+			if (!res->start && res->end)
 				pci_assign_resource(dev, r);
 		}
 
+		if (pci_enable_device(dev))
+			continue;
+
 		/* Does this function have an interrupt at all? */
 		pci_readb(dev, PCI_INTERRUPT_PIN, &irq_pin);
 		if (irq_pin) {

^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [BUG] cardbus/hotplugging still broken in 2.5.56
@ 2003-01-15  8:11 Jens Taprogge
  2003-01-15  9:13 ` Mikael Pettersson
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Taprogge @ 2003-01-15  8:11 UTC (permalink / raw)
  To: mikpe, zwane, bvermeul; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 551 bytes --]

The cardbus problems are caused by 

ChangeSet@1.797.145.6  2002-11-25 18:31:10-08:00 davej@codemonkey.org.uk

as far as I can tell. 

pci_enable_device() will fail at least on i386 (see
arch/i386/pci/i386.c: pcibios_enable_resource (line 260)) if the
resources have not been assigned previously. Hence the ostensible
resource collisions.

The attached patch should fix the problem.

I have send the patch to Dave Jones some time ago but did not hear from
him yet.

I am not subscribed to the list so please cc me on replys. 

Jens

-- 
Jens Taprogge

[-- Attachment #2: cardbus_fix_2.5.52.patch --]
[-- Type: text/plain, Size: 1498 bytes --]

diff -ur linux-2.5.51/drivers/pcmcia/cardbus.c linux-2.5.51_jlt/drivers/pcmcia/cardbus.c
--- linux-2.5.51/drivers/pcmcia/cardbus.c	2002-12-10 03:45:52.000000000 +0100
+++ linux-2.5.51_jlt/drivers/pcmcia/cardbus.c	2002-12-10 22:19:46.000000000 +0100
@@ -229,6 +229,17 @@
     
 =====================================================================*/
 
+static void cb_free_resources(struct pci_dev *dev)
+{
+	int i;
+
+	for (i = 0; i < 7; i++) {
+		struct resource *res = dev->resource + i;
+		if (res->parent)
+			release_resource(res);
+	}
+}
+
 int cb_alloc(socket_info_t * s)
 {
 	struct pci_bus *bus;
@@ -283,25 +294,31 @@
 		dev->hdr_type = hdr & 0x7f;
 
 		pci_setup_device(dev);
-		if (pci_enable_device(dev))
-			continue;
 
 		strcpy(dev->dev.bus_id, dev->slot_name);
 
 		/* FIXME: Do we need to enable the expansion ROM? */
 		for (r = 0; r < 7; r++) {
 			struct resource *res = dev->resource + r;
-			if (res->flags)
-				pci_assign_resource(dev, r);
+			if (res->flags && pci_assign_resource(dev, r) < 0) {
+				cb_free_resources(dev);
+				continue;
+			}
 		}
 
 		/* Does this function have an interrupt at all? */
 		pci_readb(dev, PCI_INTERRUPT_PIN, &irq_pin);
-		if (irq_pin) {
+		if (irq_pin)
 			dev->irq = irq;
-			pci_writeb(dev, PCI_INTERRUPT_LINE, irq);
+
+		if (pci_enable_device(dev)) {
+			cb_free_resources(dev);
+			continue;
 		}
 
+		if (irq_pin)
+			pci_writeb(dev, PCI_INTERRUPT_LINE, irq);
+		
 		device_register(&dev->dev);
 		pci_insert_device(dev, bus);
 	}


^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [PATCH] Re: [BUG] cardbus/hotplugging still broken in 2.5.56
@ 2003-01-15 20:13 Yaacov Akiba Slama
  2003-01-15 20:31 ` jens.taprogge
  0 siblings, 1 reply; 7+ messages in thread
From: Yaacov Akiba Slama @ 2003-01-15 20:13 UTC (permalink / raw)
  To: linux-kernel, Jens Taprogge

Jens Taprogge wrote :

>You are not freeing the possibly already allocated resources in case of
>a failure of either pci_assign_resource() or pca_enable_device(). In
>fact you are not even checking if pci_assign_resource() fails. That
>seems wrong to me.

There are two separate issues :
1) Fix the "ressource collisions" problem (and irq not known).
2) Freeing ressources in case of failure of some functions.

My patch solves the first issue only in order to make cardbus with rom work.
The point 2 is a janitor work.

Thanks,
Yaacov Akiba Slama



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-01-15 20:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-14 18:39 [PATCH] Re : [BUG] cardbus/hotplugging still broken in 2.5.56 Yaacov Akiba Slama
2003-01-15  8:11 Jens Taprogge
2003-01-15  9:13 ` Mikael Pettersson
2003-01-15 16:26   ` [PATCH] " Yaacov Akiba Slama
2003-01-15 19:47     ` Jens Taprogge
2003-01-15 20:23       ` Dave Jones
2003-01-15 20:13 Yaacov Akiba Slama
2003-01-15 20:31 ` jens.taprogge
2003-01-15 20:55   ` Yaacov Akiba Slama

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).