From patchwork Mon Apr 11 09:24:08 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: 1615634 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 4KcNj70sJCz9sCD for ; Mon, 11 Apr 2022 19:24:26 +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 1ndqHT-000337-14; Mon, 11 Apr 2022 09:24:19 +0000 Received: from mail-pj1-f43.google.com ([209.85.216.43]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ndqHR-00032Q-Kv for kernel-team@lists.ubuntu.com; Mon, 11 Apr 2022 09:24:17 +0000 Received: by mail-pj1-f43.google.com with SMTP id mm4-20020a17090b358400b001cb93d8b137so2411871pjb.2 for ; Mon, 11 Apr 2022 02:24:17 -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=WVqI46ErYZHKun7po4Isr5CvyjFj0K1HrY6TIfJxqOk=; b=W6mcdw2fhezOXt6P0up3Ms49pIHUjBoX2dM+mG19fwhAOotBoxrr0XgfsdGVrfTlQT qbrPhsykBq7G2eGAg5/Jq0ffU8aifIM79En8nYKK5Q4TClC/CD0+oBVmfpPtD9dBpXxC z9ceGRY0SLt2T4sqq6QbMdu83vKmV+ZdVyTiDnFkIiWUZCsOjxHTCSUDpTJcRmZbGtUz YAc1bJKEi2eVofP1Sk5Hvt2ffDCs0uXI2VwpT7xA/x7cU1+WgTcXgytZ1F77Qldfn13e JuLAjQSJ/PcvtGvkc0ZWU5JbtKPw4a9gDbsPMHjtE+pCHBXL/MCyhCBFr6nV21DPyPnr 09JA== X-Gm-Message-State: AOAM532UBcYzkIoWuRkq/xK2R9WizGUKLHqp1RK0GBs2XcxcBLdwDkVY /QiKb569XJUgesRJb9Td+iK8pUXUAOs= X-Google-Smtp-Source: ABdhPJyUJTGqqW7k7i5Mantt8xZ9CemZ2lHza6l85BehX1KxRdh1Jyjq6hLCWDXJ9l2anad5cahn7w== X-Received: by 2002:a17:90b:4a89:b0:1c7:3933:d802 with SMTP id lp9-20020a17090b4a8900b001c73933d802mr34938630pjb.75.1649669055546; Mon, 11 Apr 2022 02:24:15 -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 w123-20020a623081000000b005056a4d71e3sm13770752pfw.77.2022.04.11.02.24.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 02:24:15 -0700 (PDT) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/1][SRU][Jammy] UBUNTU: SAUCE: vmd: fixup bridge ASPM by driver name instead Date: Mon, 11 Apr 2022 17:24:08 +0800 Message-Id: <20220411092408.493754-2-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220411092408.493754-1-vicamo.yang@canonical.com> References: <20220411092408.493754-1-vicamo.yang@canonical.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.216.43; envelope-from=vicamo@gmail.com; helo=mail-pj1-f43.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 Acked-by: Kleber Sacilotto de Souza Acked-by: Stefan Bader --- 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 bf3af7d81bdc2..73e346d990b16 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -5820,23 +5820,36 @@ DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a, PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class); /* - * 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); @@ -5851,7 +5864,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); @@ -5869,6 +5882,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);