On Wed 26-09-18 08:24:56, Alexander Duyck wrote: > On 9/26/2018 12:38 AM, Michal Hocko wrote: > > On Tue 25-09-18 13:20:12, Alexander Duyck wrote: > > [...] > > > + vm_debug[=options] [KNL] Available with CONFIG_DEBUG_VM=y. > > > + May slow down system boot speed, especially when > > > + enabled on systems with a large amount of memory. > > > + All options are enabled by default, and this > > > + interface is meant to allow for selectively > > > + enabling or disabling specific virtual memory > > > + debugging features. > > > + > > > + Available options are: > > > + P Enable page structure init time poisoning > > > + - Disable all of the above options > > > > I agree with Dave that this is confusing as hell. So what does vm_debug > > (without any options means). I assume it's NOP and all debugging is > > enabled and that is the default. What if I want to disable _only_ the > > page struct poisoning. The weird lookcing `-' will disable all other > > options that we might gather in the future. > > With no options it works just like slub_debug and enables all available > options. So in our case it is a NOP since we wanted the debugging enabled by > default. But isn't slub_debug more about _adding_ debugging features? While you want to effectively disbale some debugging features here? So if you want to follow that pattern then it would be something like vm_debug_disable=page_poisoning,$OTHER_FUTURE_DEBUG_OPTIONS why would you want to enable something when CONFIG_DEBUG_VM=y just enables everything? > > Why cannot you simply go with [no]vm_page_poison[=on/off]? > > That is what I had to begin with, but Dave Hansen and Dan Williams suggested > that I go with a slub_debug style interface so we could extend it in the > future. Please let's not over-engineer this. If you really need an umbrella parameter then make a list of things to disable. -- Michal Hocko SUSE Labs