提交 feacdb4a 编写于 作者: R Ray Jui 提交者: Bjorn Helgaas

PCI: iproc: Fix incorrect MSI address alignment

In the code to handle PAXB v2 based MSI steering, the logic aligns the MSI
register address to the size of supported inbound mapping range.  This is
incorrect since it rounds "up" the starting address to the next aligned
address, but what we want is the starting address to be rounded "down" to
the aligned address.

This patch fixes the issue and allows MSI writes to be properly steered to
the GIC.

Fixes: 4b073155fbd3 ("PCI: iproc: Add support for the next-gen PAXB controller")
Signed-off-by: NRay Jui <ray.jui@broadcom.com>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
上级 c7c44527
...@@ -1020,7 +1020,7 @@ static int iproc_pcie_paxb_v2_msi_steer(struct iproc_pcie *pcie, u64 msi_addr) ...@@ -1020,7 +1020,7 @@ static int iproc_pcie_paxb_v2_msi_steer(struct iproc_pcie *pcie, u64 msi_addr)
memset(&range, 0, sizeof(range)); memset(&range, 0, sizeof(range));
range.size = SZ_32K; range.size = SZ_32K;
range.pci_addr = range.cpu_addr = ALIGN(msi_addr, range.size); range.pci_addr = range.cpu_addr = msi_addr & ~(range.size - 1);
ret = iproc_pcie_setup_ib(pcie, &range, IPROC_PCIE_IB_MAP_IO); ret = iproc_pcie_setup_ib(pcie, &range, IPROC_PCIE_IB_MAP_IO);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册