mem: clarify documentation for rte_mem_virt2iova
Checks
Commit Message
It may not be immediately clear that rte_mem_virt2iova does not actually
check the internal memseg table, and will instead either return VA (in
IOVA as VA mode), or will fall back to kernel page table walk (in IOVA
as PA mode).
Add a note to API documentation indicating the above.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/librte_eal/common/include/rte_memory.h | 5 +++++
1 file changed, 5 insertions(+)
Comments
On Thu, Nov 14, 2019 at 02:13:06PM +0000, Anatoly Burakov wrote:
> It may not be immediately clear that rte_mem_virt2iova does not actually
> check the internal memseg table, and will instead either return VA (in
> IOVA as VA mode), or will fall back to kernel page table walk (in IOVA
> as PA mode).
>
> Add a note to API documentation indicating the above.
>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
18/11/2019 14:14, Olivier Matz:
> On Thu, Nov 14, 2019 at 02:13:06PM +0000, Anatoly Burakov wrote:
> > It may not be immediately clear that rte_mem_virt2iova does not actually
> > check the internal memseg table, and will instead either return VA (in
> > IOVA as VA mode), or will fall back to kernel page table walk (in IOVA
> > as PA mode).
> >
> > Add a note to API documentation indicating the above.
> >
> > Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>
> Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
Applied, thanks
On 25-Nov-19 11:32 PM, Thomas Monjalon wrote:
> 18/11/2019 14:14, Olivier Matz:
>> On Thu, Nov 14, 2019 at 02:13:06PM +0000, Anatoly Burakov wrote:
>>> It may not be immediately clear that rte_mem_virt2iova does not actually
>>> check the internal memseg table, and will instead either return VA (in
>>> IOVA as VA mode), or will fall back to kernel page table walk (in IOVA
>>> as PA mode).
>>>
>>> Add a note to API documentation indicating the above.
>>>
>>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>>
>> Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
>
> Applied, thanks
>
There are multiple places where this function is used, and its use is
not compatible with external memory. I think we should replace all
usages of this function to rte_mem_virt2memseg(), and rename this
function, because its actual intended usage is *not* VA->IOVA
translation, but instead is akin to figuring out what IOVA address
*should* be with current IOVA settings, regardless of any internal page
table and current VFIO mappings.
@@ -110,6 +110,11 @@ phys_addr_t rte_mem_virt2phy(const void *virt);
/**
* Get IO virtual address of any mapped virtual address in the current process.
*
+ * @note This function will not check internal page table. Instead, in IOVA as
+ * PA mode, it will fall back to getting real physical address (which may
+ * not match the expected IOVA, such as what was specified for external
+ * memory).
+ *
* @param virt
* The virtual address.
* @return