Commit 88bea188 authored by Len Brown's avatar Len Brown

ACPI: add /sys/firmware/acpi/interrupts/sci_not counter

This counter may prove useful in debugging some
spurious interrupt issues seen in the field.
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent a939b96c
...@@ -69,9 +69,13 @@ Description: ...@@ -69,9 +69,13 @@ Description:
gpe1F: 0 invalid gpe1F: 0 invalid
gpe_all: 1192 gpe_all: 1192
sci: 1194 sci: 1194
sci_not: 0
sci - The total number of times the ACPI SCI sci - The number of times the ACPI SCI
has claimed an interrupt. has been called and claimed an interrupt.
sci_not - The number of times the ACPI SCI
has been called and NOT claimed an interrupt.
gpe_all - count of SCI caused by GPEs. gpe_all - count of SCI caused by GPEs.
......
...@@ -353,8 +353,10 @@ static irqreturn_t acpi_irq(int irq, void *dev_id) ...@@ -353,8 +353,10 @@ static irqreturn_t acpi_irq(int irq, void *dev_id)
if (handled) { if (handled) {
acpi_irq_handled++; acpi_irq_handled++;
return IRQ_HANDLED; return IRQ_HANDLED;
} else } else {
acpi_irq_not_handled++;
return IRQ_NONE; return IRQ_NONE;
}
} }
acpi_status acpi_status
......
...@@ -38,6 +38,7 @@ ACPI_MODULE_NAME("system"); ...@@ -38,6 +38,7 @@ ACPI_MODULE_NAME("system");
#define ACPI_SYSTEM_DEVICE_NAME "System" #define ACPI_SYSTEM_DEVICE_NAME "System"
u32 acpi_irq_handled; u32 acpi_irq_handled;
u32 acpi_irq_not_handled;
/* /*
* Make ACPICA version work as module param * Make ACPICA version work as module param
...@@ -214,8 +215,9 @@ static int acpi_system_sysfs_init(void) ...@@ -214,8 +215,9 @@ static int acpi_system_sysfs_init(void)
#define COUNT_GPE 0 #define COUNT_GPE 0
#define COUNT_SCI 1 /* acpi_irq_handled */ #define COUNT_SCI 1 /* acpi_irq_handled */
#define COUNT_ERROR 2 /* other */ #define COUNT_SCI_NOT 2 /* acpi_irq_not_handled */
#define NUM_COUNTERS_EXTRA 3 #define COUNT_ERROR 3 /* other */
#define NUM_COUNTERS_EXTRA 4
struct event_counter { struct event_counter {
u32 count; u32 count;
...@@ -317,6 +319,8 @@ static ssize_t counter_show(struct kobject *kobj, ...@@ -317,6 +319,8 @@ static ssize_t counter_show(struct kobject *kobj,
all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count = all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count =
acpi_irq_handled; acpi_irq_handled;
all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT].count =
acpi_irq_not_handled;
all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_GPE].count = all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_GPE].count =
acpi_gpe_count; acpi_gpe_count;
...@@ -363,6 +367,7 @@ static ssize_t counter_set(struct kobject *kobj, ...@@ -363,6 +367,7 @@ static ssize_t counter_set(struct kobject *kobj,
all_counters[i].count = 0; all_counters[i].count = 0;
acpi_gpe_count = 0; acpi_gpe_count = 0;
acpi_irq_handled = 0; acpi_irq_handled = 0;
acpi_irq_not_handled = 0;
goto end; goto end;
} }
...@@ -456,6 +461,8 @@ void acpi_irq_stats_init(void) ...@@ -456,6 +461,8 @@ void acpi_irq_stats_init(void)
sprintf(buffer, "gpe_all"); sprintf(buffer, "gpe_all");
else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI) else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI)
sprintf(buffer, "sci"); sprintf(buffer, "sci");
else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT)
sprintf(buffer, "sci_not");
else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_ERROR) else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_ERROR)
sprintf(buffer, "error"); sprintf(buffer, "error");
else else
......
...@@ -111,6 +111,7 @@ int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); ...@@ -111,6 +111,7 @@ int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base);
int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base);
void acpi_irq_stats_init(void); void acpi_irq_stats_init(void);
extern u32 acpi_irq_handled; extern u32 acpi_irq_handled;
extern u32 acpi_irq_not_handled;
extern struct acpi_mcfg_allocation *pci_mmcfg_config; extern struct acpi_mcfg_allocation *pci_mmcfg_config;
extern int pci_mmcfg_config_num; extern int pci_mmcfg_config_num;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment