|
@@ -581,11 +581,11 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
|
|
|
* sets it, so none of the operations on it need to be atomic.
|
|
|
*/
|
|
|
|
|
|
-/* Page flags: | [SECTION] | [NODE] | ZONE | [LAST_NIDPID] | ... | FLAGS | */
|
|
|
+/* Page flags: | [SECTION] | [NODE] | ZONE | [LAST_CPUPID] | ... | FLAGS | */
|
|
|
#define SECTIONS_PGOFF ((sizeof(unsigned long)*8) - SECTIONS_WIDTH)
|
|
|
#define NODES_PGOFF (SECTIONS_PGOFF - NODES_WIDTH)
|
|
|
#define ZONES_PGOFF (NODES_PGOFF - ZONES_WIDTH)
|
|
|
-#define LAST_NIDPID_PGOFF (ZONES_PGOFF - LAST_NIDPID_WIDTH)
|
|
|
+#define LAST_CPUPID_PGOFF (ZONES_PGOFF - LAST_CPUPID_WIDTH)
|
|
|
|
|
|
/*
|
|
|
* Define the bit shifts to access each section. For non-existent
|
|
@@ -595,7 +595,7 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
|
|
|
#define SECTIONS_PGSHIFT (SECTIONS_PGOFF * (SECTIONS_WIDTH != 0))
|
|
|
#define NODES_PGSHIFT (NODES_PGOFF * (NODES_WIDTH != 0))
|
|
|
#define ZONES_PGSHIFT (ZONES_PGOFF * (ZONES_WIDTH != 0))
|
|
|
-#define LAST_NIDPID_PGSHIFT (LAST_NIDPID_PGOFF * (LAST_NIDPID_WIDTH != 0))
|
|
|
+#define LAST_CPUPID_PGSHIFT (LAST_CPUPID_PGOFF * (LAST_CPUPID_WIDTH != 0))
|
|
|
|
|
|
/* NODE:ZONE or SECTION:ZONE is used to ID a zone for the buddy allocator */
|
|
|
#ifdef NODE_NOT_IN_PAGE_FLAGS
|
|
@@ -617,7 +617,7 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
|
|
|
#define ZONES_MASK ((1UL << ZONES_WIDTH) - 1)
|
|
|
#define NODES_MASK ((1UL << NODES_WIDTH) - 1)
|
|
|
#define SECTIONS_MASK ((1UL << SECTIONS_WIDTH) - 1)
|
|
|
-#define LAST_NIDPID_MASK ((1UL << LAST_NIDPID_WIDTH) - 1)
|
|
|
+#define LAST_CPUPID_MASK ((1UL << LAST_CPUPID_WIDTH) - 1)
|
|
|
#define ZONEID_MASK ((1UL << ZONEID_SHIFT) - 1)
|
|
|
|
|
|
static inline enum zone_type page_zonenum(const struct page *page)
|
|
@@ -661,96 +661,106 @@ static inline int page_to_nid(const struct page *page)
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_NUMA_BALANCING
|
|
|
-static inline int nid_pid_to_nidpid(int nid, int pid)
|
|
|
+static inline int cpu_pid_to_cpupid(int cpu, int pid)
|
|
|
{
|
|
|
- return ((nid & LAST__NID_MASK) << LAST__PID_SHIFT) | (pid & LAST__PID_MASK);
|
|
|
+ return ((cpu & LAST__CPU_MASK) << LAST__PID_SHIFT) | (pid & LAST__PID_MASK);
|
|
|
}
|
|
|
|
|
|
-static inline int nidpid_to_pid(int nidpid)
|
|
|
+static inline int cpupid_to_pid(int cpupid)
|
|
|
{
|
|
|
- return nidpid & LAST__PID_MASK;
|
|
|
+ return cpupid & LAST__PID_MASK;
|
|
|
}
|
|
|
|
|
|
-static inline int nidpid_to_nid(int nidpid)
|
|
|
+static inline int cpupid_to_cpu(int cpupid)
|
|
|
{
|
|
|
- return (nidpid >> LAST__PID_SHIFT) & LAST__NID_MASK;
|
|
|
+ return (cpupid >> LAST__PID_SHIFT) & LAST__CPU_MASK;
|
|
|
}
|
|
|
|
|
|
-static inline bool nidpid_pid_unset(int nidpid)
|
|
|
+static inline int cpupid_to_nid(int cpupid)
|
|
|
{
|
|
|
- return nidpid_to_pid(nidpid) == (-1 & LAST__PID_MASK);
|
|
|
+ return cpu_to_node(cpupid_to_cpu(cpupid));
|
|
|
}
|
|
|
|
|
|
-static inline bool nidpid_nid_unset(int nidpid)
|
|
|
+static inline bool cpupid_pid_unset(int cpupid)
|
|
|
{
|
|
|
- return nidpid_to_nid(nidpid) == (-1 & LAST__NID_MASK);
|
|
|
+ return cpupid_to_pid(cpupid) == (-1 & LAST__PID_MASK);
|
|
|
}
|
|
|
|
|
|
-#ifdef LAST_NIDPID_NOT_IN_PAGE_FLAGS
|
|
|
-static inline int page_nidpid_xchg_last(struct page *page, int nid)
|
|
|
+static inline bool cpupid_cpu_unset(int cpupid)
|
|
|
{
|
|
|
- return xchg(&page->_last_nidpid, nid);
|
|
|
+ return cpupid_to_cpu(cpupid) == (-1 & LAST__CPU_MASK);
|
|
|
}
|
|
|
|
|
|
-static inline int page_nidpid_last(struct page *page)
|
|
|
+#ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
|
|
|
+static inline int page_cpupid_xchg_last(struct page *page, int cpupid)
|
|
|
{
|
|
|
- return page->_last_nidpid;
|
|
|
+ return xchg(&page->_last_cpupid, cpupid);
|
|
|
}
|
|
|
-static inline void page_nidpid_reset_last(struct page *page)
|
|
|
+
|
|
|
+static inline int page_cpupid_last(struct page *page)
|
|
|
+{
|
|
|
+ return page->_last_cpupid;
|
|
|
+}
|
|
|
+static inline void page_cpupid_reset_last(struct page *page)
|
|
|
{
|
|
|
- page->_last_nidpid = -1;
|
|
|
+ page->_last_cpupid = -1;
|
|
|
}
|
|
|
#else
|
|
|
-static inline int page_nidpid_last(struct page *page)
|
|
|
+static inline int page_cpupid_last(struct page *page)
|
|
|
{
|
|
|
- return (page->flags >> LAST_NIDPID_PGSHIFT) & LAST_NIDPID_MASK;
|
|
|
+ return (page->flags >> LAST_CPUPID_PGSHIFT) & LAST_CPUPID_MASK;
|
|
|
}
|
|
|
|
|
|
-extern int page_nidpid_xchg_last(struct page *page, int nidpid);
|
|
|
+extern int page_cpupid_xchg_last(struct page *page, int cpupid);
|
|
|
|
|
|
-static inline void page_nidpid_reset_last(struct page *page)
|
|
|
+static inline void page_cpupid_reset_last(struct page *page)
|
|
|
{
|
|
|
- int nidpid = (1 << LAST_NIDPID_SHIFT) - 1;
|
|
|
+ int cpupid = (1 << LAST_CPUPID_SHIFT) - 1;
|
|
|
|
|
|
- page->flags &= ~(LAST_NIDPID_MASK << LAST_NIDPID_PGSHIFT);
|
|
|
- page->flags |= (nidpid & LAST_NIDPID_MASK) << LAST_NIDPID_PGSHIFT;
|
|
|
+ page->flags &= ~(LAST_CPUPID_MASK << LAST_CPUPID_PGSHIFT);
|
|
|
+ page->flags |= (cpupid & LAST_CPUPID_MASK) << LAST_CPUPID_PGSHIFT;
|
|
|
}
|
|
|
-#endif /* LAST_NIDPID_NOT_IN_PAGE_FLAGS */
|
|
|
-#else
|
|
|
-static inline int page_nidpid_xchg_last(struct page *page, int nidpid)
|
|
|
+#endif /* LAST_CPUPID_NOT_IN_PAGE_FLAGS */
|
|
|
+#else /* !CONFIG_NUMA_BALANCING */
|
|
|
+static inline int page_cpupid_xchg_last(struct page *page, int cpupid)
|
|
|
{
|
|
|
- return page_to_nid(page);
|
|
|
+ return page_to_nid(page); /* XXX */
|
|
|
}
|
|
|
|
|
|
-static inline int page_nidpid_last(struct page *page)
|
|
|
+static inline int page_cpupid_last(struct page *page)
|
|
|
{
|
|
|
- return page_to_nid(page);
|
|
|
+ return page_to_nid(page); /* XXX */
|
|
|
}
|
|
|
|
|
|
-static inline int nidpid_to_nid(int nidpid)
|
|
|
+static inline int cpupid_to_nid(int cpupid)
|
|
|
{
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
-static inline int nidpid_to_pid(int nidpid)
|
|
|
+static inline int cpupid_to_pid(int cpupid)
|
|
|
{
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
-static inline int nid_pid_to_nidpid(int nid, int pid)
|
|
|
+static inline int cpupid_to_cpu(int cpupid)
|
|
|
{
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
-static inline bool nidpid_pid_unset(int nidpid)
|
|
|
+static inline int cpu_pid_to_cpupid(int nid, int pid)
|
|
|
+{
|
|
|
+ return -1;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool cpupid_pid_unset(int cpupid)
|
|
|
{
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
-static inline void page_nidpid_reset_last(struct page *page)
|
|
|
+static inline void page_cpupid_reset_last(struct page *page)
|
|
|
{
|
|
|
}
|
|
|
-#endif
|
|
|
+#endif /* CONFIG_NUMA_BALANCING */
|
|
|
|
|
|
static inline struct zone *page_zone(const struct page *page)
|
|
|
{
|