Re: [PATCH v9 1/5] PCI: dwc: ep: Clear MSI iATU mapping in dw_pcie_ep_cleanup()
Niklas Cassel <[email protected]> Wed, 29 Jul 2026 23:37:09 +0200
| Newsgroups | dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <ampyhZmYPQl3U8HT@ryzen> |
On Wed, Jul 29, 2026 at 05:15:42AM +0000, [email protected] wrote: > [Severity: High] > This is a pre-existing issue, but does the persistent MSI iATU mapping > conflict with dynamic MSI-X iATU mapping? > > Both MSI and MSI-X use the same physical address (ep->msi_mem_phys). If > dw_pcie_ep_raise_msi_irq() caches the ATU mapping, and then > dw_pcie_ep_raise_msix_irq() is called, it maps the same address to a new > window: > > drivers/pci/controller/dwc/pcie-designware-ep.c:dw_pcie_ep_raise_msix_irq() { > ... > ret = dw_pcie_ep_map_addr(epc, func_no, 0, ep->msi_mem_phys, msg_addr, > map_size); > ... > } > > When dw_pcie_ep_raise_msix_irq() later calls dw_pcie_ep_unmap_addr(), the > lookup function returns the first matching address: > > drivers/pci/controller/dwc/pcie-designware-ep.c:dw_pcie_find_index() { > ... > if (ep->outbound_addr[index] != addr) > continue; > *atu_index = index; > return 0; > } > > Could this unmap the cached MSI window instead of the newly allocated MSI-X > window, permanently leaking the MSI-X window? This pre-existing bug sounds a bit nasty. I sent a proposed fix, please review: https://lore.kernel.org/linux-pci/[email protected]/T/#u Kind regards, Niklas