diff options
Diffstat (limited to 'arch/mips/cavium-octeon/setup.c')
| -rw-r--r-- | arch/mips/cavium-octeon/setup.c | 82 |
1 files changed, 1 insertions, 81 deletions
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index b321d3b16877..9a06fa9f9f0c 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c | |||
| @@ -45,9 +45,6 @@ extern struct plat_smp_ops octeon_smp_ops; | |||
| 45 | extern void pci_console_init(const char *arg); | 45 | extern void pci_console_init(const char *arg); |
| 46 | #endif | 46 | #endif |
| 47 | 47 | ||
| 48 | #ifdef CONFIG_CAVIUM_RESERVE32 | ||
| 49 | extern uint64_t octeon_reserve32_memory; | ||
| 50 | #endif | ||
| 51 | static unsigned long long MAX_MEMORY = 512ull << 20; | 48 | static unsigned long long MAX_MEMORY = 512ull << 20; |
| 52 | 49 | ||
| 53 | struct octeon_boot_descriptor *octeon_boot_desc_ptr; | 50 | struct octeon_boot_descriptor *octeon_boot_desc_ptr; |
| @@ -186,54 +183,6 @@ void octeon_check_cpu_bist(void) | |||
| 186 | write_octeon_c0_dcacheerr(0); | 183 | write_octeon_c0_dcacheerr(0); |
| 187 | } | 184 | } |
| 188 | 185 | ||
| 189 | #ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB | ||
| 190 | /** | ||
| 191 | * Called on every core to setup the wired tlb entry needed | ||
| 192 | * if CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB is set. | ||
| 193 | * | ||
| 194 | */ | ||
| 195 | static void octeon_hal_setup_per_cpu_reserved32(void *unused) | ||
| 196 | { | ||
| 197 | /* | ||
| 198 | * The config has selected to wire the reserve32 memory for all | ||
| 199 | * userspace applications. We need to put a wired TLB entry in for each | ||
| 200 | * 512MB of reserve32 memory. We only handle double 256MB pages here, | ||
| 201 | * so reserve32 must be multiple of 512MB. | ||
| 202 | */ | ||
| 203 | uint32_t size = CONFIG_CAVIUM_RESERVE32; | ||
| 204 | uint32_t entrylo0 = | ||
| 205 | 0x7 | ((octeon_reserve32_memory & ((1ul << 40) - 1)) >> 6); | ||
| 206 | uint32_t entrylo1 = entrylo0 + (256 << 14); | ||
| 207 | uint32_t entryhi = (0x80000000UL - (CONFIG_CAVIUM_RESERVE32 << 20)); | ||
| 208 | while (size >= 512) { | ||
| 209 | #if 0 | ||
| 210 | pr_info("CPU%d: Adding double wired TLB entry for 0x%lx\n", | ||
| 211 | smp_processor_id(), entryhi); | ||
| 212 | #endif | ||
| 213 | add_wired_entry(entrylo0, entrylo1, entryhi, PM_256M); | ||
| 214 | entrylo0 += 512 << 14; | ||
| 215 | entrylo1 += 512 << 14; | ||
| 216 | entryhi += 512 << 20; | ||
| 217 | size -= 512; | ||
| 218 | } | ||
| 219 | } | ||
| 220 | #endif /* CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB */ | ||
| 221 | |||
| 222 | /** | ||
| 223 | * Called to release the named block which was used to made sure | ||
| 224 | * that nobody used the memory for something else during | ||
| 225 | * init. Now we'll free it so userspace apps can use this | ||
| 226 | * memory region with bootmem_alloc. | ||
| 227 | * | ||
| 228 | * This function is called only once from prom_free_prom_memory(). | ||
| 229 | */ | ||
| 230 | void octeon_hal_setup_reserved32(void) | ||
| 231 | { | ||
| 232 | #ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB | ||
| 233 | on_each_cpu(octeon_hal_setup_per_cpu_reserved32, NULL, 0, 1); | ||
| 234 | #endif | ||
| 235 | } | ||
| 236 | |||
| 237 | /** | 186 | /** |
| 238 | * Reboot Octeon | 187 | * Reboot Octeon |
| 239 | * | 188 | * |
| @@ -294,18 +243,6 @@ static void octeon_halt(void) | |||
| 294 | octeon_kill_core(NULL); | 243 | octeon_kill_core(NULL); |
| 295 | } | 244 | } |
| 296 | 245 | ||
| 297 | #if 0 | ||
| 298 | /** | ||
| 299 | * Platform time init specifics. | ||
| 300 | * Returns | ||
| 301 | */ | ||
| 302 | void __init plat_time_init(void) | ||
| 303 | { | ||
| 304 | /* Nothing special here, but we are required to have one */ | ||
| 305 | } | ||
| 306 | |||
| 307 | #endif | ||
| 308 | |||
| 309 | /** | 246 | /** |
| 310 | * Handle all the error condition interrupts that might occur. | 247 | * Handle all the error condition interrupts that might occur. |
| 311 | * | 248 | * |
| @@ -502,25 +439,13 @@ void __init prom_init(void) | |||
| 502 | * memory when it is getting memory from the | 439 | * memory when it is getting memory from the |
| 503 | * bootloader. Later, after the memory allocations are | 440 | * bootloader. Later, after the memory allocations are |
| 504 | * complete, the reserve32 will be freed. | 441 | * complete, the reserve32 will be freed. |
| 505 | */ | 442 | * |
| 506 | #ifdef CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB | ||
| 507 | if (CONFIG_CAVIUM_RESERVE32 & 0x1ff) | ||
| 508 | pr_err("CAVIUM_RESERVE32 isn't a multiple of 512MB. " | ||
| 509 | "This is required if CAVIUM_RESERVE32_USE_WIRED_TLB " | ||
| 510 | "is set\n"); | ||
| 511 | else | ||
| 512 | addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, | ||
| 513 | 0, 0, 512 << 20, | ||
| 514 | "CAVIUM_RESERVE32", 0); | ||
| 515 | #else | ||
| 516 | /* | ||
| 517 | * Allocate memory for RESERVED32 aligned on 2MB boundary. This | 443 | * Allocate memory for RESERVED32 aligned on 2MB boundary. This |
| 518 | * is in case we later use hugetlb entries with it. | 444 | * is in case we later use hugetlb entries with it. |
| 519 | */ | 445 | */ |
| 520 | addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, | 446 | addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, |
| 521 | 0, 0, 2 << 20, | 447 | 0, 0, 2 << 20, |
| 522 | "CAVIUM_RESERVE32", 0); | 448 | "CAVIUM_RESERVE32", 0); |
| 523 | #endif | ||
| 524 | if (addr < 0) | 449 | if (addr < 0) |
| 525 | pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n"); | 450 | pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n"); |
| 526 | else | 451 | else |
| @@ -817,9 +742,4 @@ void prom_free_prom_memory(void) | |||
| 817 | panic("Unable to request_irq(OCTEON_IRQ_RML)\n"); | 742 | panic("Unable to request_irq(OCTEON_IRQ_RML)\n"); |
| 818 | } | 743 | } |
| 819 | #endif | 744 | #endif |
| 820 | |||
| 821 | /* This call is here so that it is performed after any TLB | ||
| 822 | initializations. It needs to be after these in case the | ||
| 823 | CONFIG_CAVIUM_RESERVE32_USE_WIRED_TLB option is set */ | ||
| 824 | octeon_hal_setup_reserved32(); | ||
| 825 | } | 745 | } |
