diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-08-06 16:47:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-08-06 16:47:19 -0700 |
commit | d77771c926671e0362af3fe792391be66072b242 (patch) | |
tree | 14638c3e89193ec1a610896fe02516dd3213f1b3 /arch/mips/cavium-octeon/setup.c | |
parent | cae4199f9319f42534ee2e2e4aadf183b9bb7f73 (diff) | |
parent | 74de14fe05dd6b151d73cb0c73c8ec874cbdcde6 (diff) | |
download | lwn-d77771c926671e0362af3fe792391be66072b242.tar.gz lwn-d77771c926671e0362af3fe792391be66072b242.zip |
Merge tag 'mips_6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
Pull MIPS updates from Thomas Bogendoerfer:
- added support for Netgear WNR3500L v2
- removed support for VR41xx SoC and platforms based on it
- cleanups and fixes
* tag 'mips_6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (25 commits)
MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0
Revert "MIPS: octeon: Remove vestiges of CONFIG_CAVIUM_RESERVE32"
MIPS: Introduce CAVIUM_RESERVE32 Kconfig option
MIPS: msi-octeon: eliminate kernel-doc warnings
MIPS: Fix comment typo
MIPS: BMIPS: Utilize cfe_die() for invalid DTB
MIPS: CFE: Add cfe_die()
MIPS: Fixed __debug_virt_addr_valid()
MIPS: BCM47XX: Add support for Netgear WNR3500L v2
MIPS: Remove VR41xx support
MIPS: dts: align gpio-key node names with dtschema
MIPS: dts: correct gpio-keys names and properties
MIPS: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
MIPS: Make phys_to_virt utilize __va()
MIPS: vdso: Utilize __pa() for gic_pfn
MIPS: mm: Use the bitmap API to allocate bitmaps
MIPS: math-emu: Use the bitmap API to allocate bitmaps
MIPS: Loongson64: Fix section mismatch warning
mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start
MIPS: mscc: ocelot: enable FDMA usage
...
Diffstat (limited to 'arch/mips/cavium-octeon/setup.c')
-rw-r--r-- | arch/mips/cavium-octeon/setup.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index 00bf269763cf..cbd83205518d 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c @@ -284,6 +284,11 @@ void octeon_crash_smp_send_stop(void) #endif /* CONFIG_KEXEC */ +#ifdef CONFIG_CAVIUM_RESERVE32 +uint64_t octeon_reserve32_memory; +EXPORT_SYMBOL(octeon_reserve32_memory); +#endif + #ifdef CONFIG_KEXEC /* crashkernel cmdline parameter is parsed _after_ memory setup * we also parse it here (workaround for EHB5200) */ @@ -661,7 +666,9 @@ void __init prom_init(void) int i; u64 t; int argc; - +#ifdef CONFIG_CAVIUM_RESERVE32 + int64_t addr = -1; +#endif /* * The bootloader passes a pointer to the boot descriptor in * $a3, this is available as fw_arg3. @@ -776,6 +783,25 @@ void __init prom_init(void) cvmx_write_csr(CVMX_LED_UDD_DATX(1), 0); cvmx_write_csr(CVMX_LED_EN, 1); } +#ifdef CONFIG_CAVIUM_RESERVE32 + /* + * We need to temporarily allocate all memory in the reserve32 + * region. This makes sure the kernel doesn't allocate this + * memory when it is getting memory from the + * bootloader. Later, after the memory allocations are + * complete, the reserve32 will be freed. + * + * Allocate memory for RESERVED32 aligned on 2MB boundary. This + * is in case we later use hugetlb entries with it. + */ + addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, + 0, 0, 2 << 20, + "CAVIUM_RESERVE32", 0); + if (addr < 0) + pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n"); + else + octeon_reserve32_memory = addr; +#endif #ifdef CONFIG_CAVIUM_OCTEON_LOCK_L2 if (cvmx_read_csr(CVMX_L2D_FUS3) & (3ull << 34)) { @@ -1053,6 +1079,16 @@ void __init plat_mem_setup(void) cvmx_bootmem_unlock(); #endif /* CONFIG_CRASH_DUMP */ +#ifdef CONFIG_CAVIUM_RESERVE32 + /* + * Now that we've allocated the kernel memory it is safe to + * free the reserved region. We free it here so that builtin + * drivers can use the memory. + */ + if (octeon_reserve32_memory) + cvmx_bootmem_free_named("CAVIUM_RESERVE32"); +#endif /* CONFIG_CAVIUM_RESERVE32 */ + if (total == 0) panic("Unable to allocate memory from " "cvmx_bootmem_phy_alloc"); |