Loading arch/x86/pci/acpi.c +2 −38 Original line number Diff line number Diff line Loading @@ -121,30 +121,6 @@ count_resource(struct acpi_resource *acpi_res, void *data) return AE_OK; } static void align_resource(struct acpi_device *bridge, struct resource *res) { int align = (res->flags & IORESOURCE_MEM) ? 16 : 4; /* * Host bridge windows are not BARs, but the decoders on the PCI side * that claim this address space have starting alignment and length * constraints, so fix any obvious BIOS goofs. */ if (!IS_ALIGNED(res->start, align)) { dev_printk(KERN_DEBUG, &bridge->dev, "host bridge window %pR invalid; " "aligning start to %d-byte boundary\n", res, align); res->start &= ~(align - 1); } if (!IS_ALIGNED(res->end + 1, align)) { dev_printk(KERN_DEBUG, &bridge->dev, "host bridge window %pR invalid; " "aligning end to %d-byte boundary\n", res, align); res->end = ALIGN(res->end, align) - 1; } } static acpi_status setup_resource(struct acpi_resource *acpi_res, void *data) { Loading @@ -154,7 +130,7 @@ setup_resource(struct acpi_resource *acpi_res, void *data) acpi_status status; unsigned long flags; struct resource *root, *conflict; u64 start, end, max_len; u64 start, end; status = resource_to_addr(acpi_res, &addr); if (!ACPI_SUCCESS(status)) Loading @@ -171,19 +147,8 @@ setup_resource(struct acpi_resource *acpi_res, void *data) } else return AE_OK; max_len = addr.maximum - addr.minimum + 1; if (addr.address_length > max_len) { dev_printk(KERN_DEBUG, &info->bridge->dev, "host bridge window length %#llx doesn't fit in " "%#llx-%#llx, trimming\n", (unsigned long long) addr.address_length, (unsigned long long) addr.minimum, (unsigned long long) addr.maximum); addr.address_length = max_len; } start = addr.minimum + addr.translation_offset; end = start + addr.address_length - 1; end = addr.maximum + addr.translation_offset; res = &info->res[info->res_num]; res->name = info->name; Loading @@ -191,7 +156,6 @@ setup_resource(struct acpi_resource *acpi_res, void *data) res->start = start; res->end = end; res->child = NULL; align_resource(info->bridge, res); if (!pci_use_crs) { dev_printk(KERN_DEBUG, &info->bridge->dev, Loading arch/x86/pci/i386.c +3 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,9 @@ pcibios_align_resource(void *data, const struct resource *res, return start; if (start & 0x300) start = (start + 0x3ff) & ~0x3ff; } else if (res->flags & IORESOURCE_MEM) { if (start < BIOS_END) start = BIOS_END; } return start; } Loading Loading
arch/x86/pci/acpi.c +2 −38 Original line number Diff line number Diff line Loading @@ -121,30 +121,6 @@ count_resource(struct acpi_resource *acpi_res, void *data) return AE_OK; } static void align_resource(struct acpi_device *bridge, struct resource *res) { int align = (res->flags & IORESOURCE_MEM) ? 16 : 4; /* * Host bridge windows are not BARs, but the decoders on the PCI side * that claim this address space have starting alignment and length * constraints, so fix any obvious BIOS goofs. */ if (!IS_ALIGNED(res->start, align)) { dev_printk(KERN_DEBUG, &bridge->dev, "host bridge window %pR invalid; " "aligning start to %d-byte boundary\n", res, align); res->start &= ~(align - 1); } if (!IS_ALIGNED(res->end + 1, align)) { dev_printk(KERN_DEBUG, &bridge->dev, "host bridge window %pR invalid; " "aligning end to %d-byte boundary\n", res, align); res->end = ALIGN(res->end, align) - 1; } } static acpi_status setup_resource(struct acpi_resource *acpi_res, void *data) { Loading @@ -154,7 +130,7 @@ setup_resource(struct acpi_resource *acpi_res, void *data) acpi_status status; unsigned long flags; struct resource *root, *conflict; u64 start, end, max_len; u64 start, end; status = resource_to_addr(acpi_res, &addr); if (!ACPI_SUCCESS(status)) Loading @@ -171,19 +147,8 @@ setup_resource(struct acpi_resource *acpi_res, void *data) } else return AE_OK; max_len = addr.maximum - addr.minimum + 1; if (addr.address_length > max_len) { dev_printk(KERN_DEBUG, &info->bridge->dev, "host bridge window length %#llx doesn't fit in " "%#llx-%#llx, trimming\n", (unsigned long long) addr.address_length, (unsigned long long) addr.minimum, (unsigned long long) addr.maximum); addr.address_length = max_len; } start = addr.minimum + addr.translation_offset; end = start + addr.address_length - 1; end = addr.maximum + addr.translation_offset; res = &info->res[info->res_num]; res->name = info->name; Loading @@ -191,7 +156,6 @@ setup_resource(struct acpi_resource *acpi_res, void *data) res->start = start; res->end = end; res->child = NULL; align_resource(info->bridge, res); if (!pci_use_crs) { dev_printk(KERN_DEBUG, &info->bridge->dev, Loading
arch/x86/pci/i386.c +3 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,9 @@ pcibios_align_resource(void *data, const struct resource *res, return start; if (start & 0x300) start = (start + 0x3ff) & ~0x3ff; } else if (res->flags & IORESOURCE_MEM) { if (start < BIOS_END) start = BIOS_END; } return start; } Loading