mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
parisc: Check kernel mapping earlier at bootup
The check if the initial mapping is sufficient needs to happen much earlier during bootup. Move this test directly to the start_parisc() function and use native PDC iodc functions to print the warning, because panic() and printk() are not functional yet. This fixes boot when enabling various KALLSYSMS options which need much more space. Signed-off-by: Helge Deller <deller@gmx.de> Cc: <stable@vger.kernel.org> # v6.0+
This commit is contained in:
parent
8e732934fb
commit
17c144f110
1 changed files with 12 additions and 8 deletions
|
|
@ -120,14 +120,6 @@ void __init setup_arch(char **cmdline_p)
|
|||
#endif
|
||||
printk(KERN_CONT ".\n");
|
||||
|
||||
/*
|
||||
* Check if initial kernel page mappings are sufficient.
|
||||
* panic early if not, else we may access kernel functions
|
||||
* and variables which can't be reached.
|
||||
*/
|
||||
if (__pa((unsigned long) &_end) >= KERNEL_INITIAL_SIZE)
|
||||
panic("KERNEL_INITIAL_ORDER too small!");
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
if(parisc_narrow_firmware) {
|
||||
printk(KERN_INFO "Kernel is using PDC in 32-bit mode.\n");
|
||||
|
|
@ -279,6 +271,18 @@ void __init start_parisc(void)
|
|||
int ret, cpunum;
|
||||
struct pdc_coproc_cfg coproc_cfg;
|
||||
|
||||
/*
|
||||
* Check if initial kernel page mapping is sufficient.
|
||||
* Print warning if not, because we may access kernel functions and
|
||||
* variables which can't be reached yet through the initial mappings.
|
||||
* Note that the panic() and printk() functions are not functional
|
||||
* yet, so we need to use direct iodc() firmware calls instead.
|
||||
*/
|
||||
const char warn1[] = "CRITICAL: Kernel may crash because "
|
||||
"KERNEL_INITIAL_ORDER is too small.\n";
|
||||
if (__pa((unsigned long) &_end) >= KERNEL_INITIAL_SIZE)
|
||||
pdc_iodc_print(warn1, sizeof(warn1) - 1);
|
||||
|
||||
/* check QEMU/SeaBIOS marker in PAGE0 */
|
||||
running_on_qemu = (memcmp(&PAGE0->pad0, "SeaBIOS", 8) == 0);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue