Re: PCI memory reservation failure - 2.4/2.6

From: Manfred Spraul
Date: Sat May 15 2004 - 14:37:19 EST


Alec H. Peterson wrote:


A module parameter sounds like a grand idea. I'd be happy to take a stab at it if others feel it is the way to go.

There are two possible approaches:
- just a module parameter. Probably something for 2.4.
- a combination of a dmi detection of buggy bios versions plus a pci quirk that resets start and end to 0.

Attached is the module parameter patch against 2.6. If it works I can write a backport to 2.4 and try to convince Marcelo to merge it.
Could you send me the output of dmidecode? I'll try to write the autodetection patch for 2.6.

--
Manfred

--- 2.6/drivers/pcmcia/yenta_socket.c 2004-05-15 11:21:38.000000000 +0200
+++ build-2.6/drivers/pcmcia/yenta_socket.c 2004-05-15 15:00:22.000000000 +0200
@@ -40,7 +40,7 @@
#define to_ns(cycles) ((cycles)*120)

static int yenta_probe_cb_irq(struct yenta_socket *socket);
-
+static int override_bios;

/*
* Generate easy-to-use ways of reading a cardbus sockets
@@ -548,7 +548,7 @@

start = config_readl(socket, offset) & mask;
end = config_readl(socket, offset+4) | ~mask;
- if (start && end > start) {
+ if (start && end > start && !override_bios) {
res->start = start;
res->end = end;
if (request_resource(root, res) == 0)
@@ -1105,6 +1105,8 @@
};
MODULE_DEVICE_TABLE(pci, yenta_table);

+MODULE_PARM (override_bios, "i");
+MODULE_PARM_DESC (override_bios, "yenta ignore bios resource allocation");

static struct pci_driver yenta_cardbus_driver = {
.name = "yenta_cardbus",