From patchwork Wed Sep 6 07:54:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830236 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Qy7oqauR; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRW4Wf0z1ygc for ; Wed, 6 Sep 2023 17:55:19 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNW-000571-Ty; Wed, 06 Sep 2023 07:55:11 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNU-00055U-2v for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:08 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id BE9623F704 for ; Wed, 6 Sep 2023 07:55:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986907; bh=god6Hj2OTftFrSiqsZwuYbw/7XCEmLWiRVZtRyu1+ao=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Qy7oqauRU6Td+ZaPKJrPjoxS3nIG2iF8FMBIXQYsDjkhTBlJTOV7Rh/ticris7NIH N9ZKVDJZUqjrmPID1q9Zb4VIRLCyrM/kO1P9DXvm4GMwU0qzneVJCc3qeEiQIhhzzN cQp6B5sEsLQJ0F+GDKb8PE3u47oMucIgzbA8AYWufg8NrKnrQUo24UKzwL/6Fl93dH Fot2yb1q6Es5xZhgwrVHVTg6o67H2milKiOciAXlAaKc51sbdkkzHKXl9rkdOqW6oE n97Bv+iyL3QxJNE8YUjJjP2aCEg9zBYfNEDNvk3nxPyuSzF5rlK6IU4DTOJmm4Ifwo XwjSCGR6EmtiA== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L/M/Unstable] [PATCH 1/9] Revert "UBUNTU: SAUCE: vmd: fixup bridge ASPM by driver name instead" Date: Wed, 6 Sep 2023 15:54:13 +0800 Message-Id: <20230906075421.357683-2-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2034504 This reverts commit 154d48da2c57514e4b5dadc7b8c70a4edb550981. Signed-off-by: Kai-Heng Feng --- drivers/pci/quirks.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 274005cdada6..1198dc07754f 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6052,36 +6052,23 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); #endif /* + * Device [8086:9a09], [8086:a0b0] and [8086:a0bc] * BIOS may not be able to access config space of devices under VMD domain, so * it relies on software to enable ASPM for links under VMD. */ -static bool pci_fixup_is_vmd_bridge(struct pci_dev *pdev) -{ - struct pci_bus *bus = pdev->bus; - struct device *dev; - struct pci_driver *pdrv; - - if (!pci_is_root_bus(bus)) - return false; - - dev = bus->bridge->parent; - if (dev == NULL) - return false; - - pdrv = pci_dev_driver(to_pci_dev(dev)); - if (pdrv == NULL || strcmp("vmd", pdrv->name)) - return false; - - return true; -} +static const struct pci_device_id vmd_bridge_tbl[] = { + { PCI_VDEVICE(INTEL, 0x9a09) }, + { PCI_VDEVICE(INTEL, 0xa0b0) }, + { PCI_VDEVICE(INTEL, 0xa0bc) }, + { } +}; static void pci_fixup_enable_aspm(struct pci_dev *pdev) { - if (!pci_fixup_is_vmd_bridge(pdev)) + if (!pci_match_id(vmd_bridge_tbl, pdev)) return; pdev->dev_flags |= PCI_DEV_FLAGS_ENABLE_ASPM; - pci_info(pdev, "enable ASPM for pci bridge behind vmd"); } DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, PCI_CLASS_BRIDGE_PCI, 8, pci_fixup_enable_aspm); @@ -6096,7 +6083,7 @@ static void pci_fixup_enable_vmd_nvme_ltr(struct pci_dev *pdev) if (!parent) return; - if (!pci_fixup_is_vmd_bridge(parent)) + if (!pci_match_id(vmd_bridge_tbl, parent)) return; pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); @@ -6114,7 +6101,6 @@ static void pci_fixup_enable_vmd_nvme_ltr(struct pci_dev *pdev) /* 3145728ns, i.e. 0x300000ns */ pci_write_config_word(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, 0x1003); pci_write_config_word(pdev, pos + PCI_LTR_MAX_NOSNOOP_LAT, 0x1003); - pci_info(pdev, "enable LTR for nvme behind vmd"); } DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_EXPRESS, 0, pci_fixup_enable_vmd_nvme_ltr); From patchwork Wed Sep 6 07:54:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830237 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=wZwlbygq; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRY4RDnz1yhk for ; Wed, 6 Sep 2023 17:55:21 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNZ-00058B-Bt; Wed, 06 Sep 2023 07:55:13 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNW-00056u-5C for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:10 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id B59E23F704 for ; Wed, 6 Sep 2023 07:55:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986909; bh=xQ1/CruKXxgCu/FA5QsSPvnh1I4lolvOwEmi4tuv4w0=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=wZwlbygqQHNdID0IH8FM68VDC7Jg23rJDrGTQmEBtQWccokq1XcVv/zqbaYX47QuT trj1KglPv6mb92FNjlsyT929fdLamjE5m8w6+lEV7PoZVMQOpwP+H1LlJCSg5538pZ YikgFgKle6IkDgI0VJV2+v8gduE5/jcAJDJgxfAhDBaZn5aVpI6HwhQMMuM5JbARp0 kULVSLrw4ysHK/qYFHeo5uKv1k5rAdiR94hnAZ/VQgPJhzFexNEdcQO3JorJJZPzHO g3SnJ7zEX/aZbl+nntB9V5ru/UTSRVASqs/nqS2ObCCx1M/Cs1vG017jVmZtkPZSJB 0x/acpuuICvpg== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L/M/Unstable] [PATCH 2/9] Revert "UBUNTU: SAUCE: PCI/ASPM: Enable LTR for endpoints behind VMD" Date: Wed, 6 Sep 2023 15:54:14 +0800 Message-Id: <20230906075421.357683-3-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2034504 This reverts commit 47c7bfd31514e7b54a1f830f7707297aebbb8679. Signed-off-by: Kai-Heng Feng --- drivers/pci/quirks.c | 48 +++----------------------------------------- 1 file changed, 3 insertions(+), 45 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 1198dc07754f..4ff1bb93a2bd 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6052,55 +6052,13 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); #endif /* - * Device [8086:9a09], [8086:a0b0] and [8086:a0bc] + * Device [8086:9a09] * BIOS may not be able to access config space of devices under VMD domain, so * it relies on software to enable ASPM for links under VMD. */ -static const struct pci_device_id vmd_bridge_tbl[] = { - { PCI_VDEVICE(INTEL, 0x9a09) }, - { PCI_VDEVICE(INTEL, 0xa0b0) }, - { PCI_VDEVICE(INTEL, 0xa0bc) }, - { } -}; - static void pci_fixup_enable_aspm(struct pci_dev *pdev) { - if (!pci_match_id(vmd_bridge_tbl, pdev)) - return; - pdev->dev_flags |= PCI_DEV_FLAGS_ENABLE_ASPM; } -DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, - PCI_CLASS_BRIDGE_PCI, 8, pci_fixup_enable_aspm); - -static void pci_fixup_enable_vmd_nvme_ltr(struct pci_dev *pdev) -{ - struct pci_dev *parent; - int pos; - u16 val; - - parent = pci_upstream_bridge(pdev); - if (!parent) - return; - - if (!pci_match_id(vmd_bridge_tbl, parent)) - return; - - pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); - if (!pos) - return; - - pci_read_config_word(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, &val); - if (val) - return; - - pci_read_config_word(pdev, pos + PCI_LTR_MAX_NOSNOOP_LAT, &val); - if (val) - return; - - /* 3145728ns, i.e. 0x300000ns */ - pci_write_config_word(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, 0x1003); - pci_write_config_word(pdev, pos + PCI_LTR_MAX_NOSNOOP_LAT, 0x1003); -} -DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, - PCI_CLASS_STORAGE_EXPRESS, 0, pci_fixup_enable_vmd_nvme_ltr); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a09, pci_fixup_enable_aspm); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa0b0, pci_fixup_enable_aspm); From patchwork Wed Sep 6 07:54:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830238 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=TLAcjiPs; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRZ60kWz1ygc for ; Wed, 6 Sep 2023 17:55:22 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNa-000595-TY; Wed, 06 Sep 2023 07:55:14 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNX-00057S-VQ for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:12 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id A10763F704 for ; Wed, 6 Sep 2023 07:55:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986911; bh=5/OQn/Bi2JpYOGCQ8V9LlageQbKTOAnbl6P68s1MJ8o=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TLAcjiPscRZfuGXsKQk2jEFgPzmi+aQ5kLzft1OVhjC7nATgfFAiaQrMANNheHUdC NHh6gTzLvoIsZzJDbt/e2GnZbxGzoom8MdrAoLD+mnNJuyJmbozm8rIKpXvs4Wub9+ CnpQRZemAjshUP403DoJH7cBwoVUROW3JZO70OT/afLz6m8xqwqyhX2IGfFHwZVVfr pDKudIOeeSqgkL1kjMnK3GtHVCOusJREHj91WtXJB1zMV/i5M7mr0SE+nmk0YDaqnV D/BXPeIRgYcGAm5a8IwHe244Bq4Hg0fBcuH4xEKoqIO1qHWlkad0xsJY3+ANDynL75 EpUpD+9be12FQ== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L/M/Unstable] [PATCH 3/9] Revert "UBUNTU: SAUCE: PCI/ASPM: Enable ASPM for links under VMD domain" Date: Wed, 6 Sep 2023 15:54:15 +0800 Message-Id: <20230906075421.357683-4-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2034504 This reverts commit 1a0102a08f206149d9abd56c2b28877c878b5526. Signed-off-by: Kai-Heng Feng --- drivers/pci/pcie/aspm.c | 3 +-- drivers/pci/quirks.c | 12 ------------ include/linux/pci.h | 2 -- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index fd9e03fa315e..1d3d1cb0594e 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -701,8 +701,7 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) aspm_l1ss_init(link); /* Save default state */ - link->aspm_default = parent->dev_flags & PCI_DEV_FLAGS_ENABLE_ASPM ? - ASPM_STATE_ALL : link->aspm_enabled; + link->aspm_default = link->aspm_enabled; /* Setup initial capable state. Will be updated later */ link->aspm_capable = link->aspm_support; diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 4ff1bb93a2bd..592e1c4ae697 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6050,15 +6050,3 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2d, dpc_log_size); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2f, dpc_log_size); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); #endif - -/* - * Device [8086:9a09] - * BIOS may not be able to access config space of devices under VMD domain, so - * it relies on software to enable ASPM for links under VMD. - */ -static void pci_fixup_enable_aspm(struct pci_dev *pdev) -{ - pdev->dev_flags |= PCI_DEV_FLAGS_ENABLE_ASPM; -} -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a09, pci_fixup_enable_aspm); -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa0b0, pci_fixup_enable_aspm); diff --git a/include/linux/pci.h b/include/linux/pci.h index f011101794f8..bd9026da772b 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -244,8 +244,6 @@ enum pci_dev_flags { PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11), /* Device does honor MSI masking despite saying otherwise */ PCI_DEV_FLAGS_HAS_MSI_MASKING = (__force pci_dev_flags_t) (1 << 12), - /* Enable ASPM regardless of how LnkCtl is programmed */ - PCI_DEV_FLAGS_ENABLE_ASPM = (__force pci_dev_flags_t) (1 << 13), }; enum pci_irq_reroute_variant { From patchwork Wed Sep 6 07:54:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830239 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=fjgQPwuM; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRd2dWzz1yhc for ; Wed, 6 Sep 2023 17:55:25 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNd-0005Au-50; Wed, 06 Sep 2023 07:55:17 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNZ-00058b-N6 for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:13 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 794E83F704 for ; Wed, 6 Sep 2023 07:55:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986913; bh=kwTGXmvzarjNorvMdJjNqeOdh0EM6lxvDdfmr0kINM8=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fjgQPwuMD6itkxxnR7m5M+aJppspuP4Pzy59Bs5C107s5VRw5q7E3q17JkZyEVmn0 Uia8FZE845zoqFOkEjk8XRtE0usbc5oVJUkoXjMrXMtf6/VGHH7V7woHngJFqTT6p1 tSOJbqQyartPZBHZFn4RHwf1Kzb+4rFm4XbTcOkNMXZauaive6uIfwUtqa3vUrzlM8 RoFWsXuWIKyxIkXD1svXOWnu0DQh64sCmAmpCwnUgJCal0fJmHOkySv1Lm634i1J+1 a28+V1ZEMkegeddC00g1e7DIZiEROx2gOjcERNcdgO09+b2ZJvuE5kD99ucAA/lCZB Rk6NGBdm6GzCQ== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L] [PATCH 4/9] PCI/ASPM: Add pci_enable_link_state() Date: Wed, 6 Sep 2023 15:54:16 +0800 Message-Id: <20230906075421.357683-5-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Bottini BugLink: https://bugs.launchpad.net/bugs/2034504 Add pci_enable_link_state() to allow devices to change the default BIOS configured states. Clears the BIOS default settings then sets the new states and reconfigures the link under the semaphore. Also add PCIE_LINK_STATE_ALL macro for convenience for callers that want to enable all link states. Link: https://lore.kernel.org/r/20230120031522.2304439-2-david.e.box@linux.intel.com Signed-off-by: Michael Bottini Signed-off-by: David E. Box Signed-off-by: Lorenzo Pieralisi Reviewed-by: Kuppuswamy Sathyanarayanan Acked-by: Bjorn Helgaas (cherry picked from commit de82f60f9c86b72635ce49f7ab822e6a00a90dca) Signed-off-by: Kai-Heng Feng --- drivers/pci/pcie/aspm.c | 54 +++++++++++++++++++++++++++++++++++++++++ include/linux/pci.h | 7 ++++++ 2 files changed, 61 insertions(+) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 1d3d1cb0594e..74659be8e61e 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -1204,6 +1204,60 @@ int pci_disable_link_state(struct pci_dev *pdev, int state) } EXPORT_SYMBOL(pci_disable_link_state); +/** + * pci_enable_link_state - Clear and set the default device link state so that + * the link may be allowed to enter the specified states. Note that if the + * BIOS didn't grant ASPM control to the OS, this does nothing because we can't + * touch the LNKCTL register. Also note that this does not enable states + * disabled by pci_disable_link_state(). Return 0 or a negative errno. + * + * @pdev: PCI device + * @state: Mask of ASPM link states to enable + */ +int pci_enable_link_state(struct pci_dev *pdev, int state) +{ + struct pcie_link_state *link = pcie_aspm_get_link(pdev); + + if (!link) + return -EINVAL; + /* + * A driver requested that ASPM be enabled on this device, but + * if we don't have permission to manage ASPM (e.g., on ACPI + * systems we have to observe the FADT ACPI_FADT_NO_ASPM bit and + * the _OSC method), we can't honor that request. + */ + if (aspm_disabled) { + pci_warn(pdev, "can't override BIOS ASPM; OS doesn't have ASPM control\n"); + return -EPERM; + } + + down_read(&pci_bus_sem); + mutex_lock(&aspm_lock); + link->aspm_default = 0; + if (state & PCIE_LINK_STATE_L0S) + link->aspm_default |= ASPM_STATE_L0S; + if (state & PCIE_LINK_STATE_L1) + /* L1 PM substates require L1 */ + link->aspm_default |= ASPM_STATE_L1 | ASPM_STATE_L1SS; + if (state & PCIE_LINK_STATE_L1_1) + link->aspm_default |= ASPM_STATE_L1_1; + if (state & PCIE_LINK_STATE_L1_2) + link->aspm_default |= ASPM_STATE_L1_2; + if (state & PCIE_LINK_STATE_L1_1_PCIPM) + link->aspm_default |= ASPM_STATE_L1_1_PCIPM; + if (state & PCIE_LINK_STATE_L1_2_PCIPM) + link->aspm_default |= ASPM_STATE_L1_2_PCIPM; + pcie_config_aspm_link(link, policy_to_aspm_state(link)); + + link->clkpm_default = (state & PCIE_LINK_STATE_CLKPM) ? 1 : 0; + pcie_set_clkpm(link, policy_to_clkpm_state(link)); + mutex_unlock(&aspm_lock); + up_read(&pci_bus_sem); + + return 0; +} +EXPORT_SYMBOL(pci_enable_link_state); + static int pcie_aspm_set_policy(const char *val, const struct kernel_param *kp) { diff --git a/include/linux/pci.h b/include/linux/pci.h index bd9026da772b..d470ae6a4178 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1653,10 +1653,15 @@ extern bool pcie_ports_native; #define PCIE_LINK_STATE_L1_2 BIT(4) #define PCIE_LINK_STATE_L1_1_PCIPM BIT(5) #define PCIE_LINK_STATE_L1_2_PCIPM BIT(6) +#define PCIE_LINK_STATE_ALL (PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 |\ + PCIE_LINK_STATE_CLKPM | PCIE_LINK_STATE_L1_1 |\ + PCIE_LINK_STATE_L1_2 | PCIE_LINK_STATE_L1_1_PCIPM |\ + PCIE_LINK_STATE_L1_2_PCIPM) #ifdef CONFIG_PCIEASPM int pci_disable_link_state(struct pci_dev *pdev, int state); int pci_disable_link_state_locked(struct pci_dev *pdev, int state); +int pci_enable_link_state(struct pci_dev *pdev, int state); void pcie_no_aspm(void); bool pcie_aspm_support_enabled(void); bool pcie_aspm_enabled(struct pci_dev *pdev); @@ -1666,6 +1671,8 @@ static inline int pci_disable_link_state(struct pci_dev *pdev, int state) { return 0; } static inline int pci_disable_link_state_locked(struct pci_dev *pdev, int state) { return 0; } +static inline int pci_enable_link_state(struct pci_dev *pdev, int state) +{ return 0; } static inline void pcie_no_aspm(void) { } static inline bool pcie_aspm_support_enabled(void) { return false; } static inline bool pcie_aspm_enabled(struct pci_dev *pdev) { return false; } From patchwork Wed Sep 6 07:54:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830240 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=bJp+WZB+; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRg4L64z1ygc for ; Wed, 6 Sep 2023 17:55:27 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNf-0005CR-1K; Wed, 06 Sep 2023 07:55:19 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNb-00059m-Fh for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:15 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 5EA0C3F704 for ; Wed, 6 Sep 2023 07:55:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986915; bh=ERlDs5RN29QxnUSrMDsXU0XImKAtluxGaNIt/qYrRV4=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bJp+WZB+VZL4bwo9xZ9ZEiHDLnqsp9RYoD1QLApcIZVT4ampbEYv7G28BQRq/wjMC N4weS8SXCtInaFSgqDuAZuZRmTuGFzE0Sx7Rsf76G5UMMaYoliVUa8TP7+B6Fh3fok HkfckjSbneJOHsb5SFX9A7W7/75ZC2gfRTfmg/vX7bJxe3JnB2iUpkaMYWtGz04B1M jMNMq2AApRt4CidI6MEHDJ1gth8ThUtKBymdvbgu50z/wOiCduLYs/rh9T0NTbgeaT jeTkGH8UDS+onVbuZ9k7tiIVHTVyxQrZCme//ENWzRWo7OJbXJNxcAEtukY0ebkgIu PTtZQ8IiQPGcA== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L] [PATCH 5/9] PCI: vmd: Use PCI_VDEVICE in device list Date: Wed, 6 Sep 2023 15:54:17 +0800 Message-Id: <20230906075421.357683-6-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: "David E. Box" BugLink: https://bugs.launchpad.net/bugs/2034504 Use PCI_VDEVICE to simplify the device table. Link: https://lore.kernel.org/r/20230120031522.2304439-3-david.e.box@linux.intel.com Signed-off-by: David E. Box Signed-off-by: Lorenzo Pieralisi Reviewed-by: Jon Derrick Reviewed-by: Nirmal Patel Reviewed-by: Kuppuswamy Sathyanarayanan (cherry picked from commit cca0dfecdba3f37c08b7ae99ce07197be84b9281) Signed-off-by: Kai-Heng Feng --- drivers/pci/controller/vmd.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 7419ed1dbee6..5a8e2bc57857 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -1031,33 +1031,33 @@ static int vmd_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(vmd_dev_pm_ops, vmd_suspend, vmd_resume); static const struct pci_device_id vmd_ids[] = { - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_201D), + {PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_VMD_201D), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_28C0), + {PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_VMD_28C0), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_CAN_BYPASS_MSI_REMAP,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x467f), + {PCI_VDEVICE(INTEL, 0x467f), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4c3d), + {PCI_VDEVICE(INTEL, 0x4c3d), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa77f), + {PCI_VDEVICE(INTEL, 0xa77f), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7d0b), + {PCI_VDEVICE(INTEL, 0x7d0b), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xad0b), + {PCI_VDEVICE(INTEL, 0xad0b), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, - {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B), + {PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_OFFSET_FIRST_VECTOR,}, From patchwork Wed Sep 6 07:54:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830241 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=dmyZLR00; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRj5Kd6z1ygc for ; Wed, 6 Sep 2023 17:55:29 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNh-0005EE-E7; Wed, 06 Sep 2023 07:55:21 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNd-0005BD-FP for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:17 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 416CA3F704 for ; Wed, 6 Sep 2023 07:55:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986917; bh=KRpz19hLEdHTwmy/DNEAXYj5eg2OlZzdEUj2sdq7xNc=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dmyZLR00Pr0muMwT4mOn1sqortIIA5L+tg1t0WPA7FY4L9soVIVPUETj0NEh0/xsl yK1sX7PGbKza6w2Oi2JRysZw9EAp1Y568Z4xXZO8SHxM0A9YnLXHyNXl+liKVBFdH9 Ji8B3FlIPtpJIa3KKIQxxPzQUlVtNPNuqQaHR9jhJwOufxzpmtlS2iotX25Ea/kCIy 7dglBPoHmrLyL5firyUAdnTRYt13jG1z5zCt8HuoRNrOz39E0P6mtNhmLH8Y+htP1C +Y/sLIQr/GUu9taFJtuXTP3ucV2g5aIlc7L9C68NwND3+jIv4A+IfOM7SXyO8gedup 1vk9AOuTEXbaQ== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L] [PATCH 6/9] PCI: vmd: Create feature grouping for client products Date: Wed, 6 Sep 2023 15:54:18 +0800 Message-Id: <20230906075421.357683-7-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: "David E. Box" BugLink: https://bugs.launchpad.net/bugs/2034504 Simplify the device ID list by creating a grouping of features shared by client products. Suggested-by: Jon Derrick Link: https://lore.kernel.org/r/20230120031522.2304439-4-david.e.box@linux.intel.com Signed-off-by: David E. Box Signed-off-by: Lorenzo Pieralisi Reviewed-by: Kuppuswamy Sathyanarayanan (cherry picked from commit 14d2079af64835494fe5c59ed63222d91a38a624) Signed-off-by: Kai-Heng Feng --- drivers/pci/controller/vmd.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 5a8e2bc57857..747c2a44d9e3 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -68,6 +68,10 @@ enum vmd_features { VMD_FEAT_CAN_BYPASS_MSI_REMAP = (1 << 4), }; +#define VMD_FEATS_CLIENT (VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | \ + VMD_FEAT_HAS_BUS_RESTRICTIONS | \ + VMD_FEAT_OFFSET_FIRST_VECTOR) + static DEFINE_IDA(vmd_instance_ida); /* @@ -1038,29 +1042,17 @@ static const struct pci_device_id vmd_ids[] = { VMD_FEAT_HAS_BUS_RESTRICTIONS | VMD_FEAT_CAN_BYPASS_MSI_REMAP,}, {PCI_VDEVICE(INTEL, 0x467f), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {PCI_VDEVICE(INTEL, 0x4c3d), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {PCI_VDEVICE(INTEL, 0xa77f), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {PCI_VDEVICE(INTEL, 0x7d0b), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {PCI_VDEVICE(INTEL, 0xad0b), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B), - .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | - VMD_FEAT_HAS_BUS_RESTRICTIONS | - VMD_FEAT_OFFSET_FIRST_VECTOR,}, + .driver_data = VMD_FEATS_CLIENT,}, {0,} }; MODULE_DEVICE_TABLE(pci, vmd_ids); From patchwork Wed Sep 6 07:54:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830242 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=c5z41tiP; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRl5wc6z1yhc for ; Wed, 6 Sep 2023 17:55:31 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNi-0005HV-Kk; Wed, 06 Sep 2023 07:55:22 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNf-0005Cf-3C for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:19 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id EC2F73F704 for ; Wed, 6 Sep 2023 07:55:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986918; bh=GRYZ5YK2ujlMlqfhK8AHWJI1e4wIEiUeRoWfLCGXb2k=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=c5z41tiPhmf0d3K5KS5nlX8e6SevF/iyjPdxn4SWTxWT0/44c803jBA9TciPYndpf 545n7hHAMTuj+wzFZQ7teG707q/tIriG+57c74rGZjRoJ6yaYnsnRkBy/iLdkowceJ QixsVk7k/mS/aFWSm18jNwV4wLQzZsAPZfZkNQBVrzDV607/QXhkzzDm8t1EPj3yQS Ti1bH1OEQUyunThKqWXFkAH36rP2Wb8GxN8Mdm3fIN09kRILbigvgTLm1DTxafvQ1V bdIW9gzM/0PBg5Z2ULIFdi9gU0Axr+HZWXOZzu6o+yKw2BMPzVpIir6TzpDwSMXSs5 Izp1L7Z2ytWng== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L] [PATCH 7/9] PCI: vmd: Add quirk to configure PCIe ASPM and LTR Date: Wed, 6 Sep 2023 15:54:19 +0800 Message-Id: <20230906075421.357683-8-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: "David E. Box" BugLink: https://bugs.launchpad.net/bugs/2034504 PCIe ports reserved for VMD use are not visible to BIOS and therefore not configured to enable PCIe ASPM or LTR values (which BIOS will configure if they are not set). Lack of this programming results in high power consumption on laptops as reported in bugzilla. For affected products use pci_enable_link_state to set the allowed link states for devices on the root ports. Also set the LTR value to the maximum value needed for the SoC. This is a workaround for products from Rocket Lake through Alder Lake. Raptor Lake, the latest product at this time, has already implemented LTR configuring in BIOS. Future products will move ASPM configuration back to BIOS as well. As this solution is intended for laptops, support is not added for hotplug or for devices downstream of a switch on the root port. Link: https://bugzilla.kernel.org/show_bug.cgi?id=212355 Link: https://bugzilla.kernel.org/show_bug.cgi?id=215063 Link: https://bugzilla.kernel.org/show_bug.cgi?id=213717 Link: https://lore.kernel.org/r/20230120031522.2304439-5-david.e.box@linux.intel.com Signed-off-by: Michael Bottini Signed-off-by: David E. Box Signed-off-by: Lorenzo Pieralisi Reviewed-by: Jon Derrick Reviewed-by: Nirmal Patel Reviewed-by: Kuppuswamy Sathyanarayanan (cherry picked from commit f492edb40b54862cbd65e6aa5eb39fa40f9949bf) Signed-off-by: Kai-Heng Feng --- drivers/pci/controller/vmd.c | 55 +++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 747c2a44d9e3..98c60dae608b 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -66,11 +66,22 @@ enum vmd_features { * interrupt handling. */ VMD_FEAT_CAN_BYPASS_MSI_REMAP = (1 << 4), + + /* + * Enable ASPM on the PCIE root ports and set the default LTR of the + * storage devices on platforms where these values are not configured by + * BIOS. This is needed for laptops, which require these settings for + * proper power management of the SoC. + */ + VMD_FEAT_BIOS_PM_QUIRK = (1 << 5), }; +#define VMD_BIOS_PM_QUIRK_LTR 0x1003 /* 3145728 ns */ + #define VMD_FEATS_CLIENT (VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | \ VMD_FEAT_HAS_BUS_RESTRICTIONS | \ - VMD_FEAT_OFFSET_FIRST_VECTOR) + VMD_FEAT_OFFSET_FIRST_VECTOR | \ + VMD_FEAT_BIOS_PM_QUIRK) static DEFINE_IDA(vmd_instance_ida); @@ -713,6 +724,46 @@ static void vmd_copy_host_bridge_flags(struct pci_host_bridge *root_bridge, vmd_bridge->native_dpc = root_bridge->native_dpc; } +/* + * Enable ASPM and LTR settings on devices that aren't configured by BIOS. + */ +static int vmd_pm_enable_quirk(struct pci_dev *pdev, void *userdata) +{ + unsigned long features = *(unsigned long *)userdata; + u16 ltr = VMD_BIOS_PM_QUIRK_LTR; + u32 ltr_reg; + int pos; + + if (!(features & VMD_FEAT_BIOS_PM_QUIRK)) + return 0; + + pci_enable_link_state(pdev, PCIE_LINK_STATE_ALL); + + pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); + if (!pos) + return 0; + + /* + * Skip if the max snoop LTR is non-zero, indicating BIOS has set it + * so the LTR quirk is not needed. + */ + pci_read_config_dword(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, <r_reg); + if (!!(ltr_reg & (PCI_LTR_VALUE_MASK | PCI_LTR_SCALE_MASK))) + return 0; + + /* + * Set the default values to the maximum required by the platform to + * allow the deepest power management savings. Write as a DWORD where + * the lower word is the max snoop latency and the upper word is the + * max non-snoop latency. + */ + ltr_reg = (ltr << 16) | ltr; + pci_write_config_dword(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, ltr_reg); + pci_info(pdev, "VMD: Default LTR value set by driver\n"); + + return 0; +} + static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features) { struct pci_sysdata *sd = &vmd->sysdata; @@ -890,6 +941,8 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features) pci_assign_unassigned_bus_resources(vmd->bus); + pci_walk_bus(vmd->bus, vmd_pm_enable_quirk, &features); + /* * VMD root buses are virtual and don't return true on pci_is_pcie() * and will fail pcie_bus_configure_settings() early. It can instead be From patchwork Wed Sep 6 07:54:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830243 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=rQOIJZFT; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRn71h4z1ygc for ; Wed, 6 Sep 2023 17:55:33 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNl-0005Jm-2k; Wed, 06 Sep 2023 07:55:25 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNg-0005EF-RF for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:21 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 9F0853F704 for ; Wed, 6 Sep 2023 07:55:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986920; bh=H9Ag9igus5JJykOuRf+kfs0HK/+A+eJeYGe2srE5zpk=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rQOIJZFTLBYgFOBHpWNhe90IAwWzFEM4dJb35XUkLrmI2F5kc2lN1NY+zBRH/rKYd TyS8a5vVcD206OxHOhyk7rA3nmiLvULQjBtIoSFa3uDZAOsUuGhRVq8nBW1+PCF6P6 itemkXwH9a0ekPqe04Hn8TKBLNG96eizuuJBBmpKunvRiytSfUmwpGXccHcsEWLAf6 MBRo3/OBnDSUkrs7lFwCQCUzdZ/mGyKZE13d+ZEne+6KyQztHCn3nsBalWNlYnMGDc VjwoGDFzHwb9s01akKQi2PnPl1d/B5AAFSTV2EPZ/7HEJjOdeVT8d3hKeuURax8hZq 5OmrghMutVGUg== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L/M/Unstable] [PATCH 8/9] UBUNTU: SAUCE: PCI/ASPM: Allow ASPM override over FADT default Date: Wed, 6 Sep 2023 15:54:20 +0800 Message-Id: <20230906075421.357683-9-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2034504 On cases where BIOS can't program ASPM registers, allow the driver to do so, essentially ignoring the FADT ASPM flag. Signed-off-by: Kai-Heng Feng --- drivers/pci/pcie/aspm.c | 5 +++-- include/linux/pci.h | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 74659be8e61e..67df4a467b0f 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -701,7 +701,8 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) aspm_l1ss_init(link); /* Save default state */ - link->aspm_default = link->aspm_enabled; + link->aspm_default = parent->dev_flags & PCI_DEV_FLAGS_ENABLE_ASPM ? + ASPM_STATE_ALL : link->aspm_enabled; /* Setup initial capable state. Will be updated later */ link->aspm_capable = link->aspm_support; @@ -1226,7 +1227,7 @@ int pci_enable_link_state(struct pci_dev *pdev, int state) * systems we have to observe the FADT ACPI_FADT_NO_ASPM bit and * the _OSC method), we can't honor that request. */ - if (aspm_disabled) { + if (aspm_disabled && !(pdev->dev_flags & PCI_DEV_FLAGS_ENABLE_ASPM)) { pci_warn(pdev, "can't override BIOS ASPM; OS doesn't have ASPM control\n"); return -EPERM; } diff --git a/include/linux/pci.h b/include/linux/pci.h index d470ae6a4178..ada73214b007 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -244,6 +244,8 @@ enum pci_dev_flags { PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11), /* Device does honor MSI masking despite saying otherwise */ PCI_DEV_FLAGS_HAS_MSI_MASKING = (__force pci_dev_flags_t) (1 << 12), + /* Enable ASPM regardless of how LnkCtl is programmed */ + PCI_DEV_FLAGS_ENABLE_ASPM = (__force pci_dev_flags_t) (1 << 13), }; enum pci_irq_reroute_variant { From patchwork Wed Sep 6 07:54:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kai-Heng Feng X-Patchwork-Id: 1830244 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Ke8Xy/ai; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgZRs1l1mz1ygc for ; Wed, 6 Sep 2023 17:55:37 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qdnNn-0005Q6-SD; Wed, 06 Sep 2023 07:55:27 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qdnNi-0005Hh-Ew for kernel-team@lists.ubuntu.com; Wed, 06 Sep 2023 07:55:22 +0000 Received: from localhost.localdomain (unknown [10.101.196.174]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id 609633F716 for ; Wed, 6 Sep 2023 07:55:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1693986922; bh=71bDSkGVooqYaYTY21isAMIqSs0B+/8EY/LDux2crhg=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ke8Xy/aiCp8gGD1yajaIASgWByy95wPOKOkrDLXpF7G+YCvA609JtvPGXtw6TuMKV IY0g+TSObRf15kMIR9MalokaTyFHp1NmI6Hm/9bxgWkKZugKfAUbr6mZ41ac8E6+vf ceU7hg2RqQ7QgimSU2Ts5eRAmPHYMzqjyKfNoDZaDHNewXFOWGbFIgQfJGT/KUX7+b yloqXtLaElzhXTBEWgSxPclAdo1CzQYphjTt9GB/+MQPwkP1qFqWdZxc/OCoarQvyn D81SaDeeBck7wH1FaT85/5d15HAh0DtHE3eUOmUMlRyefYWn2ZoqV0Oc7Ygxdj0rY+ /PQsw4lX+T2HA== From: Kai-Heng Feng To: kernel-team@lists.ubuntu.com Subject: [L/M/Unstable] [PATCH 9/9] UBUNTU: SAUCE: PCI: vmd: Mark ASPM override for device behind VMD bridge Date: Wed, 6 Sep 2023 15:54:21 +0800 Message-Id: <20230906075421.357683-10-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230906075421.357683-1-kai.heng.feng@canonical.com> References: <20230906075421.357683-1-kai.heng.feng@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2034504 pci_enable_link_state() doesn't enable ASPM when ACPI_FADT_NO_ASPM is set. So allow ASPM can truly be enabled to make vmd_pm_enable_quirk() work as intended. Signed-off-by: Kai-Heng Feng --- drivers/pci/controller/vmd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 98c60dae608b..f13a64231887 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -737,6 +737,9 @@ static int vmd_pm_enable_quirk(struct pci_dev *pdev, void *userdata) if (!(features & VMD_FEAT_BIOS_PM_QUIRK)) return 0; + /* Allow ASPM override */ + pdev->dev_flags |= PCI_DEV_FLAGS_ENABLE_ASPM; + pci_enable_link_state(pdev, PCIE_LINK_STATE_ALL); pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR);