On Thu, Oct 10, 2024 at 12:43:57PM +0530, Manivannan Sadhasivam wrote: > On Mon, Oct 07, 2024 at 01:12:10PM +0900, Damien Le Moal wrote: > > Add a check to verify that the outbound region to be used for mapping an > > address is not already in use. > > > > Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> > > Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> > I'm trying to understand the ob window mapping here. So if rockchip_ob_region() returns same index for different *CPU* addresses, then you cannot map both of them? Is this a hardware ATU limitation? Also rockchip_pcie_prog_ep_ob_atu() is not taking into account of the cpu_addr. So I'm not sure how the mapping happens either. - Mani > - Mani > > > --- > > drivers/pci/controller/pcie-rockchip-ep.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c > > index 89ebdf3e4737..edb84fb1ba39 100644 > > --- a/drivers/pci/controller/pcie-rockchip-ep.c > > +++ b/drivers/pci/controller/pcie-rockchip-ep.c > > @@ -243,6 +243,9 @@ static int rockchip_pcie_ep_map_addr(struct pci_epc *epc, u8 fn, u8 vfn, > > struct rockchip_pcie *pcie = &ep->rockchip; > > u32 r = rockchip_ob_region(addr); > > > > + if (test_bit(r, &ep->ob_region_map)) > > + return -EBUSY; > > + > > rockchip_pcie_prog_ep_ob_atu(pcie, fn, r, addr, pci_addr, size); > > > > set_bit(r, &ep->ob_region_map); > > -- > > 2.46.2 > > > > -- > மணிவண்ணன் சதாசிவம் -- மணிவண்ணன் சதாசிவம்