Matthew Garrett | d1ff4b1 | 2012-01-31 13:19:20 -0500 | [diff] [blame] | 1 | What: /sys/firmware/acpi/bgrt/ |
| 2 | Date: January 2012 |
| 3 | Contact: Matthew Garrett <mjg@redhat.com> |
| 4 | Description: |
| 5 | The BGRT is an ACPI 5.0 feature that allows the OS |
| 6 | to obtain a copy of the firmware boot splash and |
| 7 | some associated metadata. This is intended to be used |
| 8 | by boot splash applications in order to interact with |
| 9 | the firmware boot splash in order to avoid jarring |
| 10 | transitions. |
| 11 | |
| 12 | image: The image bitmap. Currently a 32-bit BMP. |
| 13 | status: 1 if the image is valid, 0 if firmware invalidated it. |
| 14 | type: 0 indicates image is in BMP format. |
| 15 | version: The version of the BGRT. Currently 1. |
| 16 | xoffset: The number of pixels between the left of the screen |
| 17 | and the left edge of the image. |
| 18 | yoffset: The number of pixels between the top of the screen |
| 19 | and the top edge of the image. |
| 20 | |
Rafael J. Wysocki | 3f8055c | 2013-03-03 23:08:16 +0100 | [diff] [blame] | 21 | What: /sys/firmware/acpi/hotplug/ |
| 22 | Date: February 2013 |
| 23 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| 24 | Description: |
| 25 | There are separate hotplug profiles for different classes of |
| 26 | devices supported by ACPI, such as containers, memory modules, |
| 27 | processors, PCI root bridges etc. A hotplug profile for a given |
| 28 | class of devices is a collection of settings defining the way |
| 29 | that class of devices will be handled by the ACPI core hotplug |
| 30 | code. Those profiles are represented in sysfs as subdirectories |
| 31 | of /sys/firmware/acpi/hotplug/. |
| 32 | |
| 33 | The following setting is available to user space for each |
| 34 | hotplug profile: |
| 35 | |
| 36 | enabled: If set, the ACPI core will handle notifications of |
| 37 | hotplug events associated with the given class of |
| 38 | devices and will allow those devices to be ejected with |
| 39 | the help of the _EJ0 control method. Unsetting it |
| 40 | effectively disables hotplug for the correspoinding |
| 41 | class of devices. |
| 42 | |
| 43 | The value of the above attribute is an integer number: 1 (set) |
| 44 | or 0 (unset). Attempts to write any other values to it will |
| 45 | cause -EINVAL to be returned. |
| 46 | |
Len Brown | 5229e87 | 2008-02-06 01:26:55 -0500 | [diff] [blame] | 47 | What: /sys/firmware/acpi/interrupts/ |
| 48 | Date: February 2008 |
| 49 | Contact: Len Brown <lenb@kernel.org> |
| 50 | Description: |
| 51 | All ACPI interrupts are handled via a single IRQ, |
| 52 | the System Control Interrupt (SCI), which appears |
| 53 | as "acpi" in /proc/interrupts. |
| 54 | |
| 55 | However, one of the main functions of ACPI is to make |
| 56 | the platform understand random hardware without |
| 57 | special driver support. So while the SCI handles a few |
| 58 | well known (fixed feature) interrupts sources, such |
| 59 | as the power button, it can also handle a variable |
| 60 | number of a "General Purpose Events" (GPE). |
| 61 | |
| 62 | A GPE vectors to a specified handler in AML, which |
| 63 | can do a anything the BIOS writer wants from |
| 64 | OS context. GPE 0x12, for example, would vector |
| 65 | to a level or edge handler called _L12 or _E12. |
| 66 | The handler may do its business and return. |
| 67 | Or the handler may send send a Notify event |
| 68 | to a Linux device driver registered on an ACPI device, |
| 69 | such as a battery, or a processor. |
| 70 | |
| 71 | To figure out where all the SCI's are coming from, |
| 72 | /sys/firmware/acpi/interrupts contains a file listing |
| 73 | every possible source, and the count of how many |
| 74 | times it has triggered. |
| 75 | |
| 76 | $ cd /sys/firmware/acpi/interrupts |
| 77 | $ grep . * |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 78 | error: 0 |
| 79 | ff_gbl_lock: 0 enable |
| 80 | ff_pmtimer: 0 invalid |
| 81 | ff_pwr_btn: 0 enable |
| 82 | ff_rt_clk: 2 disable |
| 83 | ff_slp_btn: 0 invalid |
| 84 | gpe00: 0 invalid |
| 85 | gpe01: 0 enable |
| 86 | gpe02: 108 enable |
| 87 | gpe03: 0 invalid |
| 88 | gpe04: 0 invalid |
| 89 | gpe05: 0 invalid |
| 90 | gpe06: 0 enable |
| 91 | gpe07: 0 enable |
| 92 | gpe08: 0 invalid |
| 93 | gpe09: 0 invalid |
| 94 | gpe0A: 0 invalid |
| 95 | gpe0B: 0 invalid |
| 96 | gpe0C: 0 invalid |
| 97 | gpe0D: 0 invalid |
| 98 | gpe0E: 0 invalid |
| 99 | gpe0F: 0 invalid |
| 100 | gpe10: 0 invalid |
| 101 | gpe11: 0 invalid |
| 102 | gpe12: 0 invalid |
| 103 | gpe13: 0 invalid |
| 104 | gpe14: 0 invalid |
| 105 | gpe15: 0 invalid |
| 106 | gpe16: 0 invalid |
| 107 | gpe17: 1084 enable |
| 108 | gpe18: 0 enable |
| 109 | gpe19: 0 invalid |
| 110 | gpe1A: 0 invalid |
| 111 | gpe1B: 0 invalid |
| 112 | gpe1C: 0 invalid |
| 113 | gpe1D: 0 invalid |
| 114 | gpe1E: 0 invalid |
| 115 | gpe1F: 0 invalid |
| 116 | gpe_all: 1192 |
| 117 | sci: 1194 |
Len Brown | 88bea18 | 2009-04-21 00:35:47 -0400 | [diff] [blame] | 118 | sci_not: 0 |
Len Brown | 5229e87 | 2008-02-06 01:26:55 -0500 | [diff] [blame] | 119 | |
Len Brown | 88bea18 | 2009-04-21 00:35:47 -0400 | [diff] [blame] | 120 | sci - The number of times the ACPI SCI |
| 121 | has been called and claimed an interrupt. |
| 122 | |
| 123 | sci_not - The number of times the ACPI SCI |
| 124 | has been called and NOT claimed an interrupt. |
Len Brown | 5229e87 | 2008-02-06 01:26:55 -0500 | [diff] [blame] | 125 | |
| 126 | gpe_all - count of SCI caused by GPEs. |
| 127 | |
| 128 | gpeXX - count for individual GPE source |
| 129 | |
| 130 | ff_gbl_lock - Global Lock |
| 131 | |
| 132 | ff_pmtimer - PM Timer |
| 133 | |
| 134 | ff_pwr_btn - Power Button |
| 135 | |
| 136 | ff_rt_clk - Real Time Clock |
| 137 | |
| 138 | ff_slp_btn - Sleep Button |
| 139 | |
| 140 | error - an interrupt that can't be accounted for above. |
| 141 | |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 142 | invalid: it's either a GPE or a Fixed Event that |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 143 | doesn't have an event handler. |
| 144 | |
| 145 | disable: the GPE/Fixed Event is valid but disabled. |
| 146 | |
| 147 | enable: the GPE/Fixed Event is valid and enabled. |
| 148 | |
Len Brown | 5229e87 | 2008-02-06 01:26:55 -0500 | [diff] [blame] | 149 | Root has permission to clear any of these counters. Eg. |
| 150 | # echo 0 > gpe11 |
| 151 | |
| 152 | All counters can be cleared by clearing the total "sci": |
| 153 | # echo 0 > sci |
| 154 | |
| 155 | None of these counters has an effect on the function |
| 156 | of the system, they are simply statistics. |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 157 | |
| 158 | Besides this, user can also write specific strings to these files |
| 159 | to enable/disable/clear ACPI interrupts in user space, which can be |
| 160 | used to debug some ACPI interrupt storm issues. |
| 161 | |
Kees Cook | 0855965 | 2016-04-26 16:41:21 -0700 | [diff] [blame] | 162 | Note that only writing to VALID GPE/Fixed Event is allowed, |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 163 | i.e. user can only change the status of runtime GPE and |
| 164 | Fixed Event with event handler installed. |
| 165 | |
| 166 | Let's take power button fixed event for example, please kill acpid |
| 167 | and other user space applications so that the machine won't shutdown |
| 168 | when pressing the power button. |
| 169 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 170 | 0 enabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 171 | # press the power button for 3 times; |
| 172 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 173 | 3 enabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 174 | # echo disable > ff_pwr_btn |
| 175 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 176 | 3 disabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 177 | # press the power button for 3 times; |
| 178 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 179 | 3 disabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 180 | # echo enable > ff_pwr_btn |
| 181 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 182 | 4 enabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 183 | /* |
| 184 | * this is because the status bit is set even if the enable bit is cleared, |
| 185 | * and it triggers an ACPI fixed event when the enable bit is set again |
| 186 | */ |
| 187 | # press the power button for 3 times; |
| 188 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 189 | 7 enabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 190 | # echo disable > ff_pwr_btn |
| 191 | # press the power button for 3 times; |
| 192 | # echo clear > ff_pwr_btn /* clear the status bit */ |
| 193 | # echo disable > ff_pwr_btn |
| 194 | # cat ff_pwr_btn |
Zhang Rui | ed206fa | 2008-10-27 14:01:02 -0700 | [diff] [blame] | 195 | 7 enabled |
Zhang Rui | 71b58cb | 2008-06-20 09:42:47 +0800 | [diff] [blame] | 196 | |