Messages in this thread Patch in this message | | | Date | Sun, 26 Jun 2005 16:04:12 +0200 | From | Dominik Brodowski <> | Subject | ACPI-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/
| |