applied. thanks, -Len >-----Original Message----- >From: linux-acpi-owner@xxxxxxxxxxxxxxx >[mailto:linux-acpi-owner@xxxxxxxxxxxxxxx] On Behalf Of akpm@xxxxxxxx >Sent: Tuesday, March 28, 2006 5:03 PM >To: Brown, Len >Cc: linux-acpi@xxxxxxxxxxxxxxx; akpm@xxxxxxxx; bjorn.helgaas@xxxxxx >Subject: [patch 04/26] PNPACPI: fix non-memory address space >descriptor handling > > >From: Bjorn Helgaas <bjorn.helgaas@xxxxxx> > >Fix resource_type handling for QWORD, DWORD, and WORD Address Space >Descriptors. Previously we ignored the resource_type, so I/O >ports and bus >number ranges were incorrectly parsed as memory ranges. > >Sample PCI root bridge resources from HP rx2600 before this patch: > > # cat /sys/bus/pnp/devices/00:02/resources > state = active > mem 0x0-0x1f > mem 0x0-0x3af > mem 0x3e0-0x1fff > mem 0x80000000-0x8fffffff > >With this patch: > > # cat /sys/bus/pnp/devices/00:02/resources > state = active > io 0x0-0x3af > io 0x3e0-0x1fff > mem 0x80000000-0x8fffffff > mem 0x80004000000-0x80103fffffe > >Changes: > 0x0-0x1f PCI bus number range was incorrectly reported as >memory, now > not reported at all > 0x0-0x3af I/O port range was incorrectly reported as memory > 0x3e0-0x1fff I/O port range was incorrectly reported as memory > 0x80004000000-0x80103fffffe memory range wasn't reported >at all because > we only support PNP_MAX_MEM (4) memory resources > >Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx> >Cc: "Brown, Len" <len.brown@xxxxxxxxx> >Signed-off-by: Andrew Morton <akpm@xxxxxxxx> >--- > > drivers/pnp/pnpacpi/rsparser.c | 35 ++++++++++++++++++++----------- > 1 files changed, 23 insertions(+), 12 deletions(-) > >diff -puN >drivers/pnp/pnpacpi/rsparser.c~pnpacpi-fix-non-memory-address-s >pace-descriptor-handling drivers/pnp/pnpacpi/rsparser.c >--- >devel/drivers/pnp/pnpacpi/rsparser.c~pnpacpi-fix-non-memory-add >ress-space-descriptor-handling 2006-03-28 14:03:01.000000000 -0800 >+++ devel-akpm/drivers/pnp/pnpacpi/rsparser.c 2006-03-28 >14:03:01.000000000 -0800 >@@ -120,7 +120,7 @@ pnpacpi_parse_allocated_dmaresource(stru > > static void > pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res, >- u32 io, u32 len) >+ u64 io, u64 len) > { > int i = 0; > while (!(res->port_resource[i].flags & IORESOURCE_UNSET) && >@@ -156,6 +156,27 @@ pnpacpi_parse_allocated_memresource(stru > } > } > >+static void >+pnpacpi_parse_allocated_address_space(struct >pnp_resource_table *res_table, >+ struct acpi_resource *res) >+{ >+ struct acpi_resource_address64 addr, *p = &addr; >+ acpi_status status; >+ >+ status = acpi_resource_to_address64(res, p); >+ if (!ACPI_SUCCESS(status)) { >+ pnp_warn("PnPACPI: failed to convert resource type %d", >+ res->type); >+ return; >+ } >+ >+ if (p->resource_type == ACPI_MEMORY_RANGE) >+ pnpacpi_parse_allocated_memresource(res_table, >+ p->minimum, p->address_length); >+ else if (p->resource_type == ACPI_IO_RANGE) >+ pnpacpi_parse_allocated_ioresource(res_table, >+ p->minimum, p->address_length); >+} > > static acpi_status pnpacpi_allocated_resource(struct >acpi_resource *res, > void *data) >@@ -221,19 +242,9 @@ static acpi_status pnpacpi_allocated_res > >res->data.fixed_memory32.address_length); > break; > case ACPI_RESOURCE_TYPE_ADDRESS16: >- pnpacpi_parse_allocated_memresource(res_table, >- res->data.address16.minimum, >- res->data.address16.address_length); >- break; > case ACPI_RESOURCE_TYPE_ADDRESS32: >- pnpacpi_parse_allocated_memresource(res_table, >- res->data.address32.minimum, >- res->data.address32.address_length); >- break; > case ACPI_RESOURCE_TYPE_ADDRESS64: >- pnpacpi_parse_allocated_memresource(res_table, >- res->data.address64.minimum, >- res->data.address64.address_length); >+ pnpacpi_parse_allocated_address_space(res_table, res); > break; > > case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: >_ >- >To unsubscribe from this list: send the line "unsubscribe >linux-acpi" in >the body of a message to majordomo@xxxxxxxxxxxxxxx >More majordomo info at http://vger.kernel.org/majordomo-info.html > - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html