Sorry for the late response as I'm in a biz trip recently.
David, your original concern is just about powerful/flexibility. I'm sure our implementation can better meets such requirments.
IMHO, I don't see any powerful/flexibility from your patch, compared to our original implementation. you just make things more complex and mess.
Why not use "numa=hide=N*size" as originally implemented?
- later you just need to online the node once you want. And it naturally/exactly emulates the behavior that current HW provides.
- N is the possible node number. And we can use 128M as the default size for each hidden node if user doesn't specify a size.
- If user wants more mem for hidden node, he just needs specify the "size".
- besides, user can also use "mem=" to hide more mem and later use mem-add i/f to freely attach more mem to the hidden node during runtime.
Your patch introduces additional dependency on "mem=", but ours is simple and flexibly compatible with "mem=" and "numa=emu".
-haicheng--