mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
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: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
a939b96ccc
commit
88bea188b8
4 changed files with 19 additions and 5 deletions
|
@ -69,9 +69,13 @@ Description:
|
|||
gpe1F: 0 invalid
|
||||
gpe_all: 1192
|
||||
sci: 1194
|
||||
sci_not: 0
|
||||
|
||||
sci - The total number of times the ACPI SCI
|
||||
has claimed an interrupt.
|
||||
sci - The number of times the ACPI SCI
|
||||
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.
|
||||
|
||||
|
|
|
@ -353,8 +353,10 @@ static irqreturn_t acpi_irq(int irq, void *dev_id)
|
|||
if (handled) {
|
||||
acpi_irq_handled++;
|
||||
return IRQ_HANDLED;
|
||||
} else
|
||||
} else {
|
||||
acpi_irq_not_handled++;
|
||||
return IRQ_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
acpi_status
|
||||
|
|
|
@ -38,6 +38,7 @@ ACPI_MODULE_NAME("system");
|
|||
#define ACPI_SYSTEM_DEVICE_NAME "System"
|
||||
|
||||
u32 acpi_irq_handled;
|
||||
u32 acpi_irq_not_handled;
|
||||
|
||||
/*
|
||||
* Make ACPICA version work as module param
|
||||
|
@ -214,8 +215,9 @@ err:
|
|||
|
||||
#define COUNT_GPE 0
|
||||
#define COUNT_SCI 1 /* acpi_irq_handled */
|
||||
#define COUNT_ERROR 2 /* other */
|
||||
#define NUM_COUNTERS_EXTRA 3
|
||||
#define COUNT_SCI_NOT 2 /* acpi_irq_not_handled */
|
||||
#define COUNT_ERROR 3 /* other */
|
||||
#define NUM_COUNTERS_EXTRA 4
|
||||
|
||||
struct event_counter {
|
||||
u32 count;
|
||||
|
@ -317,6 +319,8 @@ static ssize_t counter_show(struct kobject *kobj,
|
|||
|
||||
all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count =
|
||||
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 =
|
||||
acpi_gpe_count;
|
||||
|
||||
|
@ -363,6 +367,7 @@ static ssize_t counter_set(struct kobject *kobj,
|
|||
all_counters[i].count = 0;
|
||||
acpi_gpe_count = 0;
|
||||
acpi_irq_handled = 0;
|
||||
acpi_irq_not_handled = 0;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
@ -456,6 +461,8 @@ void acpi_irq_stats_init(void)
|
|||
sprintf(buffer, "gpe_all");
|
||||
else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_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)
|
||||
sprintf(buffer, "error");
|
||||
else
|
||||
|
|
|
@ -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);
|
||||
void acpi_irq_stats_init(void);
|
||||
extern u32 acpi_irq_handled;
|
||||
extern u32 acpi_irq_not_handled;
|
||||
|
||||
extern struct acpi_mcfg_allocation *pci_mmcfg_config;
|
||||
extern int pci_mmcfg_config_num;
|
||||
|
|
Loading…
Reference in a new issue