Re: [RFC-PATCH 1/2] mm: Add __GFP_NO_LOCKS flag

From: Thomas Gleixner
Date: Thu Aug 13 2020 - 09:27:21 EST


Michal Hocko <mhocko@xxxxxxxx> writes:
> On Thu 13-08-20 11:58:40, Uladzislau Rezki wrote:
> [...]
>> Sorry for jumping in. We can rely on preemptable() for sure, if CONFIG_PREEMPT_RT
>> is enabled, something like below:
>>
>> if (IS_ENABLED_RT && preemptebale())
>
> Sure. I thought this was an RT specific thing that would be noop
> otherwise.

Well, even if RT specific it would be still something returning either
true or false unconditionally.

And guarding it with RT is not working either because then you are back
to square one with the problem which triggered the discussion in the
first place:

raw_spin_lock()
alloc()
if (RT && !preemptible()) <- False because RT == false
goto bail;

spin_lock(&zone->lock) --> LOCKDEP complains

So either you convince Paul not to do that or you need to do something
like I suggested in my other reply.

Thanks,

tglx