From nobody Sat Aug 1 21:35:10 2026 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) (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 20FFF212F89 for ; Sat, 1 Aug 2026 18:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=209.85.128.182 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785607838; cv=pass; b=BtjJZy8t7Vd4zLGBSSf6tlsWjIR1yQyP0B4kWZIOJDrV5DhFQbeoNhT9ms/CqdshuhqiYw0IdyCcpF3a/zr7AumAJj9BEkrPRZTREHOLIO3XdYeZNsMdWb6kFvru1htp8KoTFP+Q4Nbo7dl6XP0O6kXbxAlTRQZa57HeEk3pYsU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785607838; c=relaxed/simple; bh=1pJUL+6M77HJJSwvYET+wCwQPOdaQdNQKcazVTQ5JcE=; h=MIME-Version:From:Date:Message-ID:Subject:To:Cc:Content-Type; b=Dar/E0yGfhYcbxkFBMCN1EYHh3ctFR5nksVuxyrjqIlDNEh79fZPgoqWjeovxOEGfJ/TlxdfhwnJ0Qt5hYqvdpgtZDkDGAKLdD+dCdyYIT+fqMnyoRbsgb9PRHg+g4A4dEOCgYx/riCWsIILX9f3ZUkcJMhUfhDdhZv81ya6BO4= ARC-Authentication-Results: i=2; 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=Anj6znZh; arc=pass smtp.client-ip=209.85.128.182 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="Anj6znZh" Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-81f52945098so35950207b3.0 for ; Sat, 01 Aug 2026 11:10:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1785607836; cv=none; d=google.com; s=arc-20260327; b=osG4UtXTpbzbcGd9XSoRRi64/ED72DmpaGIAay0Q9P1Bkip4jmd0ZJMlh8Ho49rlhV ieOJAUnsTbLHYWvhw7gRaiWiKps8KyGi1rnXjN9DrBjsk215uDD3uzdPI5602dvChT1I 0Nh5eTnhHb+BzxQIQ5j9kq3WwAMR26VcgQz8Rul4IWS3TvTHoVCOYO1aBUXVstxGxo3K 90hMgRegxdv0UOC4UeqDOLOsiNb7tW9d2fJ65VkormzXVjjEUCa2HQufvn0mWyKF1tWU FoVrmnO3xQluWB6BX9gPYrMUcfFaXfUjStl2M2K59wsuUD6hA9tseOJ5eiv6jrJBbqZW KW2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=Z//lxeCT8ePj6eHKiEj9CETIwlIlzc5JUSwHAQz4uXM=; fh=5D6ca3GHa+qjKEtG8sUXQ/SnWJKA7HymF7/xTZVHHwo=; b=E0/JiXke5Wy3T92KobNChdeqtIqA2HKBrP7c5Ilbgdlx+/HTeekAQ0EE/voMylHEmF /4AT67dhXwO6UbnH1eYq0zJv7HqKNxqDJSBx+C+ETKJ7ul8nkiDP5SWNnzZdE5Tl9VM+ PSzHIlQekH0D2dXfmCHsjTxsRIZtLiwGKwnem+e9AzbLLSQOk9Cb/j10VqOoiJxKWufU z902nPIBlM/0QcMoAd9eyltuYKUj2lIDuN08IRrqdSb6yTJ7KTU7zT88rvFrpOR1FZUt LtYtV8e/cWHNsr8i9pi0hnX5XlaG6h865jcI6z24/BEHGA3NPBsiZ7zAS/xrPD/6C9Z1 x+vA==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785607836; x=1786212636; darn=vger.kernel.org; h=content-type:cc:to:subject:message-id:date:from:mime-version:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Z//lxeCT8ePj6eHKiEj9CETIwlIlzc5JUSwHAQz4uXM=; b=Anj6znZhkyLG0cqT7Hs5QTtDhyfj4vdBhfmSG1xdfWDH631CwTXx5zipsavPAoBobY EYOjXkWmBykDbJLpeFAUEnXQyFnWZUJJ2gXnFIyZuAhSDeeMvfCaCGBEXhV4+yhF9f6J 6lG1RfHP+SwD915BHx9gWZtxtQVUliW/avsS3HmbY2+9f4ygVnagpiuiT7hrtIQ/nDot l32wSlUeCqpiSnTka3VW+cDyUsGfBHDHcNrTZ+U1I3w2MIi8Kj0EcyqW8YVENJY/yWBi elN5+Bo2DNblW9DMmbXNYfG4wn1VEVF4WPMiK48TqntjIK2ogQVKl0Czu3HvA5816X3E U/sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785607836; x=1786212636; h=content-type:cc:to:subject:message-id:date:from:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Z//lxeCT8ePj6eHKiEj9CETIwlIlzc5JUSwHAQz4uXM=; b=R75/eX26VSRbXKlCePcZvlDIRc1LAvXAS6HIHOGNuQBSSttdwX2j8Xhl7YDBaRifC4 1FY7o+6Su18FhrmAmoxy64YSniJk8gWWKuMBMH+xRZCKYJf2y5qU5zVQA+qyODISlNkx 2aGh8Z0eXYt+2hz+u8mwdSHiIG6leu5RyCTanOZBHWAal6a0ilWdwPZu5D0g42tC+Bkh dB2LvFKnCwmjAGOwSXM7O9zIU3C8Yl46lYCMMh3pfk9gGAJ9aOsd2Yu+ez7clti6/SwB 8TxcMZS1SSXmK1xB1M47LJNGzqUlYCAFQbvOGlV9NopnYoAB2zFd/+wh1RY1JFavzSVc 8r+Q== X-Forwarded-Encrypted: i=1; AHgh+RrVEX5UeP1au2QOyAOsWWE95LxMS5FB+HUHxKDYpH2OJo30KxdJzjvkplUMB6ogf+Yr93cZY+YyOutsypk=@vger.kernel.org X-Gm-Message-State: AOJu0YzPFfdmtuq0jKo22H1sAEQRgd2CmhaF1+30Gva7/Sl32rUzVP28 AaxiqrobGAzXY+mQnRSyod00hoqENrlqVEhorU7yEmz9gc7Zf2rRuYzxSu3HMl8n3VKjIg1igo+ VMRA3a00qUaenUdbQUXTZ2ufqNThacFs= X-Gm-Gg: AR+sD10RaKVYS+CyDrLGEJppk4mDry900uKRfaQHOlQprm3sSJ2k2aEDBQ4cwRhreKd ZePy87YD4o7NNnT5fNnA0sZyEBzTqLVQFVFlMmNzhlR154vcxynNw+wNsBoacCNc3HBsejqxRiZ tKyhGeY+CVIujjTlD5HF6Phot3s/QZ2hsDODpXwJT32o2PVPxw67Qo4CEKZRx1P5MtN7L6Nx9su R4OkvJn4KQJnDN0WW8qaZvniZOxb8+bKa4wm2dDjWyrqaBrc3mxK96tLwPR5b051ocFGKSaszKY VzY3htNEU/UMcD5wfRitJ7+YqnGrgOg2g5qFuphvKUURrkU50iamHgONG/lexod/HmVz/8pHqkM 5i1fmDqfEuQ== X-Received: by 2002:a05:690c:6284:b0:81e:fc6c:452c with SMTP id 00721157ae682-81fd4e78d70mr64043627b3.9.1785607835997; Sat, 01 Aug 2026 11:10:35 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lowne Onema Date: Sat, 1 Aug 2026 20:10:25 +0200 X-Gm-Features: AUfX_mxUGwzxNMgfJt9bkzwcd0YVqyIfkGBoYw2uS1Lnjoh8hWSejVwJphLpoeo Message-ID: Subject: [PATCH] PCI: quirks: Prevent D3 for Acer Swift SF515-51T Root Port to fix audio To: bhelgaas@google.com Cc: lukas@wunner.de, rafael.j.wysocki@intel.com, alexander.deucher@amd.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" commit c6e331312ebf ("PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI") made Root Ports newly eligible for D3 when ACPI reports the port as power-manageable. On my Acer Swift SF515-51T, this Root Port (Intel Cannon Point-LP PCI Express Root Port #9, 8086:9db0, always empty on this SKU) is put into D3 as a result, and doing so permanently silences the internal speakers until the machine is rebooted. Disassembly of this board's ACPI tables shows the Root Port's power resource (RP09.PXP) and the SATA port SAT0.PRT1 share GPIO pin 0x0402000D as their power enable line. That GPIO also gates a rail the internal speaker amplifier depends on, but this dependency is not expressed anywhere in ACPI -- HDAS._PR0 only references PAUD, so the kernel has no way to know that putting the Root Port in D3 cuts power the audio codec/amp circuitry needs. Prior to commit c6e331312ebf ("PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI") this Root Port was never trusted for D3, so the missing dependency had no observable effect. Confirmed on hardware: forcing the port to stay in D0 (via /sys/.../power/control) restores audio immediately, and letting it re-enter D3 reliably kills it again. Use PCI_DEV_FLAGS_NO_D3, matched to this exact model via DMI, to keep the Root Port in D0, following the same pattern already used for other model-specific D3 breakage in this file. Fixes: c6e331312ebf ("PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI") Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D212463 Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D214125 Signed-off-by: paasshme --- I went with a DMI-matched PCI_DEV_FLAGS_NO_D3 quirk since that seems to be the go-to pattern in this file for "device breaks in D3" cases (I saw quirk_no_ata_d3 above it). Is that the right mechanism here, or would you prefer something scoped differently? Apologies in advance for any formatting/process mistakes, that's my first p= atch. Thanks for taking a look drivers/pci/quirks.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index b09f27f78..feb83a84b 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1471,6 +1471,41 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AL, PCI_ANY_ID, DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_VIA, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE, 8, quirk_no_ata_d3); +/* + * The Root Port that the Acer Swift SF515-51T's internal, always-empty PC= Ie + * slot is wired to (Intel Cannon Point-LP PCI Express Root Port #9) share= s a + * GPIO power-good/enable line (0x0402000D) with SAT0.PRT1, a SATA port, p= er + * this board's own ACPI tables -- confirmed via DSDT/SSDT disassembly, no= t a + * naming coincidence. That GPIO gates a physical rail that isn't document= ed + * as a dependency anywhere else in ACPI, but real-world testing on this + * exact hardware shows it also feeds circuitry the internal speaker + * amplifier depends on: forcing this Root Port to stay out of D3 restores + * audio, and putting it back into D3 reliably kills it again. + * + * Before commit c6e331312ebf ("PCI/ACPI: Whitelist hotplug ports for D3 if + * power managed by ACPI"), this Root Port was never trusted for D3 at all, + * so the missing dependency was invisible -- the shared rail just stayed = on + * incidentally. That commit's broadened trust condition lets this specifi= c, + * always-empty port enter D3, silently cutting the rail and killing the + * internal speakers. + */ +static const struct dmi_system_id acer_sf515_rp_d3_dmi_table[] =3D { + { + .matches =3D { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Swift SF515-51T"), + }, + }, + {} +}; + +static void quirk_acer_sf515_rp09_no_d3(struct pci_dev *pdev) +{ + if (dmi_check_system(acer_sf515_rp_d3_dmi_table)) + pdev->dev_flags |=3D PCI_DEV_FLAGS_NO_D3; +} +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x9db0, quirk_acer_sf515_rp09_no_d3); + /* * This was originally an Alpha-specific thing, but it really fits here. * The i82375 PCI/EISA bridge appears as non-classified. Fix that. -- 2.34.1