mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
be077f4812
Manually rebased: octeontx/patches-5.10/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch All other patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, ipq806x/R7800 Run-tested: bcm2711/RPi4B, ipq806x/R7800 Signed-off-by: John Audia <graysky@archlinux.us>
45 lines
1.7 KiB
Diff
45 lines
1.7 KiB
Diff
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
|
|
@@ -547,6 +547,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,
|