On 12/10/19 at 12:33pm, Michal Hocko wrote: > On Tue 10-12-19 18:43:03, Baoquan He wrote: > > On 12/10/19 at 11:28am, Michal Hocko wrote: > > > On Tue 10-12-19 15:24:53, Baoquan He wrote: > [...] > > > > But after system bootup, we should be able to hot add/remove any memory > > > > board. This should not be restricted by a boot-time kernel parameter > > > > 'mme='. This is what I am trying to fix. > > > > > > This is a simple statement without any actual explanation on why. Why is > > > hotplug memory special? What is the usecase? Who would want to use mem > > > parameter and later expect a memory above the restrected area to be > > > hotplugable? > > > > The why is 'mem=' is used to restrict the amount of system ram during > > boot. We have two ways to add system memory, one is installing DIMMs > > before boot, the other is hot adding memory after boot. Without David's > > use case, we may need redefine 'mem=' and change its documentation in > > kernel-parameters.txt, if we don't want to fix it like this. Otherwise, > > 'mem=' will limit the system's upper system ram always, that is not > > expected. > > I really do not see why. It seems a pretty consistent behavior to me. > Because it essentially cut any memory above the given size. If a new > hotplugable memory fits into that cap then it just shows up. Quite > contrary I would consider it unexpected that a memory higher than the > given mem=XYZ is really there. But I do recognize a real usecase > mentioned elsewhere which beats the consistency argument here because > all setups where such a restriction would be really important are > debugging/workaround AFAICS. All right. There could be me who have this misunderstanding. Anyway, I think now we all agree it's only a boot-time restriction on the system RAM. Btw, as you said at above, I am confused by the '[KNL,BOOT]', what does the 'BOOT' mean in the documentation of 'mem='? I checked all parameters with 'BOOT', still don't get it clearly. Thanks Baoquan