Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pci-v5.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci

Pull PCI fixes from Bjorn Helgaas:

- Fix MSIs for platforms with "msi-map" device-tree property, which we
broke in v5.13-rc1 (Jean-Philippe Brucker)

- Add Krzysztof Wilczyński as PCI reviewer (Lorenzo Pieralisi)

* tag 'pci-v5.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
PCI/MSI: Fix MSIs for generic hosts that use device-tree's "msi-map"
MAINTAINERS: Add Krzysztof as PCI host/endpoint controllers reviewer

+13 -1
+2
MAINTAINERS
··· 14119 14119 PCI ENDPOINT SUBSYSTEM 14120 14120 M: Kishon Vijay Abraham I <kishon@ti.com> 14121 14121 M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 14122 + R: Krzysztof Wilczyński <kw@linux.com> 14122 14123 L: linux-pci@vger.kernel.org 14123 14124 S: Supported 14124 14125 F: Documentation/PCI/endpoint/* ··· 14168 14167 PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS 14169 14168 M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 14170 14169 R: Rob Herring <robh@kernel.org> 14170 + R: Krzysztof Wilczyński <kw@linux.com> 14171 14171 L: linux-pci@vger.kernel.org 14172 14172 S: Supported 14173 14173 Q: http://patchwork.ozlabs.org/project/linux-pci/list/
+7
drivers/pci/of.c
··· 103 103 #endif 104 104 } 105 105 106 + bool pci_host_of_has_msi_map(struct device *dev) 107 + { 108 + if (dev && dev->of_node) 109 + return of_get_property(dev->of_node, "msi-map", NULL); 110 + return false; 111 + } 112 + 106 113 static inline int __of_pci_pci_compare(struct device_node *node, 107 114 unsigned int data) 108 115 {
+2 -1
drivers/pci/probe.c
··· 925 925 device_enable_async_suspend(bus->bridge); 926 926 pci_set_bus_of_node(bus); 927 927 pci_set_bus_msi_domain(bus); 928 - if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev)) 928 + if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev) && 929 + !pci_host_of_has_msi_map(parent)) 929 930 bus->bus_flags |= PCI_BUS_FLAGS_NO_MSI; 930 931 931 932 if (!parent)
+2
include/linux/pci.h
··· 2344 2344 struct device_node; 2345 2345 struct irq_domain; 2346 2346 struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus); 2347 + bool pci_host_of_has_msi_map(struct device *dev); 2347 2348 2348 2349 /* Arch may override this (weak) */ 2349 2350 struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus); ··· 2352 2351 #else /* CONFIG_OF */ 2353 2352 static inline struct irq_domain * 2354 2353 pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; } 2354 + static inline bool pci_host_of_has_msi_map(struct device *dev) { return false; } 2355 2355 #endif /* CONFIG_OF */ 2356 2356 2357 2357 static inline struct device_node *