On 17-Feb-19 6:18 AM, Shahaf Shuler wrote:
Thursday, February 14, 2019 6:20 PM, Burakov, Anatoly:
Subject: Re: [dpdk-dev] [PATCH 0/6] introduce DMA memory mapping for
external memory
On 14-Feb-19 1:28 PM, Shahaf Shuler wrote:
Thursday, February 14, 2019 12:19 PM, Burakov, Anatoly:
Subject: Re: [dpdk-dev] [PATCH 0/6] introduce DMA memory mapping for
external memory
On 13-Feb-19 7:24 PM, Shahaf Shuler wrote:
Wednesday, February 13, 2019 1:43 PM, Alejandro Lucero:
Subject: Re: [dpdk-dev] [PATCH 0/6] introduce DMA memory mapping
for external memory
[...]
If we are going to force all to use the extmem, then there is no need w/
this API. we can have the PMDs to register when the memory is registered.
We can just drop the vfio_dma_map APIs and that's it.
Well, whether we needed it or not is not really my call, but what i can say is
that using extmem_register is _necessary_ if you're going to use the PMD's.
You're right, we could just map memory for DMA at register time - that
would save one API call to get the memory working. It makes it a bit weird
semantically, but i think we can live with that :)
This was not my suggestion 😊. I don't think the register API should do the
mapping as well.
My thoughts were on one of the two options:
1. have the series I propose here, and enable the user to work with memory
managed outside of DPDK. Either force the user to call rte_extmem_register
before the mapping or devices which needs memory to be also registered in the
DPDK system can fail the mapping.
2. not providing such option to application, and forcing applications to
populate a socket w/ external memory.
I vote for #1.
I too think #1 is better - we want this to be a valid use case. Allowing
such usage in the first place is already gracious enough - all we ask in
return is one extra API call, to politely let DPDK know that this memory
exists and is going to be used for DMA :)
Also, having the memory registered will also allow us to refuse mapping
if it cannot be found in DPDK maps - if rte_virt2memseg returns NULL,
that means extmem_register was not called. I.e. we can _enforce_ usage
of extmem_register, which i believe is a good thing for usability.
--
Thanks,
Anatoly
--
Thanks,
Anatoly