[dpdk-dev] [PATCH v2 2/4] eal: fix IOVA mode selection as VA for pci drivers

Jerin Jacob Kollanukkaran jerinj at marvell.com
Tue Jul 16 17:07:25 CEST 2019


> 
> On 16-Jul-19 2:46 PM, jerinj at marvell.com wrote:
> > From: David Marchand <david.marchand at redhat.com>
> >
> > The incriminated commit broke the use of RTE_PCI_DRV_IOVA_AS_VA
> which
> > was intended to mean "driver only supports VA" but had been understood
> > as "driver supports both PA and VA" by most net drivers and used to
> > let dpdk processes to run as non root (which do not have access to
> > physical addresses on recent kernels).
> >
> > The check on physical addresses actually closed the gap for those
> > drivers. We don't need to mark them with RTE_PCI_DRV_IOVA_AS_VA and
> > this flag can retain its intended meaning.
> > Document explicitly its meaning.
> >
> > We can check that a driver requirement wrt to IOVA mode is fulfilled
> > before trying to probe a device.
> >
> > Finally, document the heuristic used to select the IOVA mode and hope
> > that we won't break it again.
> >
> > Fixes: 703458e19c16 ("bus/pci: consider only usable devices for IOVA
> > mode")
> >
> > Signed-off-by: David Marchand <david.marchand at redhat.com>
> > Reviewed-by: Jerin Jacob <jerinj at marvell.com>
> > Tested-by: Jerin Jacob <jerinj at marvell.com>
> > ---
> 
> <snip>
> 
> > @@ -629,12 +643,16 @@ rte_pci_get_iommu_class(void)
> >   				devices_want_va = true;
> >   		}
> >   	}
> > -	if (devices_want_pa) {
> > -		iova_mode = RTE_IOVA_PA;
> > -		if (devices_want_va)
> > -			RTE_LOG(WARNING, EAL, "Some devices want 'VA'
> but forcing 'PA' because other devices want it\n");
> > -	} else if (devices_want_va) {
> > +	if (devices_want_va && !devices_want_pa) {
> >   		iova_mode = RTE_IOVA_VA;
> > +	} else if (devices_want_pa && !devices_want_va) {
> > +		iova_mode = RTE_IOVA_PA;
> > +	} else {
> > +		iova_mode = RTE_IOVA_DC;
> > +		if (devices_want_va) {
> > +			RTE_LOG(WARNING, EAL, "Some devices want 'VA'
> but forcing 'DC' because other devices want 'PA'.\n");
> > +			RTE_LOG(WARNING, EAL, "Depending on the final
> decision by the EAL,
> > +part of your devices won't initialise.\n");
> 
> Tiny nitpick - i generally don't like personal appeals in log messages, so
> perhaps drop the "your"? I.e. "Depending on final decision by EAL, not all
> devices may be able to initialize."? Same applies to the other instance of this
> error message.

I will fix it in v3.	


> 
> Otherwise, LGTM
> 
> Acked-by: Anatoly Burakov <anatoly.burakov at intel.com>
> 
> --
> Thanks,
> Anatoly


More information about the dev mailing list