* [PATCH] fix pnpacpi regression resulting from ACPICA 20051117
@ 2006-01-05 8:13 Len Brown
0 siblings, 0 replies; 5+ messages in thread
From: Len Brown @ 2006-01-05 8:13 UTC (permalink / raw)
To: akpm-3NddpPZAyC0, linux-acpi-u79uwXL29TY76Z2rM5mHXA
Andrew,
I just pushed this patch to the test branch of the acpi git tree.
Please pull my tree again or apply this patch before you ship
the next -mm if possible.
Thanks to Shaohua Li for keeping me awake helping me to fix this:-)
thanks,
-Len
In ACPICA 20051117, acpi_walk_resources() started
sending ACPI_RESOURCE_TYPE_END_TAG to the callback
routine which wasn't prepared for it, causing
_CRS to fail and PnPACPI to not recognize any devices:
pnp: ACPI device : hid PNP0C02
pnp: PnPACPI: unknown resource type 7
pnp: PnPACPI: METHOD_NAME__CRS failure for PNP0c02
Signed-off-by: Len Brown <len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
drivers/acpi/resources/rsxface.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
ed349a8a0a780ed27e2a765f16cee54d9b63bfee
diff --git a/drivers/acpi/resources/rsxface.c b/drivers/acpi/resources/rsxface.c
index 50a956b..5408e5d 100644
--- a/drivers/acpi/resources/rsxface.c
+++ b/drivers/acpi/resources/rsxface.c
@@ -286,6 +286,12 @@ acpi_walk_resources(acpi_handle device_h
break;
}
+ /* end_tag indicates end-of-list */
+
+ if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
+ break;
+ }
+
/* Invoke the user function, abort on any error returned */
status = user_function(resource, context);
@@ -298,12 +304,6 @@ acpi_walk_resources(acpi_handle device_h
break;
}
- /* end_tag indicates end-of-list */
-
- if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
- break;
- }
-
/* Get the next resource descriptor */
resource =
--
1.0.6-g58e3
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH] fix pnpacpi regression resulting from ACPICA 20051117
@ 2006-01-09 18:53 Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E03EE6513-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Moore, Robert @ 2006-01-09 18:53 UTC (permalink / raw)
To: Brown, Len, akpm-3NddpPZAyC0, linux-acpi-u79uwXL29TY76Z2rM5mHXA
The callback should be able to handle resource descriptors that it
doesn't know about, new ones can be added at any time.
This change was made during the resource manager update. I think that I
would like to have WalkResources return the EndTag to the callback since
it is a valid resource descriptor and it does impart information to the
callback.
Bob
> -----Original Message-----
> From: linux-acpi-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-acpi-
> owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Len Brown
> Sent: Thursday, January 05, 2006 12:13 AM
> To: akpm-3NddpPZAyC0@public.gmane.org; linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Subject: [PATCH] [ACPI] fix pnpacpi regression resulting from ACPICA
> 20051117
>
> Andrew,
> I just pushed this patch to the test branch of the acpi git tree.
> Please pull my tree again or apply this patch before you ship
> the next -mm if possible.
>
> Thanks to Shaohua Li for keeping me awake helping me to fix this:-)
>
> thanks,
> -Len
>
> In ACPICA 20051117, acpi_walk_resources() started
> sending ACPI_RESOURCE_TYPE_END_TAG to the callback
> routine which wasn't prepared for it, causing
> _CRS to fail and PnPACPI to not recognize any devices:
>
> pnp: ACPI device : hid PNP0C02
> pnp: PnPACPI: unknown resource type 7
> pnp: PnPACPI: METHOD_NAME__CRS failure for PNP0c02
>
> Signed-off-by: Len Brown <len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>
> ---
>
> drivers/acpi/resources/rsxface.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> ed349a8a0a780ed27e2a765f16cee54d9b63bfee
> diff --git a/drivers/acpi/resources/rsxface.c
> b/drivers/acpi/resources/rsxface.c
> index 50a956b..5408e5d 100644
> --- a/drivers/acpi/resources/rsxface.c
> +++ b/drivers/acpi/resources/rsxface.c
> @@ -286,6 +286,12 @@ acpi_walk_resources(acpi_handle device_h
> break;
> }
>
> + /* end_tag indicates end-of-list */
> +
> + if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
> + break;
> + }
> +
> /* Invoke the user function, abort on any error returned
*/
>
> status = user_function(resource, context);
> @@ -298,12 +304,6 @@ acpi_walk_resources(acpi_handle device_h
> break;
> }
>
> - /* end_tag indicates end-of-list */
> -
> - if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
> - break;
> - }
> -
> /* Get the next resource descriptor */
>
> resource =
> --
> 1.0.6-g58e3
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> 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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] fix pnpacpi regression resulting from ACPICA 20051117
[not found] ` <971FCB6690CD0E4898387DBF7552B90E03EE6513-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2006-01-14 0:14 ` Bjorn Helgaas
0 siblings, 0 replies; 5+ messages in thread
From: Bjorn Helgaas @ 2006-01-14 0:14 UTC (permalink / raw)
To: Moore, Robert
Cc: Brown, Len, akpm-3NddpPZAyC0, linux-acpi-u79uwXL29TY76Z2rM5mHXA
On Monday 09 January 2006 11:53, Moore, Robert wrote:
> The callback should be able to handle resource descriptors that it
> doesn't know about, new ones can be added at any time.
I agree; pnpacpi should just ignore tags it doesn't understand.
> This change was made during the resource manager update. I think that I
> would like to have WalkResources return the EndTag to the callback since
> it is a valid resource descriptor and it does impart information to the
> callback.
I don't have a use (yet) for EndTags in callbacks, but this argument
makes sense to me. So I think the patch below is the wrong solution
to the problem.
> > In ACPICA 20051117, acpi_walk_resources() started
> > sending ACPI_RESOURCE_TYPE_END_TAG to the callback
> > routine which wasn't prepared for it, causing
> > _CRS to fail and PnPACPI to not recognize any devices:
> >
> > pnp: ACPI device : hid PNP0C02
> > pnp: PnPACPI: unknown resource type 7
> > pnp: PnPACPI: METHOD_NAME__CRS failure for PNP0c02
> >
> > Signed-off-by: Len Brown <len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> >
> > ---
> >
> > drivers/acpi/resources/rsxface.c | 12 ++++++------
> > 1 files changed, 6 insertions(+), 6 deletions(-)
> >
> > ed349a8a0a780ed27e2a765f16cee54d9b63bfee
> > diff --git a/drivers/acpi/resources/rsxface.c
> > b/drivers/acpi/resources/rsxface.c
> > index 50a956b..5408e5d 100644
> > --- a/drivers/acpi/resources/rsxface.c
> > +++ b/drivers/acpi/resources/rsxface.c
> > @@ -286,6 +286,12 @@ acpi_walk_resources(acpi_handle device_h
> > break;
> > }
> >
> > + /* end_tag indicates end-of-list */
> > +
> > + if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
> > + break;
> > + }
> > +
> > /* Invoke the user function, abort on any error returned
> */
> >
> > status = user_function(resource, context);
> > @@ -298,12 +304,6 @@ acpi_walk_resources(acpi_handle device_h
> > break;
> > }
> >
> > - /* end_tag indicates end-of-list */
> > -
> > - if (resource->type == ACPI_RESOURCE_TYPE_END_TAG) {
> > - break;
> > - }
> > -
> > /* Get the next resource descriptor */
> >
> > resource =
> > --
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] fix pnpacpi regression resulting from ACPICA 20051117
@ 2006-01-16 21:58 Brown, Len
0 siblings, 0 replies; 5+ messages in thread
From: Brown, Len @ 2006-01-16 21:58 UTC (permalink / raw)
To: Bjorn Helgaas, Moore, Robert, Li, Shaohua
Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 8393 bytes --]
>On Monday 09 January 2006 11:53, Moore, Robert wrote:
>> The callback should be able to handle resource descriptors that it
>> doesn't know about, new ones can be added at any time.
>
>I agree; pnpacpi should just ignore tags it doesn't understand.
(dropped akpm, added Shaohua)
Okay, how about something like this (after previous patch reverted):
[ACPI] make pnpacpi not choke on end tags
fill out each resource type switch statement with
all known resource types (in order).
Signed-off-by: Len Brown <len.brown-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index c6db14d..407b4ea 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -177,29 +177,34 @@ static acpi_status pnpacpi_allocated_res
}
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- for (i = 0; i < res->data.extended_irq.interrupt_count; i++) {
- pnpacpi_parse_allocated_irqresource(res_table,
- res->data.extended_irq.interrupts[i],
- res->data.extended_irq.triggering,
- res->data.extended_irq.polarity);
- }
- break;
case ACPI_RESOURCE_TYPE_DMA:
if (res->data.dma.channel_count > 0)
pnpacpi_parse_allocated_dmaresource(res_table,
res->data.dma.channels[0]);
break;
+
case ACPI_RESOURCE_TYPE_IO:
pnpacpi_parse_allocated_ioresource(res_table,
res->data.io.minimum,
res->data.io.address_length);
break;
+
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ break;
+
case ACPI_RESOURCE_TYPE_FIXED_IO:
pnpacpi_parse_allocated_ioresource(res_table,
res->data.fixed_io.address,
res->data.fixed_io.address_length);
break;
+
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ break;
+
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ break;
+
case ACPI_RESOURCE_TYPE_MEMORY24:
pnpacpi_parse_allocated_memresource(res_table,
res->data.memory24.minimum,
@@ -230,8 +235,22 @@ static acpi_status pnpacpi_allocated_res
res->data.address64.minimum,
res->data.address64.address_length);
break;
- case ACPI_RESOURCE_TYPE_VENDOR:
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ for (i = 0; i < res->data.extended_irq.interrupt_count; i++) {
+ pnpacpi_parse_allocated_irqresource(res_table,
+ res->data.extended_irq.interrupts[i],
+ res->data.extended_irq.triggering,
+ res->data.extended_irq.polarity);
+ }
+ break;
+
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
break;
+
default:
pnp_warn("PnPACPI: unknown resource type %d", res->type);
return AE_ERROR;
@@ -510,35 +529,11 @@ static acpi_status pnpacpi_option_resour
case ACPI_RESOURCE_TYPE_IRQ:
pnpacpi_parse_irq_option(option, &res->data.irq);
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- pnpacpi_parse_ext_irq_option(option,
- &res->data.extended_irq);
- break;
+
case ACPI_RESOURCE_TYPE_DMA:
pnpacpi_parse_dma_option(option, &res->data.dma);
break;
- case ACPI_RESOURCE_TYPE_IO:
- pnpacpi_parse_port_option(option, &res->data.io);
- break;
- case ACPI_RESOURCE_TYPE_FIXED_IO:
- pnpacpi_parse_fixed_port_option(option,
- &res->data.fixed_io);
- break;
- case ACPI_RESOURCE_TYPE_MEMORY24:
- pnpacpi_parse_mem24_option(option, &res->data.memory24);
- break;
- case ACPI_RESOURCE_TYPE_MEMORY32:
- pnpacpi_parse_mem32_option(option, &res->data.memory32);
- break;
- case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
- pnpacpi_parse_fixed_mem32_option(option,
- &res->data.fixed_memory32);
- break;
- case ACPI_RESOURCE_TYPE_ADDRESS16:
- case ACPI_RESOURCE_TYPE_ADDRESS32:
- case ACPI_RESOURCE_TYPE_ADDRESS64:
- pnpacpi_parse_address_option(option, res);
- break;
+
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
switch (res->data.start_dpf.compatibility_priority) {
case ACPI_GOOD_CONFIGURATION:
@@ -562,6 +557,7 @@ static acpi_status pnpacpi_option_resour
return AE_ERROR;
parse_data->option = option;
break;
+
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
/*only one EndDependentFn is allowed*/
if (!parse_data->option_independent) {
@@ -571,6 +567,50 @@ static acpi_status pnpacpi_option_resour
parse_data->option = parse_data->option_independent;
parse_data->option_independent = NULL;
break;
+
+ case ACPI_RESOURCE_TYPE_IO:
+ pnpacpi_parse_port_option(option, &res->data.io);
+ break;
+
+ case ACPI_RESOURCE_TYPE_FIXED_IO:
+ pnpacpi_parse_fixed_port_option(option,
+ &res->data.fixed_io);
+ break;
+
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ break;
+
+ case ACPI_RESOURCE_TYPE_MEMORY24:
+ pnpacpi_parse_mem24_option(option, &res->data.memory24);
+ break;
+
+ case ACPI_RESOURCE_TYPE_MEMORY32:
+ pnpacpi_parse_mem32_option(option, &res->data.memory32);
+ break;
+
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
+ pnpacpi_parse_fixed_mem32_option(option,
+ &res->data.fixed_memory32);
+ break;
+
+ case ACPI_RESOURCE_TYPE_ADDRESS16:
+ case ACPI_RESOURCE_TYPE_ADDRESS32:
+ case ACPI_RESOURCE_TYPE_ADDRESS64:
+ pnpacpi_parse_address_option(option, res);
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ pnpacpi_parse_ext_irq_option(option,
+ &res->data.extended_irq);
+ break;
+
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
+ break;
+
default:
pnp_warn("PnPACPI: unknown resource type %d", res->type);
return AE_ERROR;
@@ -605,7 +645,6 @@ static acpi_status pnpacpi_count_resourc
int *res_cnt = (int *)data;
switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
case ACPI_RESOURCE_TYPE_DMA:
case ACPI_RESOURCE_TYPE_IO:
case ACPI_RESOURCE_TYPE_FIXED_IO:
@@ -615,7 +654,13 @@ static acpi_status pnpacpi_count_resourc
case ACPI_RESOURCE_TYPE_ADDRESS16:
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
(*res_cnt) ++;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default:
return AE_OK;
}
@@ -628,7 +673,6 @@ static acpi_status pnpacpi_type_resource
struct acpi_resource **resource = (struct acpi_resource **)data;
switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
case ACPI_RESOURCE_TYPE_DMA:
case ACPI_RESOURCE_TYPE_IO:
case ACPI_RESOURCE_TYPE_FIXED_IO:
@@ -638,8 +682,14 @@ static acpi_status pnpacpi_type_resource
case ACPI_RESOURCE_TYPE_ADDRESS16:
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
(*resource)->type = res->type;
(*resource)++;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default:
return AE_OK;
}
@@ -828,12 +878,6 @@ int pnpacpi_encode_resources(struct pnp_
irq++;
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- pnp_dbg("Encode ext irq");
- pnpacpi_encode_ext_irq(resource,
- &res_table->irq_resource[irq]);
- irq++;
- break;
case ACPI_RESOURCE_TYPE_DMA:
pnp_dbg("Encode dma");
pnpacpi_encode_dma(resource,
@@ -870,6 +914,21 @@ int pnpacpi_encode_resources(struct pnp_
&res_table->mem_resource[mem]);
mem ++;
break;
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ pnp_dbg("Encode ext irq");
+ pnpacpi_encode_ext_irq(resource,
+ &res_table->irq_resource[irq]);
+ irq++;
+ break;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_ADDRESS16:
+ case ACPI_RESOURCE_TYPE_ADDRESS32:
+ case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default: /* other type */
pnp_warn("unknown resource type %d", resource->type);
return -EINVAL;
[-- Attachment #2: pnpacpi.diff --]
[-- Type: application/octet-stream, Size: 7564 bytes --]
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index c6db14d..407b4ea 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -177,29 +177,34 @@ static acpi_status pnpacpi_allocated_res
}
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- for (i = 0; i < res->data.extended_irq.interrupt_count; i++) {
- pnpacpi_parse_allocated_irqresource(res_table,
- res->data.extended_irq.interrupts[i],
- res->data.extended_irq.triggering,
- res->data.extended_irq.polarity);
- }
- break;
case ACPI_RESOURCE_TYPE_DMA:
if (res->data.dma.channel_count > 0)
pnpacpi_parse_allocated_dmaresource(res_table,
res->data.dma.channels[0]);
break;
+
case ACPI_RESOURCE_TYPE_IO:
pnpacpi_parse_allocated_ioresource(res_table,
res->data.io.minimum,
res->data.io.address_length);
break;
+
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ break;
+
case ACPI_RESOURCE_TYPE_FIXED_IO:
pnpacpi_parse_allocated_ioresource(res_table,
res->data.fixed_io.address,
res->data.fixed_io.address_length);
break;
+
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ break;
+
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ break;
+
case ACPI_RESOURCE_TYPE_MEMORY24:
pnpacpi_parse_allocated_memresource(res_table,
res->data.memory24.minimum,
@@ -230,8 +235,22 @@ static acpi_status pnpacpi_allocated_res
res->data.address64.minimum,
res->data.address64.address_length);
break;
- case ACPI_RESOURCE_TYPE_VENDOR:
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ for (i = 0; i < res->data.extended_irq.interrupt_count; i++) {
+ pnpacpi_parse_allocated_irqresource(res_table,
+ res->data.extended_irq.interrupts[i],
+ res->data.extended_irq.triggering,
+ res->data.extended_irq.polarity);
+ }
+ break;
+
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
break;
+
default:
pnp_warn("PnPACPI: unknown resource type %d", res->type);
return AE_ERROR;
@@ -510,35 +529,11 @@ static acpi_status pnpacpi_option_resour
case ACPI_RESOURCE_TYPE_IRQ:
pnpacpi_parse_irq_option(option, &res->data.irq);
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- pnpacpi_parse_ext_irq_option(option,
- &res->data.extended_irq);
- break;
+
case ACPI_RESOURCE_TYPE_DMA:
pnpacpi_parse_dma_option(option, &res->data.dma);
break;
- case ACPI_RESOURCE_TYPE_IO:
- pnpacpi_parse_port_option(option, &res->data.io);
- break;
- case ACPI_RESOURCE_TYPE_FIXED_IO:
- pnpacpi_parse_fixed_port_option(option,
- &res->data.fixed_io);
- break;
- case ACPI_RESOURCE_TYPE_MEMORY24:
- pnpacpi_parse_mem24_option(option, &res->data.memory24);
- break;
- case ACPI_RESOURCE_TYPE_MEMORY32:
- pnpacpi_parse_mem32_option(option, &res->data.memory32);
- break;
- case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
- pnpacpi_parse_fixed_mem32_option(option,
- &res->data.fixed_memory32);
- break;
- case ACPI_RESOURCE_TYPE_ADDRESS16:
- case ACPI_RESOURCE_TYPE_ADDRESS32:
- case ACPI_RESOURCE_TYPE_ADDRESS64:
- pnpacpi_parse_address_option(option, res);
- break;
+
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
switch (res->data.start_dpf.compatibility_priority) {
case ACPI_GOOD_CONFIGURATION:
@@ -562,6 +557,7 @@ static acpi_status pnpacpi_option_resour
return AE_ERROR;
parse_data->option = option;
break;
+
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
/*only one EndDependentFn is allowed*/
if (!parse_data->option_independent) {
@@ -571,6 +567,50 @@ static acpi_status pnpacpi_option_resour
parse_data->option = parse_data->option_independent;
parse_data->option_independent = NULL;
break;
+
+ case ACPI_RESOURCE_TYPE_IO:
+ pnpacpi_parse_port_option(option, &res->data.io);
+ break;
+
+ case ACPI_RESOURCE_TYPE_FIXED_IO:
+ pnpacpi_parse_fixed_port_option(option,
+ &res->data.fixed_io);
+ break;
+
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ break;
+
+ case ACPI_RESOURCE_TYPE_MEMORY24:
+ pnpacpi_parse_mem24_option(option, &res->data.memory24);
+ break;
+
+ case ACPI_RESOURCE_TYPE_MEMORY32:
+ pnpacpi_parse_mem32_option(option, &res->data.memory32);
+ break;
+
+ case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
+ pnpacpi_parse_fixed_mem32_option(option,
+ &res->data.fixed_memory32);
+ break;
+
+ case ACPI_RESOURCE_TYPE_ADDRESS16:
+ case ACPI_RESOURCE_TYPE_ADDRESS32:
+ case ACPI_RESOURCE_TYPE_ADDRESS64:
+ pnpacpi_parse_address_option(option, res);
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ break;
+
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ pnpacpi_parse_ext_irq_option(option,
+ &res->data.extended_irq);
+ break;
+
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
+ break;
+
default:
pnp_warn("PnPACPI: unknown resource type %d", res->type);
return AE_ERROR;
@@ -605,7 +645,6 @@ static acpi_status pnpacpi_count_resourc
int *res_cnt = (int *)data;
switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
case ACPI_RESOURCE_TYPE_DMA:
case ACPI_RESOURCE_TYPE_IO:
case ACPI_RESOURCE_TYPE_FIXED_IO:
@@ -615,7 +654,13 @@ static acpi_status pnpacpi_count_resourc
case ACPI_RESOURCE_TYPE_ADDRESS16:
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
(*res_cnt) ++;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default:
return AE_OK;
}
@@ -628,7 +673,6 @@ static acpi_status pnpacpi_type_resource
struct acpi_resource **resource = (struct acpi_resource **)data;
switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
case ACPI_RESOURCE_TYPE_DMA:
case ACPI_RESOURCE_TYPE_IO:
case ACPI_RESOURCE_TYPE_FIXED_IO:
@@ -638,8 +682,14 @@ static acpi_status pnpacpi_type_resource
case ACPI_RESOURCE_TYPE_ADDRESS16:
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
(*resource)->type = res->type;
(*resource)++;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default:
return AE_OK;
}
@@ -828,12 +878,6 @@ int pnpacpi_encode_resources(struct pnp_
irq++;
break;
- case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
- pnp_dbg("Encode ext irq");
- pnpacpi_encode_ext_irq(resource,
- &res_table->irq_resource[irq]);
- irq++;
- break;
case ACPI_RESOURCE_TYPE_DMA:
pnp_dbg("Encode dma");
pnpacpi_encode_dma(resource,
@@ -870,6 +914,21 @@ int pnpacpi_encode_resources(struct pnp_
&res_table->mem_resource[mem]);
mem ++;
break;
+ case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
+ pnp_dbg("Encode ext irq");
+ pnpacpi_encode_ext_irq(resource,
+ &res_table->irq_resource[irq]);
+ irq++;
+ break;
+ case ACPI_RESOURCE_TYPE_START_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_END_DEPENDENT:
+ case ACPI_RESOURCE_TYPE_VENDOR:
+ case ACPI_RESOURCE_TYPE_END_TAG:
+ case ACPI_RESOURCE_TYPE_ADDRESS16:
+ case ACPI_RESOURCE_TYPE_ADDRESS32:
+ case ACPI_RESOURCE_TYPE_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+ case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
default: /* other type */
pnp_warn("unknown resource type %d", resource->type);
return -EINVAL;
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH] fix pnpacpi regression resulting from ACPICA 20051117
@ 2006-01-17 19:09 Moore, Robert
0 siblings, 0 replies; 5+ messages in thread
From: Moore, Robert @ 2006-01-17 19:09 UTC (permalink / raw)
To: Brown, Len, Bjorn Helgaas, Li, Shaohua; +Cc: linux-acpi-u79uwXL29TY76Z2rM5mHXA
> default:
> pnp_warn("PnPACPI: unknown resource type %d",
res-
> >type);
> return AE_ERROR;
> >I agree; pnpacpi should just ignore tags it doesn't understand.
Doesn't this code still bomb out on resource types it doesn't know
about?
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-01-17 19:09 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-05 8:13 [PATCH] fix pnpacpi regression resulting from ACPICA 20051117 Len Brown
-- strict thread matches above, loose matches on Subject: below --
2006-01-09 18:53 Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E03EE6513-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2006-01-14 0:14 ` Bjorn Helgaas
2006-01-16 21:58 Brown, Len
2006-01-17 19:09 Moore, Robert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox