lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.1011271754260.3764@chino.kir.corp.google.com>
Date:	Sat, 27 Nov 2010 18:00:15 -0800 (PST)
From:	David Rientjes <rientjes@...gle.com>
To:	Shaohui Zheng <shaohui.zheng@...el.com>
cc:	akpm@...ux-foundation.org, gregkh@...e.de, mingo@...hat.com,
	hpa@...or.com, tglx@...utronix.de, lethal@...ux-sh.org,
	ak@...ux.intel.com, yinghai@...nel.org, randy.dunlap@...cle.com,
	linux-kernel@...r.kernel.org, linux-mm@...ck.org, x86@...nel.org,
	haicheng.li@...el.com, haicheng.li@...ux.intel.com,
	shaohui.zheng@...ux.intel.com
Subject: Re: [patch 2/2] mm: add node hotplug emulation

On Mon, 22 Nov 2010, Shaohui Zheng wrote:

> > and then creating a new 128M node at runtime:
> > 
> > 	# echo 128M@...0000000 > /sys/devices/system/memory/add_node
> > 	On node 1 totalpages: 0
> > 	init_memory_mapping: 0000000080000000-0000000088000000
> > 	 0080000000 - 0088000000 page 2M
> 
> For cpu/memory physical hotplug, we have the unique interface probe/release,
> it is the _standard_ interface, it is not only for x86, ppc use the the interface
> as well. For node hotplug, it should follow the rule.
> 
> You are creating a new interface /sys/devices/system/memory/add_node to add both
> memory and node, you are just trying to create DUPLICATED feature with the
> memory probe interface, it breaks the rule. 
> 

It's not duplicated, the function of add_node is distinct since it maps 
the added memory to a node that wasn't previously defined (for the x86 
case, defined by the SRAT).  I think this is better than an additional 
abstraction layer that remaps memory to nodes above what the BIOS has 
defined, and there's nothing architecture specific about add_node; if an 
arch can do probe then it can use this new interface.

> I did NOT see the feature difference with our emulator patch http://lkml.org/lkml/2010/11/16/740,
> you pick up a piece of feature from emulator, and create an other thread. You
> are trying to replace the interface with a new one, which is not recommended.
> the memory probe interface is already powerful and flexible enough after apply
> our patch. What's more important, it keeps the old directives, and it maintains
> backwards compatibility.
> 

This achieves the same goal in a much cleaner and generic way.  It doesn't 
replace anything that currently sits in the kernel, instead it competes 
directly with your model for node hotplug emulation.

> Add a memory section(128M) to node 3(boots with mem=1024m)
> 
> 	echo 0x40000000,3 > memory/probe
> 
> And more we make it friendly, it is possible to add memory to do
> 
> 	echo 3g > memory/probe
> 	echo 1024m,3 > memory/probe
> 
> It maintains backwards compatibility.
> 

My patch doesn't break backwards compatibility, it adds a new debugfs file 
that allows you to test node hotplug.

> Another format suggested by Dave Hansen:
> 
> 	echo physical_address=0x40000000 numa_node=3 > memory/probe
> 
> we should not need duplicated interface /sys/devices/system/memory/add_node here.
> 

We don't need to define a node id, we only need to ensure that a possible 
node is not yet online and use it; we don't gain anything by trying to 
hotplug node ids in a sparse or interleaved way (although it is certainly 
possible with a combination of my patch and CONFIG_MEMORY_HOTREMOVE).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ