ACPICA: Increase total number of possible Owner IDs
ACPICA commit 1f1652dad88b9d767767bc1f7eb4f7d99e6b5324 From 255 to 4095 possible IDs. Link: https://github.com/acpica/acpica/commit/1f1652da Reported-by: Hedi Berriche <hedi.berriche @hpe.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Erik Schmauss <erik.schmauss@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
189c7213f4
commit
67a72420a3
|
@ -134,12 +134,12 @@ struct acpi_namespace_node {
|
||||||
union acpi_operand_object *object; /* Interpreter object */
|
union acpi_operand_object *object; /* Interpreter object */
|
||||||
u8 descriptor_type; /* Differentiate object descriptor types */
|
u8 descriptor_type; /* Differentiate object descriptor types */
|
||||||
u8 type; /* ACPI Type associated with this name */
|
u8 type; /* ACPI Type associated with this name */
|
||||||
u8 flags; /* Miscellaneous flags */
|
u16 flags; /* Miscellaneous flags */
|
||||||
acpi_owner_id owner_id; /* Node creator */
|
|
||||||
union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */
|
union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */
|
||||||
struct acpi_namespace_node *parent; /* Parent node */
|
struct acpi_namespace_node *parent; /* Parent node */
|
||||||
struct acpi_namespace_node *child; /* First child */
|
struct acpi_namespace_node *child; /* First child */
|
||||||
struct acpi_namespace_node *peer; /* First peer */
|
struct acpi_namespace_node *peer; /* First peer */
|
||||||
|
acpi_owner_id owner_id; /* Node creator */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following fields are used by the ASL compiler and disassembler only
|
* The following fields are used by the ASL compiler and disassembler only
|
||||||
|
|
|
@ -153,8 +153,8 @@ struct acpi_object_method {
|
||||||
} dispatch;
|
} dispatch;
|
||||||
|
|
||||||
u32 aml_length;
|
u32 aml_length;
|
||||||
u8 thread_count;
|
|
||||||
acpi_owner_id owner_id;
|
acpi_owner_id owner_id;
|
||||||
|
u8 thread_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Flags for info_flags field above */
|
/* Flags for info_flags field above */
|
||||||
|
|
|
@ -167,9 +167,9 @@ struct acpi_evaluate_info {
|
||||||
u32 return_flags; /* Used for return value analysis */
|
u32 return_flags; /* Used for return value analysis */
|
||||||
u32 return_btype; /* Bitmapped type of the returned object */
|
u32 return_btype; /* Bitmapped type of the returned object */
|
||||||
u16 param_count; /* Count of the input argument list */
|
u16 param_count; /* Count of the input argument list */
|
||||||
|
u16 node_flags; /* Same as Node->Flags */
|
||||||
u8 pass_number; /* Parser pass number */
|
u8 pass_number; /* Parser pass number */
|
||||||
u8 return_object_type; /* Object type of the returned object */
|
u8 return_object_type; /* Object type of the returned object */
|
||||||
u8 node_flags; /* Same as Node->Flags */
|
|
||||||
u8 flags; /* General flags */
|
u8 flags; /* General flags */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -690,18 +690,19 @@ void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_warning(const char *module_name,
|
acpi_ut_predefined_warning(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname,
|
char *pathname,
|
||||||
u8 node_flags, const char *format, ...);
|
u16 node_flags, const char *format, ...);
|
||||||
|
|
||||||
void ACPI_INTERNAL_VAR_XFACE
|
void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_info(const char *module_name,
|
acpi_ut_predefined_info(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname, u8 node_flags, const char *format, ...);
|
char *pathname,
|
||||||
|
u16 node_flags, const char *format, ...);
|
||||||
|
|
||||||
void ACPI_INTERNAL_VAR_XFACE
|
void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_bios_error(const char *module_name,
|
acpi_ut_predefined_bios_error(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname,
|
char *pathname,
|
||||||
u8 node_flags, const char *format, ...);
|
u16 node_flags, const char *format, ...);
|
||||||
|
|
||||||
void
|
void
|
||||||
acpi_ut_prefixed_namespace_error(const char *module_name,
|
acpi_ut_prefixed_namespace_error(const char *module_name,
|
||||||
|
|
|
@ -302,6 +302,10 @@ acpi_status acpi_db_disassemble_method(char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
status = acpi_ut_allocate_owner_id(&obj_desc->method.owner_id);
|
status = acpi_ut_allocate_owner_id(&obj_desc->method.owner_id);
|
||||||
|
if (ACPI_FAILURE(status)) {
|
||||||
|
return (status);
|
||||||
|
}
|
||||||
|
|
||||||
walk_state->owner_id = obj_desc->method.owner_id;
|
walk_state->owner_id = obj_desc->method.owner_id;
|
||||||
|
|
||||||
/* Push start scope on scope stack and make it current */
|
/* Push start scope on scope stack and make it current */
|
||||||
|
|
|
@ -94,7 +94,7 @@ static struct acpi_exdump_info acpi_ex_dump_method[9] = {
|
||||||
"Parameter Count"},
|
"Parameter Count"},
|
||||||
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.sync_level), "Sync Level"},
|
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.sync_level), "Sync Level"},
|
||||||
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.mutex), "Mutex"},
|
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.mutex), "Mutex"},
|
||||||
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.owner_id), "Owner Id"},
|
{ACPI_EXD_UINT16, ACPI_EXD_OFFSET(method.owner_id), "Owner Id"},
|
||||||
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.thread_count), "Thread Count"},
|
{ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.thread_count), "Thread Count"},
|
||||||
{ACPI_EXD_UINT32, ACPI_EXD_OFFSET(method.aml_length), "Aml Length"},
|
{ACPI_EXD_UINT32, ACPI_EXD_OFFSET(method.aml_length), "Aml Length"},
|
||||||
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.aml_start), "Aml Start"}
|
{ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.aml_start), "Aml Start"}
|
||||||
|
@ -269,8 +269,8 @@ static struct acpi_exdump_info acpi_ex_dump_field_common[7] = {
|
||||||
|
|
||||||
static struct acpi_exdump_info acpi_ex_dump_node[7] = {
|
static struct acpi_exdump_info acpi_ex_dump_node[7] = {
|
||||||
{ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_node), NULL},
|
{ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_node), NULL},
|
||||||
{ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET(flags), "Flags"},
|
{ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(flags), "Flags"},
|
||||||
{ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET(owner_id), "Owner Id"},
|
{ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(owner_id), "Owner Id"},
|
||||||
{ACPI_EXD_LIST, ACPI_EXD_NSOFFSET(object), "Object List"},
|
{ACPI_EXD_LIST, ACPI_EXD_NSOFFSET(object), "Object List"},
|
||||||
{ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(parent), "Parent"},
|
{ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(parent), "Parent"},
|
||||||
{ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(child), "Child"},
|
{ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(child), "Child"},
|
||||||
|
|
|
@ -241,7 +241,7 @@ void acpi_ns_install_node(struct acpi_walk_state *walk_state, struct acpi_namesp
|
||||||
node->type = (u8) type;
|
node->type = (u8) type;
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
|
ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
|
||||||
"%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
|
"%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
|
||||||
acpi_ut_get_node_name(node),
|
acpi_ut_get_node_name(node),
|
||||||
acpi_ut_get_type_name(node->type), node, owner_id,
|
acpi_ut_get_type_name(node->type), node, owner_id,
|
||||||
acpi_ut_get_node_name(parent_node),
|
acpi_ut_get_node_name(parent_node),
|
||||||
|
|
|
@ -197,7 +197,7 @@ acpi_ns_dump_one_object(acpi_handle obj_handle,
|
||||||
|
|
||||||
/* Now we can print out the pertinent information */
|
/* Now we can print out the pertinent information */
|
||||||
|
|
||||||
acpi_os_printf(" %-12s %p %2.2X ",
|
acpi_os_printf(" %-12s %p %3.3X ",
|
||||||
acpi_ut_get_type_name(type), this_node,
|
acpi_ut_get_type_name(type), this_node,
|
||||||
this_node->owner_id);
|
this_node->owner_id);
|
||||||
|
|
||||||
|
|
|
@ -750,6 +750,7 @@ acpi_status acpi_tb_delete_namespace_by_owner(u32 table_index)
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
acpi_ns_delete_namespace_by_owner(owner_id);
|
acpi_ns_delete_namespace_by_owner(owner_id);
|
||||||
acpi_ut_release_write_lock(&acpi_gbl_namespace_rw_lock);
|
acpi_ut_release_write_lock(&acpi_gbl_namespace_rw_lock);
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
|
|
|
@ -39,7 +39,7 @@ void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_warning(const char *module_name,
|
acpi_ut_predefined_warning(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname,
|
char *pathname,
|
||||||
u8 node_flags, const char *format, ...)
|
u16 node_flags, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list arg_list;
|
va_list arg_list;
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ acpi_ut_predefined_warning(const char *module_name,
|
||||||
void ACPI_INTERNAL_VAR_XFACE
|
void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_info(const char *module_name,
|
acpi_ut_predefined_info(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname, u8 node_flags, const char *format, ...)
|
char *pathname, u16 node_flags, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list arg_list;
|
va_list arg_list;
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ void ACPI_INTERNAL_VAR_XFACE
|
||||||
acpi_ut_predefined_bios_error(const char *module_name,
|
acpi_ut_predefined_bios_error(const char *module_name,
|
||||||
u32 line_number,
|
u32 line_number,
|
||||||
char *pathname,
|
char *pathname,
|
||||||
u8 node_flags, const char *format, ...)
|
u16 node_flags, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list arg_list;
|
va_list arg_list;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id)
|
||||||
|
|
||||||
if (*owner_id) {
|
if (*owner_id) {
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_ERROR((AE_INFO,
|
||||||
"Owner ID [0x%2.2X] already exists", *owner_id));
|
"Owner ID [0x%3.3X] already exists", *owner_id));
|
||||||
return_ACPI_STATUS(AE_ALREADY_EXISTS);
|
return_ACPI_STATUS(AE_ALREADY_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,14 +88,14 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id)
|
||||||
/*
|
/*
|
||||||
* Construct encoded ID from the index and bit position
|
* Construct encoded ID from the index and bit position
|
||||||
*
|
*
|
||||||
* Note: Last [j].k (bit 255) is never used and is marked
|
* Note: Last [j].k (bit 4095) is never used and is marked
|
||||||
* permanently allocated (prevents +1 overflow)
|
* permanently allocated (prevents +1 overflow)
|
||||||
*/
|
*/
|
||||||
*owner_id =
|
*owner_id =
|
||||||
(acpi_owner_id)((k + 1) + ACPI_MUL_32(j));
|
(acpi_owner_id)((k + 1) + ACPI_MUL_32(j));
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_VALUES,
|
ACPI_DEBUG_PRINT((ACPI_DB_VALUES,
|
||||||
"Allocated OwnerId: %2.2X\n",
|
"Allocated OwnerId: 0x%3.3X\n",
|
||||||
(unsigned int)*owner_id));
|
(unsigned int)*owner_id));
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id)
|
||||||
*/
|
*/
|
||||||
status = AE_OWNER_ID_LIMIT;
|
status = AE_OWNER_ID_LIMIT;
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_ERROR((AE_INFO,
|
||||||
"Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
|
"Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
(void)acpi_ut_release_mutex(ACPI_MTX_CACHES);
|
||||||
|
@ -153,7 +153,7 @@ void acpi_ut_release_owner_id(acpi_owner_id *owner_id_ptr)
|
||||||
/* Zero is not a valid owner_ID */
|
/* Zero is not a valid owner_ID */
|
||||||
|
|
||||||
if (owner_id == 0) {
|
if (owner_id == 0) {
|
||||||
ACPI_ERROR((AE_INFO, "Invalid OwnerId: 0x%2.2X", owner_id));
|
ACPI_ERROR((AE_INFO, "Invalid OwnerId: 0x%3.3X", owner_id));
|
||||||
return_VOID;
|
return_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ void acpi_ut_release_owner_id(acpi_owner_id *owner_id_ptr)
|
||||||
acpi_gbl_owner_id_mask[index] ^= bit;
|
acpi_gbl_owner_id_mask[index] ^= bit;
|
||||||
} else {
|
} else {
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_ERROR((AE_INFO,
|
||||||
"Release of non-allocated OwnerId: 0x%2.2X",
|
"Attempted release of non-allocated OwnerId: 0x%3.3X",
|
||||||
owner_id + 1));
|
owner_id + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,9 +95,9 @@
|
||||||
|
|
||||||
#define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */
|
#define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */
|
||||||
|
|
||||||
/* owner_id tracking. 8 entries allows for 255 owner_ids */
|
/* owner_id tracking. 128 entries allows for 4095 owner_ids */
|
||||||
|
|
||||||
#define ACPI_NUM_OWNERID_MASKS 8
|
#define ACPI_NUM_OWNERID_MASKS 128
|
||||||
|
|
||||||
/* Size of the root table array is increased by this increment */
|
/* Size of the root table array is increased by this increment */
|
||||||
|
|
||||||
|
|
|
@ -442,8 +442,8 @@ typedef void *acpi_handle; /* Actually a ptr to a NS Node */
|
||||||
|
|
||||||
/* Owner IDs are used to track namespace nodes for selective deletion */
|
/* Owner IDs are used to track namespace nodes for selective deletion */
|
||||||
|
|
||||||
typedef u8 acpi_owner_id;
|
typedef u16 acpi_owner_id;
|
||||||
#define ACPI_OWNER_ID_MAX 0xFF
|
#define ACPI_OWNER_ID_MAX 0xFFF /* 4095 possible owner IDs */
|
||||||
|
|
||||||
#define ACPI_INTEGER_BIT_SIZE 64
|
#define ACPI_INTEGER_BIT_SIZE 64
|
||||||
#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */
|
#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */
|
||||||
|
|
Loading…
Reference in New Issue