MIPS: Loongson64: Reserve vgabios memory on boot
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Tue, 7 Nov 2023 11:15:18 +0000 (11:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2023 17:45:35 +0000 (18:45 +0100)
commit 8f7aa77a463f47c9e00592d02747a9fcf2271543 upstream.

vgabios is passed from firmware to kernel on Loongson64 systems.
Sane firmware will keep this pointer in reserved memory space
passed from the firmware but insane firmware keeps it in low
memory before kernel entry that is not reserved.

Previously kernel won't try to allocate memory from low memory
before kernel entry on boot, but after converting to memblock
it will do that.

Fix by resversing those memory on early boot.

Cc: stable@vger.kernel.org
Fixes: a94e4f24ec83 ("MIPS: init: Drop boot_mem_map")
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/mips/loongson64/init.c

index ee8de17..d62262f 100644 (file)
@@ -88,6 +88,11 @@ void __init szmem(unsigned int node)
                        break;
                }
        }
+
+       /* Reserve vgabios if it comes from firmware */
+       if (loongson_sysconf.vgabios_addr)
+               memblock_reserve(virt_to_phys((void *)loongson_sysconf.vgabios_addr),
+                               SZ_256K);
 }
 
 #ifndef CONFIG_NUMA