You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
mm: NUMA aware alloc_thread_info_node()
Add a node parameter to alloc_thread_info(), and change its name to alloc_thread_info_node() This change is needed to allow NUMA aware kthread_create_on_cpu() Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Reviewed-by: Andi Kleen <ak@linux.intel.com> Acked-by: Rusty Russell <rusty@rustcorp.com.au> Cc: Tejun Heo <tj@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: David Howells <dhowells@redhat.com> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
504f52b543
commit
b6a84016bd
@@ -82,8 +82,8 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
||||
|
||||
#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
|
||||
|
||||
BTFIXUPDEF_CALL(struct thread_info *, alloc_thread_info, void)
|
||||
#define alloc_thread_info(tsk) BTFIXUP_CALL(alloc_thread_info)()
|
||||
BTFIXUPDEF_CALL(struct thread_info *, alloc_thread_info_node, int)
|
||||
#define alloc_thread_info_node(tsk, node) BTFIXUP_CALL(alloc_thread_info_node)(node)
|
||||
|
||||
BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
|
||||
#define free_thread_info(ti) BTFIXUP_CALL(free_thread_info)(ti)
|
||||
@@ -92,7 +92,7 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
|
||||
|
||||
/*
|
||||
* Size of kernel stack for each process.
|
||||
* Observe the order of get_free_pages() in alloc_thread_info().
|
||||
* Observe the order of get_free_pages() in alloc_thread_info_node().
|
||||
* The sun4 has 8K stack too, because it's short on memory, and 16K is a waste.
|
||||
*/
|
||||
#define THREAD_SIZE 8192
|
||||
|
||||
@@ -146,21 +146,21 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
||||
#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
|
||||
|
||||
#ifdef CONFIG_DEBUG_STACK_USAGE
|
||||
#define alloc_thread_info(tsk) \
|
||||
({ \
|
||||
struct thread_info *ret; \
|
||||
\
|
||||
ret = (struct thread_info *) \
|
||||
__get_free_pages(GFP_KERNEL, __THREAD_INFO_ORDER); \
|
||||
if (ret) \
|
||||
memset(ret, 0, PAGE_SIZE<<__THREAD_INFO_ORDER); \
|
||||
ret; \
|
||||
})
|
||||
#define THREAD_FLAGS (GFP_KERNEL | __GFP_ZERO)
|
||||
#else
|
||||
#define alloc_thread_info(tsk) \
|
||||
((struct thread_info *)__get_free_pages(GFP_KERNEL, __THREAD_INFO_ORDER))
|
||||
#define THREAD_FLAGS (GFP_KERNEL)
|
||||
#endif
|
||||
|
||||
#define alloc_thread_info_node(tsk, node) \
|
||||
({ \
|
||||
struct page *page = alloc_pages_node(node, THREAD_FLAGS, \
|
||||
__THREAD_INFO_ORDER); \
|
||||
struct thread_info *ret; \
|
||||
\
|
||||
ret = page ? page_address(page) : NULL; \
|
||||
ret; \
|
||||
})
|
||||
|
||||
#define free_thread_info(ti) \
|
||||
free_pages((unsigned long)(ti),__THREAD_INFO_ORDER)
|
||||
|
||||
|
||||
@@ -650,7 +650,7 @@ static void srmmu_unmapiorange(unsigned long virt_addr, unsigned int len)
|
||||
* mappings on the kernel stack without any special code as we did
|
||||
* need on the sun4c.
|
||||
*/
|
||||
static struct thread_info *srmmu_alloc_thread_info(void)
|
||||
static struct thread_info *srmmu_alloc_thread_info_node(int node)
|
||||
{
|
||||
struct thread_info *ret;
|
||||
|
||||
@@ -2271,7 +2271,7 @@ void __init ld_mmu_srmmu(void)
|
||||
|
||||
BTFIXUPSET_CALL(mmu_info, srmmu_mmu_info, BTFIXUPCALL_NORM);
|
||||
|
||||
BTFIXUPSET_CALL(alloc_thread_info, srmmu_alloc_thread_info, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(alloc_thread_info_node, srmmu_alloc_thread_info_node, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(free_thread_info, srmmu_free_thread_info, BTFIXUPCALL_NORM);
|
||||
|
||||
BTFIXUPSET_CALL(pte_to_pgoff, srmmu_pte_to_pgoff, BTFIXUPCALL_NORM);
|
||||
|
||||
@@ -922,7 +922,7 @@ static inline void garbage_collect(int entry)
|
||||
free_locked_segment(BUCKET_ADDR(entry));
|
||||
}
|
||||
|
||||
static struct thread_info *sun4c_alloc_thread_info(void)
|
||||
static struct thread_info *sun4c_alloc_thread_info_node(int node)
|
||||
{
|
||||
unsigned long addr, pages;
|
||||
int entry;
|
||||
@@ -2155,7 +2155,7 @@ void __init ld_mmu_sun4c(void)
|
||||
BTFIXUPSET_CALL(__swp_offset, sun4c_swp_offset, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(__swp_entry, sun4c_swp_entry, BTFIXUPCALL_NORM);
|
||||
|
||||
BTFIXUPSET_CALL(alloc_thread_info, sun4c_alloc_thread_info, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(alloc_thread_info_node, sun4c_alloc_thread_info_node, BTFIXUPCALL_NORM);
|
||||
BTFIXUPSET_CALL(free_thread_info, sun4c_free_thread_info, BTFIXUPCALL_NORM);
|
||||
|
||||
BTFIXUPSET_CALL(mmu_info, sun4c_mmu_info, BTFIXUPCALL_NORM);
|
||||
|
||||
Reference in New Issue
Block a user