aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/events/evgpeblk.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-04-21 17:15:00 -0400
committerLen Brown <len.brown@intel.com>2006-06-14 02:30:55 -0400
commitb229cf92eee616c7cb5ad8cdb35a19b119f00bc8 (patch)
tree74b52bec6ec029859c2320aba227290a503af31a /drivers/acpi/events/evgpeblk.c
parent793c2388cae3fd023b3b5166354931752d42353c (diff)
ACPI: ACPICA 20060421
Removed a device initialization optimization introduced in 20051216 where the _STA method was not run unless an _INI was also present for the same device. This optimization could cause problems because it could allow _INI methods to be run within a not-present device subtree (If a not-present device had no _INI, _STA would not be run, the not-present status would not be discovered, and the children of the device would be incorrectly traversed.) Implemented a new _STA optimization where namespace subtrees that do not contain _INI are identified and ignored during device initialization. Selectively running _STA can significantly improve boot time on large machines (with assistance from Len Brown.) Implemented support for the device initialization case where the returned _STA flags indicate a device not-present but functioning. In this case, _INI is not run, but the device children are examined for presence, as per the ACPI specification. Implemented an additional change to the IndexField support in order to conform to MS behavior. The value written to the Index Register is not simply a byte offset, it is a byte offset in units of the access width of the parent Index Field. (Fiodor Suietov) Defined and deployed a new OSL interface, acpi_os_validate_address(). This interface is called during the creation of all AML operation regions, and allows the host OS to exert control over what addresses it will allow the AML code to access. Operation Regions whose addresses are disallowed will cause a runtime exception when they are actually accessed (will not affect or abort table loading.) Defined and deployed a new OSL interface, acpi_os_validate_interface(). This interface allows the host OS to match the various "optional" interface/behavior strings for the _OSI predefined control method as appropriate (with assistance from Bjorn Helgaas.) Restructured and corrected various problems in the exception handling code paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod (with assistance from Takayoshi Kochi.) Modified the Linux source converter to ignore quoted string literals while converting identifiers from mixed to lower case. This will correct problems with the disassembler and other areas where such strings must not be modified. The ACPI_FUNCTION_* macros no longer require quotes around the function name. This allows the Linux source converter to convert the names, now that the converter ignores quoted strings. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/events/evgpeblk.c')
-rw-r--r--drivers/acpi/events/evgpeblk.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/drivers/acpi/events/evgpeblk.c b/drivers/acpi/events/evgpeblk.c
index 4e90c1f837c3..95ddeb48bc0f 100644
--- a/drivers/acpi/events/evgpeblk.c
+++ b/drivers/acpi/events/evgpeblk.c
@@ -138,7 +138,7 @@ acpi_status acpi_ev_walk_gpe_list(acpi_gpe_callback gpe_walk_callback)
138 acpi_status status = AE_OK; 138 acpi_status status = AE_OK;
139 acpi_cpu_flags flags; 139 acpi_cpu_flags flags;
140 140
141 ACPI_FUNCTION_TRACE("ev_walk_gpe_list"); 141 ACPI_FUNCTION_TRACE(ev_walk_gpe_list);
142 142
143 flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock); 143 flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
144 144
@@ -192,7 +192,7 @@ acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
192 acpi_native_uint i; 192 acpi_native_uint i;
193 acpi_native_uint j; 193 acpi_native_uint j;
194 194
195 ACPI_FUNCTION_TRACE("ev_delete_gpe_handlers"); 195 ACPI_FUNCTION_TRACE(ev_delete_gpe_handlers);
196 196
197 /* Examine each GPE Register within the block */ 197 /* Examine each GPE Register within the block */
198 198
@@ -251,7 +251,7 @@ acpi_ev_save_method_info(acpi_handle obj_handle,
251 u8 type; 251 u8 type;
252 acpi_status status; 252 acpi_status status;
253 253
254 ACPI_FUNCTION_TRACE("ev_save_method_info"); 254 ACPI_FUNCTION_TRACE(ev_save_method_info);
255 255
256 /* 256 /*
257 * _Lxx and _Exx GPE method support 257 * _Lxx and _Exx GPE method support
@@ -282,9 +282,9 @@ acpi_ev_save_method_info(acpi_handle obj_handle,
282 default: 282 default:
283 /* Unknown method type, just ignore it! */ 283 /* Unknown method type, just ignore it! */
284 284
285 ACPI_ERROR((AE_INFO, 285 ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
286 "Unknown GPE method type: %s (name not of form _Lxx or _Exx)", 286 "Ignoring unknown GPE method type: %s (name not of form _Lxx or _Exx)",
287 name)); 287 name));
288 return_ACPI_STATUS(AE_OK); 288 return_ACPI_STATUS(AE_OK);
289 } 289 }
290 290
@@ -295,9 +295,9 @@ acpi_ev_save_method_info(acpi_handle obj_handle,
295 295
296 /* Conversion failed; invalid method, just ignore it */ 296 /* Conversion failed; invalid method, just ignore it */
297 297
298 ACPI_ERROR((AE_INFO, 298 ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
299 "Could not extract GPE number from name: %s (name is not of form _Lxx or _Exx)", 299 "Could not extract GPE number from name: %s (name is not of form _Lxx or _Exx)",
300 name)); 300 name));
301 return_ACPI_STATUS(AE_OK); 301 return_ACPI_STATUS(AE_OK);
302 } 302 }
303 303
@@ -368,7 +368,7 @@ acpi_ev_match_prw_and_gpe(acpi_handle obj_handle,
368 u32 gpe_number; 368 u32 gpe_number;
369 acpi_status status; 369 acpi_status status;
370 370
371 ACPI_FUNCTION_TRACE("ev_match_prw_and_gpe"); 371 ACPI_FUNCTION_TRACE(ev_match_prw_and_gpe);
372 372
373 /* Check for a _PRW method under this device */ 373 /* Check for a _PRW method under this device */
374 374
@@ -489,7 +489,7 @@ static struct acpi_gpe_xrupt_info *acpi_ev_get_gpe_xrupt_block(u32
489 acpi_status status; 489 acpi_status status;
490 acpi_cpu_flags flags; 490 acpi_cpu_flags flags;
491 491
492 ACPI_FUNCTION_TRACE("ev_get_gpe_xrupt_block"); 492 ACPI_FUNCTION_TRACE(ev_get_gpe_xrupt_block);
493 493
494 /* No need for lock since we are not changing any list elements here */ 494 /* No need for lock since we are not changing any list elements here */
495 495
@@ -563,7 +563,7 @@ acpi_ev_delete_gpe_xrupt(struct acpi_gpe_xrupt_info *gpe_xrupt)
563 acpi_status status; 563 acpi_status status;
564 acpi_cpu_flags flags; 564 acpi_cpu_flags flags;
565 565
566 ACPI_FUNCTION_TRACE("ev_delete_gpe_xrupt"); 566 ACPI_FUNCTION_TRACE(ev_delete_gpe_xrupt);
567 567
568 /* We never want to remove the SCI interrupt handler */ 568 /* We never want to remove the SCI interrupt handler */
569 569
@@ -621,7 +621,7 @@ acpi_ev_install_gpe_block(struct acpi_gpe_block_info *gpe_block,
621 acpi_status status; 621 acpi_status status;
622 acpi_cpu_flags flags; 622 acpi_cpu_flags flags;
623 623
624 ACPI_FUNCTION_TRACE("ev_install_gpe_block"); 624 ACPI_FUNCTION_TRACE(ev_install_gpe_block);
625 625
626 status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS); 626 status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS);
627 if (ACPI_FAILURE(status)) { 627 if (ACPI_FAILURE(status)) {
@@ -674,7 +674,7 @@ acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block)
674 acpi_status status; 674 acpi_status status;
675 acpi_cpu_flags flags; 675 acpi_cpu_flags flags;
676 676
677 ACPI_FUNCTION_TRACE("ev_install_gpe_block"); 677 ACPI_FUNCTION_TRACE(ev_install_gpe_block);
678 678
679 status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS); 679 status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS);
680 if (ACPI_FAILURE(status)) { 680 if (ACPI_FAILURE(status)) {
@@ -744,7 +744,7 @@ acpi_ev_create_gpe_info_blocks(struct acpi_gpe_block_info *gpe_block)
744 acpi_native_uint j; 744 acpi_native_uint j;
745 acpi_status status; 745 acpi_status status;
746 746
747 ACPI_FUNCTION_TRACE("ev_create_gpe_info_blocks"); 747 ACPI_FUNCTION_TRACE(ev_create_gpe_info_blocks);
748 748
749 /* Allocate the GPE register information block */ 749 /* Allocate the GPE register information block */
750 750
@@ -754,7 +754,7 @@ acpi_ev_create_gpe_info_blocks(struct acpi_gpe_block_info *gpe_block)
754 acpi_gpe_register_info)); 754 acpi_gpe_register_info));
755 if (!gpe_register_info) { 755 if (!gpe_register_info) {
756 ACPI_ERROR((AE_INFO, 756 ACPI_ERROR((AE_INFO,
757 "Could not allocate the gpe_register_info table")); 757 "Could not allocate the GpeRegisterInfo table"));
758 return_ACPI_STATUS(AE_NO_MEMORY); 758 return_ACPI_STATUS(AE_NO_MEMORY);
759 } 759 }
760 760
@@ -769,7 +769,7 @@ acpi_ev_create_gpe_info_blocks(struct acpi_gpe_block_info *gpe_block)
769 acpi_gpe_event_info)); 769 acpi_gpe_event_info));
770 if (!gpe_event_info) { 770 if (!gpe_event_info) {
771 ACPI_ERROR((AE_INFO, 771 ACPI_ERROR((AE_INFO,
772 "Could not allocate the gpe_event_info table")); 772 "Could not allocate the GpeEventInfo table"));
773 status = AE_NO_MEMORY; 773 status = AE_NO_MEMORY;
774 goto error_exit; 774 goto error_exit;
775 } 775 }
@@ -888,7 +888,7 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,
888 acpi_status status; 888 acpi_status status;
889 struct acpi_gpe_block_info *gpe_block; 889 struct acpi_gpe_block_info *gpe_block;
890 890
891 ACPI_FUNCTION_TRACE("ev_create_gpe_block"); 891 ACPI_FUNCTION_TRACE(ev_create_gpe_block);
892 892
893 if (!register_count) { 893 if (!register_count) {
894 return_ACPI_STATUS(AE_OK); 894 return_ACPI_STATUS(AE_OK);
@@ -981,7 +981,7 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
981 acpi_native_uint i; 981 acpi_native_uint i;
982 acpi_native_uint j; 982 acpi_native_uint j;
983 983
984 ACPI_FUNCTION_TRACE("ev_initialize_gpe_block"); 984 ACPI_FUNCTION_TRACE(ev_initialize_gpe_block);
985 985
986 /* Ignore a null GPE block (e.g., if no GPE block 1 exists) */ 986 /* Ignore a null GPE block (e.g., if no GPE block 1 exists) */
987 987
@@ -1051,7 +1051,7 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
1051 1051
1052 status = acpi_hw_enable_runtime_gpe_block(NULL, gpe_block); 1052 status = acpi_hw_enable_runtime_gpe_block(NULL, gpe_block);
1053 if (ACPI_FAILURE(status)) { 1053 if (ACPI_FAILURE(status)) {
1054 ACPI_ERROR((AE_INFO, "Could not enable GPEs in gpe_block %p", 1054 ACPI_ERROR((AE_INFO, "Could not enable GPEs in GpeBlock %p",
1055 gpe_block)); 1055 gpe_block));
1056 } 1056 }
1057 1057
@@ -1077,7 +1077,7 @@ acpi_status acpi_ev_gpe_initialize(void)
1077 u32 gpe_number_max = 0; 1077 u32 gpe_number_max = 0;
1078 acpi_status status; 1078 acpi_status status;
1079 1079
1080 ACPI_FUNCTION_TRACE("ev_gpe_initialize"); 1080 ACPI_FUNCTION_TRACE(ev_gpe_initialize);
1081 1081
1082 status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE); 1082 status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
1083 if (ACPI_FAILURE(status)) { 1083 if (ACPI_FAILURE(status)) {