bus/pci: pcidev access from secondary process
Checks
Commit Message
For pci devices presented through igb_uio, pcidev->mem_resource[] is
not populated when the device is initialized for secondary process.
Initialize pcidev->mem_resource[] with pci-bar mapped addresses.
Signed-off-by: Vijaya Mohan Guvva <vijay1054@gmail.com>
---
drivers/bus/pci/pci_common_uio.c | 1 +
1 file changed, 1 insertion(+)
Comments
On 3/6/2020 12:02 AM, Vijaya Mohan Guvva wrote:
> For pci devices presented through igb_uio, pcidev->mem_resource[] is
> not populated when the device is initialized for secondary process.
>
> Initialize pcidev->mem_resource[] with pci-bar mapped addresses.
>
> Signed-off-by: Vijaya Mohan Guvva <vijay1054@gmail.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
06/03/2020 13:28, Ferruh Yigit:
> On 3/6/2020 12:02 AM, Vijaya Mohan Guvva wrote:
> > For pci devices presented through igb_uio, pcidev->mem_resource[] is
> > not populated when the device is initialized for secondary process.
> >
> > Initialize pcidev->mem_resource[] with pci-bar mapped addresses.
> >
> > Signed-off-by: Vijaya Mohan Guvva <vijay1054@gmail.com>
>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Do you mean secondary process never worked with igb_uio?
Or is there a specific case?
What is the root cause?
Should it be backported to stable?
Hi Thomas,
As long as pmd or application doesn't access
dev->mem_resource[i].addr, secondary process works with igb_uio.
But for pci devices like crypto_qat, pmd checks for
dev->mem_resource[i].addr and bails out if the address is null.
Root cause is, not initializing the mapped address in rte_pcidev when
device is exposed through igb_uio.
Thanks,
Vijay
On Mon, 30 Mar 2020 at 18:54, Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 06/03/2020 13:28, Ferruh Yigit:
> > On 3/6/2020 12:02 AM, Vijaya Mohan Guvva wrote:
> > > For pci devices presented through igb_uio, pcidev->mem_resource[] is
> > > not populated when the device is initialized for secondary process.
> > >
> > > Initialize pcidev->mem_resource[] with pci-bar mapped addresses.
> > >
> > > Signed-off-by: Vijaya Mohan Guvva <vijay1054@gmail.com>
> >
> > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
> Do you mean secondary process never worked with igb_uio?
> Or is there a specific case?
> What is the root cause?
> Should it be backported to stable?
>
>
31/03/2020 04:12, vijay mohan:
> On Mon, 30 Mar 2020 at 18:54, Thomas Monjalon <thomas@monjalon.net> wrote:
> > 06/03/2020 13:28, Ferruh Yigit:
> > > On 3/6/2020 12:02 AM, Vijaya Mohan Guvva wrote:
> > > > For pci devices presented through igb_uio, pcidev->mem_resource[] is
> > > > not populated when the device is initialized for secondary process.
> > > >
> > > > Initialize pcidev->mem_resource[] with pci-bar mapped addresses.
> > > >
> > > > Signed-off-by: Vijaya Mohan Guvva <vijay1054@gmail.com>
> > >
> > > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> >
> > Do you mean secondary process never worked with igb_uio?
> > Or is there a specific case?
>
> As long as pmd or application doesn't access
> dev->mem_resource[i].addr, secondary process works with igb_uio.
> But for pci devices like crypto_qat, pmd checks for
> dev->mem_resource[i].addr and bails out if the address is null.
>
> > What is the root cause?
>
> Root cause is, not initializing the mapped address in rte_pcidev when
> device is exposed through igb_uio.
So the issue has always been there?
In this case, you should specify the origin commit in "Fixes:" line.
> > Should it be backported to stable?
I think it needs to be backported. So please add Cc: stable@dpdk.org
in the commit log.
@@ -70,6 +70,7 @@
}
return -1;
}
+ dev->mem_resource[i].addr = mapaddr;
}
return 0;
}