Lines Matching refs:chain
418 #define __chainhashfn(chain) hash_long(chain, CHAINHASH_BITS) argument
419 #define chainhashentry(chain) (chainhash_table + __chainhashfn((chain))) argument
1037 static bool check_lock_chain_key(struct lock_chain *chain) in check_lock_chain_key() argument
1043 for (i = chain->base; i < chain->base + chain->depth; i++) in check_lock_chain_key()
1049 if (chain->chain_key != chain_key) { in check_lock_chain_key()
1051 (unsigned long long)(chain - lock_chains), in check_lock_chain_key()
1052 (unsigned long long)chain->chain_key, in check_lock_chain_key()
1076 struct lock_chain *chain; in __check_data_structures() local
1105 hlist_for_each_entry_rcu(chain, head, entry) { in __check_data_structures()
1106 if (!check_lock_chain_key(chain)) in __check_data_structures()
3484 struct lock_class *lock_chain_get_class(struct lock_chain *chain, int i) in lock_chain_get_class() argument
3486 u16 chain_hlock = chain_hlocks[chain->base + i]; in lock_chain_get_class()
3546 static void print_chain_keys_chain(struct lock_chain *chain) in print_chain_keys_chain() argument
3552 printk("depth: %u\n", chain->depth); in print_chain_keys_chain()
3553 for (i = 0; i < chain->depth; i++) { in print_chain_keys_chain()
3554 hlock_id = chain_hlocks[chain->base + i]; in print_chain_keys_chain()
3564 struct lock_chain *chain) in print_collision() argument
3578 print_chain_keys_chain(chain); in print_collision()
3593 struct lock_chain *chain) in check_no_collision() argument
3600 if (DEBUG_LOCKS_WARN_ON(chain->depth != curr->lockdep_depth - (i - 1))) { in check_no_collision()
3601 print_collision(curr, hlock, chain); in check_no_collision()
3605 for (j = 0; j < chain->depth - 1; j++, i++) { in check_no_collision()
3608 if (DEBUG_LOCKS_WARN_ON(chain_hlocks[chain->base + j] != id)) { in check_no_collision()
3609 print_collision(curr, hlock, chain); in check_no_collision()
3656 struct lock_chain *chain; in add_chain_cache() local
3667 chain = alloc_lock_chain(); in add_chain_cache()
3668 if (!chain) { in add_chain_cache()
3676 chain->chain_key = chain_key; in add_chain_cache()
3677 chain->irq_context = hlock->irq_context; in add_chain_cache()
3679 chain->depth = curr->lockdep_depth + 1 - i; in add_chain_cache()
3685 j = alloc_chain_hlocks(chain->depth); in add_chain_cache()
3695 chain->base = j; in add_chain_cache()
3696 for (j = 0; j < chain->depth - 1; j++, i++) { in add_chain_cache()
3699 chain_hlocks[chain->base + j] = lock_id; in add_chain_cache()
3701 chain_hlocks[chain->base + j] = hlock_id(hlock); in add_chain_cache()
3702 hlist_add_head_rcu(&chain->entry, hash_head); in add_chain_cache()
3704 inc_chains(chain->irq_context); in add_chain_cache()
3716 struct lock_chain *chain; in lookup_chain_cache() local
3718 hlist_for_each_entry_rcu(chain, hash_head, entry) { in lookup_chain_cache()
3719 if (READ_ONCE(chain->chain_key) == chain_key) { in lookup_chain_cache()
3721 return chain; in lookup_chain_cache()
3738 struct lock_chain *chain = lookup_chain_cache(chain_key); in lookup_chain_cache_add() local
3740 if (chain) { in lookup_chain_cache_add()
3742 if (!check_no_collision(curr, hlock, chain)) in lookup_chain_cache_add()
3766 chain = lookup_chain_cache(chain_key); in lookup_chain_cache_add()
3767 if (chain) { in lookup_chain_cache_add()
5946 struct lock_chain *chain, in remove_class_from_lock_chain() argument
5952 for (i = chain->base; i < chain->base + chain->depth; i++) { in remove_class_from_lock_chain()
5965 free_chain_hlocks(chain->base, chain->depth); in remove_class_from_lock_chain()
5967 WRITE_ONCE(chain->chain_key, INITIAL_CHAIN_KEY); in remove_class_from_lock_chain()
5968 dec_chains(chain->irq_context); in remove_class_from_lock_chain()
5974 hlist_del_rcu(&chain->entry); in remove_class_from_lock_chain()
5975 __set_bit(chain - lock_chains, pf->lock_chains_being_freed); in remove_class_from_lock_chain()
5984 struct lock_chain *chain; in remove_class_from_lock_chains() local
5990 hlist_for_each_entry_rcu(chain, head, entry) { in remove_class_from_lock_chains()
5991 remove_class_from_lock_chain(pf, chain, class); in remove_class_from_lock_chains()