mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
mm: MEMF_node should handle changes in nodeid_t size
Instead of using a hardcoded constant to extract nodeID from memflags use a macro whose value is based on nodeid_t size. Also provide a macro for extracting nodeID from memflags so that users don't need to remember to decrement the value. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> MASK_EXTR() can't be used in MEMF2NODE() (also renamed to MEMF_get_node()). Signed-off-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
54ce2db8b8
commit
befe0a0da9
2 files changed
+7
-2
No files matched your search
@@ -581,13 +581,16 @@ static struct page_info *alloc_heap_pages(
|
||||
struct domain *d)
|
||||
{
|
||||
unsigned int i, j, zone = 0, nodemask_retry = 0;
|
||||
nodeid_t first_node, node = (nodeid_t)((memflags >> _MEMF_node) - 1);
|
||||
nodeid_t first_node, node = MEMF_get_node(memflags);
|
||||
unsigned long request = 1UL << order;
|
||||
struct page_info *pg;
|
||||
nodemask_t nodemask = (d != NULL ) ? d->node_affinity : node_online_map;
|
||||
bool_t need_tlbflush = 0;
|
||||
uint32_t tlbflush_timestamp = 0;
|
||||
|
||||
/* Make sure there are enough bits in memflags for nodeID. */
|
||||
BUILD_BUG_ON((_MEMF_bits - _MEMF_node) < (8 * sizeof(nodeid_t)));
|
||||
|
||||
if ( node == NUMA_NO_NODE )
|
||||
{
|
||||
memflags &= ~MEMF_exact_node;
|
||||
|
||||
@@ -121,7 +121,9 @@ struct npfec {
|
||||
#define _MEMF_exact_node 4
|
||||
#define MEMF_exact_node (1U<<_MEMF_exact_node)
|
||||
#define _MEMF_node 8
|
||||
#define MEMF_node(n) ((((n)+1)&0xff)<<_MEMF_node)
|
||||
#define MEMF_node_mask ((1U << (8 * sizeof(nodeid_t))) - 1)
|
||||
#define MEMF_node(n) ((((n) + 1) & MEMF_node_mask) << _MEMF_node)
|
||||
#define MEMF_get_node(f) ((((f) >> _MEMF_node) - 1) & MEMF_node_mask)
|
||||
#define _MEMF_bits 24
|
||||
#define MEMF_bits(n) ((n)<<_MEMF_bits)
|
||||
|
||||
|
||||