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

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.

pci-yenta-cardbus-fix.patch and this 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.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Dominik Brodowski and committed by Linus Torvalds b6d00f0d 3248ff43

+11
+11
drivers/pcmcia/rsrc_nonstatic.c
··· 779 779 if (!s->cb_dev || !s->cb_dev->bus) 780 780 return -ENODEV; 781 781 782 + #if defined(CONFIG_X86) || defined(CONFIG_X86_64) 783 + /* If this is the root bus, the risk of hitting 784 + * some strange system devices which aren't protected 785 + * by either ACPI resource tables or properly requested 786 + * resources is too big. Therefore, don't do auto-adding 787 + * of resources at the moment. 788 + */ 789 + if (s->cb_dev->bus->number == 0) 790 + return -EINVAL; 791 + #endif 792 + 782 793 for (i=0; i < PCI_BUS_NUM_RESOURCES; i++) { 783 794 res = s->cb_dev->bus->resource[i]; 784 795 if (!res)