forked from openwrt/openwrt
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mediatek: mt7623: import patch to fix msi warning
The 1st generation MediaTek PCIe host bridge cannot handle Message Signaled Interrupts (MSIs). The core PCI code is not aware that MSI is not available. This results in warnings of the form: WARNING: CPU: 2 PID: 112 at include/linux/msi.h:219 pci_msi_setup_msi_irqs.constprop.8+0x64/0x6c Modules linked in: ahci(+) libahci libata sd_mod scsi_mod gpio_button_hotplug CPU: 2 PID: 112 Comm: kmodloader Not tainted 5.10.52 #0 Hardware name: Mediatek Cortex-A7 (Device Tree) Import patches that introduce the 'no_msi' attribute to signal missing MSI support to the core PCI. Refresh patches: - 000-spi-fix-fifo.patch - 330-mtk-bmt-support.patch - 510-net-mediatek-add-flow-offload-for-mt7623.patch - 601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch - 610-pcie-mediatek-fix-clearing-interrupt-status.patch - 700-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch - 710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch Signed-off-by: Nick Hainke <vincent@systemli.org>
- Loading branch information
1 parent
e88ab3b
commit e8e2b88
Showing
10 changed files
with
150 additions
and
18 deletions.
There are no files selected for viewing
34 changes: 34 additions & 0 deletions
34
...kport-5.10/820-v5.13-make-pci_host_common_probe-declare-its-reliance-on-msi-domains.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
From 9ec37efb87832b578d7972fc80b04d94f5d2bbe3 Mon Sep 17 00:00:00 2001 | ||
From: Marc Zyngier <maz@kernel.org> | ||
Date: Tue, 30 Mar 2021 16:11:42 +0100 | ||
Subject: PCI/MSI: Make pci_host_common_probe() declare its reliance on MSI | ||
domains | ||
|
||
The generic PCI host driver relies on MSI domains for MSIs to | ||
be provided to its end-points. Make this dependency explicit. | ||
|
||
This cures the warnings occuring on arm/arm64 VMs when booted | ||
with PCI virtio devices and no MSI controller (no GICv3 ITS, | ||
for example). | ||
|
||
It is likely that other drivers will need to express the same | ||
dependency. | ||
|
||
Link: https://lore.kernel.org/r/20210330151145.997953-12-maz@kernel.org | ||
Signed-off-by: Marc Zyngier <maz@kernel.org> | ||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> | ||
Acked-by: Bjorn Helgaas <bhelgaas@google.com> | ||
--- | ||
drivers/pci/controller/pci-host-common.c | 1 + | ||
1 file changed, 1 insertion(+) | ||
|
||
--- a/drivers/pci/controller/pci-host-common.c | ||
+++ b/drivers/pci/controller/pci-host-common.c | ||
@@ -77,6 +77,7 @@ int pci_host_common_probe(struct platfor | ||
|
||
bridge->sysdata = cfg; | ||
bridge->ops = (struct pci_ops *)&ops->pci_ops; | ||
+ bridge->msi_domain = true; | ||
|
||
platform_set_drvdata(pdev, bridge); | ||
|
44 changes: 44 additions & 0 deletions
44
...c/backport-5.10/821-v5.13-let-pci-host-bridges-declar-their-reliance-on-msi-domains.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
From 94e89b145371b68fa0ea294855adebcd03e0522e Mon Sep 17 00:00:00 2001 | ||
From: Marc Zyngier <maz@kernel.org> | ||
Date: Tue, 30 Mar 2021 16:11:41 +0100 | ||
Subject: PCI/MSI: Let PCI host bridges declare their reliance on MSI domains | ||
|
||
There is a whole class of host bridges that cannot know whether | ||
MSIs will be provided or not, as they rely on other blocks | ||
to provide the MSI functionnality, using MSI domains. This is | ||
the case for example on systems that use the ARM GIC architecture. | ||
|
||
Introduce a new attribute ('msi_domain') indicating that implicit | ||
dependency, and use this property to set the NO_MSI flag when | ||
no MSI domain is found at probe time. | ||
|
||
Link: https://lore.kernel.org/r/20210330151145.997953-11-maz@kernel.org | ||
Signed-off-by: Marc Zyngier <maz@kernel.org> | ||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> | ||
Acked-by: Bjorn Helgaas <bhelgaas@google.com> | ||
--- | ||
drivers/pci/probe.c | 2 ++ | ||
include/linux/pci.h | 1 + | ||
2 files changed, 3 insertions(+) | ||
|
||
--- a/drivers/pci/probe.c | ||
+++ b/drivers/pci/probe.c | ||
@@ -925,6 +925,8 @@ static int pci_register_host_bridge(stru | ||
device_enable_async_suspend(bus->bridge); | ||
pci_set_bus_of_node(bus); | ||
pci_set_bus_msi_domain(bus); | ||
+ if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev)) | ||
+ bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI; | ||
|
||
if (!parent) | ||
set_dev_node(bus->bridge, pcibus_to_node(bus)); | ||
--- a/include/linux/pci.h | ||
+++ b/include/linux/pci.h | ||
@@ -545,6 +545,7 @@ struct pci_host_bridge { | ||
unsigned int native_dpc:1; /* OS may use PCIe DPC */ | ||
unsigned int preserve_config:1; /* Preserve FW resource setup */ | ||
unsigned int size_windows:1; /* Enable root bus sizing */ | ||
+ unsigned int msi_domain:1; /* Bridge wants MSI domain */ | ||
|
||
/* Resource alignment requirements */ | ||
resource_size_t (*align_resource)(struct pci_dev *dev, |
59 changes: 59 additions & 0 deletions
59
target/linux/generic/backport-5.10/822-v5.13-advertise-lack-of-built-in-msi-handling.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
From 645e9c38383d7fcde2784ee537fa18ec9bed54d9 Mon Sep 17 00:00:00 2001 | ||
From: Thomas Gleixner <tglx@linutronix.de> | ||
Date: Tue, 30 Mar 2021 16:11:43 +0100 | ||
Subject: PCI: mediatek: Advertise lack of built-in MSI handling | ||
|
||
Some Mediatek host bridges cannot handle MSIs, which is sad. | ||
This also results in an ugly warning at device probe time, | ||
as the core PCI code wasn't told that MSIs were not available. | ||
|
||
Advertise this fact to the rest of the core PCI code by | ||
using the 'msi_domain' attribute, which still opens the possibility | ||
for another block to provide the MSI functionnality. | ||
|
||
[maz: commit message, switched over to msi_domain attribute] | ||
|
||
Link: https://lore.kernel.org/r/20210330151145.997953-13-maz@kernel.org | ||
Reported-by: Frank Wunderlich <frank-w@public-files.de> | ||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | ||
Signed-off-by: Marc Zyngier <maz@kernel.org> | ||
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> | ||
Acked-by: Bjorn Helgaas <bhelgaas@google.com> | ||
--- | ||
drivers/pci/controller/pcie-mediatek.c | 4 ++++ | ||
1 file changed, 4 insertions(+) | ||
|
||
--- a/drivers/pci/controller/pcie-mediatek.c | ||
+++ b/drivers/pci/controller/pcie-mediatek.c | ||
@@ -143,6 +143,7 @@ struct mtk_pcie_port; | ||
* struct mtk_pcie_soc - differentiate between host generations | ||
* @need_fix_class_id: whether this host's class ID needed to be fixed or not | ||
* @need_fix_device_id: whether this host's device ID needed to be fixed or not | ||
+ * @no_msi: Bridge has no MSI support, and relies on an external block | ||
* @device_id: device ID which this host need to be fixed | ||
* @ops: pointer to configuration access functions | ||
* @startup: pointer to controller setting functions | ||
@@ -151,6 +152,7 @@ struct mtk_pcie_port; | ||
struct mtk_pcie_soc { | ||
bool need_fix_class_id; | ||
bool need_fix_device_id; | ||
+ bool no_msi; | ||
unsigned int device_id; | ||
struct pci_ops *ops; | ||
int (*startup)(struct mtk_pcie_port *port); | ||
@@ -1087,6 +1089,7 @@ static int mtk_pcie_probe(struct platfor | ||
|
||
host->ops = pcie->soc->ops; | ||
host->sysdata = pcie; | ||
+ host->msi_domain = pcie->soc->no_msi; | ||
|
||
err = pci_host_probe(host); | ||
if (err) | ||
@@ -1176,6 +1179,7 @@ static const struct dev_pm_ops mtk_pcie_ | ||
}; | ||
|
||
static const struct mtk_pcie_soc mtk_pcie_soc_v1 = { | ||
+ .no_msi = true, | ||
.ops = &mtk_pcie_ops, | ||
.startup = mtk_pcie_startup_port, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters