Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9ee2043 authored by Bob Moore's avatar Bob Moore Committed by Len Brown
Browse files

ACPICA: Clarify/rename some root table descriptor fields



Original fields were not very descriptive and led to maintenance
problems.  New fields should help to understand the existing code.

Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent e4eb0450
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -158,11 +158,10 @@ ACPI_EXTERN u32 acpi_gbl_trace_dbg_layer;
 ****************************************************************************/
 ****************************************************************************/


/*
/*
 * acpi_gbl_root_table_list is the master list of ACPI tables found in the
 * acpi_gbl_root_table_list is the master list of ACPI tables that were
 * RSDT/XSDT.
 * found in the RSDT/XSDT.
 *
 */
 */
ACPI_EXTERN struct acpi_internal_rsdt acpi_gbl_root_table_list;
ACPI_EXTERN struct acpi_table_list acpi_gbl_root_table_list;
ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS;
ACPI_EXTERN struct acpi_table_facs *acpi_gbl_FACS;


/* These addresses are calculated from the FADT Event Block addresses */
/* These addresses are calculated from the FADT Event Block addresses */
+5 −5
Original line number Original line Diff line number Diff line
@@ -213,12 +213,12 @@ struct acpi_namespace_node {
#define ANOBJ_IS_BIT_OFFSET             0x40	/* i_aSL only: Reference is a bit offset */
#define ANOBJ_IS_BIT_OFFSET             0x40	/* i_aSL only: Reference is a bit offset */
#define ANOBJ_IS_REFERENCED             0x80	/* i_aSL only: Object was referenced */
#define ANOBJ_IS_REFERENCED             0x80	/* i_aSL only: Object was referenced */


/* One internal RSDT for table management */
/* Internal ACPI table management - master table list */


struct acpi_internal_rsdt {
struct acpi_table_list {
	struct acpi_table_desc *tables;
	struct acpi_table_desc *tables;	/* Table descriptor array */
	u32 count;
	u32 current_table_count;	/* Tables currently in the array */
	u32 size;
	u32 max_table_count;	/* Max tables array will hold */
	u8 flags;
	u8 flags;
};
};


+1 −1
Original line number Original line Diff line number Diff line
@@ -83,7 +83,7 @@ acpi_tb_find_table(char *signature,


	/* Search for the table */
	/* Search for the table */


	for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
	for (i = 0; i < acpi_gbl_root_table_list.current_table_count; ++i) {
		if (ACPI_MEMCMP(&(acpi_gbl_root_table_list.tables[i].signature),
		if (ACPI_MEMCMP(&(acpi_gbl_root_table_list.tables[i].signature),
				header.signature, ACPI_NAME_SIZE)) {
				header.signature, ACPI_NAME_SIZE)) {


+34 −35
Original line number Original line Diff line number Diff line
@@ -137,7 +137,7 @@ acpi_tb_add_table(struct acpi_table_desc *table_desc, u32 *table_index)


	/* Check if table is already registered */
	/* Check if table is already registered */


	for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
	for (i = 0; i < acpi_gbl_root_table_list.current_table_count; ++i) {
		if (!acpi_gbl_root_table_list.tables[i].pointer) {
		if (!acpi_gbl_root_table_list.tables[i].pointer) {
			status =
			status =
			    acpi_tb_verify_table(&acpi_gbl_root_table_list.
			    acpi_tb_verify_table(&acpi_gbl_root_table_list.
@@ -273,7 +273,7 @@ acpi_status acpi_tb_resize_root_table_list(void)
	/* Increase the Table Array size */
	/* Increase the Table Array size */


	tables = ACPI_ALLOCATE_ZEROED(((acpi_size) acpi_gbl_root_table_list.
	tables = ACPI_ALLOCATE_ZEROED(((acpi_size) acpi_gbl_root_table_list.
				       size +
				       max_table_count +
				       ACPI_ROOT_TABLE_SIZE_INCREMENT) *
				       ACPI_ROOT_TABLE_SIZE_INCREMENT) *
				      sizeof(struct acpi_table_desc));
				      sizeof(struct acpi_table_desc));
	if (!tables) {
	if (!tables) {
@@ -286,8 +286,8 @@ acpi_status acpi_tb_resize_root_table_list(void)


	if (acpi_gbl_root_table_list.tables) {
	if (acpi_gbl_root_table_list.tables) {
		ACPI_MEMCPY(tables, acpi_gbl_root_table_list.tables,
		ACPI_MEMCPY(tables, acpi_gbl_root_table_list.tables,
			    (acpi_size) acpi_gbl_root_table_list.size *
			    (acpi_size) acpi_gbl_root_table_list.
			    sizeof(struct acpi_table_desc));
			    max_table_count * sizeof(struct acpi_table_desc));


		if (acpi_gbl_root_table_list.flags & ACPI_ROOT_ORIGIN_ALLOCATED) {
		if (acpi_gbl_root_table_list.flags & ACPI_ROOT_ORIGIN_ALLOCATED) {
			ACPI_FREE(acpi_gbl_root_table_list.tables);
			ACPI_FREE(acpi_gbl_root_table_list.tables);
@@ -295,7 +295,8 @@ acpi_status acpi_tb_resize_root_table_list(void)
	}
	}


	acpi_gbl_root_table_list.tables = tables;
	acpi_gbl_root_table_list.tables = tables;
	acpi_gbl_root_table_list.size += ACPI_ROOT_TABLE_SIZE_INCREMENT;
	acpi_gbl_root_table_list.max_table_count +=
	    ACPI_ROOT_TABLE_SIZE_INCREMENT;
	acpi_gbl_root_table_list.flags |= (u8)ACPI_ROOT_ORIGIN_ALLOCATED;
	acpi_gbl_root_table_list.flags |= (u8)ACPI_ROOT_ORIGIN_ALLOCATED;


	return_ACPI_STATUS(AE_OK);
	return_ACPI_STATUS(AE_OK);
@@ -321,38 +322,36 @@ acpi_tb_store_table(acpi_physical_address address,
		    struct acpi_table_header *table,
		    struct acpi_table_header *table,
		    u32 length, u8 flags, u32 *table_index)
		    u32 length, u8 flags, u32 *table_index)
{
{
	acpi_status status = AE_OK;
	acpi_status status;
	struct acpi_table_desc *new_table;


	/* Ensure that there is room for the table in the Root Table List */
	/* Ensure that there is room for the table in the Root Table List */


	if (acpi_gbl_root_table_list.count >= acpi_gbl_root_table_list.size) {
	if (acpi_gbl_root_table_list.current_table_count >=
	    acpi_gbl_root_table_list.max_table_count) {
		status = acpi_tb_resize_root_table_list();
		status = acpi_tb_resize_root_table_list();
		if (ACPI_FAILURE(status)) {
		if (ACPI_FAILURE(status)) {
			return (status);
			return (status);
		}
		}
	}
	}


	new_table =
	    &acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.
					     current_table_count];

	/* Initialize added table */
	/* Initialize added table */


	acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].
	new_table->address = address;
	    address = address;
	new_table->pointer = table;
	acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].
	new_table->length = length;
	    pointer = table;
	new_table->owner_id = 0;
	acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].length =
	new_table->flags = flags;
	    length;
	acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].
	    owner_id = 0;
	acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].flags =
	    flags;

	ACPI_MOVE_32_TO_32(&
			   (acpi_gbl_root_table_list.
			    tables[acpi_gbl_root_table_list.count].signature),
			   table->signature);


	*table_index = acpi_gbl_root_table_list.count;
	ACPI_MOVE_32_TO_32(&new_table->signature, table->signature);
	acpi_gbl_root_table_list.count++;

	return (status);
	*table_index = acpi_gbl_root_table_list.current_table_count;
	acpi_gbl_root_table_list.current_table_count++;
	return (AE_OK);
}
}


/*******************************************************************************
/*******************************************************************************
@@ -408,7 +407,7 @@ void acpi_tb_terminate(void)


	/* Delete the individual tables */
	/* Delete the individual tables */


	for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
	for (i = 0; i < acpi_gbl_root_table_list.current_table_count; i++) {
		acpi_tb_delete_table(&acpi_gbl_root_table_list.tables[i]);
		acpi_tb_delete_table(&acpi_gbl_root_table_list.tables[i]);
	}
	}


@@ -422,7 +421,7 @@ void acpi_tb_terminate(void)


	acpi_gbl_root_table_list.tables = NULL;
	acpi_gbl_root_table_list.tables = NULL;
	acpi_gbl_root_table_list.flags = 0;
	acpi_gbl_root_table_list.flags = 0;
	acpi_gbl_root_table_list.count = 0;
	acpi_gbl_root_table_list.current_table_count = 0;


	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "ACPI Tables freed\n"));
	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "ACPI Tables freed\n"));
	(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
@@ -452,7 +451,7 @@ acpi_status acpi_tb_delete_namespace_by_owner(u32 table_index)
		return_ACPI_STATUS(status);
		return_ACPI_STATUS(status);
	}
	}


	if (table_index >= acpi_gbl_root_table_list.count) {
	if (table_index >= acpi_gbl_root_table_list.current_table_count) {


		/* The table index does not exist */
		/* The table index does not exist */


@@ -505,7 +504,7 @@ acpi_status acpi_tb_allocate_owner_id(u32 table_index)
	ACPI_FUNCTION_TRACE(tb_allocate_owner_id);
	ACPI_FUNCTION_TRACE(tb_allocate_owner_id);


	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	if (table_index < acpi_gbl_root_table_list.count) {
	if (table_index < acpi_gbl_root_table_list.current_table_count) {
		status = acpi_ut_allocate_owner_id
		status = acpi_ut_allocate_owner_id
		    (&(acpi_gbl_root_table_list.tables[table_index].owner_id));
		    (&(acpi_gbl_root_table_list.tables[table_index].owner_id));
	}
	}
@@ -533,7 +532,7 @@ acpi_status acpi_tb_release_owner_id(u32 table_index)
	ACPI_FUNCTION_TRACE(tb_release_owner_id);
	ACPI_FUNCTION_TRACE(tb_release_owner_id);


	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	if (table_index < acpi_gbl_root_table_list.count) {
	if (table_index < acpi_gbl_root_table_list.current_table_count) {
		acpi_ut_release_owner_id(&
		acpi_ut_release_owner_id(&
					 (acpi_gbl_root_table_list.
					 (acpi_gbl_root_table_list.
					  tables[table_index].owner_id));
					  tables[table_index].owner_id));
@@ -564,7 +563,7 @@ acpi_status acpi_tb_get_owner_id(u32 table_index, acpi_owner_id *owner_id)
	ACPI_FUNCTION_TRACE(tb_get_owner_id);
	ACPI_FUNCTION_TRACE(tb_get_owner_id);


	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	if (table_index < acpi_gbl_root_table_list.count) {
	if (table_index < acpi_gbl_root_table_list.current_table_count) {
		*owner_id =
		*owner_id =
		    acpi_gbl_root_table_list.tables[table_index].owner_id;
		    acpi_gbl_root_table_list.tables[table_index].owner_id;
		status = AE_OK;
		status = AE_OK;
@@ -589,7 +588,7 @@ u8 acpi_tb_is_table_loaded(u32 table_index)
	u8 is_loaded = FALSE;
	u8 is_loaded = FALSE;


	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	if (table_index < acpi_gbl_root_table_list.count) {
	if (table_index < acpi_gbl_root_table_list.current_table_count) {
		is_loaded = (u8)
		is_loaded = (u8)
		    (acpi_gbl_root_table_list.tables[table_index].flags &
		    (acpi_gbl_root_table_list.tables[table_index].flags &
		     ACPI_TABLE_IS_LOADED);
		     ACPI_TABLE_IS_LOADED);
@@ -616,7 +615,7 @@ void acpi_tb_set_table_loaded_flag(u32 table_index, u8 is_loaded)
{
{


	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
	if (table_index < acpi_gbl_root_table_list.count) {
	if (table_index < acpi_gbl_root_table_list.current_table_count) {
		if (is_loaded) {
		if (is_loaded) {
			acpi_gbl_root_table_list.tables[table_index].flags |=
			acpi_gbl_root_table_list.tables[table_index].flags |=
			    ACPI_TABLE_IS_LOADED;
			    ACPI_TABLE_IS_LOADED;
+10 −9
Original line number Original line Diff line number Diff line
@@ -158,7 +158,7 @@ acpi_status acpi_tb_initialize_facs(void)
u8 acpi_tb_tables_loaded(void)
u8 acpi_tb_tables_loaded(void)
{
{


	if (acpi_gbl_root_table_list.count >= 3) {
	if (acpi_gbl_root_table_list.current_table_count >= 3) {
		return (TRUE);
		return (TRUE);
	}
	}


@@ -707,14 +707,14 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
	 */
	 */
	table_entry =
	table_entry =
	    ACPI_CAST_PTR(u8, table) + sizeof(struct acpi_table_header);
	    ACPI_CAST_PTR(u8, table) + sizeof(struct acpi_table_header);
	acpi_gbl_root_table_list.count = 2;
	acpi_gbl_root_table_list.current_table_count = 2;


	/*
	/*
	 * Initialize the root table array from the RSDT/XSDT
	 * Initialize the root table array from the RSDT/XSDT
	 */
	 */
	for (i = 0; i < table_count; i++) {
	for (i = 0; i < table_count; i++) {
		if (acpi_gbl_root_table_list.count >=
		if (acpi_gbl_root_table_list.current_table_count >=
		    acpi_gbl_root_table_list.size) {
		    acpi_gbl_root_table_list.max_table_count) {


			/* There is no more room in the root table array, attempt resize */
			/* There is no more room in the root table array, attempt resize */


@@ -724,19 +724,20 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
					      "Truncating %u table entries!",
					      "Truncating %u table entries!",
					      (unsigned) (table_count -
					      (unsigned) (table_count -
					       (acpi_gbl_root_table_list.
					       (acpi_gbl_root_table_list.
					       count - 2))));
							  current_table_count -
							  2))));
				break;
				break;
			}
			}
		}
		}


		/* Get the table physical address (32-bit for RSDT, 64-bit for XSDT) */
		/* Get the table physical address (32-bit for RSDT, 64-bit for XSDT) */


		acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.count].
		acpi_gbl_root_table_list.tables[acpi_gbl_root_table_list.
		    address =
						current_table_count].address =
		    acpi_tb_get_root_table_entry(table_entry, table_entry_size);
		    acpi_tb_get_root_table_entry(table_entry, table_entry_size);


		table_entry += table_entry_size;
		table_entry += table_entry_size;
		acpi_gbl_root_table_list.count++;
		acpi_gbl_root_table_list.current_table_count++;
	}
	}


	/*
	/*
@@ -749,7 +750,7 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
	 * Complete the initialization of the root table array by examining
	 * Complete the initialization of the root table array by examining
	 * the header of each table
	 * the header of each table
	 */
	 */
	for (i = 2; i < acpi_gbl_root_table_list.count; i++) {
	for (i = 2; i < acpi_gbl_root_table_list.current_table_count; i++) {
		acpi_tb_install_table(acpi_gbl_root_table_list.tables[i].
		acpi_tb_install_table(acpi_gbl_root_table_list.tables[i].
				      address, NULL, i);
				      address, NULL, i);


Loading