Messages in this thread | | | Date | Thu, 13 Aug 2020 09:29:04 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [RFC-PATCH 1/2] mm: Add __GFP_NO_LOCKS flag |
| |
On Thu, Aug 13, 2020 at 06:13:57PM +0200, Michal Hocko wrote: > On Thu 13-08-20 09:04:42, Paul E. McKenney wrote: > > On Thu, Aug 13, 2020 at 05:54:12PM +0200, Michal Hocko wrote: > [...] > > > If the whole bailout is guarded by CONFIG_PREEMPT_RT specific atomicity > > > check then there is no functional problem - GFP_RT_SAFE would still be > > > GFP_NOWAIT so functional wise the allocator will still do the right > > > thing. > > > > Perhaps it was just me getting confused, early hour Pacific Time and > > whatever other excuses might apply. But I thought that you still had > > an objection to GFP_RT_SAFE based on changes in allocator semantics for > > other users. > > There is still that problem with lockdep complaining about raw->regular > spinlock on !PREEMPT_RT that would need to get resolved somehow. Thomas > is not really keen on adding some lockdep annotation mechanism and > unfortunatelly I do not have a different idea how to get rid of those.
OK. So the current situation requires a choice between these these alternatives, each of which has shortcomings that have been mentioned earlier in this thread:
1. Prohibit invoking allocators from raw atomic context, such as when holding a raw spinlock.
2. Adding a GFP_ flag.
3. Reusing existing GFP_ flags/values/whatever to communicate the raw-context information that was to be communicated by the new GFP_ flag.
4. Making lockdep forgive acquiring spinlocks while holding raw spinlocks, but only in CONFIG_PREEMPT_NONE=y kernels.
Am I missing anything?
Thanx, Paul
| |