diff --git a/patches.fixes/0001-ACPICA-Increase-total-number-of-possible-Owner-IDs.patch b/patches.fixes/0001-ACPICA-Increase-total-number-of-possible-Owner-IDs.patch new file mode 100644 index 0000000..7b7bf7e --- /dev/null +++ b/patches.fixes/0001-ACPICA-Increase-total-number-of-possible-Owner-IDs.patch @@ -0,0 +1,278 @@ +From 67a72420a326b45514deb3f212085fb2cd1595b5 Mon Sep 17 00:00:00 2001 +From: Bob Moore +Date: Fri, 16 Aug 2019 14:43:21 -0700 +Subject: [PATCH] ACPICA: Increase total number of possible Owner IDs +Patch-mainline: Not yet, merged to linux-next +References: bsc#1148859 + +ACPICA commit 1f1652dad88b9d767767bc1f7eb4f7d99e6b5324 + +From 255 to 4095 possible IDs. + +Link: https://github.com/acpica/acpica/commit/1f1652da +Reported-by: Hedi Berriche +Signed-off-by: Bob Moore +Signed-off-by: Erik Schmauss +Signed-off-by: Rafael J. Wysocki +Acked-by: Lee, Chun-Yi +--- + drivers/acpi/acpica/aclocal.h | 4 ++-- + drivers/acpi/acpica/acobject.h | 2 +- + drivers/acpi/acpica/acstruct.h | 2 +- + drivers/acpi/acpica/acutils.h | 7 ++++--- + drivers/acpi/acpica/dbmethod.c | 4 ++++ + drivers/acpi/acpica/exdump.c | 6 +++--- + drivers/acpi/acpica/nsalloc.c | 2 +- + drivers/acpi/acpica/nsdump.c | 2 +- + drivers/acpi/acpica/tbdata.c | 1 + + drivers/acpi/acpica/uterror.c | 6 +++--- + drivers/acpi/acpica/utownerid.c | 12 ++++++------ + include/acpi/acconfig.h | 4 ++-- + include/acpi/actypes.h | 4 ++-- + 13 files changed, 31 insertions(+), 25 deletions(-) + +--- a/drivers/acpi/acpica/aclocal.h ++++ b/drivers/acpi/acpica/aclocal.h +@@ -168,12 +168,12 @@ struct acpi_namespace_node { + union acpi_operand_object *object; /* Interpreter object */ + u8 descriptor_type; /* Differentiate object descriptor types */ + u8 type; /* ACPI Type associated with this name */ +- u8 flags; /* Miscellaneous flags */ +- acpi_owner_id owner_id; /* Node creator */ ++ u16 flags; /* Miscellaneous flags */ + union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */ + struct acpi_namespace_node *parent; /* Parent node */ + struct acpi_namespace_node *child; /* First child */ + 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 +--- a/drivers/acpi/acpica/acobject.h ++++ b/drivers/acpi/acpica/acobject.h +@@ -185,8 +185,8 @@ struct acpi_object_method { + } dispatch; + + u32 aml_length; +- u8 thread_count; + acpi_owner_id owner_id; ++ u8 thread_count; + }; + + /* Flags for info_flags field above */ +--- a/drivers/acpi/acpica/acstruct.h ++++ b/drivers/acpi/acpica/acstruct.h +@@ -198,9 +198,9 @@ struct acpi_evaluate_info { + u32 return_flags; /* Used for return value analysis */ + u32 return_btype; /* Bitmapped type of the returned object */ + u16 param_count; /* Count of the input argument list */ ++ u16 node_flags; /* Same as Node->Flags */ + u8 pass_number; /* Parser pass number */ + u8 return_object_type; /* Object type of the returned object */ +- u8 node_flags; /* Same as Node->Flags */ + u8 flags; /* General flags */ + }; + +--- a/drivers/acpi/acpica/acutils.h ++++ b/drivers/acpi/acpica/acutils.h +@@ -694,18 +694,19 @@ void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_warning(const char *module_name, + u32 line_number, + char *pathname, +- u8 node_flags, const char *format, ...); ++ u16 node_flags, const char *format, ...); + + void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_info(const char *module_name, + u32 line_number, +- char *pathname, u8 node_flags, const char *format, ...); ++ char *pathname, ++ u16 node_flags, const char *format, ...); + + void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_bios_error(const char *module_name, + u32 line_number, + char *pathname, +- u8 node_flags, const char *format, ...); ++ u16 node_flags, const char *format, ...); + + void + acpi_ut_prefixed_namespace_error(const char *module_name, +--- a/drivers/acpi/acpica/dbmethod.c ++++ b/drivers/acpi/acpica/dbmethod.c +@@ -338,6 +338,10 @@ acpi_status acpi_db_disassemble_method(c + } + + 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; + + /* Push start scope on scope stack and make it current */ +--- a/drivers/acpi/acpica/exdump.c ++++ b/drivers/acpi/acpica/exdump.c +@@ -128,7 +128,7 @@ static struct acpi_exdump_info acpi_ex_d + "Parameter Count"}, + {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(method.sync_level), "Sync Level"}, + {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_UINT32, ACPI_EXD_OFFSET(method.aml_length), "Aml Length"}, + {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(method.aml_start), "Aml Start"} +@@ -303,8 +303,8 @@ static struct acpi_exdump_info acpi_ex_d + + static struct acpi_exdump_info acpi_ex_dump_node[7] = { + {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_node), NULL}, +- {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET(flags), "Flags"}, +- {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET(owner_id), "Owner Id"}, ++ {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(flags), "Flags"}, ++ {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET(owner_id), "Owner Id"}, + {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET(object), "Object List"}, + {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(parent), "Parent"}, + {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET(child), "Child"}, +--- a/drivers/acpi/acpica/nsalloc.c ++++ b/drivers/acpi/acpica/nsalloc.c +@@ -273,7 +273,7 @@ void acpi_ns_install_node(struct acpi_wa + node->type = (u8) type; + + 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_type_name(node->type), node, owner_id, + acpi_ut_get_node_name(parent_node), +--- a/drivers/acpi/acpica/nsdump.c ++++ b/drivers/acpi/acpica/nsdump.c +@@ -230,7 +230,7 @@ acpi_ns_dump_one_object(acpi_handle obj_ + + /* 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, + this_node->owner_id); + +--- a/drivers/acpi/acpica/tbdata.c ++++ b/drivers/acpi/acpica/tbdata.c +@@ -618,6 +618,7 @@ acpi_status acpi_tb_delete_namespace_by_ + if (ACPI_FAILURE(status)) { + return_ACPI_STATUS(status); + } ++ + acpi_ns_delete_namespace_by_owner(owner_id); + acpi_ut_release_write_lock(&acpi_gbl_namespace_rw_lock); + return_ACPI_STATUS(status); +--- a/drivers/acpi/acpica/uterror.c ++++ b/drivers/acpi/acpica/uterror.c +@@ -75,7 +75,7 @@ void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_warning(const char *module_name, + u32 line_number, + char *pathname, +- u8 node_flags, const char *format, ...) ++ u16 node_flags, const char *format, ...) + { + va_list arg_list; + +@@ -117,7 +117,7 @@ acpi_ut_predefined_warning(const char *m + void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_info(const char *module_name, + u32 line_number, +- char *pathname, u8 node_flags, const char *format, ...) ++ char *pathname, u16 node_flags, const char *format, ...) + { + va_list arg_list; + +@@ -160,7 +160,7 @@ void ACPI_INTERNAL_VAR_XFACE + acpi_ut_predefined_bios_error(const char *module_name, + u32 line_number, + char *pathname, +- u8 node_flags, const char *format, ...) ++ u16 node_flags, const char *format, ...) + { + va_list arg_list; + +--- a/drivers/acpi/acpica/utownerid.c ++++ b/drivers/acpi/acpica/utownerid.c +@@ -74,7 +74,7 @@ acpi_status acpi_ut_allocate_owner_id(ac + + if (*owner_id) { + 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); + } + +@@ -118,14 +118,14 @@ acpi_status acpi_ut_allocate_owner_id(ac + /* + * 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) + */ + *owner_id = + (acpi_owner_id)((k + 1) + ACPI_MUL_32(j)); + + ACPI_DEBUG_PRINT((ACPI_DB_VALUES, +- "Allocated OwnerId: %2.2X\n", ++ "Allocated OwnerId: 0x%3.3X\n", + (unsigned int)*owner_id)); + goto exit; + } +@@ -146,7 +146,7 @@ acpi_status acpi_ut_allocate_owner_id(ac + */ + status = AE_OWNER_ID_LIMIT; + 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: + (void)acpi_ut_release_mutex(ACPI_MTX_CACHES); +@@ -183,7 +183,7 @@ void acpi_ut_release_owner_id(acpi_owner + /* Zero is not a valid owner_ID */ + + 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; + } + +@@ -209,7 +209,7 @@ void acpi_ut_release_owner_id(acpi_owner + acpi_gbl_owner_id_mask[index] ^= bit; + } else { + ACPI_ERROR((AE_INFO, +- "Release of non-allocated OwnerId: 0x%2.2X", ++ "Attempted release of non-allocated OwnerId: 0x%3.3X", + owner_id + 1)); + } + +--- a/include/acpi/acconfig.h ++++ b/include/acpi/acconfig.h +@@ -129,9 +129,9 @@ + + #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 */ + +--- a/include/acpi/actypes.h ++++ b/include/acpi/actypes.h +@@ -466,8 +466,8 @@ typedef void *acpi_handle; /* Actually a + + /* Owner IDs are used to track namespace nodes for selective deletion */ + +-typedef u8 acpi_owner_id; +-#define ACPI_OWNER_ID_MAX 0xFF ++typedef u16 acpi_owner_id; ++#define ACPI_OWNER_ID_MAX 0xFFF /* 4095 possible owner IDs */ + + #define ACPI_INTEGER_BIT_SIZE 64 + #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ diff --git a/series.conf b/series.conf index 08ca09b..7ed635d 100644 --- a/series.conf +++ b/series.conf @@ -49871,6 +49871,7 @@ patches.suse/0001-x86-speculation-Prepare-entry-code-for-Spectre-v1-sw.patch patches.suse/0002-x86-speculation-Enable-Spectre-v1-swapgs-mitigations.patch patches.suse/x86-speculation-swapgs-exclude-ATOMs-from-speculating-through-SWAPGS.patch + patches.fixes/0001-ACPICA-Increase-total-number-of-possible-Owner-IDs.patch patches.suse/powerpc-fadump-when-fadump-is-supported-register-the.patch ########################################################