ACPI-based PCI resources: PCMCIA bugfix, but resources missing in trees

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <[email protected]>

--- 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux