aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/resources/rsirq.c
diff options
context:
space:
mode:
authorRobert Moore <Robert.Moore@intel.com>2005-09-02 17:24:17 -0400
committerLen Brown <len.brown@intel.com>2005-09-03 00:15:11 -0400
commitaff8c2777d1a9edf97f26bf60579f9c931443eb1 (patch)
treefcd5bfe84e0e3aeb328d60ec41776522b9b7d122 /drivers/acpi/resources/rsirq.c
parenta94f18810f52d3a6de0a09bee0c7258b62eca262 (diff)
[ACPI] ACPICA 20050902
Fixed a problem with the internal Owner ID allocation and deallocation mechanisms for control method execution and recursive method invocation. This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on some systems. Recursive method invocation depth is currently limited to 255. (Alexey Starikovskiy) http://bugzilla.kernel.org/show_bug.cgi?id=4892 Completely eliminated all vestiges of support for the "module-level executable code" until this support is fully implemented and debugged. This should eliminate the NO_RETURN_VALUE exceptions seen during table load on some systems that invoke this support. http://bugzilla.kernel.org/show_bug.cgi?id=5162 Fixed a problem within the resource manager code where the transaction flags for a 64-bit address descriptor were handled incorrectly in the type-specific flag byte. Consolidated duplicate code within the address descriptor resource manager code, reducing overall subsystem code size. Signed-off-by: Robert Moore <Robert.Moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/resources/rsirq.c')
-rw-r--r--drivers/acpi/resources/rsirq.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/acpi/resources/rsirq.c b/drivers/acpi/resources/rsirq.c
index 7179b6243f5b..56043fee96cb 100644
--- a/drivers/acpi/resources/rsirq.c
+++ b/drivers/acpi/resources/rsirq.c
@@ -290,7 +290,7 @@ acpi_rs_extended_irq_resource(u8 * byte_stream_buffer,
290 290
291 ACPI_FUNCTION_TRACE("rs_extended_irq_resource"); 291 ACPI_FUNCTION_TRACE("rs_extended_irq_resource");
292 292
293 /* Point past the Descriptor to get the number of bytes consumed */ 293 /* Get the Descriptor Length field */
294 294
295 buffer += 1; 295 buffer += 1;
296 ACPI_MOVE_16_TO_16(&temp16, buffer); 296 ACPI_MOVE_16_TO_16(&temp16, buffer);
@@ -398,7 +398,7 @@ acpi_rs_extended_irq_resource(u8 * byte_stream_buffer,
398 /* Copy the string into the buffer */ 398 /* Copy the string into the buffer */
399 399
400 index = 0; 400 index = 0;
401 while (0x00 != *buffer) { 401 while (*buffer) {
402 *temp_ptr = *buffer; 402 *temp_ptr = *buffer;
403 403
404 temp_ptr += 1; 404 temp_ptr += 1;
@@ -408,7 +408,7 @@ acpi_rs_extended_irq_resource(u8 * byte_stream_buffer,
408 408
409 /* Add the terminating null */ 409 /* Add the terminating null */
410 410
411 *temp_ptr = 0x00; 411 *temp_ptr = 0;
412 output_struct->data.extended_irq.resource_source.string_length = 412 output_struct->data.extended_irq.resource_source.string_length =
413 index + 1; 413 index + 1;
414 414
@@ -420,7 +420,7 @@ acpi_rs_extended_irq_resource(u8 * byte_stream_buffer,
420 temp8 = (u8) (index + 1); 420 temp8 = (u8) (index + 1);
421 struct_size += ACPI_ROUND_UP_to_32_bITS(temp8); 421 struct_size += ACPI_ROUND_UP_to_32_bITS(temp8);
422 } else { 422 } else {
423 output_struct->data.extended_irq.resource_source.index = 0x00; 423 output_struct->data.extended_irq.resource_source.index = 0;
424 output_struct->data.extended_irq.resource_source.string_length = 424 output_struct->data.extended_irq.resource_source.string_length =
425 0; 425 0;
426 output_struct->data.extended_irq.resource_source.string_ptr = 426 output_struct->data.extended_irq.resource_source.string_ptr =
@@ -461,16 +461,15 @@ acpi_rs_extended_irq_stream(struct acpi_resource *linked_list,
461 u16 *length_field; 461 u16 *length_field;
462 u8 temp8 = 0; 462 u8 temp8 = 0;
463 u8 index; 463 u8 index;
464 char *temp_pointer = NULL;
465 464
466 ACPI_FUNCTION_TRACE("rs_extended_irq_stream"); 465 ACPI_FUNCTION_TRACE("rs_extended_irq_stream");
467 466
468 /* The descriptor field is static */ 467 /* Set the Descriptor Type field */
469 468
470 *buffer = 0x89; 469 *buffer = ACPI_RDESC_TYPE_EXTENDED_XRUPT;
471 buffer += 1; 470 buffer += 1;
472 471
473 /* Set a pointer to the Length field - to be filled in later */ 472 /* Save a pointer to the Length field - to be filled in later */
474 473
475 length_field = ACPI_CAST_PTR(u16, buffer); 474 length_field = ACPI_CAST_PTR(u16, buffer);
476 buffer += 2; 475 buffer += 2;
@@ -524,16 +523,14 @@ acpi_rs_extended_irq_stream(struct acpi_resource *linked_list,
524 (u8) linked_list->data.extended_irq.resource_source.index; 523 (u8) linked_list->data.extended_irq.resource_source.index;
525 buffer += 1; 524 buffer += 1;
526 525
527 temp_pointer = (char *)buffer;
528
529 /* Copy the string */ 526 /* Copy the string */
530 527
531 ACPI_STRCPY(temp_pointer, 528 ACPI_STRCPY((char *)buffer,
532 linked_list->data.extended_irq.resource_source. 529 linked_list->data.extended_irq.resource_source.
533 string_ptr); 530 string_ptr);
534 531
535 /* 532 /*
536 * Buffer needs to be set to the length of the sting + one for the 533 * Buffer needs to be set to the length of the string + one for the
537 * terminating null 534 * terminating null
538 */ 535 */
539 buffer += 536 buffer +=