summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorikaros <void0red@gmail.com>2026-05-27 20:53:58 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2026-05-27 21:18:44 +0300
commit8d79873403017dd9f29ec17fa69ba21f72ce4ff8 (patch)
treebe58f5fc20610dbae6bda1b5c8067d8c12b8bc5c
parent8de27e2d83c0d07ae9443c6304575b0609394bfd (diff)
downloadlinux-8d79873403017dd9f29ec17fa69ba21f72ce4ff8.tar.xz
ACPICA: Add alias node support in namespace handling
- Mark nodes as alias in ld_namespace2_begin() function. - Skip teardown for alias nodes in acpi_ns_detach_object() function. - Define ANOBJ_IS_ALIAS flag in aclocal.h. Link: https://github.com/acpica/acpica/commit/cfcc46c4f717 Signed-off-by: ikaros <void0red@gmail.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Link: https://patch.msgid.link/14020896.uLZWGnKmhe@rafael.j.wysocki
-rw-r--r--drivers/acpi/acpica/aclocal.h1
-rw-r--r--drivers/acpi/acpica/nsobject.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h
index f98640086f4e..cbf09fb08d35 100644
--- a/drivers/acpi/acpica/aclocal.h
+++ b/drivers/acpi/acpica/aclocal.h
@@ -169,6 +169,7 @@ struct acpi_namespace_node {
#define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */
#define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */
+#define ANOBJ_IS_ALIAS 0x40 /* iASL only: Node is an alias to another node */
#define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */
/* Internal ACPI table management - master table list */
diff --git a/drivers/acpi/acpica/nsobject.c b/drivers/acpi/acpica/nsobject.c
index 79d86da1c892..a4ccacecca53 100644
--- a/drivers/acpi/acpica/nsobject.c
+++ b/drivers/acpi/acpica/nsobject.c
@@ -173,6 +173,12 @@ void acpi_ns_detach_object(struct acpi_namespace_node *node)
obj_desc = node->object;
+ /* Alias nodes point directly to other namespace nodes; skip teardown */
+ if (node->flags & ANOBJ_IS_ALIAS) {
+ node->object = NULL;
+ return_VOID;
+ }
+
if (!obj_desc || (obj_desc->common.type == ACPI_TYPE_LOCAL_DATA)) {
return_VOID;
}