On Thu, Jul 31, 2025 at 10:38:49AM +0200, David Hildenbrand wrote: > Thanks Lorenzo for the review, I'll leave handling all that to Usama from > this point :) > > On 31.07.25 10:29, Lorenzo Stoakes wrote: > > Just a ping on the man page stuff - you will do that right? :>) > > > > I'm hoping that Usama can take over that part. If not, I'll handle it (had > planned it for once it's in mm-stable / going upstream). > > [ ... ] Thanks > > > > > > +/* > > > > > + * Don't disable THPs when explicitly advised (e.g., MADV_HUGEPAGE / > > > > > + * VM_HUGEPAGE). > > > > > + */ > > > > > +# define PR_THP_DISABLE_EXCEPT_ADVISED (1 << 1) > > > > > > > > NO space after # please. > > > > > > > > > > I think this is following the file convention, the space is there in other flags > > > all over this file. I dont like the space as well. > > > > Yeah yuck. It's not a big deal, but ideally I'd prefer us to be sane even > > if the rest of the header is less so here. > > I'm afraid us doing something different here will not make prctl() any > better as a whole, so let's keep it consistent in this questionable file. Sure not a big deal. > > > > > > > > > > > #define PR_GET_THP_DISABLE 42 > > > > > > > > > > /* > > > > > diff --git a/kernel/sys.c b/kernel/sys.c > > > > > index b153fb345ada..b87d0acaab0b 100644 > > > > > --- a/kernel/sys.c > > > > > +++ b/kernel/sys.c > > > > > @@ -2423,6 +2423,50 @@ static int prctl_get_auxv(void __user *addr, unsigned long len) > > > > > return sizeof(mm->saved_auxv); > > > > > } > > > > > > > > > > +static int prctl_get_thp_disable(unsigned long arg2, unsigned long arg3, > > > > > + unsigned long arg4, unsigned long arg5) > > > > > +{ > > > > > + unsigned long *mm_flags = ¤t->mm->flags; > > > > > + > > > > > + if (arg2 || arg3 || arg4 || arg5) > > > > > + return -EINVAL; > > > > > + > > > > > > > > Can we have a comment here about what we're doing below re: the return > > > > value? > > > > > > > > > > Do you mean add returning 1 for MMF_DISABLE_THP_COMPLETELY and 3 for MMF_DISABLE_THP_EXCEPT_ADVISED? > > > > Well more so something about we return essentially flags indicating what is > > enabled or not, if bit 0 is set then it's disabled, if bit 1 is set then > > it's that with the exception of VM_HUGEPAGE VMAs. > > We have that documented above the defines for flags etc. Maybe simply here: > > /* If disabled, we return "1 | flags", otherwise 0. */ Yup I know it was documented, but nice to have here as I'd definitely read this code and think 'huh?'. What you suggest is fine! > > -- > Cheers, > > David / dhildenb > Thanks, Lorenzo