linux_riscv: Add patches for initrd support
This commit is contained in:
parent
0022708d6d
commit
f8b5b93b88
@ -88,4 +88,14 @@ rec {
|
|||||||
patch = ./riscv-install.patch;
|
patch = ./riscv-install.patch;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
riscv_initrd = {
|
||||||
|
name = "riscv-initrd";
|
||||||
|
patch = ./riscv-initrd.patch;
|
||||||
|
};
|
||||||
|
|
||||||
|
riscv_initrd_free = {
|
||||||
|
name = "riscv-initrd-free";
|
||||||
|
patch = ./riscv-initrd-free.patch;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
21
pkgs/os-specific/linux/kernel/riscv-initrd-free.patch
Normal file
21
pkgs/os-specific/linux/kernel/riscv-initrd-free.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
commit b1fbec8b74ace263ce1371e6bcfdd1dd71b52070
|
||||||
|
Author: Shea Levy <shea@shealevy.com>
|
||||||
|
Date: Tue Feb 20 08:48:12 2018 -0500
|
||||||
|
|
||||||
|
riscv: Implement free_initrd_mem.
|
||||||
|
|
||||||
|
v2: Remove incorrect page alignment.
|
||||||
|
|
||||||
|
Signed-off-by: Shea Levy <shea@shealevy.com>
|
||||||
|
|
||||||
|
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
|
||||||
|
index c77df8142be2..1b6daa5184e0 100644
|
||||||
|
--- a/arch/riscv/mm/init.c
|
||||||
|
+++ b/arch/riscv/mm/init.c
|
||||||
|
@@ -66,5 +66,6 @@ void free_initmem(void)
|
||||||
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
|
void free_initrd_mem(unsigned long start, unsigned long end)
|
||||||
|
{
|
||||||
|
+ free_reserved_area((void *)start, (void *)end, -1, "initrd");
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_BLK_DEV_INITRD */
|
48
pkgs/os-specific/linux/kernel/riscv-initrd.patch
Normal file
48
pkgs/os-specific/linux/kernel/riscv-initrd.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
commit 1e5f6473492f41355289d022003a049ebf8995fa
|
||||||
|
Author: Shea Levy <shea@shealevy.com>
|
||||||
|
Date: Tue Feb 20 07:52:14 2018 -0500
|
||||||
|
|
||||||
|
riscv: Respect the initrd found in the dt, if any.
|
||||||
|
|
||||||
|
Signed-off-by: Shea Levy <shea@shealevy.com>
|
||||||
|
|
||||||
|
diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
|
||||||
|
index 41d34008faf6..c4ebc907af34 100644
|
||||||
|
--- a/arch/riscv/kernel/setup.c
|
||||||
|
+++ b/arch/riscv/kernel/setup.c
|
||||||
|
@@ -88,15 +88,20 @@ static void __init setup_initrd(void)
|
||||||
|
extern unsigned long __initramfs_size;
|
||||||
|
unsigned long size;
|
||||||
|
|
||||||
|
+ if (initrd_start)
|
||||||
|
+ goto found;
|
||||||
|
+
|
||||||
|
if (__initramfs_size > 0) {
|
||||||
|
initrd_start = (unsigned long)(&__initramfs_start);
|
||||||
|
initrd_end = initrd_start + __initramfs_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ initrd_below_start_ok = 1;
|
||||||
|
if (initrd_start >= initrd_end) {
|
||||||
|
printk(KERN_INFO "initrd not found or empty");
|
||||||
|
goto disable;
|
||||||
|
}
|
||||||
|
+found:
|
||||||
|
if (__pa(initrd_end) > PFN_PHYS(max_low_pfn)) {
|
||||||
|
printk(KERN_ERR "initrd extends beyond end of memory");
|
||||||
|
goto disable;
|
||||||
|
@@ -104,13 +109,13 @@ static void __init setup_initrd(void)
|
||||||
|
|
||||||
|
size = initrd_end - initrd_start;
|
||||||
|
memblock_reserve(__pa(initrd_start), size);
|
||||||
|
- initrd_below_start_ok = 1;
|
||||||
|
|
||||||
|
printk(KERN_INFO "Initial ramdisk at: 0x%p (%lu bytes)\n",
|
||||||
|
(void *)(initrd_start), size);
|
||||||
|
return;
|
||||||
|
disable:
|
||||||
|
pr_cont(" - disabling initrd\n");
|
||||||
|
+ initrd_below_start_ok = 0;
|
||||||
|
initrd_start = 0;
|
||||||
|
initrd_end = 0;
|
||||||
|
}
|
@ -13118,7 +13118,13 @@ with pkgs;
|
|||||||
kernelPatches = [
|
kernelPatches = [
|
||||||
kernelPatches.bridge_stp_helper
|
kernelPatches.bridge_stp_helper
|
||||||
kernelPatches.modinst_arg_list_too_long
|
kernelPatches.modinst_arg_list_too_long
|
||||||
] ++ lib.optionals hostPlatform.isRiscV [ kernelPatches.riscv_modules kernelPatches.riscv_irq_busy kernelPatches.riscv_install ];
|
] ++ lib.optionals hostPlatform.isRiscV [
|
||||||
|
kernelPatches.riscv_modules
|
||||||
|
kernelPatches.riscv_irq_busy
|
||||||
|
kernelPatches.riscv_install
|
||||||
|
kernelPatches.riscv_initrd
|
||||||
|
kernelPatches.riscv_initrd_free
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
linux_samus_4_12 = callPackage ../os-specific/linux/kernel/linux-samus-4.12.nix {
|
linux_samus_4_12 = callPackage ../os-specific/linux/kernel/linux-samus-4.12.nix {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user