[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] mm: initialize lowmem virq when boot-time scrubbing is disabled
commit eb065bb23aa9891da65d335bb318a0336431a87a Author: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> AuthorDate: Fri Sep 1 11:04:47 2017 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Sep 1 11:04:47 2017 +0200 mm: initialize lowmem virq when boot-time scrubbing is disabled scrub_heap_pages() does early return if boot-time scrubbing is disabled, neglecting to initialize lowmem VIRQ. Because setup_low_mem_virq() doesn't logically belong in scrub_heap_pages() we put them both into the newly added heap_init_late(). Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/arm/setup.c | 3 +-- xen/arch/x86/setup.c | 3 +-- xen/common/page_alloc.c | 18 +++++++++++------- xen/include/xen/mm.h | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 3b34855..92f173b 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -861,8 +861,7 @@ void __init start_xen(unsigned long boot_phys_offset, if ( construct_dom0(dom0) != 0) panic("Could not set up DOM0 guest OS"); - /* Scrub RAM that is still free and so may go to an unprivileged domain. */ - scrub_heap_pages(); + heap_init_late(); init_constructors(); diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index ec96287..bc466e8 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1662,8 +1662,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) cr4_pv32_mask |= X86_CR4_SMAP; } - /* Scrub RAM that is still free and so may go to an unprivileged domain. */ - scrub_heap_pages(); + heap_init_late(); init_trace_bufs(); diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 9fa62d2..43f5a38 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1839,7 +1839,7 @@ static int __init find_non_smt(unsigned int node, cpumask_t *dest) * Scrub all unallocated pages in all heap zones. This function uses all * online cpu's to scrub the memory in parallel. */ -void __init scrub_heap_pages(void) +static void __init scrub_heap_pages(void) { cpumask_t node_cpus, all_worker_cpus; unsigned int i, j; @@ -1849,9 +1849,6 @@ void __init scrub_heap_pages(void) int last_distance, best_node; int cpus; - if ( !opt_bootscrub ) - return; - cpumask_clear(&all_worker_cpus); /* Scrub block size. */ chunk_size = opt_bootscrub_chunk >> PAGE_SHIFT; @@ -1970,12 +1967,19 @@ void __init scrub_heap_pages(void) #ifdef CONFIG_SCRUB_DEBUG boot_scrub_done = true; #endif +} - /* Now that the heap is initialized, run checks and set bounds - * for the low mem virq algorithm. */ +void __init heap_init_late(void) +{ + /* + * Now that the heap is initialized set bounds + * for the low mem virq algorithm. + */ setup_low_mem_virq(); -} + if ( opt_bootscrub ) + scrub_heap_pages(); +} /************************* diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h index ddc3fb3..c2f5a08 100644 --- a/xen/include/xen/mm.h +++ b/xen/include/xen/mm.h @@ -199,7 +199,7 @@ int offline_page(unsigned long mfn, int broken, uint32_t *status); int query_page_offline(unsigned long mfn, uint32_t *status); unsigned long total_free_pages(void); -void scrub_heap_pages(void); +void heap_init_late(void); int assign_pages( struct domain *d, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |