[dpdk-dev] [PATCH] bus/pci: fix wrong intr_handle.type with uio_pci_generic

Yang, Zhiyong zhiyong.yang at intel.com
Thu Dec 28 10:37:54 CET 2017


Hi Thomas,

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas at monjalon.net]
> Sent: Thursday, December 28, 2017 5:05 PM
> To: Yang, Zhiyong <zhiyong.yang at intel.com>
> Cc: dev at dpdk.org; Yigit, Ferruh <ferruh.yigit at intel.com>; stable at dpdk.org
> Subject: Re: [PATCH] bus/pci: fix wrong intr_handle.type with uio_pci_generic
> 
> 28/12/2017 07:12, Zhiyong Yang:
> > In the function rte_pci_ioport_map, if uio_pci_generic is used on X86
> > platform, pci_ioport_map() is invoked, the operation
> > ev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN; is execused directly,
> > it causes the wrong assignment for uio_pci_generic, the patch fixes it.
> [...]
> > --- a/drivers/bus/pci/linux/pci.c
> > +++ b/drivers/bus/pci/linux/pci.c
> > @@ -723,7 +723,9 @@ pci_ioport_map(struct rte_pci_device *dev, int bar
> __rte_unused,
> >  	if (!found)
> >  		return -1;
> >
> > -	dev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN;
> > +	if (dev->kdrv == RTE_KDRV_NONE)
> > +		dev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN;
> 
> I don't understand the logic.
> NONE is different of UNKNOWN.
> 
> Your are talking about uio_pci_generic. In this case, it should be
> RTE_KDRV_UIO_GENERIC.

If we use uio_pci_generic,  dev->intr_handle.type has already been assigned to
The right value RTE_INTR_HANDLE_UIO_INTX before it, but in the function pci_ioport_map
the wrong value is assigned to dev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN;
Two cases both call pci_ioport_map  on x86 platform.
one is RTE_KDRV_UIO_GENERIC
the other is RTE_KDRV_NONE 
if I understand right, for uio_generic, it should not be assigned to RTE_INTR_HANDLE_UNKNOWN;
This case has already the right value, don't need to assign again. 
The original code should be considered to handle RTE_KDRV_NONE case only.

thanks
Zhiyong


More information about the dev mailing list