History

Merge tag 'acpi-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI updates from Rafael Wysocki: "These update the ACPICA code in the kernel to upstream revision 20190703, fix up the handling of GPEs in ACPICA, allow some more ACPI code to be built on ARM64 platforms, allow BGRT to be overridden, fix minor issues and clean up assorted pieces of ACPI code. Specifics: - Update the ACPICA code in the kernel to upstream revision 20190703 including: - Initial/default namespace creation simplification (Bob Moore). - Object initialization sequence update (Bob Moore). - Removal of legacy module-level (dead) code (Erik Schmauss). - Table load object initialization update (Erik Schmauss, Nikolaus Voss). - Fix GPE enabling issue in ACPICA causing premature wakeups from suspend-to-idle to occur (Rafael Wysocki). - Allow ACPI AC and battery drivers to be built on non-X86 (Ard Biesheuvel). - Fix address space handler removal in the ACPI PMIC driver for Intel platforms (Andy Shevchenko). - Allow BGRT to be overridden via initrd or configfs (Andrea Oliveri). - Fix object resolution on table loads via configfs (Nikolaus Voss). - Clean up assorted pieces of ACPI code and tools (Colin Ian King, Liguang Zhang, Masahiro Yamada). - Fix documentation build warning, convert the extcon document to ReST and add it to the ACPI documentation (Mauro Carvalho Chehab, Qian Cai)" * tag 'acpi-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI / APEI: Remove needless __ghes_check_estatus() calls ACPICA: Update version to 20190703 ACPICA: Update table load object initialization ACPICA: Update for object initialization sequence ACPICA: remove legacy module-level code due to deprecation ACPICA: Namespace: simplify creation of the initial/default namespace ACPI / PMIC: intel: Drop double removal of address space handler ACPI: APD: remove redundant assignment to pointer clk docs: extcon: convert it to ReST and move to ACPI dir ACPI: Make AC and battery drivers available on !X86 ACPICA: Clear status of GPEs on first direct enable ACPI: configfs: Resolve objects on host-directed table loads ACPI: tables: Allow BGRT to be overridden ACPI: OSL: Make a W=1 kernel-doc warning go away ACPI: tools: Exclude tools/* from .gitignore patterns

Linus Torvalds committed 7 years ago

Commit 4b470452 parents cf2d213 64372c031 files · +131 −337Browse files

Unified · Split

31 files
  1. Documentation/firmware-guide/acpi/extcon-intel-int3496.rst +10 −4
  2. Documentation/firmware-guide/acpi/index.rst +1 −0
  3. MAINTAINERS +3 −3
  4. drivers/acpi/Kconfig +0 −2
  5. drivers/acpi/acpi_apd.c +1 −1
  6. drivers/acpi/acpi_configfs.c +1 −5
  7. drivers/acpi/acpica/acevents.h +2 −1
  8. drivers/acpi/acpica/acglobal.h +0 −1
  9. drivers/acpi/acpica/acnamesp.h +0 −2
  10. drivers/acpi/acpica/dsinit.c +1 −1
  11. drivers/acpi/acpica/evgpe.c +7 −1
  12. drivers/acpi/acpica/evgpeblk.c +1 −1
  13. drivers/acpi/acpica/evxface.c +1 −1
  14. drivers/acpi/acpica/evxfgpe.c +1 −1
  15. drivers/acpi/acpica/exconfig.c +6 −10
  16. drivers/acpi/acpica/nsaccess.c +43 −11
  17. drivers/acpi/acpica/nseval.c +0 −190
  18. drivers/acpi/acpica/nsinit.c +19 −30
  19. drivers/acpi/acpica/nsload.c +0 −12
  20. drivers/acpi/acpica/nsutils.c +0 −12
  21. drivers/acpi/acpica/tbdata.c +0 −13
  22. drivers/acpi/acpica/tbxfload.c +7 −0
  23. drivers/acpi/acpica/utinit.c +0 −1
  24. drivers/acpi/acpica/utxfinit.c +6 −12
  25. drivers/acpi/apei/ghes.c +1 −1
  26. drivers/acpi/osl.c +2 −2
  27. drivers/acpi/pmic/intel_pmic.c +0 −2
  28. drivers/acpi/tables.c +11 −10
  29. include/acpi/acpi_io.h +2 −2
  30. include/acpi/acpixf.h +1 −1
  31. tools/power/acpi/.gitignore +4 −4
Documentation/firmware-guide/acpi/extcon-intel-int3496.rstrenamed from Documentation/extcon/intel-int3496.txt+10−4
@@ -1,5 +1,6 @@
1=====================================================
1Intel INT3496 ACPI device extcon driver documentation2Intel INT3496 ACPI device extcon driver documentation
2-----------------------------------------------------3=====================================================
3 4
4The Intel INT3496 ACPI device extcon driver is a driver for ACPI5The Intel INT3496 ACPI device extcon driver is a driver for ACPI
5devices with an acpi-id of INT3496, such as found for example on6devices with an acpi-id of INT3496, such as found for example on
@@ -13,15 +14,20 @@ between an USB host and an USB peripheral controller. · 7 unmodified lines
13The ACPI devices exposes this functionality by returning an array with up14The ACPI devices exposes this functionality by returning an array with up
14to 3 gpio descriptors from its ACPI _CRS (Current Resource Settings) call:15to 3 gpio descriptors from its ACPI _CRS (Current Resource Settings) call:
15 16
16Index 0: The input gpio for the id-pin, this is always present and valid17======= =====================================================================
17Index 1: The output gpio for enabling Vbus output from the device to the otg18Index 0 The input gpio for the id-pin, this is always present and valid
19Index 1 The output gpio for enabling Vbus output from the device to the otg
18 port, write 1 to enable the Vbus output (this gpio descriptor may20 port, write 1 to enable the Vbus output (this gpio descriptor may
19 be absent or invalid)21 be absent or invalid)
20Index 2: The output gpio for muxing of the data pins between the USB host and22Index 2 The output gpio for muxing of the data pins between the USB host and
21 the USB peripheral controller, write 1 to mux to the peripheral23 the USB peripheral controller, write 1 to mux to the peripheral
22 controller24 controller
25======= =====================================================================
23 26
24There is a mapping between indices and GPIO connection IDs as follows27There is a mapping between indices and GPIO connection IDs as follows
28
29 ======= =======
25 id index 030 id index 0
26 vbus index 131 vbus index 1
27 mux index 232 mux index 2
33 ======= =======
Documentation/firmware-guide/acpi/index.rst+1−0
@@ -24,3 +24,4 @@ ACPI Support · 23 unmodified lines
24 acpi-lid24 acpi-lid
25 lpit25 lpit
26 video_extension26 video_extension
27 extcon-intel-int3496
MAINTAINERS+3−3
@@ -321,7 +321,7 @@ F: drivers/pnp/pnpacpi/ · 320 unmodified lines
321F: include/linux/acpi.h321F: include/linux/acpi.h
322F: include/linux/fwnode.h322F: include/linux/fwnode.h
323F: include/acpi/323F: include/acpi/
324F: Documentation/acpi/324F: Documentation/firmware-guide/acpi/
325F: Documentation/ABI/testing/sysfs-bus-acpi325F: Documentation/ABI/testing/sysfs-bus-acpi
326F: Documentation/ABI/testing/configfs-acpi326F: Documentation/ABI/testing/configfs-acpi
327F: drivers/pci/*acpi*327F: drivers/pci/*acpi*
@@ -4893,7 +4893,7 @@ S: Maintained · 4565 unmodified lines
4893F: Documentation/4893F: Documentation/
4894F: scripts/kernel-doc4894F: scripts/kernel-doc
4895X: Documentation/ABI/4895X: Documentation/ABI/
4896X: Documentation/acpi/4896X: Documentation/firmware-guide/acpi/
4897X: Documentation/devicetree/4897X: Documentation/devicetree/
4898X: Documentation/i2c/4898X: Documentation/i2c/
4899X: Documentation/media/4899X: Documentation/media/
@@ -6069,7 +6069,7 @@ S: Maintained · 1169 unmodified lines
6069F: drivers/extcon/6069F: drivers/extcon/
6070F: include/linux/extcon/6070F: include/linux/extcon/
6071F: include/linux/extcon.h6071F: include/linux/extcon.h
6072F: Documentation/extcon/6072F: Documentation/firmware-guide/acpi/extcon-intel-int3496.rst
6073F: Documentation/devicetree/bindings/extcon/6073F: Documentation/devicetree/bindings/extcon/
6074 6074
6075EXYNOS DP DRIVER6075EXYNOS DP DRIVER
drivers/acpi/Kconfig+0−2
@@ -155,7 +155,6 @@ config ACPI_EC_DEBUGFS · 154 unmodified lines
155 155
156config ACPI_AC156config ACPI_AC
157 tristate "AC Adapter"157 tristate "AC Adapter"
158 depends on X86
159 select POWER_SUPPLY158 select POWER_SUPPLY
160 default y159 default y
161 help160 help
@@ -168,7 +167,6 @@ config ACPI_AC · 6 unmodified lines
168 167
169config ACPI_BATTERY168config ACPI_BATTERY
170 tristate "Battery"169 tristate "Battery"
171 depends on X86
172 select POWER_SUPPLY170 select POWER_SUPPLY
173 default y171 default y
174 help172 help
drivers/acpi/acpi_apd.c+1−1
@@ -57,7 +57,7 @@ struct apd_private_data { · 56 unmodified lines
57static int acpi_apd_setup(struct apd_private_data *pdata)57static int acpi_apd_setup(struct apd_private_data *pdata)
58{58{
59 const struct apd_device_desc *dev_desc = pdata->dev_desc;59 const struct apd_device_desc *dev_desc = pdata->dev_desc;
60 struct clk *clk = ERR_PTR(-ENODEV);60 struct clk *clk;
61 61
62 if (dev_desc->fixed_clk_rate) {62 if (dev_desc->fixed_clk_rate) {
63 clk = clk_register_fixed_rate(&pdata->adev->dev,63 clk = clk_register_fixed_rate(&pdata->adev->dev,
drivers/acpi/acpi_configfs.c+1−5
@@ -53,11 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg, · 52 unmodified lines
53 if (!table->header)53 if (!table->header)
54 return -ENOMEM;54 return -ENOMEM;
55 55
56 ACPI_INFO(("Host-directed Dynamic ACPI Table Load:"));56 ret = acpi_load_table(table->header);
57 ret = acpi_tb_install_and_load_table(
58 ACPI_PTR_TO_PHYSADDR(table->header),
59 ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE,
60 &table->index);
61 if (ret) {57 if (ret) {
62 kfree(table->header);58 kfree(table->header);
63 table->header = NULL;59 table->header = NULL;
drivers/acpi/acpica/acevents.h+2−1
@@ -69,7 +69,8 @@ acpi_status · 68 unmodified lines
69acpi_ev_mask_gpe(struct acpi_gpe_event_info *gpe_event_info, u8 is_masked);69acpi_ev_mask_gpe(struct acpi_gpe_event_info *gpe_event_info, u8 is_masked);
70 70
71acpi_status71acpi_status
72acpi_ev_add_gpe_reference(struct acpi_gpe_event_info *gpe_event_info);72acpi_ev_add_gpe_reference(struct acpi_gpe_event_info *gpe_event_info,
73 u8 clear_on_enable);
73 74
74acpi_status75acpi_status
75acpi_ev_remove_gpe_reference(struct acpi_gpe_event_info *gpe_event_info);76acpi_ev_remove_gpe_reference(struct acpi_gpe_event_info *gpe_event_info);
drivers/acpi/acpica/acglobal.h+0−1
@@ -178,7 +178,6 @@ ACPI_GLOBAL(u8, acpi_gbl_verbose_leak_dump); · 177 unmodified lines
178ACPI_GLOBAL(struct acpi_namespace_node, acpi_gbl_root_node_struct);178ACPI_GLOBAL(struct acpi_namespace_node, acpi_gbl_root_node_struct);
179ACPI_GLOBAL(struct acpi_namespace_node *, acpi_gbl_root_node);179ACPI_GLOBAL(struct acpi_namespace_node *, acpi_gbl_root_node);
180ACPI_GLOBAL(struct acpi_namespace_node *, acpi_gbl_fadt_gpe_device);180ACPI_GLOBAL(struct acpi_namespace_node *, acpi_gbl_fadt_gpe_device);
181ACPI_GLOBAL(union acpi_operand_object *, acpi_gbl_module_code_list);
182 181
183extern const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES];182extern const u8 acpi_gbl_ns_properties[ACPI_NUM_NS_TYPES];
184extern const struct acpi_predefined_names183extern const struct acpi_predefined_names
drivers/acpi/acpica/acnamesp.h+0−2
@@ -207,8 +207,6 @@ acpi_ns_dump_object_paths(acpi_object_type type, · 206 unmodified lines
207 */207 */
208acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info);208acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info);
209 209
210void acpi_ns_exec_module_code_list(void);
211
212/*210/*
213 * nsarguments - Argument count/type checking for predefined/reserved names211 * nsarguments - Argument count/type checking for predefined/reserved names
214 */212 */
drivers/acpi/acpica/dsinit.c+1−1
@@ -202,7 +202,7 @@ acpi_ds_initialize_objects(u32 table_index, · 201 unmodified lines
202 202
203 if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_DSDT)) {203 if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_DSDT)) {
204 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,204 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,
205 "\nInitializing Namespace objects:\n"));205 "\nACPI table initialization:\n"));
206 }206 }
207 207
208 /* Summary of objects initialized */208 /* Summary of objects initialized */
drivers/acpi/acpica/evgpe.c+7−1
@@ -146,6 +146,7 @@ acpi_ev_mask_gpe(struct acpi_gpe_event_info *gpe_event_info, u8 is_masked) · 145 unmodified lines
146 * FUNCTION: acpi_ev_add_gpe_reference146 * FUNCTION: acpi_ev_add_gpe_reference
147 *147 *
148 * PARAMETERS: gpe_event_info - Add a reference to this GPE148 * PARAMETERS: gpe_event_info - Add a reference to this GPE
149 * clear_on_enable - Clear GPE status before enabling it
149 *150 *
150 * RETURN: Status151 * RETURN: Status
151 *152 *
@@ -155,7 +156,8 @@ acpi_ev_mask_gpe(struct acpi_gpe_event_info *gpe_event_info, u8 is_masked) · 3 unmodified lines
155 ******************************************************************************/156 ******************************************************************************/
156 157
157acpi_status158acpi_status
158acpi_ev_add_gpe_reference(struct acpi_gpe_event_info *gpe_event_info)159acpi_ev_add_gpe_reference(struct acpi_gpe_event_info *gpe_event_info,
160 u8 clear_on_enable)
159{161{
160 acpi_status status = AE_OK;162 acpi_status status = AE_OK;
161 163
@@ -170,6 +172,10 @@ acpi_ev_add_gpe_reference(struct acpi_gpe_event_info *gpe_event_info) · 8 unmodified lines
170 172
171 /* Enable on first reference */173 /* Enable on first reference */
172 174
175 if (clear_on_enable) {
176 (void)acpi_hw_clear_gpe(gpe_event_info);
177 }
178
173 status = acpi_ev_update_gpe_enable_mask(gpe_event_info);179 status = acpi_ev_update_gpe_enable_mask(gpe_event_info);
174 if (ACPI_SUCCESS(status)) {180 if (ACPI_SUCCESS(status)) {
175 status = acpi_ev_enable_gpe(gpe_event_info);181 status = acpi_ev_enable_gpe(gpe_event_info);
drivers/acpi/acpica/evgpeblk.c+1−1
@@ -453,7 +453,7 @@ acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info, · 452 unmodified lines
453 continue;453 continue;
454 }454 }
455 455
456 status = acpi_ev_add_gpe_reference(gpe_event_info);456 status = acpi_ev_add_gpe_reference(gpe_event_info, FALSE);
457 if (ACPI_FAILURE(status)) {457 if (ACPI_FAILURE(status)) {
458 ACPI_EXCEPTION((AE_INFO, status,458 ACPI_EXCEPTION((AE_INFO, status,
459 "Could not enable GPE 0x%02X",459 "Could not enable GPE 0x%02X",
drivers/acpi/acpica/evxface.c+1−1
@@ -971,7 +971,7 @@ acpi_remove_gpe_handler(acpi_handle gpe_device, · 970 unmodified lines
971 ACPI_GPE_DISPATCH_METHOD) ||971 ACPI_GPE_DISPATCH_METHOD) ||
972 (ACPI_GPE_DISPATCH_TYPE(handler->original_flags) ==972 (ACPI_GPE_DISPATCH_TYPE(handler->original_flags) ==
973 ACPI_GPE_DISPATCH_NOTIFY)) && handler->originally_enabled) {973 ACPI_GPE_DISPATCH_NOTIFY)) && handler->originally_enabled) {
974 (void)acpi_ev_add_gpe_reference(gpe_event_info);974 (void)acpi_ev_add_gpe_reference(gpe_event_info, FALSE);
975 if (ACPI_GPE_IS_POLLING_NEEDED(gpe_event_info)) {975 if (ACPI_GPE_IS_POLLING_NEEDED(gpe_event_info)) {
976 976
977 /* Poll edge triggered GPEs to handle existing events */977 /* Poll edge triggered GPEs to handle existing events */
drivers/acpi/acpica/evxfgpe.c+1−1
@@ -108,7 +108,7 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number) · 107 unmodified lines
108 if (gpe_event_info) {108 if (gpe_event_info) {
109 if (ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) !=109 if (ACPI_GPE_DISPATCH_TYPE(gpe_event_info->flags) !=
110 ACPI_GPE_DISPATCH_NONE) {110 ACPI_GPE_DISPATCH_NONE) {
111 status = acpi_ev_add_gpe_reference(gpe_event_info);111 status = acpi_ev_add_gpe_reference(gpe_event_info, TRUE);
112 if (ACPI_SUCCESS(status) &&112 if (ACPI_SUCCESS(status) &&
113 ACPI_GPE_IS_POLLING_NEEDED(gpe_event_info)) {113 ACPI_GPE_IS_POLLING_NEEDED(gpe_event_info)) {
114 114
drivers/acpi/acpica/exconfig.c+6−10
@@ -174,12 +174,9 @@ acpi_ex_load_table_op(struct acpi_walk_state *walk_state, · 173 unmodified lines
174 return_ACPI_STATUS(status);174 return_ACPI_STATUS(status);
175 }175 }
176 176
177 /* Complete the initialization/resolution of package objects */177 /* Complete the initialization/resolution of new objects */
178 178
179 status = acpi_ns_walk_namespace(ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,179 acpi_ns_initialize_objects();
180 ACPI_UINT32_MAX, 0,
181 acpi_ns_init_one_package, NULL, NULL,
182 NULL);
183 180
184 /* Parameter Data (optional) */181 /* Parameter Data (optional) */
185 182
@@ -437,12 +434,11 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc, · 251 unmodified lines
437 return_ACPI_STATUS(status);434 return_ACPI_STATUS(status);
438 }435 }
439 436
440 /* Complete the initialization/resolution of package objects */437 /* Complete the initialization/resolution of new objects */
441 438
442 status = acpi_ns_walk_namespace(ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,439 acpi_ex_exit_interpreter();
443 ACPI_UINT32_MAX, 0,440 acpi_ns_initialize_objects();
444 acpi_ns_init_one_package, NULL, NULL,441 acpi_ex_enter_interpreter();
445 NULL);
446 442
447 /* Store the ddb_handle into the Target operand */443 /* Store the ddb_handle into the Target operand */
448 444
drivers/acpi/acpica/nsaccess.c+43−11
@@ -36,6 +36,7 @@ acpi_status acpi_ns_root_initialize(void) · 35 unmodified lines
36 acpi_status status;36 acpi_status status;
37 const struct acpi_predefined_names *init_val = NULL;37 const struct acpi_predefined_names *init_val = NULL;
38 struct acpi_namespace_node *new_node;38 struct acpi_namespace_node *new_node;
39 struct acpi_namespace_node *prev_node = NULL;
39 union acpi_operand_object *obj_desc;40 union acpi_operand_object *obj_desc;
40 acpi_string val = NULL;41 acpi_string val = NULL;
41 42
@@ -61,12 +62,28 @@ acpi_status acpi_ns_root_initialize(void) · 19 unmodified lines
61 */62 */
62 acpi_gbl_root_node = &acpi_gbl_root_node_struct;63 acpi_gbl_root_node = &acpi_gbl_root_node_struct;
63 64
64 /* Enter the pre-defined names in the name table */65 /* Enter the predefined names in the name table */
65 66
66 ACPI_DEBUG_PRINT((ACPI_DB_INFO,67 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
67 "Entering predefined entries into namespace\n"));68 "Entering predefined entries into namespace\n"));
68 69
70 /*
71 * Create the initial (default) namespace.
72 * This namespace looks like something similar to this:
73 *
74 * ACPI Namespace (from Namespace Root):
75 * 0 _GPE Scope 00203160 00
76 * 0 _PR_ Scope 002031D0 00
77 * 0 _SB_ Device 00203240 00 Notify Object: 0020ADD8
78 * 0 _SI_ Scope 002032B0 00
79 * 0 _TZ_ Device 00203320 00
80 * 0 _REV Integer 00203390 00 = 0000000000000002
81 * 0 _OS_ String 00203488 00 Len 14 "Microsoft Windows NT"
82 * 0 _GL_ Mutex 00203580 00 Object 002035F0
83 * 0 _OSI Method 00203678 00 Args 1 Len 0000 Aml 00000000
84 */
69 for (init_val = acpi_gbl_pre_defined_names; init_val->name; init_val++) {85 for (init_val = acpi_gbl_pre_defined_names; init_val->name; init_val++) {
86 status = AE_OK;
70 87
71 /* _OSI is optional for now, will be permanent later */88 /* _OSI is optional for now, will be permanent later */
72 89
@@ -75,17 +92,32 @@ acpi_status acpi_ns_root_initialize(void) · 2 unmodified lines
75 continue;92 continue;
76 }93 }
77 94
78 status =95 /*
79 acpi_ns_lookup(NULL, ACPI_CAST_PTR(char, init_val->name),96 * Create, init, and link the new predefined name
80 init_val->type, ACPI_IMODE_LOAD_PASS2,97 * Note: No need to use acpi_ns_lookup here because all the
81 ACPI_NS_NO_UPSEARCH, NULL, &new_node);98 * predefined names are at the root level. It is much easier to
82 if (ACPI_FAILURE(status)) {99 * just create and link the new node(s) here.
83 ACPI_EXCEPTION((AE_INFO, status,100 */
84 "Could not create predefined name %s",101 new_node =
85 init_val->name));102 ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_namespace_node));
86 continue;103 if (!new_node) {
104 status = AE_NO_MEMORY;
105 goto unlock_and_exit;
87 }106 }
88 107
108 ACPI_COPY_NAMESEG(new_node->name.ascii, init_val->name);
109 new_node->descriptor_type = ACPI_DESC_TYPE_NAMED;
110 new_node->type = init_val->type;
111
112 if (!prev_node) {
113 acpi_gbl_root_node_struct.child = new_node;
114 } else {
115 prev_node->peer = new_node;
116 }
117
118 new_node->parent = &acpi_gbl_root_node_struct;
119 prev_node = new_node;
120
89 /*121 /*
90 * Name entered successfully. If entry in pre_defined_names[] specifies122 * Name entered successfully. If entry in pre_defined_names[] specifies
91 * an initial value, create the initial value.123 * an initial value, create the initial value.
@@ -131,7 +163,7 @@ acpi_status acpi_ns_root_initialize(void) · 39 unmodified lines
131 163
132 new_node->value = obj_desc->method.param_count;164 new_node->value = obj_desc->method.param_count;
133#else165#else
134 /* Mark this as a very SPECIAL method */166 /* Mark this as a very SPECIAL method (_OSI) */
135 167
136 obj_desc->method.info_flags =168 obj_desc->method.info_flags =
137 ACPI_METHOD_INTERNAL_ONLY;169 ACPI_METHOD_INTERNAL_ONLY;
drivers/acpi/acpica/nseval.c+0−190
@@ -14,11 +14,6 @@ · 13 unmodified lines
14#define _COMPONENT ACPI_NAMESPACE14#define _COMPONENT ACPI_NAMESPACE
15ACPI_MODULE_NAME("nseval")15ACPI_MODULE_NAME("nseval")
16 16
17/* Local prototypes */
18static void
19acpi_ns_exec_module_code(union acpi_operand_object *method_obj,
20 struct acpi_evaluate_info *info);
21
22/*******************************************************************************17/*******************************************************************************
23 *18 *
24 * FUNCTION: acpi_ns_evaluate19 * FUNCTION: acpi_ns_evaluate
@@ -44,7 +39,6 @@ acpi_ns_exec_module_code(union acpi_operand_object *method_obj, · 19 unmodified lines
44 * MUTEX: Locks interpreter39 * MUTEX: Locks interpreter
45 *40 *
46 ******************************************************************************/41 ******************************************************************************/
47
48acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info)42acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info)
49{43{
50 acpi_status status;44 acpi_status status;
@@ -310,187 +304,3 @@ cleanup: · 259 unmodified lines
310 info->full_pathname = NULL;304 info->full_pathname = NULL;
311 return_ACPI_STATUS(status);305 return_ACPI_STATUS(status);
312}306}
313
314/*******************************************************************************
315 *
316 * FUNCTION: acpi_ns_exec_module_code_list
317 *
318 * PARAMETERS: None
319 *
320 * RETURN: None. Exceptions during method execution are ignored, since
321 * we cannot abort a table load.
322 *
323 * DESCRIPTION: Execute all elements of the global module-level code list.
324 * Each element is executed as a single control method.
325 *
326 * NOTE: With this option enabled, each block of detected executable AML
327 * code that is outside of any control method is wrapped with a temporary
328 * control method object and placed on a global list. The methods on this
329 * list are executed below.
330 *
331 * This function executes the module-level code for all tables only after
332 * all of the tables have been loaded. It is a legacy option and is
333 * not compatible with other ACPI implementations. See acpi_ns_load_table.
334 *
335 * This function will be removed when the legacy option is removed.
336 *
337 ******************************************************************************/
338
339void acpi_ns_exec_module_code_list(void)
340{
341 union acpi_operand_object *prev;
342 union acpi_operand_object *next;
343 struct acpi_evaluate_info *info;
344 u32 method_count = 0;
345
346 ACPI_FUNCTION_TRACE(ns_exec_module_code_list);
347
348 /* Exit now if the list is empty */
349
350 next = acpi_gbl_module_code_list;
351 if (!next) {
352 ACPI_DEBUG_PRINT((ACPI_DB_INIT_NAMES,
353 "Legacy MLC block list is empty\n"));
354
355 return_VOID;
356 }
357
358 /* Allocate the evaluation information block */
359
360 info = ACPI_ALLOCATE(sizeof(struct acpi_evaluate_info));
361 if (!info) {
362 return_VOID;
363 }
364
365 /* Walk the list, executing each "method" */
366
367 while (next) {
368 prev = next;
369 next = next->method.mutex;
370
371 /* Clear the link field and execute the method */
372
373 prev->method.mutex = NULL;
374 acpi_ns_exec_module_code(prev, info);
375 method_count++;
376
377 /* Delete the (temporary) method object */
378
379 acpi_ut_remove_reference(prev);
380 }
381
382 ACPI_INFO(("Executed %u blocks of module-level executable AML code",
383 method_count));
384
385 ACPI_FREE(info);
386 acpi_gbl_module_code_list = NULL;
387 return_VOID;
388}
389
390/*******************************************************************************
391 *
392 * FUNCTION: acpi_ns_exec_module_code
393 *
394 * PARAMETERS: method_obj - Object container for the module-level code
395 * info - Info block for method evaluation
396 *
397 * RETURN: None. Exceptions during method execution are ignored, since
398 * we cannot abort a table load.
399 *
400 * DESCRIPTION: Execute a control method containing a block of module-level
401 * executable AML code. The control method is temporarily
402 * installed to the root node, then evaluated.
403 *
404 ******************************************************************************/
405
406static void
407acpi_ns_exec_module_code(union acpi_operand_object *method_obj,
408 struct acpi_evaluate_info *info)
409{
410 union acpi_operand_object *parent_obj;
411 struct acpi_namespace_node *parent_node;
412 acpi_object_type type;
413 acpi_status status;
414
415 ACPI_FUNCTION_TRACE(ns_exec_module_code);
416
417 /*
418 * Get the parent node. We cheat by using the next_object field
419 * of the method object descriptor.
420 */
421 parent_node =
422 ACPI_CAST_PTR(struct acpi_namespace_node,
423 method_obj->method.next_object);
424 type = acpi_ns_get_type(parent_node);
425
426 /*
427 * Get the region handler and save it in the method object. We may need
428 * this if an operation region declaration causes a _REG method to be run.
429 *
430 * We can't do this in acpi_ps_link_module_code because
431 * acpi_gbl_root_node->Object is NULL at PASS1.
432 */
433 if ((type == ACPI_TYPE_DEVICE) && parent_node->object) {
434 method_obj->method.dispatch.handler =
435 parent_node->object->device.handler;
436 }
437
438 /* Must clear next_object (acpi_ns_attach_object needs the field) */
439
440 method_obj->method.next_object = NULL;
441
442 /* Initialize the evaluation information block */
443
444 memset(info, 0, sizeof(struct acpi_evaluate_info));
445 info->prefix_node = parent_node;
446
447 /*
448 * Get the currently attached parent object. Add a reference,
449 * because the ref count will be decreased when the method object
450 * is installed to the parent node.
451 */
452 parent_obj = acpi_ns_get_attached_object(parent_node);
453 if (parent_obj) {
454 acpi_ut_add_reference(parent_obj);
455 }
456
457 /* Install the method (module-level code) in the parent node */
458
459 status =
460 acpi_ns_attach_object(parent_node, method_obj, ACPI_TYPE_METHOD);
461 if (ACPI_FAILURE(status)) {
462 goto exit;
463 }
464
465 /* Execute the parent node as a control method */
466
467 status = acpi_ns_evaluate(info);
468
469 ACPI_DEBUG_PRINT((ACPI_DB_INIT_NAMES,
470 "Executed module-level code at %p\n",
471 method_obj->method.aml_start));
472
473 /* Delete a possible implicit return value (in slack mode) */
474
475 if (info->return_object) {
476 acpi_ut_remove_reference(info->return_object);
477 }
478
479 /* Detach the temporary method object */
480
481 acpi_ns_detach_object(parent_node);
482
483 /* Restore the original parent object */
484
485 if (parent_obj) {
486 status = acpi_ns_attach_object(parent_node, parent_obj, type);
487 } else {
488 parent_node->type = (u8)type;
489 }
490
491exit:
492 if (parent_obj) {
493 acpi_ut_remove_reference(parent_obj);
494 }
495 return_VOID;
496}
drivers/acpi/acpica/nsinit.c+19−30
@@ -55,14 +55,19 @@ acpi_status acpi_ns_initialize_objects(void) · 54 unmodified lines
55 ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,55 ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,
56 "**** Starting initialization of namespace objects ****\n"));56 "**** Starting initialization of namespace objects ****\n"));
57 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,57 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,
58 "Completing Region/Field/Buffer/Package initialization:\n"));58 "Final data object initialization: "));
59 59
60 /* Set all init info to zero */60 /* Clear the info block */
61 61
62 memset(&info, 0, sizeof(struct acpi_init_walk_info));62 memset(&info, 0, sizeof(struct acpi_init_walk_info));
63 63
64 /* Walk entire namespace from the supplied root */64 /* Walk entire namespace from the supplied root */
65 65
66 /*
67 * TBD: will become ACPI_TYPE_PACKAGE as this type object
68 * is now the only one that supports deferred initialization
69 * (forward references).
70 */
66 status = acpi_walk_namespace(ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,71 status = acpi_walk_namespace(ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
67 ACPI_UINT32_MAX, acpi_ns_init_one_object,72 ACPI_UINT32_MAX, acpi_ns_init_one_object,
68 NULL, &info, NULL);73 NULL, &info, NULL);
@@ -71,13 +76,8 @@ acpi_status acpi_ns_initialize_objects(void) · 2 unmodified lines
71 }76 }
72 77
73 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,78 ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,
74 " Initialized %u/%u Regions %u/%u Fields %u/%u "79 "Namespace contains %u (0x%X) objects\n",
75 "Buffers %u/%u Packages (%u nodes)\n",80 info.object_count, info.object_count));
76 info.op_region_init, info.op_region_count,
77 info.field_init, info.field_count,
78 info.buffer_init, info.buffer_count,
79 info.package_init, info.package_count,
80 info.object_count));
81 81
82 ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,82 ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,
83 "%u Control Methods found\n%u Op Regions found\n",83 "%u Control Methods found\n%u Op Regions found\n",
@@ -382,34 +382,18 @@ acpi_ns_init_one_object(acpi_handle obj_handle, · 298 unmodified lines
382 acpi_ex_enter_interpreter();382 acpi_ex_enter_interpreter();
383 383
384 /*384 /*
385 * Each of these types can contain executable AML code within the385 * Only initialization of Package objects can be deferred, in order
386 * declaration.386 * to support forward references.
387 */387 */
388 switch (type) {388 switch (type) {
389 case ACPI_TYPE_REGION:
390
391 info->op_region_init++;
392 status = acpi_ds_get_region_arguments(obj_desc);
393 break;
394
395 case ACPI_TYPE_BUFFER_FIELD:
396
397 info->field_init++;
398 status = acpi_ds_get_buffer_field_arguments(obj_desc);
399 break;
400
401 case ACPI_TYPE_LOCAL_BANK_FIELD:389 case ACPI_TYPE_LOCAL_BANK_FIELD:
402 390
391 /* TBD: bank_fields do not require deferred init, remove this code */
392
403 info->field_init++;393 info->field_init++;
404 status = acpi_ds_get_bank_field_arguments(obj_desc);394 status = acpi_ds_get_bank_field_arguments(obj_desc);
405 break;395 break;
406 396
407 case ACPI_TYPE_BUFFER:
408
409 info->buffer_init++;
410 status = acpi_ds_get_buffer_arguments(obj_desc);
411 break;
412
413 case ACPI_TYPE_PACKAGE:397 case ACPI_TYPE_PACKAGE:
414 398
415 /* Complete the initialization/resolution of the package object */399 /* Complete the initialization/resolution of the package object */
@@ -421,8 +405,13 @@ acpi_ns_init_one_object(acpi_handle obj_handle, · 5 unmodified lines
421 405
422 default:406 default:
423 407
424 /* No other types can get here */408 /* No other types should get here */
425 409
410 status = AE_TYPE;
411 ACPI_EXCEPTION((AE_INFO, status,
412 "Opcode is not deferred [%4.4s] (%s)",
413 acpi_ut_get_node_name(node),
414 acpi_ut_get_type_name(type)));
426 break;415 break;
427 }416 }
428 417
drivers/acpi/acpica/nsload.c+0−12
@@ -109,18 +109,6 @@ unlock: · 108 unmodified lines
109 ACPI_DEBUG_PRINT((ACPI_DB_INFO,109 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
110 "**** Completed Table Object Initialization\n"));110 "**** Completed Table Object Initialization\n"));
111 111
112 /*
113 * This case handles the legacy option that groups all module-level
114 * code blocks together and defers execution until all of the tables
115 * are loaded. Execute all of these blocks at this time.
116 * Execute any module-level code that was detected during the table
117 * load phase.
118 *
119 * Note: this option is deprecated and will be eliminated in the
120 * future. Use of this option can cause problems with AML code that
121 * depends upon in-order immediate execution of module-level code.
122 */
123 acpi_ns_exec_module_code_list();
124 return_ACPI_STATUS(status);112 return_ACPI_STATUS(status);
125}113}
126 114
drivers/acpi/acpica/nsutils.c+0−12
@@ -560,21 +560,9 @@ struct acpi_namespace_node *acpi_ns_validate_handle(acpi_handle handle) · 559 unmodified lines
560void acpi_ns_terminate(void)560void acpi_ns_terminate(void)
561{561{
562 acpi_status status;562 acpi_status status;
563 union acpi_operand_object *prev;
564 union acpi_operand_object *next;
565 563
566 ACPI_FUNCTION_TRACE(ns_terminate);564 ACPI_FUNCTION_TRACE(ns_terminate);
567 565
568 /* Delete any module-level code blocks */
569
570 next = acpi_gbl_module_code_list;
571 while (next) {
572 prev = next;
573 next = next->method.mutex;
574 prev->method.mutex = NULL; /* Clear the Mutex (cheated) field */
575 acpi_ut_remove_reference(prev);
576 }
577
578 /*566 /*
579 * Free the entire namespace -- all nodes and all objects567 * Free the entire namespace -- all nodes and all objects
580 * attached to the nodes568 * attached to the nodes
drivers/acpi/acpica/tbdata.c+0−13
@@ -933,19 +933,6 @@ acpi_tb_load_table(u32 table_index, struct acpi_namespace_node *parent_node) · 932 unmodified lines
933 933
934 status = acpi_ns_load_table(table_index, parent_node);934 status = acpi_ns_load_table(table_index, parent_node);
935 935
936 /*
937 * This case handles the legacy option that groups all module-level
938 * code blocks together and defers execution until all of the tables
939 * are loaded. Execute all of these blocks at this time.
940 * Execute any module-level code that was detected during the table
941 * load phase.
942 *
943 * Note: this option is deprecated and will be eliminated in the
944 * future. Use of this option can cause problems with AML code that
945 * depends upon in-order immediate execution of module-level code.
946 */
947 acpi_ns_exec_module_code_list();
948
949 /*936 /*
950 * Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is937 * Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is
951 * responsible for discovering any new wake GPEs by running _PRW methods938 * responsible for discovering any new wake GPEs by running _PRW methods
drivers/acpi/acpica/tbxfload.c+7−0
@@ -297,6 +297,13 @@ acpi_status acpi_load_table(struct acpi_table_header *table) · 296 unmodified lines
297 status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),297 status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),
298 ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,298 ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,
299 FALSE, &table_index);299 FALSE, &table_index);
300 if (ACPI_SUCCESS(status)) {
301
302 /* Complete the initialization/resolution of new objects */
303
304 acpi_ns_initialize_objects();
305 }
306
300 return_ACPI_STATUS(status);307 return_ACPI_STATUS(status);
301}308}
302 309
drivers/acpi/acpica/utinit.c+0−1
@@ -180,7 +180,6 @@ acpi_status acpi_ut_init_globals(void) · 179 unmodified lines
180 180
181 /* Namespace */181 /* Namespace */
182 182
183 acpi_gbl_module_code_list = NULL;
184 acpi_gbl_root_node = NULL;183 acpi_gbl_root_node = NULL;
185 acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;184 acpi_gbl_root_node_struct.name.integer = ACPI_ROOT_NAME;
186 acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;185 acpi_gbl_root_node_struct.descriptor_type = ACPI_DESC_TYPE_NAMED;
drivers/acpi/acpica/utxfinit.c+6−12
@@ -211,24 +211,17 @@ acpi_status ACPI_INIT_FUNCTION acpi_initialize_objects(u32 flags) · 210 unmodified lines
211 211
212 ACPI_FUNCTION_TRACE(acpi_initialize_objects);212 ACPI_FUNCTION_TRACE(acpi_initialize_objects);
213 213
214#ifdef ACPI_OBSOLETE_BEHAVIOR
214 /*215 /*
215 * This case handles the legacy option that groups all module-level216 * 05/2019: Removed, initialization now happens at both object
216 * code blocks together and defers execution until all of the tables217 * creation and table load time
217 * are loaded. Execute all of these blocks at this time.
218 * Execute any module-level code that was detected during the table
219 * load phase.
220 *
221 * Note: this option is deprecated and will be eliminated in the
222 * future. Use of this option can cause problems with AML code that
223 * depends upon in-order immediate execution of module-level code.
224 */218 */
225 acpi_ns_exec_module_code_list();
226 219
227 /*220 /*
228 * Initialize the objects that remain uninitialized. This221 * Initialize the objects that remain uninitialized. This
229 * runs the executable AML that may be part of the222 * runs the executable AML that may be part of the
230 * declaration of these objects:223 * declaration of these objects: operation_regions, buffer_fields,
231 * operation_regions, buffer_fields, Buffers, and Packages.224 * bank_fields, Buffers, and Packages.
232 */225 */
233 if (!(flags & ACPI_NO_OBJECT_INIT)) {226 if (!(flags & ACPI_NO_OBJECT_INIT)) {
234 status = acpi_ns_initialize_objects();227 status = acpi_ns_initialize_objects();
@@ -236,6 +229,7 @@ acpi_status ACPI_INIT_FUNCTION acpi_initialize_objects(u32 flags) · 1 unmodified line
236 return_ACPI_STATUS(status);229 return_ACPI_STATUS(status);
237 }230 }
238 }231 }
232#endif
239 233
240 /*234 /*
241 * Initialize all device/region objects in the namespace. This runs235 * Initialize all device/region objects in the namespace. This runs
drivers/acpi/apei/ghes.c+1−1
@@ -345,7 +345,7 @@ static int __ghes_peek_estatus(struct ghes *ghes, · 344 unmodified lines
345 return -ENOENT;345 return -ENOENT;
346 }346 }
347 347
348 return __ghes_check_estatus(ghes, estatus);348 return 0;
349}349}
350 350
351static int __ghes_read_estatus(struct acpi_hest_generic_status *estatus,351static int __ghes_read_estatus(struct acpi_hest_generic_status *estatus,
drivers/acpi/osl.c+2−2
@@ -301,8 +301,8 @@ static void acpi_unmap(acpi_physical_address pg_off, void __iomem *vaddr) · 300 unmodified lines
301 * During early init (when acpi_permanent_mmap has not been set yet) this301 * During early init (when acpi_permanent_mmap has not been set yet) this
302 * routine simply calls __acpi_map_table() to get the job done.302 * routine simply calls __acpi_map_table() to get the job done.
303 */303 */
304void __iomem *__ref304void __iomem __ref
305acpi_os_map_iomem(acpi_physical_address phys, acpi_size size)305*acpi_os_map_iomem(acpi_physical_address phys, acpi_size size)
306{306{
307 struct acpi_ioremap *map;307 struct acpi_ioremap *map;
308 void __iomem *virt;308 void __iomem *virt;
drivers/acpi/pmic/intel_pmic.c+0−2
@@ -284,8 +284,6 @@ int intel_pmic_install_opregion_handler(struct device *dev, acpi_handle handle, · 283 unmodified lines
284 intel_pmic_thermal_handler,284 intel_pmic_thermal_handler,
285 NULL, opregion);285 NULL, opregion);
286 if (ACPI_FAILURE(status)) {286 if (ACPI_FAILURE(status)) {
287 acpi_remove_address_space_handler(handle, PMIC_POWER_OPREGION_ID,
288 intel_pmic_power_handler);
289 ret = -ENODEV;287 ret = -ENODEV;
290 goto out_remove_power_handler;288 goto out_remove_power_handler;
291 }289 }
drivers/acpi/tables.c+11−10
@@ -490,16 +490,17 @@ static u8 __init acpi_table_checksum(u8 *buffer, u32 length) · 489 unmodified lines
490 490
491/* All but ACPI_SIG_RSDP and ACPI_SIG_FACS: */491/* All but ACPI_SIG_RSDP and ACPI_SIG_FACS: */
492static const char * const table_sigs[] = {492static const char * const table_sigs[] = {
493 ACPI_SIG_BERT, ACPI_SIG_CPEP, ACPI_SIG_ECDT, ACPI_SIG_EINJ,493 ACPI_SIG_BERT, ACPI_SIG_BGRT, ACPI_SIG_CPEP, ACPI_SIG_ECDT,
494 ACPI_SIG_ERST, ACPI_SIG_HEST, ACPI_SIG_MADT, ACPI_SIG_MSCT,494 ACPI_SIG_EINJ, ACPI_SIG_ERST, ACPI_SIG_HEST, ACPI_SIG_MADT,
495 ACPI_SIG_SBST, ACPI_SIG_SLIT, ACPI_SIG_SRAT, ACPI_SIG_ASF,495 ACPI_SIG_MSCT, ACPI_SIG_SBST, ACPI_SIG_SLIT, ACPI_SIG_SRAT,
496 ACPI_SIG_BOOT, ACPI_SIG_DBGP, ACPI_SIG_DMAR, ACPI_SIG_HPET,496 ACPI_SIG_ASF, ACPI_SIG_BOOT, ACPI_SIG_DBGP, ACPI_SIG_DMAR,
497 ACPI_SIG_IBFT, ACPI_SIG_IVRS, ACPI_SIG_MCFG, ACPI_SIG_MCHI,497 ACPI_SIG_HPET, ACPI_SIG_IBFT, ACPI_SIG_IVRS, ACPI_SIG_MCFG,
498 ACPI_SIG_SLIC, ACPI_SIG_SPCR, ACPI_SIG_SPMI, ACPI_SIG_TCPA,498 ACPI_SIG_MCHI, ACPI_SIG_SLIC, ACPI_SIG_SPCR, ACPI_SIG_SPMI,
499 ACPI_SIG_UEFI, ACPI_SIG_WAET, ACPI_SIG_WDAT, ACPI_SIG_WDDT,499 ACPI_SIG_TCPA, ACPI_SIG_UEFI, ACPI_SIG_WAET, ACPI_SIG_WDAT,
500 ACPI_SIG_WDRT, ACPI_SIG_DSDT, ACPI_SIG_FADT, ACPI_SIG_PSDT,500 ACPI_SIG_WDDT, ACPI_SIG_WDRT, ACPI_SIG_DSDT, ACPI_SIG_FADT,
501 ACPI_SIG_RSDT, ACPI_SIG_XSDT, ACPI_SIG_SSDT, ACPI_SIG_IORT,501 ACPI_SIG_PSDT, ACPI_SIG_RSDT, ACPI_SIG_XSDT, ACPI_SIG_SSDT,
502 ACPI_SIG_NFIT, ACPI_SIG_HMAT, ACPI_SIG_PPTT, NULL };502 ACPI_SIG_IORT, ACPI_SIG_NFIT, ACPI_SIG_HMAT, ACPI_SIG_PPTT,
503 NULL };
503 504
504#define ACPI_HEADER_SIZE sizeof(struct acpi_table_header)505#define ACPI_HEADER_SIZE sizeof(struct acpi_table_header)
505 506
include/acpi/acpi_io.h+2−2
@@ -16,8 +16,8 @@ static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys, · 15 unmodified lines
16 16
17extern bool acpi_permanent_mmap;17extern bool acpi_permanent_mmap;
18 18
19void __iomem *__ref19void __iomem __ref
20acpi_os_map_iomem(acpi_physical_address phys, acpi_size size);20*acpi_os_map_iomem(acpi_physical_address phys, acpi_size size);
21void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size);21void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size);
22void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size);22void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size);
23 23
include/acpi/acpixf.h+1−1
@@ -12,7 +12,7 @@ · 11 unmodified lines
12 12
13/* Current ACPICA subsystem version in YYYYMMDD format */13/* Current ACPICA subsystem version in YYYYMMDD format */
14 14
15#define ACPI_CA_VERSION 0x2019050915#define ACPI_CA_VERSION 0x20190703
16 16
17#include <acpi/acconfig.h>17#include <acpi/acconfig.h>
18#include <acpi/actypes.h>18#include <acpi/actypes.h>
tools/power/acpi/.gitignore+4−4
@@ -1,4 +1,4 @@
1acpidbg1/acpidbg
2acpidump2/acpidump
3ec3/ec
4include4/include/

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t