bus/pci: fix missing case for virtio-crypto

Message ID 20181101121009.86287-1-roy.fan.zhang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series bus/pci: fix missing case for virtio-crypto |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Fan Zhang Nov. 1, 2018, 12:10 p.m. UTC
  The recent change to rte_pci_read_config() caused virtio-crypto
device initialization always failed as it has a
RTE_KDRV_UIO_GENERIC driver type. This patch fixes the problem.

Fixes: 630deed612ca ("bus/pci: compare kernel driver instead of interrupt handler")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
---
 drivers/bus/pci/linux/pci.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Thomas Monjalon Nov. 1, 2018, 1:35 p.m. UTC | #1
01/11/2018 13:10, Fan Zhang:
> The recent change to rte_pci_read_config() caused virtio-crypto
> device initialization always failed as it has a
> RTE_KDRV_UIO_GENERIC driver type. This patch fixes the problem.

Hi Fan,
this issue is not related at all to virtio-crypto.
It can happen with any PMD, right?

In the title, we should mention UIO generic driver.
  
Fan Zhang Nov. 2, 2018, 10:01 a.m. UTC | #2
Hi Thomas,

You are right, the problem can happen with any PMD falls into RTE_KDRV_UIO_GENERIC and RTE_KDRV_NIC_UIO driver type. As riginally rte_pci_read_config() only covered 2 out of 4 possible driver types' .

The patch was submitted for fixing the Virtio Crypto Initialization Segmentation Fault problem introduced in 18.11 RC1, and it did. The problem is I don't think the patch will fix all problems of rte_pci_read_config(). Even I added RTE_KDRV_UIO_GENERIC type into the switch case there is a remaining RTE_KDRV_NIC_UIO type I am not sure where to fit due to the limited knowledge.

That's why I write the patch title like this. I hope someone else with better bus knowledge could submit a complete fix patch.

Best regards,
Fan

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Thursday, November 1, 2018 1:35 PM
> To: Zhang, Roy Fan <roy.fan.zhang@intel.com>
> Cc: dev@dpdk.org; alejandro.lucero@netronome.com
> Subject: Re: [PATCH] bus/pci: fix missing case for virtio-crypto
> 
> 01/11/2018 13:10, Fan Zhang:
> > The recent change to rte_pci_read_config() caused virtio-crypto device
> > initialization always failed as it has a RTE_KDRV_UIO_GENERIC driver
> > type. This patch fixes the problem.
> 
> Hi Fan,
> this issue is not related at all to virtio-crypto.
> It can happen with any PMD, right?
> 
> In the title, we should mention UIO generic driver.
> 
>
  
Thomas Monjalon Nov. 2, 2018, 10:39 a.m. UTC | #3
+Cc Bruce and Ferruh

02/11/2018 11:01, Zhang, Roy Fan:
> Hi Thomas,
> 
> You are right, the problem can happen with any PMD falls into RTE_KDRV_UIO_GENERIC and RTE_KDRV_NIC_UIO driver type. As riginally rte_pci_read_config() only covered 2 out of 4 possible driver types' .
> 
> The patch was submitted for fixing the Virtio Crypto Initialization Segmentation Fault problem introduced in 18.11 RC1, and it did. The problem is I don't think the patch will fix all problems of rte_pci_read_config(). Even I added RTE_KDRV_UIO_GENERIC type into the switch case there is a remaining RTE_KDRV_NIC_UIO type I am not sure where to fit due to the limited knowledge.
> 
> That's why I write the patch title like this. I hope someone else with better bus knowledge could submit a complete fix patch.
> 
> Best regards,
> Fan
> 
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > Sent: Thursday, November 1, 2018 1:35 PM
> > To: Zhang, Roy Fan <roy.fan.zhang@intel.com>
> > Cc: dev@dpdk.org; alejandro.lucero@netronome.com
> > Subject: Re: [PATCH] bus/pci: fix missing case for virtio-crypto
> > 
> > 01/11/2018 13:10, Fan Zhang:
> > > The recent change to rte_pci_read_config() caused virtio-crypto device
> > > initialization always failed as it has a RTE_KDRV_UIO_GENERIC driver
> > > type. This patch fixes the problem.
> > 
> > Hi Fan,
> > this issue is not related at all to virtio-crypto.
> > It can happen with any PMD, right?
> > 
> > In the title, we should mention UIO generic driver.
> > 
> > 
>
  
Thomas Monjalon Nov. 5, 2018, 10:18 p.m. UTC | #4
We must also fix rte_pci_write_config()

02/11/2018 11:39, Thomas Monjalon:
> +Cc Bruce and Ferruh
> 
> 02/11/2018 11:01, Zhang, Roy Fan:
> > Hi Thomas,
> > 
> > You are right, the problem can happen with any PMD falls into RTE_KDRV_UIO_GENERIC and RTE_KDRV_NIC_UIO driver type. As riginally rte_pci_read_config() only covered 2 out of 4 possible driver types' .
> > 
> > The patch was submitted for fixing the Virtio Crypto Initialization Segmentation Fault problem introduced in 18.11 RC1, and it did. The problem is I don't think the patch will fix all problems of rte_pci_read_config(). Even I added RTE_KDRV_UIO_GENERIC type into the switch case there is a remaining RTE_KDRV_NIC_UIO type I am not sure where to fit due to the limited knowledge.
> > 
> > That's why I write the patch title like this. I hope someone else with better bus knowledge could submit a complete fix patch.
> > 
> > Best regards,
> > Fan
> > 
> > > -----Original Message-----
> > > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > Sent: Thursday, November 1, 2018 1:35 PM
> > > To: Zhang, Roy Fan <roy.fan.zhang@intel.com>
> > > Cc: dev@dpdk.org; alejandro.lucero@netronome.com
> > > Subject: Re: [PATCH] bus/pci: fix missing case for virtio-crypto
> > > 
> > > 01/11/2018 13:10, Fan Zhang:
> > > > The recent change to rte_pci_read_config() caused virtio-crypto device
> > > > initialization always failed as it has a RTE_KDRV_UIO_GENERIC driver
> > > > type. This patch fixes the problem.
> > > 
> > > Hi Fan,
> > > this issue is not related at all to virtio-crypto.
> > > It can happen with any PMD, right?
> > > 
> > > In the title, we should mention UIO generic driver.
> > > 
> > > 
> > 
> 
> 
> 
> 
> 
>
  
Thomas Monjalon Nov. 6, 2018, 1:12 a.m. UTC | #5
01/11/2018 13:10, Fan Zhang:
> The recent change to rte_pci_read_config() caused virtio-crypto
> device initialization always failed as it has a
> RTE_KDRV_UIO_GENERIC driver type. This patch fixes the problem.
> 
> Fixes: 630deed612ca ("bus/pci: compare kernel driver instead of interrupt handler")
> 
> Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>

Applied with same change in rte_pci_write_config, and reworded logs, thanks.
  

Patch

diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index 1783ec7f5..0220adc66 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -704,6 +704,7 @@  int rte_pci_read_config(const struct rte_pci_device *device,
 
 	switch (device->kdrv) {
 	case RTE_KDRV_IGB_UIO:
+	case RTE_KDRV_UIO_GENERIC:
 		return pci_uio_read_config(intr_handle, buf, len, offset);
 #ifdef VFIO_PRESENT
 	case RTE_KDRV_VFIO: