Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

Len Brown 88bea188 a939b96c

+19 -5
+6 -2
Documentation/ABI/testing/sysfs-firmware-acpi
··· 69 69 gpe1F: 0 invalid 70 70 gpe_all: 1192 71 71 sci: 1194 72 + sci_not: 0 72 73 73 - sci - The total number of times the ACPI SCI 74 - has claimed an interrupt. 74 + sci - The number of times the ACPI SCI 75 + has been called and claimed an interrupt. 76 + 77 + sci_not - The number of times the ACPI SCI 78 + has been called and NOT claimed an interrupt. 75 79 76 80 gpe_all - count of SCI caused by GPEs. 77 81
+3 -1
drivers/acpi/osl.c
··· 353 353 if (handled) { 354 354 acpi_irq_handled++; 355 355 return IRQ_HANDLED; 356 - } else 356 + } else { 357 + acpi_irq_not_handled++; 357 358 return IRQ_NONE; 359 + } 358 360 } 359 361 360 362 acpi_status
+9 -2
drivers/acpi/system.c
··· 38 38 #define ACPI_SYSTEM_DEVICE_NAME "System" 39 39 40 40 u32 acpi_irq_handled; 41 + u32 acpi_irq_not_handled; 41 42 42 43 /* 43 44 * Make ACPICA version work as module param ··· 215 214 216 215 #define COUNT_GPE 0 217 216 #define COUNT_SCI 1 /* acpi_irq_handled */ 218 - #define COUNT_ERROR 2 /* other */ 219 - #define NUM_COUNTERS_EXTRA 3 217 + #define COUNT_SCI_NOT 2 /* acpi_irq_not_handled */ 218 + #define COUNT_ERROR 3 /* other */ 219 + #define NUM_COUNTERS_EXTRA 4 220 220 221 221 struct event_counter { 222 222 u32 count; ··· 319 317 320 318 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI].count = 321 319 acpi_irq_handled; 320 + all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT].count = 321 + acpi_irq_not_handled; 322 322 all_counters[num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_GPE].count = 323 323 acpi_gpe_count; 324 324 ··· 367 363 all_counters[i].count = 0; 368 364 acpi_gpe_count = 0; 369 365 acpi_irq_handled = 0; 366 + acpi_irq_not_handled = 0; 370 367 goto end; 371 368 } 372 369 ··· 461 456 sprintf(buffer, "gpe_all"); 462 457 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI) 463 458 sprintf(buffer, "sci"); 459 + else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_SCI_NOT) 460 + sprintf(buffer, "sci_not"); 464 461 else if (i == num_gpes + ACPI_NUM_FIXED_EVENTS + COUNT_ERROR) 465 462 sprintf(buffer, "error"); 466 463 else
+1
include/linux/acpi.h
··· 111 111 int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); 112 112 void acpi_irq_stats_init(void); 113 113 extern u32 acpi_irq_handled; 114 + extern u32 acpi_irq_not_handled; 114 115 115 116 extern struct acpi_mcfg_allocation *pci_mmcfg_config; 116 117 extern int pci_mmcfg_config_num;