diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2005-06-27 19:29:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-27 21:03:22 -0400 |
commit | b6d00f0de9e932e2884b3b7af8e43c0a61a271ee (patch) | |
tree | 1d9b01dd4136eb4e44083a31f46dd7e7283dd683 /drivers/pcmcia/rsrc_nonstatic.c | |
parent | 3248ff43f86493368b321376d447d84fa9a2737d (diff) |
[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>
Diffstat (limited to 'drivers/pcmcia/rsrc_nonstatic.c')
-rw-r--r-- | drivers/pcmcia/rsrc_nonstatic.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c index 51aa04b7ecc9..c42455d20eb6 100644 --- a/drivers/pcmcia/rsrc_nonstatic.c +++ b/drivers/pcmcia/rsrc_nonstatic.c | |||
@@ -779,6 +779,17 @@ static int nonstatic_autoadd_resources(struct pcmcia_socket *s) | |||
779 | if (!s->cb_dev || !s->cb_dev->bus) | 779 | if (!s->cb_dev || !s->cb_dev->bus) |
780 | return -ENODEV; | 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 | for (i=0; i < PCI_BUS_NUM_RESOURCES; i++) { | 793 | for (i=0; i < PCI_BUS_NUM_RESOURCES; i++) { |
783 | res = s->cb_dev->bus->resource[i]; | 794 | res = s->cb_dev->bus->resource[i]; |
784 | if (!res) | 795 | if (!res) |