lkml.org 
[lkml]   [2005]   [Jun]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectACPI-based PCI resources: PCMCIA bugfix, but resources missing in trees
On Sun, Jun 26, 2005 at 04:03:29AM -0700, Andrew Morton wrote:
> - Lots of merges. I'm holding off on the 80-odd pcmcia patches until we get
> the recent PCI breakage sorted out.

pci-yenta-cardbus-fix.patch and the following patch should solve the
initialization time trouble. However, the ACPI-based PCI resource handling
is badly broken, IMHO:

- many resources of devices don't show up in the resource trees (
/proc/iomem and /proc/ioports) any longer. This means that PCMCIA, but
also possibly other subsystems (ISA, PnP, ...) do not know which resources
it cannot use.

- verify_root_windows() should fail if there are no iomem _or_ ioport
resources, not only if there are no iomem _and_ ioport resources.

Nonetheless, with the init-time trouble (hopefully) solved, I'd say that it
is time for the PCMCIA patches to get into mainline.

Dominik


Don't auto-configure yenta sockets for PCMCIA devices if it is connected to
the root PCI bus on the x86 or x86_64 architectures. Previously, this was
handled by the "ioport_resource"/"iomem_resource" check a few lines below,
but with the new ACPI-based resource handling this doesn't catch all cases
any longer.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

--- 2.6.12-mm2/drivers/pcmcia/rsrc_nonstatic.c.orig 2005-06-26 15:04:57.000000000 +0200
+++ 2.6.12-mm2/drivers/pcmcia/rsrc_nonstatic.c 2005-06-26 15:09:02.000000000 +0200
@@ -779,6 +779,17 @@
if (!s->cb_dev || !s->cb_dev->bus)
return -ENODEV;

+#if defined(CONFIG_X86) || defined(CONFIG_X86_64)
+ /* If this is the root bus, the risk of hitting
+ * some strange system devices which aren't protected
+ * by either ACPI resource tables or properly requested
+ * resources is too big. Therefore, don't do auto-adding
+ * of resources at the moment.
+ */
+ if (s->cb_dev->bus->number == 0)
+ return -EINVAL;
+#endif
+
for (i=0; i < PCI_BUS_NUM_RESOURCES; i++) {
res = s->cb_dev->bus->resource[i];
if (!res)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-06-26 16:10    [W:0.148 / U:2.408 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site