/* We are not always called with irqs disabled - do that here, and also avoid lockdep recursion:  */
void lock_acquire(struct lockdep_map *lock, unsigned int subclass, int trylock, int read, int check, struct lockdep_map *nest_lock, unsigned long ip)
/* We are not always called with irqs disabled - do that here, and also avoid lockdep recursion:  */
void lock_acquire(struct lockdep_map *lock, unsigned int subclass, int trylock, int read, int check, struct lockdep_map *nest_lock, unsigned long ip)
{
	unsigned long flags;
	trace_lock_acquire(lock, subclass, trylock, read, check, nest_lock, ip);
	if (unlikely(current->lockdep_recursion))
		return;
	raw_local_irq_save(flags);
	check_flags(flags);
	current->lockdep_recursion = 1;
	__lock_acquire(lock, subclass, trylock, read, check,
		       irqs_disabled_flags(flags), nest_lock, ip, 0);
	current->lockdep_recursion = 0;
	raw_local_irq_restore(flags);
}