From nobody Sat Apr 4 01:33:46 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22A91365A17 for ; Sat, 21 Mar 2026 10:45:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774089950; cv=none; b=ufW6XGxB+TmPW1Zg8aQf5nnl2Tr/o4VCmGuy9eKRnFY5Eh7rNJB6ZWDb8NqgN7FSvyrenkcseHbUCyUKeuEet2FUwlNLMdkskR+Gmrg5qUdQzE1y8EDfMmKZM9cqDfTh1RkAWpAnWiq2RBLPMEiqpstqc7tZotvv9Bxko9tjqKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774089950; c=relaxed/simple; bh=SbUO0E+VVkQtNj2/anCKJa6CbI/PmZE6KoNSKIV9b5c=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=q82UMArSQj0TzEzO4LFw9KuXVzGd/hLVQvEMgH/8KRz4bLsoXLWy7JLRSyEHxHHYFsslwHKU9LE/NHtK/HuPB4eiic228fPsS+6EHqpqyhuzBsnzGPF2mmpauTnuaRDhu9tVbhHEik+u2n+lsf9eWCXol7XAPagfGqs1vgcKadg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BvOqF5n2; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BvOqF5n2" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-486fe36cfabso8335485e9.1 for ; Sat, 21 Mar 2026 03:45:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774089947; x=1774694747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=t/IfL7eVmmgy5B85Cedj7J6r6jidTJNyNMLxMWskFPE=; b=BvOqF5n2YajpT0rOJrjVKSXUeqDXdNneQ7Bk7bf3setJDUKE5M+qd+VEzfVVIOas/e wrGWUK2CRqCwOYcO6KL3CrwhPKlz+9gfIvl7VbD+tizbnNhQznBJ4ga0rDOs8AAN/Nho MgtZJ37NjwCuTBqpGtvFR2bwok79mJvfuqAr8VxdgYJ3gRXOS5B9TxMtB3fBBE8VBitt s58t3J+vCSlsRKjDT4s0++DiVSwKGW0L10mjycd1Pj+OtbQZLQJLJT3am4MDSCkqayi9 KAaSNAZTH8F4oXKXz1ltKzEIGpMbvPTTzq38uTz4p+/EUmmFaFD8JYwuRLu4oJn2WlyB BOvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774089947; x=1774694747; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=t/IfL7eVmmgy5B85Cedj7J6r6jidTJNyNMLxMWskFPE=; b=s5G08rEI2026/11reRpoUsDkP1GG0GUuj1mGHW//7xG4eq1fLycMeXeAT7WW+zF8J9 +5L6lDbQJQJAOincurHvWWxES6AgHvTqFsW2b3lCgpQ70XmRsMeA12RgK9eegcrg/mL3 RB+Xc27a38VTZ7B+Fv1TkA4i2lCqx1NvPk8IxTAw3zFpZr6AKF5gENP5FKNbZxMx63d/ Mg5yTgKAXrkm3fQbUNXlDRNXDgvHqmDOwRMBLBWfm03v3wJvkiZrokEA6OCDU3kVXh3t NXSTTfxdMWCL1gPlDGT3p41GwgQFFb1DFowEAzeRImHyl8Sp8Z/qDCYRdV736UrpePwI Jbxw== X-Forwarded-Encrypted: i=1; AJvYcCUb4WgvSVh08Q9FTyrqCFxQ6E6CPZn0OXysA4AC7ihakOBrj8zldgjDnqVdHKDlyfwUg3Tc1w1gaVzfE54=@vger.kernel.org X-Gm-Message-State: AOJu0Ywk6R9LmGwC5pyStw/3eF0If61ok/GvWnHBocK3kclJtpfyD/FR dO+CttNYjIZIOC+B2VE3IlvXCKThCcXTXMWAquKNZn70B5kNCBaRuPSW X-Gm-Gg: ATEYQzzviuIEvayiKW0Pr0Xp00G+Ov6UAP/JIqRA6/MjDjMsi8rsa8lycVrcw0tkroq lrrCZ/dW1SIVwqn6/W9ymD7bDrbKSGCCSexMg4TcaXfT4IrfWNoC0OY9vHFWxkIQX5DTCPSTEsp LP+BOl9IyAJH4aCv8vYDWfOpbexJY3N6qd5YFIxBU3dRyOxwCS9NnmTR+daxHR+BZoyEcTUM0MW vvnnRpegueDl4uJJc2DcVlN+LrsoxJPFotswOHbg7eIBfWtpqz/c6uSSVOBnBCeCtbRJ9BaHLwa L21hf9umhFeGWY4u55kt3ezvDlZiTSe2FzISd2QJRaHOK/fLXUAJM+MzI9/7WdUmQBfOCDMObAh QpDIO70WF6yGMrfRJ7T5wFbGGugsoz0PK5i9y1wcysv+yKpkWKHQ9b6e6NviF6qH8KN1iNXx/Pi 2A9ACRfDaFbb6y2GCmVJ11obs= X-Received: by 2002:a05:600c:1e0d:b0:485:3cef:d6ea with SMTP id 5b1f17b1804b1-486fe8efb0amr98927245e9.13.1774089947195; Sat, 21 Mar 2026 03:45:47 -0700 (PDT) Received: from kali ([185.155.148.247]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8b1fe65sm190296215e9.5.2026.03.21.03.45.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Mar 2026 03:45:46 -0700 (PDT) From: =?UTF-8?q?Z=C3=BCht=C3=BC=20Eren=20=C4=B0ncekara?= To: Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , "Luke D . Jones" Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Z=C3=BCht=C3=BC=20Eren=20=C4=B0ncekara?= Subject: [PATCH] platform/x86: asus-wmi: add quirk for Vivobook X7400PC Date: Sat, 21 Mar 2026 13:45:40 +0300 Message-ID: <20260321104540.68643-1-incekarazuhtu04@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The ASUS Vivobook X7400PC BIOS (version 303) contains ACPI errors leading to namespace collisions and missing thermal symbols. Specifically, the TcssSsdt table attempts to redefine objects in the TXHC scope that already exist in the DSDT, causing AE_ALREADY_EXISTS errors during boot and power state transitions. This leads to system hangs during suspend/resume cycles. Error logs observed: [ 0.148580] ACPI BIOS Error (bug): Failure creating named object [\_SB.P= C00.TXHC.RHUB.APLD], AE_ALREADY_EXISTS (20250807/dswload2-326) [ 4.587627] ACPI BIOS Error (bug): Could not resolve symbol [\CTDP], AE_= NOT_FOUND (20250807/psargs-332) [ 4.587636] ACPI Error: Aborting method \_SB.IETM.IDSP due to previous e= rror (AE_NOT_FOUND) (20250807/psparse-529) This patch introduces a model-specific quirk for the X7400PC to: 1. Handle the TXHC RHUB namespace collision to prevent power-state hangs. 2. Proactively check for missing thermal symbols to avoid ACPI interpreter aborts in thermal zone methods. Signed-off-by: Z=C3=BCht=C3=BC Eren =C4=B0ncekara --- drivers/platform/x86/asus-nb-wmi.c | 14 ++++++++++ drivers/platform/x86/asus-wmi.c | 42 ++++++++++++++++++++++++++++++ drivers/platform/x86/asus-wmi.h | 1 + 3 files changed, 57 insertions(+) diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus= -nb-wmi.c index 6a62bc5b0..64ff62122 100644 --- a/drivers/platform/x86/asus-nb-wmi.c +++ b/drivers/platform/x86/asus-nb-wmi.c @@ -155,6 +155,11 @@ static struct quirk_entry quirk_asus_z13 =3D { .tablet_switch_mode =3D asus_wmi_kbd_dock_devid, }; =20 +/* Quirk for ASUS Vivobook X7400PC to manage ACPI collisions and missing s= ymbols */ +static struct quirk_entry quirk_asus_x7400pc =3D { + .x7400pc_acpi_fix =3D true, +}; + static int dmi_matched(const struct dmi_system_id *dmi) { pr_info("Identified laptop model '%s'\n", dmi->ident); @@ -553,6 +558,15 @@ static const struct dmi_system_id asus_quirks[] =3D { }, .driver_data =3D &quirk_asus_z13, }, + { + .callback =3D dmi_matched, + .ident =3D "ASUS Vivobook X7400PC", + .matches =3D { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "Vivobook_ASUSLaptop X7400PC_N7400PC"), + }, + .driver_data =3D &quirk_asus_x7400pc, + }, {}, }; =20 diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wm= i.c index 8e3300f5c..7b8c15c1f 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -4599,6 +4599,48 @@ static int asus_wmi_platform_init(struct asus_wmi *a= sus) asus_wmi_set_devstate(ASUS_WMI_DEVID_CWAP, asus->driver->quirks->wapf, NULL); =20 + if (asus->driver->quirks->x7400pc_acpi_fix) { + acpi_status status; + acpi_handle handle; + int i; + + /* + * List of thermal threshold variables missing from the Vivobook X7400PC= BIOS. + * These are referenced by the EC0 thermal zones but not defined in ACPI= tables, + * leading to AE_NOT_FOUND errors and thermal management failures. + */ + static const char * const thermal_vars[] =3D { + "CTDP", "S1CT", "S1HT", "S1PT", "S1AT", + "S2CT", "S2HT", "S2PT", "S2AT", + "S3CT", "S3HT", "S3PT", "S3AT", + "S4CT", "S4HT", "S4PT", "S4AT" + }; + + pr_info("Vivobook X7400PC: Applying ACPI quirk fixes for stability\n"); + + /* + * 1. Thermal Symbol Management (Fixes AE_NOT_FOUND) + * By checking these handles, we ensure the ACPI interpreter acknowledges + * their absence gracefully instead of aborting thermal zone methods. + */ + for (i =3D 0; i < ARRAY_SIZE(thermal_vars); i++) { + status =3D acpi_get_handle(NULL, (char *)thermal_vars[i], &handle); + if (ACPI_FAILURE(status)) + pr_debug("Vivobook X7400PC: Managed missing thermal symbol: %s\n", + thermal_vars[i]); + } + + /* + * 2. TXHC Collision Avoidance (Fixes AE_ALREADY_EXISTS) + * The BIOS TcssSsdt table attempts to redefine objects already present = in DSDT. + * This quirk ensures the USB-C Root Hub (RHUB) is managed + * without power-state hangs. + */ + status =3D acpi_get_handle(NULL, "\\_SB.PC00.TXHC.RHUB", &handle); + if (ACPI_SUCCESS(status)) + pr_info("Vivobook X7400PC: Managed TXHC RHUB namespace collision\n"); + } + return 0; } =20 diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wm= i.h index 5cd4392b9..e09656b38 100644 --- a/drivers/platform/x86/asus-wmi.h +++ b/drivers/platform/x86/asus-wmi.h @@ -41,6 +41,7 @@ struct quirk_entry { bool wmi_force_als_set; bool wmi_ignore_fan; bool filter_i8042_e1_extended_codes; + bool x7400pc_acpi_fix; /* Fix for Vivobook X7400PC ACPI namespace and the= rmal issues */ int key_wlan_event; enum asus_wmi_tablet_switch_mode tablet_switch_mode; int wapf; --=20 2.53.0