Skip to contentSkip to conversation

ACPICA version 20191018v2

PATCH In review Erik Schmauss 3 participants 21 messages Oct 25, 2019 – Oct 29, 2019

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v2 cover ACPICA version 20191018v2

V2 - fixed build warnings

This patchset contains the linuxized patches for ACPICA version 20191018. There are several debugger changes but they are meant for acpiexec at this time. acpi_load_table definition has been modified and a new acpi_unload_table has been added. These new interfaces can be used as a part of config fs to load and unload tables.

Other than that, Bob has run clang on our code base and removed several compiler warnings.

This patchset is also available here:
https://github.com/SchmErik/linux/tree/v20191018

Bob Moore (5):
ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly
"set but never read" warnings.
ACPICA: Win OSL: Replace get_tick_count with get_tick_count64
ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment"
warnings.
ACPICA: Add new external interface, acpi_unload_table
ACPICA: Update version to 20191018

Erik Schmauss (6):
ACPICA: utilities: add flag to only display data when dumping buffers
ACPICA: debugger: add command to dump all fields of a particular
subtype
ACPICA: debugger: surround field unit output with braces '{'
ACPICA: debugger: add field unit support for acpi_db_get_next_token
ACPICA: acpiexec: initialize all simple types and field units from
user input
ACPICA: debugger: remove leading whitespaces when converting a string
to a buffer

Nikolaus Voss (1):
ACPICA: make acpi_load_table() return table index

 drivers/acpi/acpi_configfs.c    |   2 +-
 drivers/acpi/acpica/acdebug.h   |   2 +
 drivers/acpi/acpica/acstruct.h  |  10 +++
 drivers/acpi/acpica/acutils.h   |   9 +--
 drivers/acpi/acpica/dbconvert.c |   4 ++
 drivers/acpi/acpica/dbdisply.c  |   2 -
 drivers/acpi/acpica/dbfileio.c  |   2 +-
 drivers/acpi/acpica/dbinput.c   |  36 +++++++++-
 drivers/acpi/acpica/dbmethod.c  |   4 ++
 drivers/acpi/acpica/dbnames.c   | 114 ++++++++++++++++++++++++++++++++
 drivers/acpi/acpica/dbobject.c  |   1 -
 drivers/acpi/acpica/dscontrol.c |   2 +-
 drivers/acpi/acpica/dsfield.c   |  12 +---
 drivers/acpi/acpica/evgpeblk.c  |  11 +--
 drivers/acpi/acpica/evgpeinit.c |   3 -
 drivers/acpi/acpica/evmisc.c    |  12 +++-
 drivers/acpi/acpica/evregion.c  |   4 +-
 drivers/acpi/acpica/evrgnini.c  |   1 -
 drivers/acpi/acpica/hwxfsleep.c |   3 +
 drivers/acpi/acpica/nsconvert.c |   2 +-
 drivers/acpi/acpica/nsdump.c    |   6 +-
 drivers/acpi/acpica/nsxfname.c  |   4 +-
 drivers/acpi/acpica/psobject.c  |   7 +-
 drivers/acpi/acpica/rscreate.c  |   3 +
 drivers/acpi/acpica/tbdata.c    |   3 +
 drivers/acpi/acpica/tbxfload.c  |  40 ++++++++++-
 drivers/acpi/acpica/utbuffer.c  |  52 ++++++++-------
 drivers/acpi/acpica/utids.c     |   2 -
 drivers/acpi/acpica/uttrack.c   |   2 +-
 drivers/firmware/efi/efi.c      |   2 +-
 include/acpi/acpixf.h           |   8 ++-
 31 files changed, 291 insertions(+), 74 deletions(-)
Signature · 1 line
2.21.0
#1 lore raw

PATCH v2 1/12 ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly "set but never read" warnings.

From: Bob Moore <[email protected]>

ACPICA commit 1f08279b3eb13f17004159c28c391a390cd68feb

---
 drivers/acpi/acpica/dbdisply.c  |  2 --
 drivers/acpi/acpica/dbinput.c   |  1 -
 drivers/acpi/acpica/dbmethod.c  |  4 ++++
 drivers/acpi/acpica/dbobject.c  |  1 -
 drivers/acpi/acpica/dsfield.c   |  3 ---
 drivers/acpi/acpica/evgpeblk.c  | 11 +++++++----
 drivers/acpi/acpica/evgpeinit.c |  3 ---
 drivers/acpi/acpica/evmisc.c    | 12 ++++++++++--
 drivers/acpi/acpica/evregion.c  |  4 ++--
 drivers/acpi/acpica/evrgnini.c  |  1 -
 drivers/acpi/acpica/nsdump.c    |  4 ++--
 drivers/acpi/acpica/psobject.c  |  5 ++---
 drivers/acpi/acpica/uttrack.c   |  2 +-
 13 files changed, 28 insertions(+), 25 deletions(-)
drivers/acpi/acpica/dbdisply.c +0 -2
index 30ab62b0fec8..f2df416d0d2d 100644
@@ -513,7 +513,6 @@ void acpi_db_display_results(void)
 		return;
 	}
 
-	obj_desc = walk_state->method_desc;
 	node = walk_state->method_node;
 
 	if (walk_state->results) {
@@ -565,7 +564,6 @@ void acpi_db_display_calling_tree(void)
 		return;
 	}
 
-	node = walk_state->method_node;
 	acpi_os_printf("Current Control Method Call Tree\n");
 
 	while (walk_state) {
drivers/acpi/acpica/dbinput.c +0 -1
index 55a7e10998d8..95738313916b 100644
@@ -689,7 +689,6 @@ acpi_db_command_dispatch(char *input_buffer,
 
 	param_count = acpi_db_get_line(input_buffer);
 	command_index = acpi_db_match_command(acpi_gbl_db_args[0]);
-	temp = 0;
 
 	/*
 	 * We don't want to add the !! command to the history buffer. It
drivers/acpi/acpica/dbmethod.c +4 -0
index 76a15b6ffc5d..4e48a7de7413 100644
@@ -321,6 +321,10 @@ acpi_status acpi_db_disassemble_method(char *name)
 	walk_state->parse_flags |= ACPI_PARSE_DISASSEMBLE;
 
 	status = acpi_ps_parse_aml(walk_state);
+	if (ACPI_FAILURE(status)) {
+		return (status);
+	}
+
 	(void)acpi_dm_parse_deferred_ops(op);
 
 	/* Now we can disassemble the method */
drivers/acpi/acpica/dbobject.c +0 -1
index f9fc84bc3e84..4b4c530a0654 100644
@@ -464,7 +464,6 @@ void acpi_db_decode_arguments(struct acpi_walk_state *walk_state)
 	u8 display_args = FALSE;
 
 	node = walk_state->method_node;
-	obj_desc = walk_state->method_desc;
 
 	/* There are no arguments for the module-level code case */
 
drivers/acpi/acpica/dsfield.c +0 -3
index cf4e061bb0f0..9151f00dfbdc 100644
@@ -149,7 +149,6 @@ acpi_ds_create_buffer_field(union acpi_parse_object *op,
 
 	if (walk_state->deferred_node) {
 		node = walk_state->deferred_node;
-		status = AE_OK;
 	} else {
 		/* Execute flag should always be set when this function is entered */
 
@@ -636,8 +635,6 @@ acpi_ds_init_field_objects(union acpi_parse_object *op,
 				}
 
 				/* Name already exists, just ignore this error */
-
-				status = AE_OK;
 			}
 
 			arg->common.node = node;
drivers/acpi/acpica/evgpeblk.c +7 -4
index fb15e9e2373b..9c7adaa7b582 100644
@@ -110,6 +110,9 @@ acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block)
 
 	status =
 	    acpi_hw_disable_gpe_block(gpe_block->xrupt_block, gpe_block, NULL);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
 
 	if (!gpe_block->previous && !gpe_block->next) {
 
@@ -359,10 +362,10 @@ acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,
 	walk_info.gpe_device = gpe_device;
 	walk_info.execute_by_owner_id = FALSE;
 
-	status = acpi_ns_walk_namespace(ACPI_TYPE_METHOD, gpe_device,
-					ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK,
-					acpi_ev_match_gpe_method, NULL,
-					&walk_info, NULL);
+	(void)acpi_ns_walk_namespace(ACPI_TYPE_METHOD, gpe_device,
+				     ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK,
+				     acpi_ev_match_gpe_method, NULL, &walk_info,
+				     NULL);
 
 	/* Return the new block */
 
drivers/acpi/acpica/evgpeinit.c +0 -3
index b04f982e59fa..70d21d5ec5f3 100644
@@ -156,8 +156,6 @@ acpi_status acpi_ev_gpe_initialize(void)
 			 * GPE0 and GPE1 do not have to be contiguous in the GPE number
 			 * space. However, GPE0 always starts at GPE number zero.
 			 */
-			gpe_number_max = acpi_gbl_FADT.gpe1_base +
-			    ((register_count1 * ACPI_GPE_REGISTER_WIDTH) - 1);
 		}
 	}
 
@@ -169,7 +167,6 @@ acpi_status acpi_ev_gpe_initialize(void)
 
 		ACPI_DEBUG_PRINT((ACPI_DB_INIT,
 				  "There are no GPE blocks defined in the FADT\n"));
-		status = AE_OK;
 		goto cleanup;
 	}
 
drivers/acpi/acpica/evmisc.c +10 -2
index d45f7639f7ee..aa98fe07cd1b 100644
@@ -230,11 +230,15 @@ void acpi_ev_terminate(void)
 		/* Disable all GPEs in all GPE blocks */
 
 		status = acpi_ev_walk_gpe_list(acpi_hw_disable_gpe_block, NULL);
+		if (ACPI_FAILURE(status)) {
+			ACPI_EXCEPTION((AE_INFO, status,
+					"Could not disable GPEs in GPE block"));
+		}
 
 		status = acpi_ev_remove_global_lock_handler();
 		if (ACPI_FAILURE(status)) {
-			ACPI_ERROR((AE_INFO,
-				    "Could not remove Global Lock handler"));
+			ACPI_EXCEPTION((AE_INFO, status,
+					"Could not remove Global Lock handler"));
 		}
 
 		acpi_gbl_events_initialized = FALSE;
@@ -250,6 +254,10 @@ void acpi_ev_terminate(void)
 	/* Deallocate all handler objects installed within GPE info structs */
 
 	status = acpi_ev_walk_gpe_list(acpi_ev_delete_gpe_handlers, NULL);
+	if (ACPI_FAILURE(status)) {
+		ACPI_EXCEPTION((AE_INFO, status,
+				"Could not delete GPE handlers"));
+	}
 
 	/* Return to original mode if necessary */
 
drivers/acpi/acpica/evregion.c +2 -2
index 45dc797df05d..1ff126460007 100644
@@ -836,11 +836,11 @@ acpi_ev_orphan_ec_reg_method(struct acpi_namespace_node *ec_device_node)
 	objects[1].type = ACPI_TYPE_INTEGER;
 	objects[1].integer.value = ACPI_REG_CONNECT;
 
-	status = acpi_evaluate_object(reg_method, NULL, &args, NULL);
+	(void)acpi_evaluate_object(reg_method, NULL, &args, NULL);
 
 exit:
 	/* We ignore all errors from above, don't care */
 
-	status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+	(void)acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
 	return_VOID;
 }
drivers/acpi/acpica/evrgnini.c +0 -1
index 0b47bbcd2a23..aee09640d710 100644
@@ -198,7 +198,6 @@ acpi_ev_pci_config_region_setup(acpi_handle handle,
 						 * root bridge. Still need to return a context object
 						 * for the new PCI_Config operation region, however.
 						 */
-						status = AE_OK;
 					} else {
 						ACPI_EXCEPTION((AE_INFO, status,
 								"Could not install PciConfig handler "
drivers/acpi/acpica/nsdump.c +2 -2
index 9731d7cf1b83..1df6d72ae46b 100644
@@ -291,7 +291,7 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
 					for (i = 0;
 					     (i < obj_desc->buffer.length
 					      && i < 12); i++) {
-						acpi_os_printf(" %.2hX",
+						acpi_os_printf(" %2.2X",
 							       obj_desc->buffer.
 							       pointer[i]);
 					}
@@ -404,7 +404,7 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
 		case ACPI_TYPE_LOCAL_BANK_FIELD:
 		case ACPI_TYPE_LOCAL_INDEX_FIELD:
 
-			acpi_os_printf(" Off %.3X Len %.2X Acc %.2hd\n",
+			acpi_os_printf(" Off %.3X Len %.2X Acc %.2X\n",
 				       (obj_desc->common_field.
 					base_byte_offset * 8)
 				       +
drivers/acpi/acpica/psobject.c +2 -3
index 98e5c7400e54..9acf5f7453e9 100644
@@ -480,9 +480,8 @@ acpi_ps_complete_op(struct acpi_walk_state *walk_state,
 			    acpi_ps_get_opcode_info((*op)->common.aml_opcode);
 			walk_state->opcode = (*op)->common.aml_opcode;
 
-			status = walk_state->ascending_callback(walk_state);
-			status =
-			    acpi_ps_next_parse_state(walk_state, *op, status);
+			(void)walk_state->ascending_callback(walk_state);
+			(void)acpi_ps_next_parse_state(walk_state, *op, status);
 
 			status2 = acpi_ps_complete_this_op(walk_state, *op);
 			if (ACPI_FAILURE(status2)) {
drivers/acpi/acpica/uttrack.c +1 -1
index 8052f7ef5025..14de4d15e618 100644
@@ -660,7 +660,7 @@ void acpi_ut_dump_allocations(u32 component, const char *module)
 					case ACPI_DESC_TYPE_PARSER:
 
 						acpi_os_printf
-						    ("AmlOpcode 0x%04hX\n",
+						    ("AmlOpcode 0x%04X\n",
 						     descriptor->op.asl.
 						     aml_opcode);
 						break;
Signature · 1 line
2.21.0
#2 lore raw

PATCH v2 2/12 ACPICA: Win OSL: Replace get_tick_count with get_tick_count64

In reply to Erik Schmauss

From: Bob Moore <[email protected]>

ACPICA commit 7bc16c650317001bc82d4bae227b888a49c51f5e

Avoid possible overflow from get_tick_count. Also, cast math using ACPI_100NSEC_PER_MSEC to uint64.

---
 drivers/acpi/acpica/dscontrol.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/acpica/dscontrol.c +1 -1
index 4847f89c678c..5034fab9cf69 100644
@@ -85,7 +85,7 @@ acpi_ds_exec_begin_control_op(struct acpi_walk_state *walk_state,
 		    walk_state->parser_state.pkg_end;
 		control_state->control.opcode = op->common.aml_opcode;
 		control_state->control.loop_timeout = acpi_os_get_timer() +
-		    (u64)(acpi_gbl_max_loop_iterations * ACPI_100NSEC_PER_SEC);
+		    ((u64)acpi_gbl_max_loop_iterations * ACPI_100NSEC_PER_SEC);
 
 		/* Push the control state on this walk's control stack */
 
Signature · 1 line
2.21.0
#3 lore raw

PATCH v2 3/12 ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment" warnings.

In reply to Erik Schmauss

From: Bob Moore <[email protected]>

ACPICA commit 54b3aefb5de860306951c8c3339b1c37dcdf1b39

---
 drivers/acpi/acpica/hwxfsleep.c | 3 +++
 drivers/acpi/acpica/nsconvert.c | 2 +-
 drivers/acpi/acpica/nsdump.c    | 2 --
 drivers/acpi/acpica/nsxfname.c  | 4 ++--
 drivers/acpi/acpica/psobject.c  | 6 ++----
 drivers/acpi/acpica/rscreate.c  | 3 +++
 drivers/acpi/acpica/tbdata.c    | 3 +++
 drivers/acpi/acpica/utids.c     | 2 --
 8 files changed, 14 insertions(+), 11 deletions(-)
drivers/acpi/acpica/hwxfsleep.c +3 -0
index abbf9702aa7f..2919746c9041 100644
@@ -166,6 +166,9 @@ acpi_status acpi_enter_sleep_state_s4bios(void)
 
 	status = acpi_hw_write_port(acpi_gbl_FADT.smi_command,
 				    (u32)acpi_gbl_FADT.s4_bios_request, 8);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
 
 	do {
 		acpi_os_stall(ACPI_USEC_PER_MSEC);
drivers/acpi/acpica/nsconvert.c +1 -1
index 14cbf63f1991..c86d0770ed6e 100644
@@ -486,5 +486,5 @@ acpi_ns_convert_to_reference(struct acpi_namespace_node *scope,
 error_exit:
 	ACPI_FREE(name);
 	*return_object = new_object;
-	return (AE_OK);
+	return (status);
 }
drivers/acpi/acpica/nsdump.c +0 -2
index 1df6d72ae46b..9ad340f644a1 100644
@@ -589,8 +589,6 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
 
 			goto cleanup;
 		}
-
-		obj_type = ACPI_TYPE_INVALID;	/* Terminate loop after next pass */
 	}
 
 cleanup:
drivers/acpi/acpica/nsxfname.c +2 -2
index 55b4a5b3331f..161e60ddfb69 100644
@@ -425,8 +425,8 @@ acpi_get_object_info(acpi_handle handle,
 	}
 
 	if (cls) {
-		next_id_string = acpi_ns_copy_device_id(&info->class_code,
-							cls, next_id_string);
+		(void)acpi_ns_copy_device_id(&info->class_code,
+					     cls, next_id_string);
 	}
 
 	/* Copy the fixed-length data */
drivers/acpi/acpica/psobject.c +2 -4
index 9acf5f7453e9..ded2779fc8ea 100644
@@ -480,7 +480,7 @@ acpi_ps_complete_op(struct acpi_walk_state *walk_state,
 			    acpi_ps_get_opcode_info((*op)->common.aml_opcode);
 			walk_state->opcode = (*op)->common.aml_opcode;
 
-			(void)walk_state->ascending_callback(walk_state);
+			status = walk_state->ascending_callback(walk_state);
 			(void)acpi_ps_next_parse_state(walk_state, *op, status);
 
 			status2 = acpi_ps_complete_this_op(walk_state, *op);
@@ -489,7 +489,6 @@ acpi_ps_complete_op(struct acpi_walk_state *walk_state,
 			}
 		}
 
-		status = AE_OK;
 		break;
 
 	case AE_CTRL_BREAK:
@@ -511,14 +510,13 @@ acpi_ps_complete_op(struct acpi_walk_state *walk_state,
 		walk_state->opcode = (*op)->common.aml_opcode;
 
 		status = walk_state->ascending_callback(walk_state);
-		status = acpi_ps_next_parse_state(walk_state, *op, status);
+		(void)acpi_ps_next_parse_state(walk_state, *op, status);
 
 		status2 = acpi_ps_complete_this_op(walk_state, *op);
 		if (ACPI_FAILURE(status2)) {
 			return_ACPI_STATUS(status2);
 		}
 
-		status = AE_OK;
 		break;
 
 	case AE_CTRL_TERMINATE:
drivers/acpi/acpica/rscreate.c +3 -0
index 570ea0df8a1b..c659b54985a5 100644
@@ -312,6 +312,9 @@ acpi_rs_create_pci_routing_table(union acpi_operand_object *package_object,
 				path_buffer.pointer = user_prt->source;
 
 				status = acpi_ns_handle_to_pathname((acpi_handle)node, &path_buffer, FALSE);
+				if (ACPI_FAILURE(status)) {
+					return_ACPI_STATUS(status);
+				}
 
 				/* +1 to include null terminator */
 
drivers/acpi/acpica/tbdata.c +3 -0
index 309440010ab2..2cf36451e46f 100644
@@ -933,6 +933,9 @@ acpi_tb_load_table(u32 table_index, struct acpi_namespace_node *parent_node)
 	}
 
 	status = acpi_ns_load_table(table_index, parent_node);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
 
 	/*
 	 * Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is
drivers/acpi/acpica/utids.c +0 -2
index e805abdd95b8..30198c828ab6 100644
@@ -289,9 +289,7 @@ acpi_ut_execute_CID(struct acpi_namespace_node *device_node,
 						  value);
 			length = ACPI_EISAID_STRING_SIZE;
 		} else {	/* ACPI_TYPE_STRING */
-
 			/* Copy the String CID from the returned object */
-
 			strcpy(next_id_string, cid_objects[i]->string.pointer);
 			length = cid_objects[i]->string.length + 1;
 		}
Signature · 1 line
2.21.0
#4 lore raw

PATCH v2 4/12 ACPICA: Add new external interface, acpi_unload_table

In reply to Erik Schmauss

From: Bob Moore <[email protected]>

ACPICA commit c69369cd9cf0134e1aac516e97d612947daa8dc2

Unload a table via the table_index.

---
 drivers/acpi/acpica/tbxfload.c | 32 ++++++++++++++++++++++++++++++++
 include/acpi/acpixf.h          |  3 +++
 2 files changed, 35 insertions(+)
drivers/acpi/acpica/tbxfload.c +32 -0
index 86f1693f6d29..ce86e7945e90 100644
@@ -390,3 +390,35 @@ acpi_status acpi_unload_parent_table(acpi_handle object)
 }
 
 ACPI_EXPORT_SYMBOL(acpi_unload_parent_table)
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_unload_table
+ *
+ * PARAMETERS:  table_index         - Index as returned by acpi_load_table
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Via the table_index representing an SSDT or OEMx table, unloads
+ *              the table and deletes all namespace objects associated with
+ *              that table. Unloading of the DSDT is not allowed.
+ *              Note: Mainly intended to support hotplug removal of SSDTs.
+ *
+ ******************************************************************************/
+acpi_status acpi_unload_table(u32 table_index)
+{
+	acpi_status status;
+
+	ACPI_FUNCTION_TRACE(acpi_unload_table);
+
+	if (table_index == 1) {
+
+		/* table_index==1 means DSDT is the owner. DSDT cannot be unloaded */
+
+		return_ACPI_STATUS(AE_TYPE);
+	}
+
+	status = acpi_tb_unload_table(table_index);
+	return_ACPI_STATUS(status);
+}
+
+ACPI_EXPORT_SYMBOL(acpi_unload_table)
include/acpi/acpixf.h +3 -0
index e5e041413581..109b2f14b6c6 100644
@@ -460,6 +460,9 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_load_table(struct acpi_table_header *table))
 
+ACPI_EXTERNAL_RETURN_STATUS(acpi_status
+			    acpi_unload_table(u32 table_index))
+
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_unload_parent_table(acpi_handle object))
 
Signature · 1 line
2.21.0
#5 lore raw

PATCH v2 5/12 ACPICA: make acpi_load_table() return table index

In reply to Erik Schmauss

From: Nikolaus Voss <[email protected]>

ACPICA commit d1716a829d19be23277d9157c575a03b9abb7457

For unloading an ACPI table, it is necessary to provide the index of the table. The method intended for dynamically loading or hotplug addition of tables, acpi_load_table(), should provide this information via an optional pointer to the loaded table index.

This patch fixes the table unload function of acpi_configfs.

Fixes d06c47e3dd07f ("ACPI: configfs: Resolve objects on host-directed table loads")
---
 drivers/acpi/acpi_configfs.c   | 2 +-
 drivers/acpi/acpica/dbfileio.c | 2 +-
 drivers/acpi/acpica/tbxfload.c | 8 +++++++-
 drivers/firmware/efi/efi.c     | 2 +-
 include/acpi/acpixf.h          | 3 ++-
 5 files changed, 12 insertions(+), 5 deletions(-)
drivers/acpi/acpi_configfs.c +1 -1
index 57d9d574d4dd..77f81242a28e 100644
@@ -53,7 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
 	if (!table->header)
 		return -ENOMEM;
 
-	ret = acpi_load_table(table->header);
+	ret = acpi_load_table(table->header, &table->index);
 	if (ret) {
 		kfree(table->header);
 		table->header = NULL;
drivers/acpi/acpica/dbfileio.c +1 -1
index c6e25734dc5c..e1b6e54a96ac 100644
@@ -93,7 +93,7 @@ acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
 	while (table_list_head) {
 		table = table_list_head->table;
 
-		status = acpi_load_table(table);
+		status = acpi_load_table(table, NULL);
 		if (ACPI_FAILURE(status)) {
 			if (status == AE_ALREADY_EXISTS) {
 				acpi_os_printf
drivers/acpi/acpica/tbxfload.c +7 -1
index ce86e7945e90..0782acf85722 100644
@@ -268,6 +268,8 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *
  * PARAMETERS:  table               - Pointer to a buffer containing the ACPI
  *                                    table to be loaded.
+ *              table_idx           - Pointer to a u32 for storing the table
+ *                                    index, might be NULL
  *
  * RETURN:      Status
  *
@@ -278,7 +280,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *              to ensure that the table is not deleted or unmapped.
  *
  ******************************************************************************/
-acpi_status acpi_load_table(struct acpi_table_header *table)
+acpi_status acpi_load_table(struct acpi_table_header *table, u32 *table_idx)
 {
 	acpi_status status;
 	u32 table_index;
@@ -297,6 +299,10 @@ acpi_status acpi_load_table(struct acpi_table_header *table)
 	status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),
 						ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,
 						FALSE, &table_index);
+	if (table_idx) {
+		*table_idx = table_index;
+	}
+
 	if (ACPI_SUCCESS(status)) {
 
 		/* Complete the initialization/resolution of new objects */
drivers/firmware/efi/efi.c +1 -1
index 69f00f7453a3..0d65cb21519d 100644
@@ -296,7 +296,7 @@ static __init int efivar_ssdt_load(void)
 			goto free_data;
 		}
 
-		ret = acpi_load_table(data);
+		ret = acpi_load_table(data, NULL);
 		if (ret) {
 			pr_err("failed to load table: %d\n", ret);
 			goto free_data;
include/acpi/acpixf.h +2 -1
index 109b2f14b6c6..867170049b07 100644
@@ -458,7 +458,8 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION
 					       u8 physical))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
-			    acpi_load_table(struct acpi_table_header *table))
+			    acpi_load_table(struct acpi_table_header *table,
+					    u32 *table_idx))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_unload_table(u32 table_index))
Signature · 1 line
2.21.0
#6 lore raw

Re: [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index

Quoted 9 lines · Erik Schmauss

From: Nikolaus Voss <[email protected]>

ACPICA commit d1716a829d19be23277d9157c575a03b9abb7457

For unloading an ACPI table, it is necessary to provide the index of the table. The method intended for dynamically loading or hotplug addition of tables, acpi_load_table(), should provide this information via an optional pointer to the loaded table index.

Quoted 4 lines

This patch fixes the table unload function of acpi_configfs.

Fixes d06c47e3dd07f ("ACPI: configfs: Resolve objects on host-directed table loads")

So, as far as I understand and Rafael mentioned ACPICA includes only changes related to itself. It means that for configfs.c we may need a modified patch. Anyway, I will test this to be sure we have a working base for further improvements.

Quoted 102 lines
---
 drivers/acpi/acpi_configfs.c   | 2 +-
 drivers/acpi/acpica/dbfileio.c | 2 +-
 drivers/acpi/acpica/tbxfload.c | 8 +++++++-
 drivers/firmware/efi/efi.c     | 2 +-
 include/acpi/acpixf.h          | 3 ++-
 5 files changed, 12 insertions(+), 5 deletions(-)
drivers/acpi/acpi_configfs.c +1 -1
index 57d9d574d4dd..77f81242a28e 100644
@@ -53,7 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
 	if (!table->header)
 		return -ENOMEM;
 
-	ret = acpi_load_table(table->header);
+	ret = acpi_load_table(table->header, &table->index);
 	if (ret) {
 		kfree(table->header);
 		table->header = NULL;
drivers/acpi/acpica/dbfileio.c +1 -1
index c6e25734dc5c..e1b6e54a96ac 100644
@@ -93,7 +93,7 @@ acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
 	while (table_list_head) {
 		table = table_list_head->table;
 
-		status = acpi_load_table(table);
+		status = acpi_load_table(table, NULL);
 		if (ACPI_FAILURE(status)) {
 			if (status == AE_ALREADY_EXISTS) {
 				acpi_os_printf
drivers/acpi/acpica/tbxfload.c +7 -1
index ce86e7945e90..0782acf85722 100644
@@ -268,6 +268,8 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *
  * PARAMETERS:  table               - Pointer to a buffer containing the ACPI
  *                                    table to be loaded.
+ *              table_idx           - Pointer to a u32 for storing the table
+ *                                    index, might be NULL
  *
  * RETURN:      Status
  *
@@ -278,7 +280,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *              to ensure that the table is not deleted or unmapped.
  *
  ******************************************************************************/
-acpi_status acpi_load_table(struct acpi_table_header *table)
+acpi_status acpi_load_table(struct acpi_table_header *table, u32 *table_idx)
 {
 	acpi_status status;
 	u32 table_index;
@@ -297,6 +299,10 @@ acpi_status acpi_load_table(struct acpi_table_header *table)
 	status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),
 						ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,
 						FALSE, &table_index);
+	if (table_idx) {
+		*table_idx = table_index;
+	}
+
 	if (ACPI_SUCCESS(status)) {
 
 		/* Complete the initialization/resolution of new objects */
drivers/firmware/efi/efi.c +1 -1
index 69f00f7453a3..0d65cb21519d 100644
@@ -296,7 +296,7 @@ static __init int efivar_ssdt_load(void)
 			goto free_data;
 		}
 
-		ret = acpi_load_table(data);
+		ret = acpi_load_table(data, NULL);
 		if (ret) {
 			pr_err("failed to load table: %d\n", ret);
 			goto free_data;
include/acpi/acpixf.h +2 -1
index 109b2f14b6c6..867170049b07 100644
@@ -458,7 +458,8 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION
 					       u8 physical))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
-			    acpi_load_table(struct acpi_table_header *table))
+			    acpi_load_table(struct acpi_table_header *table,
+					    u32 *table_idx))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_unload_table(u32 table_index))
Signature · 1 line
2.21.0
Signature · 2 lines
With Best Regards,
Andy Shevchenko
#7 lore raw

RE: [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index

Quoted 24 lines

-----Original Message-----
From: Andy Shevchenko <[email protected]>
Sent: Saturday, October 26, 2019 7:45 AM
To: Schmauss, Erik <[email protected]>
Cc: Rafael J . Wysocki <[email protected]>; [email protected]; Nikolaus Voss <[email protected]>; Moore, Robert <[email protected]>
Subject: Re: [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index

Quoted 11 lines · Erik Schmauss

From: Nikolaus Voss <[email protected]>

ACPICA commit d1716a829d19be23277d9157c575a03b9abb7457

For unloading an ACPI table, it is necessary to provide the index of the table. The method intended for dynamically loading or hotplug addition of tables, acpi_load_table(), should provide this information via an optional pointer to the loaded table index.

This patch fixes the table unload function of acpi_configfs.

Quoted 8 lines
Quoted 3 lines
Fixes d06c47e3dd07f ("ACPI: configfs: Resolve objects on

host-directed table loads")

So, as far as I understand and Rafael mentioned ACPICA includes only changes related to itself. It means that for configfs.c we may need a modified patch. Anyway, I will test this to be sure we have a working base for further improvements.

These contain changes from his original patch in configfs. For simplicity, we just held on to his patch until the ACPICA release.

Let me know if there is anything else that needs to be added to this patch.

Thanks,
Erik

Quoted 121 lines

drivers/acpi/acpi_configfs.c static ssize_t acpi_table_aml_write(struct config_item

Quoted 19 lines
---
 drivers/acpi/acpi_configfs.c   | 2 +-
 drivers/acpi/acpica/dbfileio.c | 2 +-  drivers/acpi/acpica/tbxfload.c
| 8 +++++++-
 drivers/firmware/efi/efi.c     | 2 +-
 include/acpi/acpixf.h          | 3 ++-
 5 files changed, 12 insertions(+), 5 deletions(-)
(quoted diff) +0 -0

b/drivers/acpi/acpi_configfs.c index 57d9d574d4dd..77f81242a28e 100644

drivers/acpi/acpi_configfs.c +0 -0
@@ -53,7 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item

*cfg,

drivers/acpi/acpica/dbfileio.c acpi_status acpi_db_load_tables(struct

Quoted 14 lines
drivers/acpi/acpi_configfs.c +1 -1
 	if (!table->header)
 		return -ENOMEM;
 
-	ret = acpi_load_table(table->header);
+	ret = acpi_load_table(table->header, &table->index);
 	if (ret) {
 		kfree(table->header);
 		table->header = NULL;
(quoted diff) +0 -0

b/drivers/acpi/acpica/dbfileio.c index c6e25734dc5c..e1b6e54a96ac 100644

drivers/acpi/acpica/dbfileio.c +0 -0
@@ -93,7 +93,7 @@ acpi_status acpi_db_load_tables(struct

acpi_new_table_desc *list_head)

Quoted 23 lines
drivers/acpi/acpica/dbfileio.c +1 -1
 	while (table_list_head) {
 		table = table_list_head->table;
 
-		status = acpi_load_table(table);
+		status = acpi_load_table(table, NULL);
 		if (ACPI_FAILURE(status)) {
 			if (status == AE_ALREADY_EXISTS) {
 				acpi_os_printf
(quoted diff) +0 -0

b/drivers/acpi/acpica/tbxfload.c index ce86e7945e90..0782acf85722 100644

drivers/acpi/acpica/tbxfload.c +2 -0
@@ -268,6 +268,8 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *
  * PARAMETERS:  table               - Pointer to a buffer containing the ACPI
  *                                    table to be loaded.
+ *              table_idx           - Pointer to a u32 for storing the table
+ *                                    index, might be NULL
  *
  * RETURN:      Status
  *

drivers/acpi/acpica/tbxfload.c ACPI_EXPORT_SYMBOL_INIT(acpi_install_table) · line 283

Quoted 4 lines
drivers/acpi/acpica/tbxfload.c +0 -0
@@ -278,7 +280,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *              to ensure that the table is not deleted or unmapped.
  *
 
 

*******************************************************************
***

drivers/acpi/acpica/tbxfload.c acpi_status acpi_load_table(struct

Quoted 8 lines
drivers/acpi/acpica/tbxfload.c +2 -0
 ********/ -acpi_status acpi_load_table(struct acpi_table_header
 *table)
+acpi_status acpi_load_table(struct acpi_table_header *table, u32
+*table_idx)
 {
 	acpi_status status;
 	u32 table_index;
@@ -297,6 +299,10 @@ acpi_status acpi_load_table(struct

acpi_table_header *table)

drivers/acpi/acpica/tbxfload.c acpi_status acpi_load_table(struct · line 299

Quoted 1 line
drivers/acpi/acpica/tbxfload.c +0 -0
 	status =

acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),

Quoted 1 line

ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,

include/acpi/acpixf.h ACPI_EXTERNAL_RETURN_STATUS(acpi_status

Quoted 26 lines
drivers/acpi/acpica/tbxfload.c +4 -1
 						FALSE, &table_index);
+	if (table_idx) {
+		*table_idx = table_index;
+	}
+
 	if (ACPI_SUCCESS(status)) {
 
 		/* Complete the initialization/resolution of new objects */ diff
--git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index

69f00f7453a3..0d65cb21519d 100644

drivers/firmware/efi/efi.c +1 -1
@@ -296,7 +296,7 @@ static __init int efivar_ssdt_load(void)
 			goto free_data;
 		}
 
-		ret = acpi_load_table(data);
+		ret = acpi_load_table(data, NULL);
 		if (ret) {
 			pr_err("failed to load table: %d\n", ret);
 			goto free_data;
include/acpi/acpixf.h index renamed from include/acpi/acpixf.h +0 -0

109b2f14b6c6..867170049b07 100644

include/acpi/acpixf.h +0 -0
@@ -458,7 +458,8 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status

ACPI_INIT_FUNCTION

Quoted 10 lines
include/acpi/acpixf.h +2 -2
 					       u8 physical))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
-			    acpi_load_table(struct acpi_table_header *table))
+			    acpi_load_table(struct acpi_table_header *table,
+					    u32 *table_idx))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_unload_table(u32 table_index))
--
Quoted 2 lines

2.21.0

--
With Best Regards,
Andy Shevchenko

Tested-by on v2 5/12
#8 lore raw

Re: [PATCH v2 05/12] ACPICA: make acpi_load_table() return table index

In reply to Erik Schmauss
Quoted 10 lines · Erik Schmauss

From: Nikolaus Voss <[email protected]>

ACPICA commit d1716a829d19be23277d9157c575a03b9abb7457

For unloading an ACPI table, it is necessary to provide the index of the table. The method intended for dynamically loading or hotplug addition of tables, acpi_load_table(), should provide this information via an optional pointer to the loaded table index.

This patch fixes the table unload function of acpi_configfs.

I have tested this one as is and with the following change

drivers/acpi/acpi_configfs.c +1 -1
@@ -223,7 +223,7 @@ static void acpi_table_drop_item(struct config_group *group,
        struct acpi_table *table = container_of(cfg, struct acpi_table, cfg);
 
        ACPI_INFO(("Host-directed Dynamic ACPI Table Unload"));
-       acpi_tb_unload_table(table->index);
+       acpi_unload_table(table->index);
 }
 
 

...and it works in both cases

Quoted 105 lines
Fixes d06c47e3dd07f ("ACPI: configfs: Resolve objects on host-directed table loads")
---
 drivers/acpi/acpi_configfs.c   | 2 +-
 drivers/acpi/acpica/dbfileio.c | 2 +-
 drivers/acpi/acpica/tbxfload.c | 8 +++++++-
 drivers/firmware/efi/efi.c     | 2 +-
 include/acpi/acpixf.h          | 3 ++-
 5 files changed, 12 insertions(+), 5 deletions(-)
drivers/acpi/acpi_configfs.c +1 -1
index 57d9d574d4dd..77f81242a28e 100644
@@ -53,7 +53,7 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
 	if (!table->header)
 		return -ENOMEM;
 
-	ret = acpi_load_table(table->header);
+	ret = acpi_load_table(table->header, &table->index);
 	if (ret) {
 		kfree(table->header);
 		table->header = NULL;
drivers/acpi/acpica/dbfileio.c +1 -1
index c6e25734dc5c..e1b6e54a96ac 100644
@@ -93,7 +93,7 @@ acpi_status acpi_db_load_tables(struct acpi_new_table_desc *list_head)
 	while (table_list_head) {
 		table = table_list_head->table;
 
-		status = acpi_load_table(table);
+		status = acpi_load_table(table, NULL);
 		if (ACPI_FAILURE(status)) {
 			if (status == AE_ALREADY_EXISTS) {
 				acpi_os_printf
drivers/acpi/acpica/tbxfload.c +7 -1
index ce86e7945e90..0782acf85722 100644
@@ -268,6 +268,8 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *
  * PARAMETERS:  table               - Pointer to a buffer containing the ACPI
  *                                    table to be loaded.
+ *              table_idx           - Pointer to a u32 for storing the table
+ *                                    index, might be NULL
  *
  * RETURN:      Status
  *
@@ -278,7 +280,7 @@ ACPI_EXPORT_SYMBOL_INIT(acpi_install_table)
  *              to ensure that the table is not deleted or unmapped.
  *
  ******************************************************************************/
-acpi_status acpi_load_table(struct acpi_table_header *table)
+acpi_status acpi_load_table(struct acpi_table_header *table, u32 *table_idx)
 {
 	acpi_status status;
 	u32 table_index;
@@ -297,6 +299,10 @@ acpi_status acpi_load_table(struct acpi_table_header *table)
 	status = acpi_tb_install_and_load_table(ACPI_PTR_TO_PHYSADDR(table),
 						ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL,
 						FALSE, &table_index);
+	if (table_idx) {
+		*table_idx = table_index;
+	}
+
 	if (ACPI_SUCCESS(status)) {
 
 		/* Complete the initialization/resolution of new objects */
drivers/firmware/efi/efi.c +1 -1
index 69f00f7453a3..0d65cb21519d 100644
@@ -296,7 +296,7 @@ static __init int efivar_ssdt_load(void)
 			goto free_data;
 		}
 
-		ret = acpi_load_table(data);
+		ret = acpi_load_table(data, NULL);
 		if (ret) {
 			pr_err("failed to load table: %d\n", ret);
 			goto free_data;
include/acpi/acpixf.h +2 -1
index 109b2f14b6c6..867170049b07 100644
@@ -458,7 +458,8 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION
 					       u8 physical))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
-			    acpi_load_table(struct acpi_table_header *table))
+			    acpi_load_table(struct acpi_table_header *table,
+					    u32 *table_idx))
 
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
 			    acpi_unload_table(u32 table_index))
Signature · 1 line
2.21.0
Signature · 2 lines
With Best Regards,
Andy Shevchenko
#9 lore raw

PATCH v2 6/12 ACPICA: utilities: add flag to only display data when dumping buffers

In reply to Erik Schmauss

ACPICA commit fb18935fcf940c5854a055975c6b9ee31f0e1a5a

---
 drivers/acpi/acpica/acutils.h  |  9 +++---
 drivers/acpi/acpica/utbuffer.c | 52 +++++++++++++++++++---------------
 2 files changed, 34 insertions(+), 27 deletions(-)
drivers/acpi/acpica/acutils.h +5 -4
index 601808be86d1..5fb50634e08e 100644
@@ -142,10 +142,11 @@ struct acpi_pkg_info {
 
 /* acpi_ut_dump_buffer */
 
-#define DB_BYTE_DISPLAY     1
-#define DB_WORD_DISPLAY     2
-#define DB_DWORD_DISPLAY    4
-#define DB_QWORD_DISPLAY    8
+#define DB_BYTE_DISPLAY      0x01
+#define DB_WORD_DISPLAY      0x02
+#define DB_DWORD_DISPLAY     0x04
+#define DB_QWORD_DISPLAY     0x08
+#define DB_DISPLAY_DATA_ONLY 0x10
 
 /*
  * utascii - ASCII utilities
drivers/acpi/acpica/utbuffer.c +29 -23

75 lines not on this page · raw message

Signature · 1 line
2.21.0
#10 lore raw

PATCH v2 7/12 ACPICA: debugger: add command to dump all fields of a particular subtype

In reply to Erik Schmauss

In acpiexec, this can be invoked by typing "fields" followed by a number representing the address space ID of that field.

---
 drivers/acpi/acpica/acdebug.h  |   2 +
 drivers/acpi/acpica/acstruct.h |  10 +++
 drivers/acpi/acpica/dbinput.c  |  20 ++++++
 drivers/acpi/acpica/dbnames.c  | 109 +++++++++++++++++++++++++++++++++
 4 files changed, 141 insertions(+)
drivers/acpi/acpica/acdebug.h +2 -0
index 32f2e38c7570..694cf206fa9a 100644
@@ -148,6 +148,8 @@ void acpi_db_find_references(char *object_arg);
 
 void acpi_db_get_bus_info(void);
 
+acpi_status acpi_db_display_fields(u32 address_space_id);
+
 /*
  * dbdisply - debug display commands
  */
drivers/acpi/acpica/acstruct.h +10 -0
index 218ff4c8b817..2043dff370b1 100644
@@ -192,6 +192,16 @@ struct acpi_device_walk_info {
 	u32 num_INI;
 };
 
+/* Info used by Acpi  acpi_db_display_fields */
+
+struct acpi_region_walk_info {
+	u32 debug_level;
+	u32 count;
+	acpi_owner_id owner_id;
+	u8 display_type;
+	u32 address_space_id;
+};
+
 /* TBD: [Restructure] Merge with struct above */
 
 struct acpi_walk_info {
drivers/acpi/acpica/dbinput.c +20 -0
index 95738313916b..44d6d7246e6e 100644
@@ -50,6 +50,7 @@ enum acpi_ex_debugger_commands {
 	CMD_EVALUATE,
 	CMD_EXECUTE,
 	CMD_EXIT,
+	CMD_FIELDS,
 	CMD_FIND,
 	CMD_GO,
 	CMD_HANDLERS,
@@ -127,6 +128,7 @@ static const struct acpi_db_command_info acpi_gbl_db_commands[] = {
 	{"EVALUATE", 1},
 	{"EXECUTE", 1},
 	{"EXIT", 0},
+	{"FIELDS", 1},
 	{"FIND", 1},
 	{"GO", 0},
 	{"HANDLERS", 0},
@@ -200,6 +202,8 @@ static const struct acpi_db_command_help acpi_gbl_db_command_help[] = {
 	 "Find ACPI name(s) with wildcards\n"},
 	{1, "  Integrity", "Validate namespace integrity\n"},
 	{1, "  Methods", "Display list of loaded control methods\n"},
+	{1, "  Fields <AddressSpaceId>",
+	 "Display list of loaded field units by space ID\n"},
 	{1, "  Namespace [Object] [Depth]",
 	 "Display loaded namespace tree/subtree\n"},
 	{1, "  Notify <Object> <Value>", "Send a notification on Object\n"},
@@ -674,6 +678,7 @@ acpi_db_command_dispatch(char *input_buffer,
 			 union acpi_parse_object *op)
 {
 	u32 temp;
+	u64 temp64;
 	u32 command_index;
 	u32 param_count;
 	char *command_line;
@@ -789,6 +794,21 @@ acpi_db_command_dispatch(char *input_buffer,
 		status = acpi_db_find_name_in_namespace(acpi_gbl_db_args[1]);
 		break;
 
+	case CMD_FIELDS:
+
+		status = acpi_ut_strtoul64(acpi_gbl_db_args[1], &temp64);
+
+		if (ACPI_FAILURE(status)
+		    || temp64 >= ACPI_NUM_PREDEFINED_REGIONS) {
+			acpi_os_printf
+			    ("Invalid adress space ID: must be between 0 and %u inclusive\n",
+			     ACPI_NUM_PREDEFINED_REGIONS - 1);
+			return (AE_OK);
+		}
+
+		status = acpi_db_display_fields((u32)temp64);
+		break;
+
 	case CMD_GO:
 
 		acpi_gbl_cm_single_step = FALSE;
drivers/acpi/acpica/dbnames.c +109 -0

127 lines not on this page · raw message

Signature · 1 line
2.21.0
#11 lore raw

PATCH v2 8/12 ACPICA: debugger: surround field unit output with braces '{'

In reply to Erik Schmauss

ACPICA commit 76ca57291d007d33087982a4b28cd1ee9bcd37a6

This helps differentiate the type of named objects between field units and buffers. In other words, without this symbol, it would be difficult to tell whether a particular named object is a buffer or a field unit.

---
 drivers/acpi/acpica/dbnames.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/acpi/acpica/dbnames.c +6 -1
index bce2cfb17356..3615e1a6efd8 100644
@@ -552,6 +552,11 @@ acpi_db_walk_for_fields(acpi_handle obj_handle,
 	buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
 	acpi_evaluate_object(obj_handle, NULL, NULL, &buffer);
 
+	/*
+	 * Since this is a field unit, surround the output in braces
+	 */
+	acpi_os_printf("{");
+
 	ret_value = (union acpi_object *)buffer.pointer;
 	switch (ret_value->type) {
 	case ACPI_TYPE_INTEGER:
@@ -571,7 +576,7 @@ acpi_db_walk_for_fields(acpi_handle obj_handle,
 
 		break;
 	}
-	acpi_os_printf("\n");
+	acpi_os_printf("}\n");
 
 	ACPI_FREE(buffer.pointer);
 
Signature · 1 line
2.21.0
#12 lore raw

PATCH v2 9/12 ACPICA: debugger: add field unit support for acpi_db_get_next_token

In reply to Erik Schmauss

ACPICA commit d509afa88e9415f13a3283c38ce9ee034634ae24

Since field unit data output from the debugger are now surrounded by braces '{', support has been added to acpi_db_get_next_token to recognize strings beginning with this character as a ACPI_TYPE_FIELD_UNIT.

---
 drivers/acpi/acpica/dbinput.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
drivers/acpi/acpica/dbinput.c +15 -0
index 44d6d7246e6e..e1632b340182 100644
@@ -511,6 +511,21 @@ char *acpi_db_get_next_token(char *string,
 		}
 		break;
 
+	case '{':
+
+		/* This is the start of a field unit, scan until closing brace */
+
+		string++;
+		start = string;
+		type = ACPI_TYPE_FIELD_UNIT;
+
+		/* Find end of buffer */
+
+		while (*string && (*string != '}')) {
+			string++;
+		}
+		break;
+
 	case '[':
 
 		/* This is the start of a package, scan until closing bracket */
Signature · 1 line
2.21.0
#13 lore raw

PATCH v2 10/12 ACPICA: acpiexec: initialize all simple types and field units from user input

In reply to Erik Schmauss

ACPICA commit 367b363edc5fa1f93bbc14e4a1e05f34fef765a2

acpiexec allows a user to provide a file that indicates values to initialize named objects during table load with the -fi option. This can provide more accurate simulation by setting named objects to values found during OS runtime.

Previously, this option only supported integer objects. This change adds user initialization support for field units, strings, buffers, and packages.

---
 drivers/acpi/acpica/dsfield.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/acpi/acpica/dsfield.c +3 -6
index 9151f00dfbdc..faa38a22263a 100644
@@ -263,7 +263,6 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,
 	union acpi_parse_object *child;
 
 #ifdef ACPI_EXEC_APP
-	u64 value = 0;
 	union acpi_operand_object *result_desc;
 	union acpi_operand_object *obj_desc;
 	char *name_path;
@@ -405,19 +404,17 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,
 					name_path =
 					    acpi_ns_get_external_pathname(info->
 									  field_node);
-					obj_desc =
-					    acpi_ut_create_integer_object
-					    (value);
 					if (ACPI_SUCCESS
 					    (ae_lookup_init_file_entry
-					     (name_path, &value))) {
+					     (name_path, &obj_desc))) {
 						acpi_ex_write_data_to_field
 						    (obj_desc,
 						     acpi_ns_get_attached_object
 						     (info->field_node),
 						     &result_desc);
+						acpi_ut_remove_reference
+						    (obj_desc);
 					}
-					acpi_ut_remove_reference(obj_desc);
 					ACPI_FREE(name_path);
 #endif
 				}
Signature · 1 line
2.21.0
#14 lore raw

PATCH v2 11/12 ACPICA: debugger: remove leading whitespaces when converting a string to a buffer

In reply to Erik Schmauss

ACPICA commit 1b7228072f254a5b02625586ff7d561757b7fc2d

By removing leading whitespaces, the conversion computes the correct number of elements in a given buffer or field encoding that contains leading whitespaces.

---
 drivers/acpi/acpica/dbconvert.c | 4 ++++
 1 file changed, 4 insertions(+)
drivers/acpi/acpica/dbconvert.c +4 -0
index 9fd9a98a9cbe..2b84ac093698 100644
@@ -106,6 +106,10 @@ acpi_db_convert_to_buffer(char *string, union acpi_object *object)
 	u8 *buffer;
 	acpi_status status;
 
+	/* Skip all preceding white space */
+
+	acpi_ut_remove_whitespace(&string);
+
 	/* Generate the final buffer length */
 
 	for (i = 0, length = 0; string[i];) {
Signature · 1 line
2.21.0
#15 lore raw

PATCH v2 12/12 ACPICA: Update version to 20191018

In reply to Erik Schmauss

From: Bob Moore <[email protected]>

ACPICA commit 3d70fd4894824ed1e685f2d059ca22ccd9ac6163

Version 20191018.

---
 include/acpi/acpixf.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/acpi/acpixf.h +1 -1
index 867170049b07..18790b9e16b5 100644
@@ -12,7 +12,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20190816
+#define ACPI_CA_VERSION                 0x20191018
 
 #include <acpi/acconfig.h>
 #include <acpi/actypes.h>
Signature · 1 line
2.21.0
#16 lore raw
In reply to Erik Schmauss
Quoted 8 lines · Erik Schmauss

V2 - fixed build warnings

This patchset contains the linuxized patches for ACPICA version 20191018. There are several debugger changes but they are meant for acpiexec at this time. acpi_load_table definition has been modified and a new acpi_unload_table has been added. These new interfaces can be used as a part of config fs to load and unload tables.

Quoted 5 lines

Other than that, Bob has run clang on our code base and removed several compiler warnings.

This patchset is also available here:
https://github.com/SchmErik/linux/tree/v20191018

Thanks!
I'll be able to test this next week.

Quoted 60 lines

Bob Moore (5):
ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly
"set but never read" warnings.
ACPICA: Win OSL: Replace get_tick_count with get_tick_count64
ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment"
warnings.
ACPICA: Add new external interface, acpi_unload_table
ACPICA: Update version to 20191018

Erik Schmauss (6):
ACPICA: utilities: add flag to only display data when dumping buffers
ACPICA: debugger: add command to dump all fields of a particular
subtype
ACPICA: debugger: surround field unit output with braces '{'
ACPICA: debugger: add field unit support for acpi_db_get_next_token
ACPICA: acpiexec: initialize all simple types and field units from
user input
ACPICA: debugger: remove leading whitespaces when converting a string
to a buffer

Nikolaus Voss (1):
ACPICA: make acpi_load_table() return table index

 drivers/acpi/acpi_configfs.c    |   2 +-
 drivers/acpi/acpica/acdebug.h   |   2 +
 drivers/acpi/acpica/acstruct.h  |  10 +++
 drivers/acpi/acpica/acutils.h   |   9 +--
 drivers/acpi/acpica/dbconvert.c |   4 ++
 drivers/acpi/acpica/dbdisply.c  |   2 -
 drivers/acpi/acpica/dbfileio.c  |   2 +-
 drivers/acpi/acpica/dbinput.c   |  36 +++++++++-
 drivers/acpi/acpica/dbmethod.c  |   4 ++
 drivers/acpi/acpica/dbnames.c   | 114 ++++++++++++++++++++++++++++++++
 drivers/acpi/acpica/dbobject.c  |   1 -
 drivers/acpi/acpica/dscontrol.c |   2 +-
 drivers/acpi/acpica/dsfield.c   |  12 +---
 drivers/acpi/acpica/evgpeblk.c  |  11 +--
 drivers/acpi/acpica/evgpeinit.c |   3 -
 drivers/acpi/acpica/evmisc.c    |  12 +++-
 drivers/acpi/acpica/evregion.c  |   4 +-
 drivers/acpi/acpica/evrgnini.c  |   1 -
 drivers/acpi/acpica/hwxfsleep.c |   3 +
 drivers/acpi/acpica/nsconvert.c |   2 +-
 drivers/acpi/acpica/nsdump.c    |   6 +-
 drivers/acpi/acpica/nsxfname.c  |   4 +-
 drivers/acpi/acpica/psobject.c  |   7 +-
 drivers/acpi/acpica/rscreate.c  |   3 +
 drivers/acpi/acpica/tbdata.c    |   3 +
 drivers/acpi/acpica/tbxfload.c  |  40 ++++++++++-
 drivers/acpi/acpica/utbuffer.c  |  52 ++++++++-------
 drivers/acpi/acpica/utids.c     |   2 -
 drivers/acpi/acpica/uttrack.c   |   2 +-
 drivers/firmware/efi/efi.c      |   2 +-
 include/acpi/acpixf.h           |   8 ++-
 31 files changed, 291 insertions(+), 74 deletions(-)
Signature · 1 line
2.21.0
Signature · 2 lines
With Best Regards,
Andy Shevchenko
#17 lore raw
In reply to Erik Schmauss
Quoted 8 lines · Erik Schmauss

V2 - fixed build warnings

This patchset contains the linuxized patches for ACPICA version 20191018. There are several debugger changes but they are meant for acpiexec at this time. acpi_load_table definition has been modified and a new acpi_unload_table has been added. These new interfaces can be used as a part of config fs to load and unload tables.

Quoted 6 lines

Other than that, Bob has run clang on our code base and removed several compiler warnings.

This patchset is also available here:
https://github.com/SchmErik/linux/tree/v20191018

I have tested this series and it works in my case. Thank you!

P.S. Rafael, I think we can also append the oneliner I have added in the comment to the patch 5.

Quoted 60 lines

Bob Moore (5):
ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly
"set but never read" warnings.
ACPICA: Win OSL: Replace get_tick_count with get_tick_count64
ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment"
warnings.
ACPICA: Add new external interface, acpi_unload_table
ACPICA: Update version to 20191018

Erik Schmauss (6):
ACPICA: utilities: add flag to only display data when dumping buffers
ACPICA: debugger: add command to dump all fields of a particular
subtype
ACPICA: debugger: surround field unit output with braces '{'
ACPICA: debugger: add field unit support for acpi_db_get_next_token
ACPICA: acpiexec: initialize all simple types and field units from
user input
ACPICA: debugger: remove leading whitespaces when converting a string
to a buffer

Nikolaus Voss (1):
ACPICA: make acpi_load_table() return table index

 drivers/acpi/acpi_configfs.c    |   2 +-
 drivers/acpi/acpica/acdebug.h   |   2 +
 drivers/acpi/acpica/acstruct.h  |  10 +++
 drivers/acpi/acpica/acutils.h   |   9 +--
 drivers/acpi/acpica/dbconvert.c |   4 ++
 drivers/acpi/acpica/dbdisply.c  |   2 -
 drivers/acpi/acpica/dbfileio.c  |   2 +-
 drivers/acpi/acpica/dbinput.c   |  36 +++++++++-
 drivers/acpi/acpica/dbmethod.c  |   4 ++
 drivers/acpi/acpica/dbnames.c   | 114 ++++++++++++++++++++++++++++++++
 drivers/acpi/acpica/dbobject.c  |   1 -
 drivers/acpi/acpica/dscontrol.c |   2 +-
 drivers/acpi/acpica/dsfield.c   |  12 +---
 drivers/acpi/acpica/evgpeblk.c  |  11 +--
 drivers/acpi/acpica/evgpeinit.c |   3 -
 drivers/acpi/acpica/evmisc.c    |  12 +++-
 drivers/acpi/acpica/evregion.c  |   4 +-
 drivers/acpi/acpica/evrgnini.c  |   1 -
 drivers/acpi/acpica/hwxfsleep.c |   3 +
 drivers/acpi/acpica/nsconvert.c |   2 +-
 drivers/acpi/acpica/nsdump.c    |   6 +-
 drivers/acpi/acpica/nsxfname.c  |   4 +-
 drivers/acpi/acpica/psobject.c  |   7 +-
 drivers/acpi/acpica/rscreate.c  |   3 +
 drivers/acpi/acpica/tbdata.c    |   3 +
 drivers/acpi/acpica/tbxfload.c  |  40 ++++++++++-
 drivers/acpi/acpica/utbuffer.c  |  52 ++++++++-------
 drivers/acpi/acpica/utids.c     |   2 -
 drivers/acpi/acpica/uttrack.c   |   2 +-
 drivers/firmware/efi/efi.c      |   2 +-
 include/acpi/acpixf.h           |   8 ++-
 31 files changed, 291 insertions(+), 74 deletions(-)
Signature · 1 line
2.21.0
Signature · 2 lines
With Best Regards,
Andy Shevchenko
#18 lore raw
Quoted 25 lines

-----Original Message-----
From: Andy Shevchenko <[email protected]>
Sent: Monday, October 28, 2019 8:59 AM
To: Schmauss, Erik <[email protected]>
Cc: Rafael J . Wysocki <[email protected]>; [email protected]
Subject: Re: [PATCH v2 00/12] ACPICA version 20191018v2

Quoted 8 lines · Erik Schmauss

V2 - fixed build warnings

This patchset contains the linuxized patches for ACPICA version 20191018. There are several debugger changes but they are meant for acpiexec at this time. acpi_load_table definition has been modified and a new acpi_unload_table has been added. These new interfaces can be used as a part of config fs to load and unload tables.

Quoted 6 lines

Other than that, Bob has run clang on our code base and removed several compiler warnings.

This patchset is also available here:
https://github.com/SchmErik/linux/tree/v20191018

Quoted 5 lines

I have tested this series and it works in my case. Thank you!

P.S. Rafael, I think we can also append the oneliner I have added in the comment to the patch 5.

I agree. It makes sense to use the interface in the same commit for linux

Quoted 66 lines
Quoted 58 lines

Bob Moore (5):
ACPICA: Results from Clang changes/fixes From Clang V5.0.1. Mostly
"set but never read" warnings.
ACPICA: Win OSL: Replace get_tick_count with get_tick_count64
ACPICA: More Clang changes - V8.0.1 Fixed all "dead assignment"
warnings.
ACPICA: Add new external interface, acpi_unload_table
ACPICA: Update version to 20191018

Erik Schmauss (6):
ACPICA: utilities: add flag to only display data when dumping buffers
ACPICA: debugger: add command to dump all fields of a particular
subtype
ACPICA: debugger: surround field unit output with braces '{'
ACPICA: debugger: add field unit support for acpi_db_get_next_token
ACPICA: acpiexec: initialize all simple types and field units from
user input
ACPICA: debugger: remove leading whitespaces when converting a string
to a buffer

Nikolaus Voss (1):
ACPICA: make acpi_load_table() return table index

 drivers/acpi/acpi_configfs.c    |   2 +-
 drivers/acpi/acpica/acdebug.h   |   2 +
 drivers/acpi/acpica/acstruct.h  |  10 +++
 drivers/acpi/acpica/acutils.h   |   9 +--
 drivers/acpi/acpica/dbconvert.c |   4 ++
 drivers/acpi/acpica/dbdisply.c  |   2 -
 drivers/acpi/acpica/dbfileio.c  |   2 +-
 drivers/acpi/acpica/dbinput.c   |  36 +++++++++-
 drivers/acpi/acpica/dbmethod.c  |   4 ++
 drivers/acpi/acpica/dbnames.c   | 114 ++++++++++++++++++++++++++++++++
 drivers/acpi/acpica/dbobject.c  |   1 -
 drivers/acpi/acpica/dscontrol.c |   2 +-
 drivers/acpi/acpica/dsfield.c   |  12 +---
 drivers/acpi/acpica/evgpeblk.c  |  11 +--
 drivers/acpi/acpica/evgpeinit.c |   3 -
 drivers/acpi/acpica/evmisc.c    |  12 +++-
 drivers/acpi/acpica/evregion.c  |   4 +-
 drivers/acpi/acpica/evrgnini.c  |   1 -
 drivers/acpi/acpica/hwxfsleep.c |   3 +
 drivers/acpi/acpica/nsconvert.c |   2 +-
 drivers/acpi/acpica/nsdump.c    |   6 +-
 drivers/acpi/acpica/nsxfname.c  |   4 +-
 drivers/acpi/acpica/psobject.c  |   7 +-
 drivers/acpi/acpica/rscreate.c  |   3 +
 drivers/acpi/acpica/tbdata.c    |   3 +
 drivers/acpi/acpica/tbxfload.c  |  40 ++++++++++-
drivers/acpi/acpica/utbuffer.c  |  52 ++++++++-------
 drivers/acpi/acpica/utids.c     |   2 -
 drivers/acpi/acpica/uttrack.c   |   2 +-
 drivers/firmware/efi/efi.c      |   2 +-
 include/acpi/acpixf.h           |   8 ++-
 31 files changed, 291 insertions(+), 74 deletions(-)
Quoted 3 lines

--
2.21.0

--
With Best Regards,
Andy Shevchenko

#19 lore raw
Quoted 24 lines · Erik
Quoted 24 lines

-----Original Message-----
From: Andy Shevchenko <[email protected]>
Sent: Monday, October 28, 2019 8:59 AM
To: Schmauss, Erik <[email protected]>
Cc: Rafael J . Wysocki <[email protected]>; [email protected]
Subject: Re: [PATCH v2 00/12] ACPICA version 20191018v2

Quoted 14 lines · Erik Schmauss

V2 - fixed build warnings

This patchset contains the linuxized patches for ACPICA version 20191018. There are several debugger changes but they are meant for acpiexec at this time. acpi_load_table definition has been modified and a new acpi_unload_table has been added. These new interfaces can be used as a part of config fs to load and unload tables.

Other than that, Bob has run clang on our code base and removed several compiler warnings.

This patchset is also available here:
https://github.com/SchmErik/linux/tree/v20191018

Quoted 7 lines
Quoted 5 lines

I have tested this series and it works in my case. Thank you!

P.S. Rafael, I think we can also append the oneliner I have added in the comment to the patch 5.

I agree. It makes sense to use the interface in the same commit for linux

OK, done.

Please check the result in the bleeding-edge branch of my tree.

Thanks!

#20 lore raw
Quoted 9 lines · Rafael J. Wysocki
Quoted 7 lines · Erik
Quoted 7 lines

-----Original Message-----
From: Andy Shevchenko <[email protected]>
Sent: Monday, October 28, 2019 8:59 AM
To: Schmauss, Erik <[email protected]>
Cc: Rafael J . Wysocki <[email protected]>; [email protected]
Subject: Re: [PATCH v2 00/12] ACPICA version 20191018v2
On Fri, Oct 25, 2019 at 02:36:48PM -0700, Erik Schmauss wrote:

Quoted 5 lines
Quoted 1 line

I agree. It makes sense to use the interface in the same commit for linux

OK, done.

Please check the result in the bleeding-edge branch of my tree.

I have checked the contents of the patch 5 and it's fine, thanks!

(Since for the rest I have no changes, I think they are fine as well)

Signature · 2 lines
With Best Regards,
Andy Shevchenko