Re: [PATCH] PCI: layerscape: Add the SRIOV support in host side

From: Marc Zyngier
Date: Mon Dec 02 2019 - 07:48:20 EST


On 2019-12-02 10:45, Xiaowei Bao wrote:
GIC get the map relations of devid and stream id from the msi-map
property of DTS, our platform add this property in u-boot base on
the PCIe device in the bus, but if enable the vf device in kernel,
the vf device msi-map will not set, so the vf device can't work,
this patch purpose is that manage the stream id and device id map
relations dynamically in kernel, and make the new PCIe device work
in kernel.

Signed-off-by: Xiaowei Bao <xiaowei.bao@xxxxxxx>
---
drivers/of/irq.c | 9 +++
drivers/pci/controller/dwc/pci-layerscape.c | 94
+++++++++++++++++++++++++++++
drivers/pci/probe.c | 6 ++
drivers/pci/remove.c | 6 ++
4 files changed, 115 insertions(+)

diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index a296eaf..791e609 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -576,6 +576,11 @@ void __init of_irq_init(const struct
of_device_id *matches)
}
}

+u32 __weak ls_pcie_streamid_fix(struct device *dev, u32 rid)
+{
+ return rid;
+}
+
static u32 __of_msi_map_rid(struct device *dev, struct device_node **np,
u32 rid_in)
{
@@ -590,6 +595,10 @@ static u32 __of_msi_map_rid(struct device *dev,
struct device_node **np,
if (!of_map_rid(parent_dev->of_node, rid_in, "msi-map",
"msi-map-mask", np, &rid_out))
break;
+
+ if (rid_out == rid_in)
+ rid_out = ls_pcie_streamid_fix(parent_dev, rid_in);

Over my dead body. Get your firmware to properly program the LUT
so that it presents the ITS with a reasonable topology. There is
absolutely no way this kind of change makes it into the kernel.

Thanks,

M.
--
Who you jivin' with that Cosmik Debris?