[dpdk-dev] [PATCH] fm10k: support XEN domain0

He, Shaopeng shaopeng.he at intel.com
Tue Jun 23 03:21:24 CEST 2015


Hi Thomas,

> -----Original Message-----
> From: Liu, Jijiang
> Sent: Friday, June 05, 2015 11:18 AM
> To: dev at dpdk.org
> Cc: He, Shaopeng
> Subject: RE: [dpdk-dev] [PATCH] fm10k: support XEN domain0
> 
> 
> Acked-by: Jijiang Liu <Jijiang.liu at intel.com>
> 
> I think this patch could be merged before Stephen's following patch[1] is
> merged, then Stephen should rework the patch[1].
> Thanks.
> 
> [1]http://dpdk.org/ml/archives/dev/2015-March/014992.html

Do you think we can accept this patch in current no-so-elegant way, so user can
use XEN with fm10k from release 2.1; or better to wait for Stephen's patch?
Thank you in advance for your attention to this matter.

Best Regards,
--Shaopeng

> > -----Original Message-----
> > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Shaopeng He
> > Sent: Friday, May 15, 2015 4:56 PM
> > To: dev at dpdk.org
> > Cc: He, Shaopeng
> > Subject: [dpdk-dev] [PATCH] fm10k: support XEN domain0
> >
> > fm10k was failing to run in XEN domain0, as the physical memory for DMA
> > should be allocated and translated in a different way for XEN domain0. So
> > rte_memzone_reserve_bounded() should be used for DMA memory
> > allocation, and rte_mem_phy2mch() should be used for DMA memory
> > address translation to support running fm10k PMD in XEN domain0.
> >
> > Signed-off-by: Shaopeng He <shaopeng.he at intel.com>
> > ---
> >  lib/librte_pmd_fm10k/fm10k_ethdev.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/lib/librte_pmd_fm10k/fm10k_ethdev.c
> > b/lib/librte_pmd_fm10k/fm10k_ethdev.c
> > index 275c19c..c85c856 100644
> > --- a/lib/librte_pmd_fm10k/fm10k_ethdev.c
> > +++ b/lib/librte_pmd_fm10k/fm10k_ethdev.c
> > @@ -1004,7 +1004,11 @@ fm10k_rx_queue_setup(struct rte_eth_dev
> *dev,
> > uint16_t queue_id,
> >  		return (-ENOMEM);
> >  	}
> >  	q->hw_ring = mz->addr;
> > +#ifdef RTE_LIBRTE_XEN_DOM0
> > +	q->hw_ring_phys_addr = rte_mem_phy2mch(mz->memseg_id, mz-
> > >phys_addr);
> > +#else
> >  	q->hw_ring_phys_addr = mz->phys_addr;
> > +#endif
> >
> >  	dev->data->rx_queues[queue_id] = q;
> >  	return 0;
> > @@ -1150,7 +1154,11 @@ fm10k_tx_queue_setup(struct rte_eth_dev
> *dev,
> > uint16_t queue_id,
> >  		return (-ENOMEM);
> >  	}
> >  	q->hw_ring = mz->addr;
> > +#ifdef RTE_LIBRTE_XEN_DOM0
> > +	q->hw_ring_phys_addr = rte_mem_phy2mch(mz->memseg_id, mz-
> > >phys_addr);
> > +#else
> >  	q->hw_ring_phys_addr = mz->phys_addr;
> > +#endif
> >
> >  	/*
> >  	 * allocate memory for the RS bit tracker. Enough slots to hold the
> > --
> > 1.9.3
> 



More information about the dev mailing list