Lines Matching refs:pd

78 #define assert_page_locked(pd) tcg_debug_assert(have_mmap_lock())  argument
211 PageDesc *pd; in page_find_alloc() local
238 pd = qatomic_rcu_read(lp); in page_find_alloc()
239 if (pd == NULL) { in page_find_alloc()
246 pd = g_new0(PageDesc, V_L2_SIZE); in page_find_alloc()
248 qemu_spin_init(&pd[i].lock); in page_find_alloc()
251 existing = qatomic_cmpxchg(lp, NULL, pd); in page_find_alloc()
254 qemu_spin_destroy(&pd[i].lock); in page_find_alloc()
256 g_free(pd); in page_find_alloc()
257 pd = existing; in page_find_alloc()
261 return pd + (index & (V_L2_SIZE - 1)); in page_find_alloc()
283 PageDesc *pd; member
329 static bool page_is_locked(const PageDesc *pd) in page_is_locked() argument
334 found = g_hash_table_lookup(ht_pages_locked_debug, pd); in page_is_locked()
338 static void page_lock__debug(PageDesc *pd) in page_lock__debug() argument
341 g_assert(!page_is_locked(pd)); in page_lock__debug()
342 g_hash_table_insert(ht_pages_locked_debug, pd, pd); in page_lock__debug()
345 static void page_unlock__debug(const PageDesc *pd) in page_unlock__debug() argument
350 g_assert(page_is_locked(pd)); in page_unlock__debug()
351 removed = g_hash_table_remove(ht_pages_locked_debug, pd); in page_unlock__debug()
355 static void do_assert_page_locked(const PageDesc *pd, in do_assert_page_locked() argument
358 if (unlikely(!page_is_locked(pd))) { in do_assert_page_locked()
360 pd, file, line); in do_assert_page_locked()
364 #define assert_page_locked(pd) do_assert_page_locked(pd, __FILE__, __LINE__) argument
374 static inline void page_lock__debug(const PageDesc *pd) { } in page_lock__debug() argument
375 static inline void page_unlock__debug(const PageDesc *pd) { } in page_unlock__debug() argument
376 static inline void assert_page_locked(const PageDesc *pd) { } in assert_page_locked() argument
380 static void page_lock(PageDesc *pd) in page_lock() argument
382 page_lock__debug(pd); in page_lock()
383 qemu_spin_lock(&pd->lock); in page_lock()
387 static bool page_trylock(PageDesc *pd) in page_trylock() argument
389 bool busy = qemu_spin_trylock(&pd->lock); in page_trylock()
391 page_lock__debug(pd); in page_trylock()
396 static void page_unlock(PageDesc *pd) in page_unlock() argument
398 qemu_spin_unlock(&pd->lock); in page_unlock()
399 page_unlock__debug(pd); in page_unlock()
489 page_entry_new(PageDesc *pd, tb_page_addr_t index) in page_entry_new() argument
494 pe->pd = pd; in page_entry_new()
504 page_unlock(pe->pd); in page_entry_destroy()
511 bool busy = page_trylock(pe->pd); in page_entry_trylock()
521 page_lock(pe->pd); in do_page_entry_lock()
540 page_unlock(pe->pd); in page_entry_unlock()
553 PageDesc *pd; in page_trylock_add() local
560 pd = page_find(index); in page_trylock_add()
561 if (pd == NULL) { in page_trylock_add()
565 pe = page_entry_new(pd, index); in page_trylock_add()
607 PageDesc *pd; in page_collection_lock() local
625 pd = page_find(index); in page_collection_lock()
626 if (pd == NULL) { in page_collection_lock()
633 assert_page_locked(pd); in page_collection_lock()
634 PAGE_FOR_EACH_TB(unused, unused, pd, tb, n) { in page_collection_lock()
663 PageDesc *pd = *lp; in tb_remove_all_1() local
666 page_lock(&pd[i]); in tb_remove_all_1()
667 pd[i].first_tb = (uintptr_t)NULL; in tb_remove_all_1()
668 page_unlock(&pd[i]); in tb_remove_all_1()
726 static void tb_page_remove(PageDesc *pd, TranslationBlock *tb) in tb_page_remove() argument
732 assert_page_locked(pd); in tb_page_remove()
733 pprev = &pd->first_tb; in tb_page_remove()
734 PAGE_FOR_EACH_TB(unused, unused, pd, tb1, n1) { in tb_page_remove()
1179 PageDesc *pd = page_find(index); in tb_invalidate_phys_range() local
1182 if (pd == NULL) { in tb_invalidate_phys_range()
1185 assert_page_locked(pd); in tb_invalidate_phys_range()
1189 tb_invalidate_phys_page_range__locked(cpu, pages, pd, in tb_invalidate_phys_range()