[dpdk-dev] pci device access from dpdk secondary process with igb_uio

2019-12-26 Thread vijay mohan
Hi All,
I am trying to use pci vf device with secondary process in a multiple
process mode and finding pci_dev->mem_resource[0].addr to be NULL. This
happens when the pci device is attached to igb_uio.ko but with vfio_pci it
works fine.

Looking at the pci device initialization part for secondary process, when
device is presented through igb_uio, (in pci_uio_map_secondary), it doesn't
seems to update pci_dev->mem_resource[X].addr. For vfio-pci, it updates the
addresses in pci_vfio_map_resource_secondary. With the following patch, i
am able to use the device from secondary process but would like to know if
I am missing something.

diff --git a/drivers/bus/pci/pci_common_uio.c
b/drivers/bus/pci/pci_common_uio.c
index 7ea73db..f4dca9d 100644
--- a/drivers/bus/pci/pci_common_uio.c
+++ b/drivers/bus/pci/pci_common_uio.c
@@ -70,6 +70,7 @@
}
return -1;
}
+   dev->mem_resource[i].addr = mapaddr;
}
return 0;
}


Re: [dpdk-dev] pci device access from dpdk secondary process with igb_uio

2020-01-02 Thread vijay mohan
On Thu, 26 Dec 2019 at 16:58, vijay mohan  wrote:
>
> Hi All,
> I am trying to use pci vf device with secondary process in a multiple process 
> mode and finding pci_dev->mem_resource[0].addr to be NULL. This happens when 
> the pci device is attached to igb_uio.ko but with vfio_pci it works fine.
>
> Looking at the pci device initialization part for secondary process, when 
> device is presented through igb_uio, (in pci_uio_map_secondary), it doesn't 
> seems to update pci_dev->mem_resource[X].addr. For vfio-pci, it updates the 
> addresses in pci_vfio_map_resource_secondary. With the following patch, i am 
> able to use the device from secondary process but would like to know if I am 
> missing something.
>
> diff --git a/drivers/bus/pci/pci_common_uio.c 
> b/drivers/bus/pci/pci_common_uio.c
> index 7ea73db..f4dca9d 100644
> --- a/drivers/bus/pci/pci_common_uio.c
> +++ b/drivers/bus/pci/pci_common_uio.c
> @@ -70,6 +70,7 @@
> }
> return -1;
> }
> +   dev->mem_resource[i].addr = mapaddr;
> }
> return 0;
> }

Hi Ferruh Yigit/John Griffin,
I am trying to use QAT crypto VF device attached to igb_uio.ko with
secondary process and has observed following errors while setting up
the queues due to pci_dev->mem_resource[0].addr check from
qat_qp_setup. mem_resource[0].addr happens to be NULL when the device
is presented to dpdk through igb_uio but works fine with vfio_pci.ko.
Could you please let me know if the fix mentioned above is sufficient
for the device to work with secondary process.

CRYPTODEV: Initialisation parameters - name: BDF_qat_sym,socket id: 0,
max queue pairs: 0
qat_sym_dev_create(): Created QAT SYM device BDF_qat_sym as cryptodev instance 0
qat_comp_dev_create(): Creating QAT COMP device BDF_qat_comp
qat_comp_dev_create(): Created QAT COMP device BDF_qat_comp as
compressdev instance 0
Dev config
Setting up queues
qat_qp_setup(): Setup qp 0 on qat pci device 0 gen 2
qat_qp_setup(): Could not find VF config space (UIO driver attached?).
Crypto device queue pair init failed

Thanks,
Vijay


Re: [dpdk-dev] [PATCH] bus/pci: pcidev access from secondary process

2020-03-30 Thread vijay mohan
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  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 
> >
> > Reviewed-by: Ferruh Yigit 
>
> 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?
>
>


Re: [dpdk-dev] pci device access from dpdk secondary process with igb_uio

2020-02-25 Thread vijay mohan
Hi Fiona,
Thanks for verifying the fix. I will send this patch out for review.

Thanks,
Vijay

On Tue, 25 Feb 2020 at 07:09, Trahe, Fiona  wrote:
>
> Hi Vijay,
>
> Thanks for debugging. We've recreated your issue and validated that this 
> fixes it.
> Do you want to go ahead and send up a patch or will I do that?
>
> Fiona
>
>
> > -Original Message-
> > From: Trahe, Fiona
> > Sent: Wednesday, January 22, 2020 5:19 PM
> > To: vijay mohan ; dev@dpdk.org; Yigit, Ferruh 
> > 
> > Cc: Trahe, Fiona 
> > Subject: RE: [dpdk-dev] pci device access from dpdk secondary process with 
> > igb_uio
> >
> > Hi Vijay,
> >
> > Sorry for the delay, we missed this as It arrived while on Christmas 
> > holidays.
> > We'll investigate, though it may take some time as this looks like a pci 
> > lib issue
> > and up to recently we have only been using QAT in primary processes so 
> > don't have
> > expertise yet in this area.
> >
> > If you could provide some background to your use-case for qat in 
> > primary/secondary, that may help.
> >
> > Fiona
> >
> > > -Original Message-
> > > From: dev  On Behalf Of vijay mohan
> > > Sent: Thursday, January 2, 2020 6:58 PM
> > > To: dev@dpdk.org; Yigit, Ferruh ; Griffin, John 
> > > 
> > > Subject: Re: [dpdk-dev] pci device access from dpdk secondary process 
> > > with igb_uio
> > >
> > > On Thu, 26 Dec 2019 at 16:58, vijay mohan  wrote:
> > > >
> > > > Hi All,
> > > > I am trying to use pci vf device with secondary process in a multiple 
> > > > process mode and finding
> > > pci_dev->mem_resource[0].addr to be NULL. This happens when the pci 
> > > device is attached to
> > > igb_uio.ko but with vfio_pci it works fine.
> > > >
> > > > Looking at the pci device initialization part for secondary process, 
> > > > when device is presented
> > through
> > > igb_uio, (in pci_uio_map_secondary), it doesn't seems to update 
> > > pci_dev->mem_resource[X].addr.
> > > For vfio-pci, it updates the addresses in 
> > > pci_vfio_map_resource_secondary. With the following
> > patch, i
> > > am able to use the device from secondary process but would like to know 
> > > if I am missing something.
> > > >
> > > > diff --git a/drivers/bus/pci/pci_common_uio.c 
> > > > b/drivers/bus/pci/pci_common_uio.c
> > > > index 7ea73db..f4dca9d 100644
> > > > --- a/drivers/bus/pci/pci_common_uio.c
> > > > +++ b/drivers/bus/pci/pci_common_uio.c
> > > > @@ -70,6 +70,7 @@
> > > > }
> > > > return -1;
> > > > }
> > > > +   dev->mem_resource[i].addr = mapaddr;
> > > > }
> > > > return 0;
> > > > }
> > >
> > > Hi Ferruh Yigit/John Griffin,
> > > I am trying to use QAT crypto VF device attached to igb_uio.ko with
> > > secondary process and has observed following errors while setting up
> > > the queues due to pci_dev->mem_resource[0].addr check from
> > > qat_qp_setup. mem_resource[0].addr happens to be NULL when the device
> > > is presented to dpdk through igb_uio but works fine with vfio_pci.ko.
> > > Could you please let me know if the fix mentioned above is sufficient
> > > for the device to work with secondary process.
> > >
> > > CRYPTODEV: Initialisation parameters - name: BDF_qat_sym,socket id: 0,
> > > max queue pairs: 0
> > > qat_sym_dev_create(): Created QAT SYM device BDF_qat_sym as cryptodev 
> > > instance 0
> > > qat_comp_dev_create(): Creating QAT COMP device BDF_qat_comp
> > > qat_comp_dev_create(): Created QAT COMP device BDF_qat_comp as
> > > compressdev instance 0
> > > Dev config
> > > Setting up queues
> > > qat_qp_setup(): Setup qp 0 on qat pci device 0 gen 2
> > > qat_qp_setup(): Could not find VF config space (UIO driver attached?).
> > > Crypto device queue pair init failed
> > >
> > > Thanks,
> > > Vijay