pt_vaddr_t
static inline pt_vaddr_t amdv1pt_possible_sizes(const struct pt_state *pts)
pt_vaddr_t len = pgsize * pgcount;
pt_vaddr_t pgsize_bitmap = 0;
if ((pt_vaddr_t)domain->geometry.aperture_start != range.va)
if ((pt_vaddr_t)domain->geometry.aperture_end != range.last_va) {
pt_vaddr_t dirty_len;
struct pt_iommu *iommu_table, pt_vaddr_t iova,
pt_vaddr_t len,
pt_vaddr_t pgsize_bitmap = iommu_table->domain.pgsize_bitmap;
pt_vaddr_t len = pgsize * pgcount;
(pt_vaddr_t)paddr > PT_VADDR_MAX) ||
pt_vaddr_t unmapped;
static void do_map(struct kunit *test, pt_vaddr_t va, pt_oaddr_t pa,
pt_vaddr_t len)
static unsigned int ref_best_pgsize(pt_vaddr_t pgsz_bitmap, pt_vaddr_t va,
pt_vaddr_t last_va, pt_oaddr_t oa)
pt_vaddr_t pgsz_lg2;
pt_vaddr_t pgsz_bitmap = get_random_u64();
pt_vaddr_t va = get_random_u64() << a_lg2;
pt_vaddr_t last_va = log2_set_mod_max(
pt_vaddr_t pgsz_bitmap = get_random_u64();
pt_vaddr_t va = 0;
pt_vaddr_t last_va = log2_set_mod_max(0, c_lg2);
pt_vaddr_t pgsz_bitmap = get_random_u64();
pt_vaddr_t va = PT_VADDR_MAX << a_lg2;
pt_vaddr_t last_va = PT_VADDR_MAX;
pt_vaddr_t pgsz_bitmap = 0;
pt_vaddr_t va = get_random_u64() << a_lg2;
pt_vaddr_t last_va = log2_set_mod_max(
if (sizeof(pt_vaddr_t) <= 4)
pt_vaddr_t pgsz_bitmap = get_random_u64();
pt_vaddr_t va = get_random_u64() << a_lg2;
pt_vaddr_t last_va = log2_set_mod_max(
pt_vaddr_t vbits;
pt_vaddr_t pgsize_bitmap = pt_possible_sizes(pts);
pt_vaddr_t pgsize_bitmap = pt_possible_sizes(pts);
pt_vaddr_t pgsize_bitmap = pt_possible_sizes(pts);
pt_vaddr_t pgsize_bitmap = pt_possible_sizes(pts);
pt_vaddr_t pgsize_bitmap = pt_possible_sizes(pts);
pt_vaddr_t smallest_pgsz;
pt_vaddr_t safe_pgsize_bitmap;
static void do_map(struct kunit *test, pt_vaddr_t va, pt_oaddr_t pa,
pt_vaddr_t len);
pt_vaddr_t pgsize_bitmap = priv->safe_pgsize_bitmap;
pt_vaddr_t cur_va;
pt_vaddr_t limited_pgbitmap =
pt_vaddr_t max_pgsize;
pt_vaddr_t cur_va;
pt_vaddr_t offset;
pt_vaddr_t pgsize_bitmap = priv->safe_pgsize_bitmap;
pt_vaddr_t base_len = log2_to_int(pgsz_lg2);
pt_vaddr_t next_len = log2_to_int(next_pgsz_lg2);
pt_vaddr_t vaddr = top_range.va;
pt_vaddr_t start, pt_vaddr_t last)
pt_vaddr_t mas_start = mas.index;
pt_vaddr_t len = (mas.last - mas_start) + 1;
pt_vaddr_t start;
pt_vaddr_t end;
pt_vaddr_t len = end - start;
static unsigned int count_valids_single(struct kunit *test, pt_vaddr_t pgsz)
static void do_unmap(struct kunit *test, pt_vaddr_t va, pt_vaddr_t len)
static void check_iova(struct kunit *test, pt_vaddr_t va, pt_oaddr_t pa,
pt_vaddr_t len)
pt_vaddr_t pfn = log2_div(va, priv->smallest_pgsz_lg2);
pt_vaddr_t end_pfn = pfn + log2_div(len, priv->smallest_pgsz_lg2);
static inline pt_vaddr_t pt_full_va_prefix(const struct pt_common *common);
static inline pt_vaddr_t pt_possible_sizes(const struct pt_state *pts);
pt_vaddr_t va;
pt_vaddr_t last_va;
#define log2_to_int(a_lg2) log2_to_int_t(pt_vaddr_t, a_lg2)
#define log2_to_max_int(a_lg2) log2_to_max_int_t(pt_vaddr_t, a_lg2)
#define log2_div(a, b_lg2) log2_div_t(pt_vaddr_t, a, b_lg2)
#define log2_div_eq(a, b, c_lg2) log2_div_eq_t(pt_vaddr_t, a, b, c_lg2)
#define log2_mod(a, b_lg2) log2_mod_t(pt_vaddr_t, a, b_lg2)
#define log2_mod_eq_max(a, b_lg2) log2_mod_eq_max_t(pt_vaddr_t, a, b_lg2)
#define log2_set_mod(a, val, b_lg2) log2_set_mod_t(pt_vaddr_t, a, val, b_lg2)
#define log2_set_mod_max(a, b_lg2) log2_set_mod_max_t(pt_vaddr_t, a, b_lg2)
#define log2_mul(a, b_lg2) log2_mul_t(pt_vaddr_t, a, b_lg2)
#define vaffs(a) ffs_t(pt_vaddr_t, a)
#define vafls(a) fls_t(pt_vaddr_t, a)
#define vaffz(a) ffz_t(pt_vaddr_t, a)
static inline pt_vaddr_t fvalog2_div(pt_vaddr_t a, unsigned int b_lg2)
return log2_div_t(pt_vaddr_t, a, b_lg2);
static inline pt_vaddr_t fvalog2_mod(pt_vaddr_t a, unsigned int b_lg2)
return log2_mod_t(pt_vaddr_t, a, b_lg2);
static inline bool fvalog2_div_eq(pt_vaddr_t a, pt_vaddr_t b,
return log2_div_eq_t(pt_vaddr_t, a, b, c_lg2);
static inline pt_vaddr_t fvalog2_set_mod(pt_vaddr_t a, pt_vaddr_t val,
return log2_set_mod_t(pt_vaddr_t, a, val, b_lg2);
static inline pt_vaddr_t fvalog2_set_mod_max(pt_vaddr_t a, unsigned int b_lg2)
return log2_set_mod_max_t(pt_vaddr_t, a, b_lg2);
PT_VADDR_MAX = sizeof(pt_vaddr_t) == 8 ? U64_MAX : U32_MAX,
PT_VADDR_MAX_LG2 = sizeof(pt_vaddr_t) == 8 ? 64 : 32,
static inline pt_vaddr_t pt_possible_sizes(const struct pt_state *pts)
static inline pt_vaddr_t pt_full_va_prefix(const struct pt_common *common)
pt_vaddr_t prefix;
pt_make_range(struct pt_common *common, pt_vaddr_t va, pt_vaddr_t last_va)
pt_make_child_range(const struct pt_range *parent, pt_vaddr_t va,
pt_vaddr_t last_va)
pt_vaddr_t va, pt_vaddr_t last_va,
pt_vaddr_t last_va;
pt_vaddr_t va;
static inline unsigned int pt_compute_best_pgsize(pt_vaddr_t pgsz_bitmap,
pt_vaddr_t va,
pt_vaddr_t last_va,
pt_vaddr_t len = last_va - va + 1;
pt_vaddr_t mask;
pt_vaddr_t lower_va;