On 02/26/2014 11:22 AM, Peter Zijlstra wrote:
On Wed, Feb 26, 2014 at 10:14:21AM -0500, Waiman Long wrote:+struct qnode { + u32 wait; /* Waiting flag */ + struct qnode *next; /* Next queue node addr */ +}; + +struct qnode_set { + struct qnode nodes[MAX_QNODES]; + int node_idx; /* Current node to use */ +}; + +/* + * Per-CPU queue node structures + */ +static DEFINE_PER_CPU_ALIGNED(struct qnode_set, qnset) = { {{0}}, 0 };So I've not yet wrapped my head around any of this; and I see a later patch adds some paravirt gunk to this, but it does blow you can't keep it a single cacheline for the sane case.
There is a 4-byte hole in the qnode structure for x86-64. I did try to make the additional PV fields used only 4 bytes so that there is no increase in size in the qnode structure unless we need to support 16K CPUs or more.
-Longman _______________________________________________ Virtualization mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/virtualization
