s390: convert remaining bootmem allocations to memblock
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 18 Oct 2016 11:35:32 +0000 (13:35 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 29 Nov 2016 06:52:55 +0000 (07:52 +0100)
Get rid of all remaining alloc_bootmem calls and use memblock_alloc
instead everywhere.  This way we get rid of the inconsistent mixture
of alloc_bootmem and memblock_alloc usages.

Two of the alloc_bootmem_low calls within arch/s390/kernel/setup.c are
replaced with memblock_alloc calls that don't enforce that the
allocated memory is below 2GB. This restriction was never necessary.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/setup.c
arch/s390/mm/vmem.c

index 17160fb437777a652dde011c59d800d40889c67b..304787512c7a606e0ca6eeb2872dbc891322b6fd 100644 (file)
@@ -304,7 +304,9 @@ static void __init setup_lowcore(void)
         * Setup lowcore for boot cpu
         */
        BUILD_BUG_ON(sizeof(struct lowcore) != LC_PAGES * 4096);
-       lc = __alloc_bootmem_low(LC_PAGES * PAGE_SIZE, LC_PAGES * PAGE_SIZE, 0);
+       lc = (struct lowcore *) memblock_alloc_base(sizeof(struct lowcore),
+                                                   sizeof(struct lowcore),
+                                                   MAX_DMA_ADDRESS);
        lc->restart_psw.mask = PSW_KERNEL_BITS;
        lc->restart_psw.addr = (unsigned long) restart_int_handler;
        lc->external_new_psw.mask = PSW_KERNEL_BITS |
@@ -324,11 +326,9 @@ static void __init setup_lowcore(void)
        lc->clock_comparator = -1ULL;
        lc->kernel_stack = ((unsigned long) &init_thread_union)
                + THREAD_SIZE - STACK_FRAME_OVERHEAD - sizeof(struct pt_regs);
-       lc->async_stack = (unsigned long)
-               __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0)
+       lc->async_stack = memblock_alloc(ASYNC_SIZE, ASYNC_SIZE)
                + ASYNC_SIZE - STACK_FRAME_OVERHEAD - sizeof(struct pt_regs);
-       lc->panic_stack = (unsigned long)
-               __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, 0)
+       lc->panic_stack = memblock_alloc(PAGE_SIZE, PAGE_SIZE)
                + PAGE_SIZE - STACK_FRAME_OVERHEAD - sizeof(struct pt_regs);
        lc->current_task = (unsigned long)&init_task;
        lc->lpp = LPP_MAGIC;
@@ -350,7 +350,7 @@ static void __init setup_lowcore(void)
        lc->last_update_timer = S390_lowcore.last_update_timer;
        lc->last_update_clock = S390_lowcore.last_update_clock;
 
-       restart_stack = __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0);
+       restart_stack = (void *) memblock_alloc(ASYNC_SIZE, ASYNC_SIZE);
        restart_stack += ASYNC_SIZE;
 
        /*
@@ -413,7 +413,7 @@ static void __init setup_resources(void)
        bss_resource.end = (unsigned long) &__bss_stop - 1;
 
        for_each_memblock(memory, reg) {
-               res = alloc_bootmem_low(sizeof(*res));
+               res = (void *) memblock_alloc(sizeof(*res), 8);
                res->flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM;
 
                res->name = "System RAM";
@@ -427,7 +427,7 @@ static void __init setup_resources(void)
                            std_res->start > res->end)
                                continue;
                        if (std_res->end > res->end) {
-                               sub_res = alloc_bootmem_low(sizeof(*sub_res));
+                               sub_res = (void *) memblock_alloc(sizeof(*sub_res), 8);
                                *sub_res = *std_res;
                                sub_res->end = res->end;
                                std_res->start = res->end + 1;
index 1848292766ef136868419e40aa2ca256249c9530..45becc8a44ec660c8799ef13868db8b8036f1c9f 100644 (file)
@@ -34,7 +34,7 @@ static void __ref *vmem_alloc_pages(unsigned int order)
 
        if (slab_is_available())
                return (void *)__get_free_pages(GFP_KERNEL, order);
-       return alloc_bootmem_align(size, size);
+       return (void *) memblock_alloc(size, size);
 }
 
 static inline pud_t *vmem_pud_alloc(void)
@@ -61,17 +61,16 @@ pmd_t *vmem_pmd_alloc(void)
 
 pte_t __ref *vmem_pte_alloc(void)
 {
+       unsigned long size = PTRS_PER_PTE * sizeof(pte_t);
        pte_t *pte;
 
        if (slab_is_available())
                pte = (pte_t *) page_table_alloc(&init_mm);
        else
-               pte = alloc_bootmem_align(PTRS_PER_PTE * sizeof(pte_t),
-                                         PTRS_PER_PTE * sizeof(pte_t));
+               pte = (pte_t *) memblock_alloc(size, size);
        if (!pte)
                return NULL;
-       clear_table((unsigned long *) pte, _PAGE_INVALID,
-                   PTRS_PER_PTE * sizeof(pte_t));
+       clear_table((unsigned long *) pte, _PAGE_INVALID, size);
        return pte;
 }