Len Brown | 5229e87 | 2008-02-06 01:26:55 -0500 | [diff] [blame] | 1 | What: /sys/firmware/acpi/interrupts/ |
| 2 | Date: February 2008 |
| 3 | Contact: Len Brown <lenb@kernel.org> |
| 4 | Description: |
| 5 | All ACPI interrupts are handled via a single IRQ, |
| 6 | the System Control Interrupt (SCI), which appears |
| 7 | as "acpi" in /proc/interrupts. |
| 8 | |
| 9 | However, one of the main functions of ACPI is to make |
| 10 | the platform understand random hardware without |
| 11 | special driver support. So while the SCI handles a few |
| 12 | well known (fixed feature) interrupts sources, such |
| 13 | as the power button, it can also handle a variable |
| 14 | number of a "General Purpose Events" (GPE). |
| 15 | |
| 16 | A GPE vectors to a specified handler in AML, which |
| 17 | can do a anything the BIOS writer wants from |
| 18 | OS context. GPE 0x12, for example, would vector |
| 19 | to a level or edge handler called _L12 or _E12. |
| 20 | The handler may do its business and return. |
| 21 | Or the handler may send send a Notify event |
| 22 | to a Linux device driver registered on an ACPI device, |
| 23 | such as a battery, or a processor. |
| 24 | |
| 25 | To figure out where all the SCI's are coming from, |
| 26 | /sys/firmware/acpi/interrupts contains a file listing |
| 27 | every possible source, and the count of how many |
| 28 | times it has triggered. |
| 29 | |
| 30 | $ cd /sys/firmware/acpi/interrupts |
| 31 | $ grep . * |
| 32 | error:0 |
| 33 | ff_gbl_lock:0 |
| 34 | ff_pmtimer:0 |
| 35 | ff_pwr_btn:0 |
| 36 | ff_rt_clk:0 |
| 37 | ff_slp_btn:0 |
| 38 | gpe00:0 |
| 39 | gpe01:0 |
| 40 | gpe02:0 |
| 41 | gpe03:0 |
| 42 | gpe04:0 |
| 43 | gpe05:0 |
| 44 | gpe06:0 |
| 45 | gpe07:0 |
| 46 | gpe08:0 |
| 47 | gpe09:174 |
| 48 | gpe0A:0 |
| 49 | gpe0B:0 |
| 50 | gpe0C:0 |
| 51 | gpe0D:0 |
| 52 | gpe0E:0 |
| 53 | gpe0F:0 |
| 54 | gpe10:0 |
| 55 | gpe11:60 |
| 56 | gpe12:0 |
| 57 | gpe13:0 |
| 58 | gpe14:0 |
| 59 | gpe15:0 |
| 60 | gpe16:0 |
| 61 | gpe17:0 |
| 62 | gpe18:0 |
| 63 | gpe19:7 |
| 64 | gpe1A:0 |
| 65 | gpe1B:0 |
| 66 | gpe1C:0 |
| 67 | gpe1D:0 |
| 68 | gpe1E:0 |
| 69 | gpe1F:0 |
| 70 | gpe_all:241 |
| 71 | sci:241 |
| 72 | |
| 73 | sci - The total number of times the ACPI SCI |
| 74 | has claimed an interrupt. |
| 75 | |
| 76 | gpe_all - count of SCI caused by GPEs. |
| 77 | |
| 78 | gpeXX - count for individual GPE source |
| 79 | |
| 80 | ff_gbl_lock - Global Lock |
| 81 | |
| 82 | ff_pmtimer - PM Timer |
| 83 | |
| 84 | ff_pwr_btn - Power Button |
| 85 | |
| 86 | ff_rt_clk - Real Time Clock |
| 87 | |
| 88 | ff_slp_btn - Sleep Button |
| 89 | |
| 90 | error - an interrupt that can't be accounted for above. |
| 91 | |
| 92 | Root has permission to clear any of these counters. Eg. |
| 93 | # echo 0 > gpe11 |
| 94 | |
| 95 | All counters can be cleared by clearing the total "sci": |
| 96 | # echo 0 > sci |
| 97 | |
| 98 | None of these counters has an effect on the function |
| 99 | of the system, they are simply statistics. |