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 >