[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/smp: Clean up use of memflags in cpu_smpboot_alloc()
commit 610cdad6486abd1c0d9a514d6761bb39f5e3b579 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Apr 7 18:26:17 2015 +0100 Commit: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> CommitDate: Fri Apr 10 11:36:10 2015 -0400 x86/smp: Clean up use of memflags in cpu_smpboot_alloc() Hoist MEMF_node(cpu_to_node(cpu)) to the start of the function, and avoid passing (potentially bogus) memflags if node information is not available. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Keir Fraser <keir@xxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> Reviewed-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Reviewed-by: Tim Deegan <tim@xxxxxxx> --- xen/arch/x86/smpboot.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index d3fe116..a009e91 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -635,32 +635,34 @@ static void cpu_smpboot_free(unsigned int cpu) static int cpu_smpboot_alloc(unsigned int cpu) { - unsigned int order; + unsigned int order, memflags = 0; + nodeid_t node = cpu_to_node(cpu); struct desc_struct *gdt; + if ( node != NUMA_NO_NODE ) + memflags = MEMF_node(node); + stack_base[cpu] = alloc_xenheap_pages(STACK_ORDER, 0); if ( stack_base[cpu] == NULL ) goto oom; memguard_guard_stack(stack_base[cpu]); order = get_order_from_pages(NR_RESERVED_GDT_PAGES); - per_cpu(gdt_table, cpu) = gdt = - alloc_xenheap_pages(order, MEMF_node(cpu_to_node(cpu))); + per_cpu(gdt_table, cpu) = gdt = alloc_xenheap_pages(order, memflags); if ( gdt == NULL ) goto oom; memcpy(gdt, boot_cpu_gdt_table, NR_RESERVED_GDT_PAGES * PAGE_SIZE); BUILD_BUG_ON(NR_CPUS > 0x10000); gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu; - per_cpu(compat_gdt_table, cpu) = gdt = - alloc_xenheap_pages(order, MEMF_node(cpu_to_node(cpu))); + per_cpu(compat_gdt_table, cpu) = gdt = alloc_xenheap_pages(order, memflags); if ( gdt == NULL ) goto oom; memcpy(gdt, boot_cpu_compat_gdt_table, NR_RESERVED_GDT_PAGES * PAGE_SIZE); gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu; order = get_order_from_bytes(IDT_ENTRIES * sizeof(idt_entry_t)); - idt_tables[cpu] = alloc_xenheap_pages(order, MEMF_node(cpu_to_node(cpu))); + idt_tables[cpu] = alloc_xenheap_pages(order, memflags); if ( idt_tables[cpu] == NULL ) goto oom; memcpy(idt_tables[cpu], idt_table, IDT_ENTRIES * sizeof(idt_entry_t)); -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |