Loading arch/ia64/pci/pci.c +27 −8 Original line number Diff line number Diff line Loading @@ -168,6 +168,29 @@ add_io_space (struct acpi_resource_address64 *addr) return IO_SPACE_BASE(i); } static acpi_status __devinit resource_to_window(struct acpi_resource *resource, struct acpi_resource_address64 *addr) { acpi_status status; /* * We're only interested in _CRS descriptors that are * - address space descriptors for memory or I/O space * - non-zero size * - producers, i.e., the address space is routed downstream, * not consumed by the bridge itself */ status = acpi_resource_to_address64(resource, addr); if (ACPI_SUCCESS(status) && (addr->resource_type == ACPI_MEMORY_RANGE || addr->resource_type == ACPI_IO_RANGE) && addr->address_length && addr->producer_consumer == ACPI_PRODUCER) return AE_OK; return AE_ERROR; } static acpi_status __devinit count_window (struct acpi_resource *resource, void *data) { Loading @@ -175,10 +198,8 @@ count_window (struct acpi_resource *resource, void *data) struct acpi_resource_address64 addr; acpi_status status; status = acpi_resource_to_address64(resource, &addr); status = resource_to_window(resource, &addr); if (ACPI_SUCCESS(status)) if (addr.resource_type == ACPI_MEMORY_RANGE || addr.resource_type == ACPI_IO_RANGE) (*windows)++; return AE_OK; Loading @@ -198,13 +219,11 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data) unsigned long flags, offset = 0; struct resource *root; status = acpi_resource_to_address64(res, &addr); /* Return AE_OK for non-window resources to keep scanning for more */ status = resource_to_window(res, &addr); if (!ACPI_SUCCESS(status)) return AE_OK; if (!addr.address_length) return AE_OK; if (addr.resource_type == ACPI_MEMORY_RANGE) { flags = IORESOURCE_MEM; root = &iomem_resource; Loading Loading
arch/ia64/pci/pci.c +27 −8 Original line number Diff line number Diff line Loading @@ -168,6 +168,29 @@ add_io_space (struct acpi_resource_address64 *addr) return IO_SPACE_BASE(i); } static acpi_status __devinit resource_to_window(struct acpi_resource *resource, struct acpi_resource_address64 *addr) { acpi_status status; /* * We're only interested in _CRS descriptors that are * - address space descriptors for memory or I/O space * - non-zero size * - producers, i.e., the address space is routed downstream, * not consumed by the bridge itself */ status = acpi_resource_to_address64(resource, addr); if (ACPI_SUCCESS(status) && (addr->resource_type == ACPI_MEMORY_RANGE || addr->resource_type == ACPI_IO_RANGE) && addr->address_length && addr->producer_consumer == ACPI_PRODUCER) return AE_OK; return AE_ERROR; } static acpi_status __devinit count_window (struct acpi_resource *resource, void *data) { Loading @@ -175,10 +198,8 @@ count_window (struct acpi_resource *resource, void *data) struct acpi_resource_address64 addr; acpi_status status; status = acpi_resource_to_address64(resource, &addr); status = resource_to_window(resource, &addr); if (ACPI_SUCCESS(status)) if (addr.resource_type == ACPI_MEMORY_RANGE || addr.resource_type == ACPI_IO_RANGE) (*windows)++; return AE_OK; Loading @@ -198,13 +219,11 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data) unsigned long flags, offset = 0; struct resource *root; status = acpi_resource_to_address64(res, &addr); /* Return AE_OK for non-window resources to keep scanning for more */ status = resource_to_window(res, &addr); if (!ACPI_SUCCESS(status)) return AE_OK; if (!addr.address_length) return AE_OK; if (addr.resource_type == ACPI_MEMORY_RANGE) { flags = IORESOURCE_MEM; root = &iomem_resource; Loading