X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fdpaax%2Fdpaax_iova_table.h;h=b1f2300c52b317d86d7d374e69b2480a6a90b016;hb=90a2ec4ae81f2ef52f7c14bfc9307e75a4127fa4;hp=fc3b9e7a8f6fe42214fca2af0f02ce71e41b8b6c;hpb=e3866e73555091d56b33b4d8916e0e484ccae114;p=dpdk.git diff --git a/drivers/common/dpaax/dpaax_iova_table.h b/drivers/common/dpaax/dpaax_iova_table.h index fc3b9e7a8f..b1f2300c52 100644 --- a/drivers/common/dpaax/dpaax_iova_table.h +++ b/drivers/common/dpaax/dpaax_iova_table.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2021 NXP */ #ifndef _DPAAX_IOVA_TABLE_H_ @@ -61,9 +61,13 @@ extern struct dpaax_iova_table *dpaax_iova_table_p; #define DPAAX_MEM_SPLIT_MASK_OFF (DPAAX_MEM_SPLIT - 1) /**< Offset */ /* APIs exposed */ +__rte_internal int dpaax_iova_table_populate(void); +__rte_internal void dpaax_iova_table_depopulate(void); +__rte_internal int dpaax_iova_table_update(phys_addr_t paddr, void *vaddr, size_t length); +__rte_internal void dpaax_iova_table_dump(void); static inline void *dpaax_iova_table_get_va(phys_addr_t paddr) __rte_hot; @@ -97,6 +101,12 @@ dpaax_iova_table_get_va(phys_addr_t paddr) { /* paddr > entry->start && paddr <= entry->(start+len) */ index = (paddr_align - entry[i].start)/DPAAX_MEM_SPLIT; + /* paddr is within range, but no vaddr entry ever written + * at index + */ + if ((void *)(uintptr_t)entry[i].pages[index] == NULL) + return NULL; + vaddr = (void *)((uintptr_t)entry[i].pages[index] + offset); break; } while (1);