|
@@ -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)
|
|
|
{
|
|
@@ -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))
|
|
@@ -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;
|
|
@@ -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,
|