From patchwork Mon Apr 11 09:24:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1615638 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KcNjz4b5Rz9sDX for ; Mon, 11 Apr 2022 19:25:11 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1ndqIE-0003VQ-D1; Mon, 11 Apr 2022 09:25:06 +0000 Received: from mail-pl1-f177.google.com ([209.85.214.177]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ndqIB-0003QI-DM for kernel-team@lists.ubuntu.com; Mon, 11 Apr 2022 09:25:03 +0000 Received: by mail-pl1-f177.google.com with SMTP id c23so13377223plo.0 for ; Mon, 11 Apr 2022 02:25:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B8Ev/bM3HuN76XU9hxIMud0UAbEz7FNVPkPy4+PyeYk=; b=qUDf2eMnkhOBXny38GD1ro3eSTw1AlLVEDgSAgVBwTf+Kum2B/AMq7gXiWEMrkMGn2 29fW7fwZzyxixHH3yYKjd8WT+hdCTiOkmMzAHK+zBuj+SsQxu+p2KJyiGd4veA4YfnMs 6SfbTfmgUDu385F8qPs/PnLLnKdr5Y2hJ4HGq8tFhYWRHa/LbsHTU8zI4sJm/fI7AxVI J89rlFWZtm09UD88bW+n+102gaiKeOKaCpCbajMn5kunHzcyXgd+Wvocxzvwy0YLSySW YeCCpOBk2y4sQBlwHvSynXTrAhC4Zq4t1Cn4mI+YIYJimpzobqjmakhUN7St4TYsq6OL yuJw== X-Gm-Message-State: AOAM533BL/I9xRqY7GEliDD7ngN/cokN8MehQ0RD83Ylm+hvZiFdi+58 uLwBuRqa9kpfuoV8YBkqhq6T1SOYi3o= X-Google-Smtp-Source: ABdhPJz44gdVdZ0CgsGRjeZfSovOFa0t1AEkQUmNgOepW/M/N/GjAfy2BQ0ZdAyQwdwvYL95F3zdBw== X-Received: by 2002:a17:90b:4c09:b0:1cb:1463:3f2b with SMTP id na9-20020a17090b4c0900b001cb14633f2bmr22816841pjb.224.1649669099686; Mon, 11 Apr 2022 02:24:59 -0700 (PDT) Received: from localhost.localdomain (114-40-220-70.dynamic-ip.hinet.net. [114.40.220.70]) by smtp.gmail.com with ESMTPSA id pg14-20020a17090b1e0e00b001c75634df70sm19627975pjb.31.2022.04.11.02.24.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 02:24:59 -0700 (PDT) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 3/3][SRU][Unstable/OEM-5.17] UBUNTU: SAUCE: vmd: fixup bridge ASPM by driver name instead Date: Mon, 11 Apr 2022 17:24:34 +0800 Message-Id: <20220411092434.494231-4-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220411092434.494231-1-vicamo.yang@canonical.com> References: <20220411092434.494231-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.214.177; envelope-from=vicamo@gmail.com; helo=mail-pl1-f177.google.com 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/1942160 Additional VMD bridge IDs needed for new Alder Lake platforms, but actually there is no a complete list for them. Here we match bridge devices if they're directly attached to a VMD controller instead. Signed-off-by: You-Sheng Yang --- drivers/pci/quirks.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index dd05c3d4e6ed2..958a06be64f25 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -5933,23 +5933,36 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x15f4, pci_fixup_serialize_tgl_me_ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x15f5, pci_fixup_serialize_tgl_me_pm); /* - * 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 const struct pci_device_id vmd_bridge_tbl[] = { - { PCI_VDEVICE(INTEL, 0x9a09) }, - { PCI_VDEVICE(INTEL, 0xa0b0) }, - { PCI_VDEVICE(INTEL, 0xa0bc) }, - { } -}; +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 void pci_fixup_enable_aspm(struct pci_dev *pdev) { - if (!pci_match_id(vmd_bridge_tbl, pdev)) + if (!pci_fixup_is_vmd_bridge(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); @@ -5964,7 +5977,7 @@ static void pci_fixup_enable_vmd_nvme_ltr(struct pci_dev *pdev) if (!parent) return; - if (!pci_match_id(vmd_bridge_tbl, parent)) + if (!pci_fixup_is_vmd_bridge(parent)) return; pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); @@ -5982,6 +5995,7 @@ 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);