On Thu 13-08-20 15:27:15, Thomas Gleixner wrote: > 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. Can we somehow annotate the lock to be safe for nesting for lockdep? -- Michal Hocko SUSE Labs