|
@@ -438,7 +438,7 @@ static void delete_gpe_attr_array(void)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void acpi_os_gpe_count(u32 gpe_number)
|
|
|
|
|
|
|
+static void gpe_count(u32 gpe_number)
|
|
|
{
|
|
{
|
|
|
acpi_gpe_count++;
|
|
acpi_gpe_count++;
|
|
|
|
|
|
|
@@ -454,7 +454,7 @@ void acpi_os_gpe_count(u32 gpe_number)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void acpi_os_fixed_event_count(u32 event_number)
|
|
|
|
|
|
|
+static void fixed_event_count(u32 event_number)
|
|
|
{
|
|
{
|
|
|
if (!all_counters)
|
|
if (!all_counters)
|
|
|
return;
|
|
return;
|
|
@@ -468,6 +468,16 @@ void acpi_os_fixed_event_count(u32 event_number)
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static void acpi_gbl_event_handler(u32 event_type, acpi_handle device,
|
|
|
|
|
+ u32 event_number, void *context)
|
|
|
|
|
+{
|
|
|
|
|
+ if (event_type == ACPI_EVENT_TYPE_GPE)
|
|
|
|
|
+ gpe_count(event_number);
|
|
|
|
|
+
|
|
|
|
|
+ if (event_type == ACPI_EVENT_TYPE_FIXED)
|
|
|
|
|
+ fixed_event_count(event_number);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
static int get_status(u32 index, acpi_event_status *status,
|
|
static int get_status(u32 index, acpi_event_status *status,
|
|
|
acpi_handle *handle)
|
|
acpi_handle *handle)
|
|
|
{
|
|
{
|
|
@@ -601,6 +611,7 @@ static ssize_t counter_set(struct kobject *kobj,
|
|
|
|
|
|
|
|
void acpi_irq_stats_init(void)
|
|
void acpi_irq_stats_init(void)
|
|
|
{
|
|
{
|
|
|
|
|
+ acpi_status status;
|
|
|
int i;
|
|
int i;
|
|
|
|
|
|
|
|
if (all_counters)
|
|
if (all_counters)
|
|
@@ -619,6 +630,10 @@ void acpi_irq_stats_init(void)
|
|
|
if (all_counters == NULL)
|
|
if (all_counters == NULL)
|
|
|
goto fail;
|
|
goto fail;
|
|
|
|
|
|
|
|
|
|
+ status = acpi_install_global_event_handler(acpi_gbl_event_handler, NULL);
|
|
|
|
|
+ if (ACPI_FAILURE(status))
|
|
|
|
|
+ goto fail;
|
|
|
|
|
+
|
|
|
counter_attrs = kzalloc(sizeof(struct kobj_attribute) * (num_counters),
|
|
counter_attrs = kzalloc(sizeof(struct kobj_attribute) * (num_counters),
|
|
|
GFP_KERNEL);
|
|
GFP_KERNEL);
|
|
|
if (counter_attrs == NULL)
|
|
if (counter_attrs == NULL)
|