From: "Steven J. Hill" <Steven.Hill@xxxxxxxxxx> Get rid of obsolete KEXEC and CRASH_DUMP code. This is to prepare for adding in the new hotplug CPU code. Signed-off-by: Steven J. Hill <steven.hill@xxxxxxxxxx> Acked-by: David Daney <david.daney@xxxxxxxxxx> --- arch/mips/cavium-octeon/setup.c | 168 ++-------------------------------------- 1 file changed, 7 insertions(+), 161 deletions(-) diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index 2085138..46e2bb0 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c @@ -100,56 +100,6 @@ static void octeon_kexec_smp_down(void *ignored) } #endif -#define OCTEON_DDR0_BASE (0x0ULL) -#define OCTEON_DDR0_SIZE (0x010000000ULL) -#define OCTEON_DDR1_BASE (0x410000000ULL) -#define OCTEON_DDR1_SIZE (0x010000000ULL) -#define OCTEON_DDR2_BASE (0x020000000ULL) -#define OCTEON_DDR2_SIZE (0x3e0000000ULL) -#define OCTEON_MAX_PHY_MEM_SIZE (16*1024*1024*1024ULL) - -static struct kimage *kimage_ptr; - -static void kexec_bootmem_init(uint64_t mem_size, uint32_t low_reserved_bytes) -{ - int64_t addr; - struct cvmx_bootmem_desc *bootmem_desc; - - bootmem_desc = cvmx_bootmem_get_desc(); - - if (mem_size > OCTEON_MAX_PHY_MEM_SIZE) { - mem_size = OCTEON_MAX_PHY_MEM_SIZE; - pr_err("Error: requested memory too large," - "truncating to maximum size\n"); - } - - bootmem_desc->major_version = CVMX_BOOTMEM_DESC_MAJ_VER; - bootmem_desc->minor_version = CVMX_BOOTMEM_DESC_MIN_VER; - - addr = (OCTEON_DDR0_BASE + reserve_low_mem + low_reserved_bytes); - bootmem_desc->head_addr = 0; - - if (mem_size <= OCTEON_DDR0_SIZE) { - __cvmx_bootmem_phy_free(addr, - mem_size - reserve_low_mem - - low_reserved_bytes, 0); - return; - } - - __cvmx_bootmem_phy_free(addr, - OCTEON_DDR0_SIZE - reserve_low_mem - - low_reserved_bytes, 0); - - mem_size -= OCTEON_DDR0_SIZE; - - if (mem_size > OCTEON_DDR1_SIZE) { - __cvmx_bootmem_phy_free(OCTEON_DDR1_BASE, OCTEON_DDR1_SIZE, 0); - __cvmx_bootmem_phy_free(OCTEON_DDR2_BASE, - mem_size - OCTEON_DDR1_SIZE, 0); - } else - __cvmx_bootmem_phy_free(OCTEON_DDR1_BASE, mem_size, 0); -} - static int octeon_kexec_prepare(struct kimage *image) { int i; @@ -181,72 +131,23 @@ static int octeon_kexec_prepare(struct kimage *image) break; } } - - /* - * Information about segments will be needed during pre-boot memory - * initialization. - */ - kimage_ptr = image; return 0; } static void octeon_generic_shutdown(void) { - int i; #ifdef CONFIG_SMP int cpu; -#endif - struct cvmx_bootmem_desc *bootmem_desc; - void *named_block_array_ptr; - bootmem_desc = cvmx_bootmem_get_desc(); - named_block_array_ptr = - cvmx_phys_to_ptr(bootmem_desc->named_block_array_addr); - -#ifdef CONFIG_SMP + secondary_kexec_args[2] = 0UL; /* running on secondary cpu */ + secondary_kexec_args[3] = (unsigned long)octeon_boot_desc_ptr; /* disable watchdogs */ for_each_online_cpu(cpu) cvmx_write_csr(CVMX_CIU_WDOGX(cpu_logical_map(cpu)), 0); #else cvmx_write_csr(CVMX_CIU_WDOGX(cvmx_get_core_num()), 0); -#endif - if (kimage_ptr != kexec_crash_image) { - memset(named_block_array_ptr, - 0x0, - CVMX_BOOTMEM_NUM_NAMED_BLOCKS * - sizeof(struct cvmx_bootmem_named_block_desc)); - /* - * Mark all memory (except low 0x100000 bytes) as free. - * It is the same thing that bootloader does. - */ - kexec_bootmem_init(octeon_bootinfo->dram_size*1024ULL*1024ULL, - 0x100000); - /* - * Allocate all segments to avoid their corruption during boot. - */ - for (i = 0; i < kimage_ptr->nr_segments; i++) - cvmx_bootmem_alloc_address( - kimage_ptr->segment[i].memsz + 2*PAGE_SIZE, - kimage_ptr->segment[i].mem - PAGE_SIZE, - PAGE_SIZE); - } else { - /* - * Do not mark all memory as free. Free only named sections - * leaving the rest of memory unchanged. - */ - struct cvmx_bootmem_named_block_desc *ptr = - (struct cvmx_bootmem_named_block_desc *) - named_block_array_ptr; - - for (i = 0; i < bootmem_desc->named_block_num_blocks; i++) - if (ptr[i].size) - cvmx_bootmem_free_named(ptr[i].name); - } kexec_args[2] = 1UL; /* running on octeon_main_processor */ kexec_args[3] = (unsigned long)octeon_boot_desc_ptr; -#ifdef CONFIG_SMP - secondary_kexec_args[2] = 0UL; /* running on secondary cpu */ - secondary_kexec_args[3] = (unsigned long)octeon_boot_desc_ptr; #endif } @@ -928,7 +829,6 @@ void __init prom_init(void) } /* Exclude a single page from the regions obtained in plat_mem_setup. */ -#ifndef CONFIG_CRASH_DUMP static __init void memory_exclude_page(u64 addr, u64 *mem, u64 *size) { if (addr > *mem && addr < *mem + *size) { @@ -944,7 +844,6 @@ static __init void memory_exclude_page(u64 addr, u64 *mem, u64 *size) *size -= PAGE_SIZE; } } -#endif /* CONFIG_CRASH_DUMP */ void __init fw_init_cmdline(void) { @@ -975,11 +874,7 @@ void __init plat_mem_setup(void) uint64_t mem_alloc_size; uint64_t total; uint64_t crashk_end; -#ifndef CONFIG_CRASH_DUMP int64_t memory; - uint64_t kernel_start; - uint64_t kernel_size; -#endif total = 0; crashk_end = 0; @@ -1020,9 +915,6 @@ void __init plat_mem_setup(void) CVMX_BOOTMEM_FLAG_NO_LOCKING); if (memory >= 0) { u64 size = mem_alloc_size; -#ifdef CONFIG_KEXEC - uint64_t end; -#endif /* * exclude a page at the beginning and end of @@ -1035,66 +927,20 @@ void __init plat_mem_setup(void) memory_exclude_page(CVMX_PCIE_BAR1_PHYS_BASE + CVMX_PCIE_BAR1_PHYS_SIZE, &memory, &size); -#ifdef CONFIG_KEXEC - end = memory + mem_alloc_size; /* - * This function automatically merges address regions - * next to each other if they are received in - * incrementing order + * This function automatically merges address + * regions next to each other if they are + * received in incrementing order. */ - if (memory < crashk_base && end > crashk_end) { - /* region is fully in */ - add_memory_region(memory, - crashk_base - memory, - BOOT_MEM_RAM); - total += crashk_base - memory; - add_memory_region(crashk_end, - end - crashk_end, - BOOT_MEM_RAM); - total += end - crashk_end; - continue; - } - - if (memory >= crashk_base && end <= crashk_end) - /* - * Entire memory region is within the new - * kernel's memory, ignore it. - */ - continue; - - if (memory > crashk_base && memory < crashk_end && - end > crashk_end) { - /* - * Overlap with the beginning of the region, - * reserve the beginning. - */ - mem_alloc_size -= crashk_end - memory; - memory = crashk_end; - } else if (memory < crashk_base && end > crashk_base && - end < crashk_end) - /* - * Overlap with the beginning of the region, - * chop of end. - */ - mem_alloc_size -= end - crashk_base; -#endif - add_memory_region(memory, mem_alloc_size, BOOT_MEM_RAM); + if (size) + add_memory_region(memory, size, BOOT_MEM_RAM); total += mem_alloc_size; - /* Recovering mem_alloc_size */ - mem_alloc_size = 4 << 20; } else { break; } } cvmx_bootmem_unlock(); - /* Add the memory region for the kernel. */ - kernel_start = (unsigned long) _text; - kernel_size = _end - _text; - - /* Adjust for physical offset. */ - kernel_start &= ~0xffffffff80000000ULL; - add_memory_region(kernel_start, kernel_size, BOOT_MEM_RAM); #endif /* CONFIG_CRASH_DUMP */ #ifdef CONFIG_CAVIUM_RESERVE32 -- 2.1.4