Revert "x86/PCI: allocate space from the end of a region, not the beginning"
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Thu, 16 Dec 2010 17:38:31 +0000 (10:38 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Fri, 17 Dec 2010 18:00:49 +0000 (10:00 -0800)
This reverts commit dc9887dc02e37bcf83f4e792aa14b07782ef54cf.

Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
arch/x86/pci/i386.c

index c4bb261..8379c2c 100644 (file)
@@ -65,21 +65,16 @@ pcibios_align_resource(void *data, const struct resource *res,
                        resource_size_t size, resource_size_t align)
 {
        struct pci_dev *dev = data;
-       resource_size_t start = round_down(res->end - size + 1, align);
+       resource_size_t start = res->start;
 
        if (res->flags & IORESOURCE_IO) {
-
-               /*
-                * If we're avoiding ISA aliases, the largest contiguous I/O
-                * port space is 256 bytes.  Clearing bits 9 and 10 preserves
-                * all 256-byte and smaller alignments, so the result will
-                * still be correctly aligned.
-                */
-               if (!skip_isa_ioresource_align(dev))
-                       start &= ~0x300;
+               if (skip_isa_ioresource_align(dev))
+                       return start;
+               if (start & 0x300)
+                       start = (start + 0x3ff) & ~0x3ff;
        } else if (res->flags & IORESOURCE_MEM) {
                if (start < BIOS_END)
-                       start = res->end;       /* fail; no space */
+                       start = BIOS_END;
        }
        return start;
 }