Lines Matching refs:map
44 #define mk_qpn(qpt, map, off) (((map) - (qpt)->map) * BITS_PER_PAGE + \ argument
46 #define find_next_offset(map, off) find_next_zero_bit((map)->page, \ argument
87 static void get_map_page(struct ipath_qp_table *qpt, struct qpn_map *map) in get_map_page() argument
97 if (map->page) in get_map_page()
100 map->page = (void *)page; in get_map_page()
108 struct qpn_map *map; in alloc_qpn() local
117 map = &qpt->map[0]; in alloc_qpn()
118 if (unlikely(!map->page)) { in alloc_qpn()
119 get_map_page(qpt, map); in alloc_qpn()
120 if (unlikely(!map->page)) { in alloc_qpn()
125 if (!test_and_set_bit(ret, map->page)) in alloc_qpn()
126 atomic_dec(&map->n_free); in alloc_qpn()
136 map = &qpt->map[qpn / BITS_PER_PAGE]; in alloc_qpn()
139 if (unlikely(!map->page)) { in alloc_qpn()
140 get_map_page(qpt, map); in alloc_qpn()
141 if (unlikely(!map->page)) in alloc_qpn()
144 if (likely(atomic_read(&map->n_free))) { in alloc_qpn()
146 if (!test_and_set_bit(offset, map->page)) { in alloc_qpn()
147 atomic_dec(&map->n_free); in alloc_qpn()
152 offset = find_next_offset(map, offset); in alloc_qpn()
153 qpn = mk_qpn(qpt, map, offset); in alloc_qpn()
172 map = &qpt->map[qpt->nmaps++]; in alloc_qpn()
174 } else if (map < &qpt->map[qpt->nmaps]) { in alloc_qpn()
175 ++map; in alloc_qpn()
178 map = &qpt->map[0]; in alloc_qpn()
181 qpn = mk_qpn(qpt, map, offset); in alloc_qpn()
192 struct qpn_map *map; in free_qpn() local
194 map = qpt->map + qpn / BITS_PER_PAGE; in free_qpn()
195 if (map->page) in free_qpn()
196 clear_bit(qpn & BITS_PER_PAGE_MASK, map->page); in free_qpn()
197 atomic_inc(&map->n_free); in free_qpn()
287 for (n = 0; n < ARRAY_SIZE(qpt->map); n++) in ipath_free_all_qps()
288 if (qpt->map[n].page) in ipath_free_all_qps()
289 free_page((unsigned long) qpt->map[n].page); in ipath_free_all_qps()
1037 for (i = 0; i < ARRAY_SIZE(idev->qp_table.map); i++) { in ipath_init_qp_table()
1038 atomic_set(&idev->qp_table.map[i].n_free, BITS_PER_PAGE); in ipath_init_qp_table()
1039 idev->qp_table.map[i].page = NULL; in ipath_init_qp_table()