aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2013-10-30 21:30:28 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-10-31 09:37:33 -0400
commit9187a415fd119c1d89a5ad2fd05513cd43699ebf (patch)
tree7f6c80246b49b42b8ae119c090b595c9754f3341 /drivers/acpi
parentfa5f508f942faaf73ae5020db7a4189d5ca88d2a (diff)
ACPICA: Add new statistics interface.
This patch ports new counters and statistics interface, already implemented in ACPICA upstream, to Linux. That helps to reduce source code differences between Linux and ACPICA upstream. [rjw: Changelog] Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/acpica/acglobal.h2
-rw-r--r--drivers/acpi/acpica/dsmethod.c1
-rw-r--r--drivers/acpi/acpica/evsci.c1
-rw-r--r--drivers/acpi/acpica/utglobal.c12
-rw-r--r--drivers/acpi/acpica/utxface.c38
5 files changed, 54 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
index 0fba431f4fcb..e9f1fc7f99c7 100644
--- a/drivers/acpi/acpica/acglobal.h
+++ b/drivers/acpi/acpica/acglobal.h
@@ -406,7 +406,9 @@ extern u32 acpi_gbl_nesting_level;
406 406
407/* Event counters */ 407/* Event counters */
408 408
409ACPI_EXTERN u32 acpi_method_count;
409ACPI_EXTERN u32 acpi_gpe_count; 410ACPI_EXTERN u32 acpi_gpe_count;
411ACPI_EXTERN u32 acpi_sci_count;
410ACPI_EXTERN u32 acpi_fixed_event_count[ACPI_NUM_FIXED_EVENTS]; 412ACPI_EXTERN u32 acpi_fixed_event_count[ACPI_NUM_FIXED_EVENTS];
411 413
412/* Support for dynamic control method tracing mechanism */ 414/* Support for dynamic control method tracing mechanism */
diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c
index df3ea125507f..81a78ba84311 100644
--- a/drivers/acpi/acpica/dsmethod.c
+++ b/drivers/acpi/acpica/dsmethod.c
@@ -292,6 +292,7 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
292 * reentered one more time (even if it is the same thread) 292 * reentered one more time (even if it is the same thread)
293 */ 293 */
294 obj_desc->method.thread_count++; 294 obj_desc->method.thread_count++;
295 acpi_method_count++;
295 return_ACPI_STATUS(status); 296 return_ACPI_STATUS(status);
296 297
297cleanup: 298cleanup:
diff --git a/drivers/acpi/acpica/evsci.c b/drivers/acpi/acpica/evsci.c
index 94d9ebddf575..9e9e3454d893 100644
--- a/drivers/acpi/acpica/evsci.c
+++ b/drivers/acpi/acpica/evsci.c
@@ -137,6 +137,7 @@ static u32 ACPI_SYSTEM_XFACE acpi_ev_sci_xrupt_handler(void *context)
137 137
138 interrupt_handled |= acpi_ev_sci_dispatch(); 138 interrupt_handled |= acpi_ev_sci_dispatch();
139 139
140 acpi_sci_count++;
140 return_UINT32(interrupt_handled); 141 return_UINT32(interrupt_handled);
141} 142}
142 143
diff --git a/drivers/acpi/acpica/utglobal.c b/drivers/acpi/acpica/utglobal.c
index 77caa4fbcdee..81f9a9584451 100644
--- a/drivers/acpi/acpica/utglobal.c
+++ b/drivers/acpi/acpica/utglobal.c
@@ -289,6 +289,16 @@ acpi_status acpi_ut_init_globals(void)
289 289
290 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; 290 acpi_gbl_owner_id_mask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;
291 291
292 /* Event counters */
293
294 acpi_method_count = 0;
295 acpi_sci_count = 0;
296 acpi_gpe_count = 0;
297
298 for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) {
299 acpi_fixed_event_count[i] = 0;
300 }
301
292#if (!ACPI_REDUCED_HARDWARE) 302#if (!ACPI_REDUCED_HARDWARE)
293 303
294 /* GPE/SCI support */ 304 /* GPE/SCI support */
@@ -383,4 +393,6 @@ ACPI_EXPORT_SYMBOL(acpi_dbg_level)
383 393
384ACPI_EXPORT_SYMBOL(acpi_dbg_layer) 394ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
385 395
396ACPI_EXPORT_SYMBOL(acpi_gpe_count)
397
386ACPI_EXPORT_SYMBOL(acpi_current_gpe_count) 398ACPI_EXPORT_SYMBOL(acpi_current_gpe_count)
diff --git a/drivers/acpi/acpica/utxface.c b/drivers/acpi/acpica/utxface.c
index 891a37b69d3c..39869022a417 100644
--- a/drivers/acpi/acpica/utxface.c
+++ b/drivers/acpi/acpica/utxface.c
@@ -208,6 +208,44 @@ acpi_status acpi_get_system_info(struct acpi_buffer * out_buffer)
208 208
209ACPI_EXPORT_SYMBOL(acpi_get_system_info) 209ACPI_EXPORT_SYMBOL(acpi_get_system_info)
210 210
211/*******************************************************************************
212 *
213 * FUNCTION: acpi_get_statistics
214 *
215 * PARAMETERS: stats - Where the statistics are returned
216 *
217 * RETURN: status - the status of the call
218 *
219 * DESCRIPTION: Get the contents of the various system counters
220 *
221 ******************************************************************************/
222acpi_status acpi_get_statistics(struct acpi_statistics *stats)
223{
224 ACPI_FUNCTION_TRACE(acpi_get_statistics);
225
226 /* Parameter validation */
227
228 if (!stats) {
229 return_ACPI_STATUS(AE_BAD_PARAMETER);
230 }
231
232 /* Various interrupt-based event counters */
233
234 stats->sci_count = acpi_sci_count;
235 stats->gpe_count = acpi_gpe_count;
236
237 ACPI_MEMCPY(stats->fixed_event_count, acpi_fixed_event_count,
238 sizeof(acpi_fixed_event_count));
239
240 /* Other counters */
241
242 stats->method_count = acpi_method_count;
243
244 return_ACPI_STATUS(AE_OK);
245}
246
247ACPI_EXPORT_SYMBOL(acpi_get_statistics)
248
211/***************************************************************************** 249/*****************************************************************************
212 * 250 *
213 * FUNCTION: acpi_install_initialization_handler 251 * FUNCTION: acpi_install_initialization_handler