add tftpboot test for mips
This commit is contained in:
parent
a962f18369
commit
9c894bdabf
8 changed files with 95 additions and 5 deletions
|
@ -33,7 +33,7 @@
|
||||||
in {
|
in {
|
||||||
defaultOutput = "vmroot";
|
defaultOutput = "vmroot";
|
||||||
rootDevice = "/dev/mtdblock0";
|
rootDevice = "/dev/mtdblock0";
|
||||||
dts.src = null;
|
dts.src = pkgs.lib.mkDefault null;
|
||||||
flash.eraseBlockSize = 65536;
|
flash.eraseBlockSize = 65536;
|
||||||
networkInterfaces =
|
networkInterfaces =
|
||||||
let inherit (config.system.service.network) link;
|
let inherit (config.system.service.network) link;
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
in the Development manual.
|
in the Development manual.
|
||||||
|
|
||||||
'';
|
'';
|
||||||
module = {pkgs, config, lim, ... }: {
|
module = {pkgs, config, lib, lim, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/arch/mipseb.nix
|
../../modules/arch/mipseb.nix
|
||||||
../families/qemu.nix
|
../families/qemu.nix
|
||||||
|
@ -50,5 +50,24 @@
|
||||||
SERIAL_8250_CONSOLE= "y";
|
SERIAL_8250_CONSOLE= "y";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
hardware =
|
||||||
|
# from arch/mips/mti-malta/Platform:load-$(CONFIG_MIPS_MALTA) += 0xffffffff80100000
|
||||||
|
let addr = lim.parseInt "0x80100000";
|
||||||
|
in {
|
||||||
|
loadAddress = addr;
|
||||||
|
entryPoint = addr;
|
||||||
|
|
||||||
|
# Unlike the arm qemu targets, we need a static dts when
|
||||||
|
# running u-boot-using tests, qemu dumpdtb command doesn't
|
||||||
|
# work for this board. I am not at all sure this dts is
|
||||||
|
# *correct* but it does at least boot
|
||||||
|
dts = lib.mkForce {
|
||||||
|
src = "${config.system.outputs.kernel.modulesupport}/arch/mips/boot/dts/mti/malta.dts";
|
||||||
|
includes = [
|
||||||
|
"${config.system.outputs.kernel.modulesupport}/arch/mips/boot/dts/"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
28
overlay.nix
28
overlay.nix
|
@ -224,6 +224,34 @@ extraPkgs // {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ubootQemuMips = final.buildUBoot {
|
||||||
|
defconfig = "malta_defconfig";
|
||||||
|
extraMeta.platforms = ["mips-linux"];
|
||||||
|
filesToInstall = ["u-boot.bin"];
|
||||||
|
# define the prompt to be the same as arm{32,64} so
|
||||||
|
# we can use the same expect script for both
|
||||||
|
extraPatches = [ ./pkgs/u-boot/0002-virtio-init-for-malta.patch ];
|
||||||
|
extraConfig = ''
|
||||||
|
CONFIG_SYS_PROMPT="=> "
|
||||||
|
CONFIG_VIRTIO=y
|
||||||
|
CONFIG_AUTOBOOT=y
|
||||||
|
CONFIG_DM_PCI=y
|
||||||
|
CONFIG_VIRTIO_PCI=y
|
||||||
|
CONFIG_VIRTIO_NET=y
|
||||||
|
CONFIG_VIRTIO_BLK=y
|
||||||
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_QFW_MMIO=y
|
||||||
|
CONFIG_FIT=y
|
||||||
|
CONFIG_LZMA=y
|
||||||
|
CONFIG_CMD_LZMADEC=y
|
||||||
|
CONFIG_SYS_BOOTM_LEN=0x1000000
|
||||||
|
CONFIG_SYS_MALLOC_LEN=0x400000
|
||||||
|
CONFIG_MIPS_BOOT_FDT=y
|
||||||
|
CONFIG_OF_LIBFDT=y
|
||||||
|
CONFIG_OF_STDOUT_VIA_ALIAS=y
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# gnufdisk = prev.gnufdisk.override {
|
# gnufdisk = prev.gnufdisk.override {
|
||||||
# guile = null;
|
# guile = null;
|
||||||
# };
|
# };
|
||||||
|
|
|
@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
|
||||||
patches = [
|
patches = [
|
||||||
./cmdline-cookie.patch
|
./cmdline-cookie.patch
|
||||||
./phram-allow-cached-mappings.patch
|
./phram-allow-cached-mappings.patch
|
||||||
|
./mips-malta-fdt-from-bootloader.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
# this is here to work around what I think is a bug in nixpkgs
|
# this is here to work around what I think is a bug in nixpkgs
|
||||||
|
|
18
pkgs/kernel/mips-malta-fdt-from-bootloader.patch
Normal file
18
pkgs/kernel/mips-malta-fdt-from-bootloader.patch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/arch/mips/mti-malta/malta-setup.c b/arch/mips/mti-malta/malta-setup.c
|
||||||
|
index 21cb3ac1237b..f11409ae9583 100644
|
||||||
|
--- a/arch/mips/mti-malta/malta-setup.c
|
||||||
|
+++ b/arch/mips/mti-malta/malta-setup.c
|
||||||
|
@@ -192,7 +192,12 @@ static void __init bonito_quirks_setup(void)
|
||||||
|
|
||||||
|
void __init *plat_get_fdt(void)
|
||||||
|
{
|
||||||
|
- return (void *)__dtb_start;
|
||||||
|
+ void *r=0;
|
||||||
|
+ if(fw_arg0 == -2)
|
||||||
|
+ r = (void *) KSEG1ADDR(fw_arg1);
|
||||||
|
+ else
|
||||||
|
+ r = (void *) __dtb_start;
|
||||||
|
+ return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init plat_mem_setup(void)
|
15
pkgs/u-boot/0002-virtio-init-for-malta.patch
Normal file
15
pkgs/u-boot/0002-virtio-init-for-malta.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/board/imgtec/malta/malta.c b/board/imgtec/malta/malta.c
|
||||||
|
index 9853a0ba82..d95e332d6d 100644
|
||||||
|
--- a/board/imgtec/malta/malta.c
|
||||||
|
+++ b/board/imgtec/malta/malta.c
|
||||||
|
@@ -169,7 +169,9 @@ int board_early_init_f(void)
|
||||||
|
int misc_init_r(void)
|
||||||
|
{
|
||||||
|
rtc_reset();
|
||||||
|
-
|
||||||
|
+#if IS_ENABLED(CONFIG_VIRTIO)
|
||||||
|
+ virtio_init();
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -18,9 +18,17 @@ in {
|
||||||
../../modules/outputs/tftpboot.nix
|
../../modules/outputs/tftpboot.nix
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
hardware.dts.src = lib.mkForce dts;
|
# use extracted dts if it was null in the device
|
||||||
|
# definition, use actual dts if provided
|
||||||
|
hardware.dts.src = lib.mkOverride 500 dts;
|
||||||
boot.tftp = {
|
boot.tftp = {
|
||||||
loadAddress = lim.parseInt "0x44000000";
|
loadAddress =
|
||||||
|
let offsets = {
|
||||||
|
mips = "0x88000000";
|
||||||
|
arm = "0x44000000";
|
||||||
|
aarch64 = "0x44000000";
|
||||||
|
};
|
||||||
|
in lim.parseInt offsets.${pkgs.stdenv.hostPlatform.qemuArch} ;
|
||||||
serverip = "10.0.2.2";
|
serverip = "10.0.2.2";
|
||||||
ipaddr = "10.0.2.15";
|
ipaddr = "10.0.2.15";
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,6 +30,7 @@ run-liminix-vm \
|
||||||
expect ${./script.expect} 2>&1 |tee $out
|
expect ${./script.expect} 2>&1 |tee $out
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
arm = check "qemu-armv7l" "ubootQemuArm";
|
|
||||||
aarch64 = check "qemu-aarch64" "ubootQemuAarch64";
|
aarch64 = check "qemu-aarch64" "ubootQemuAarch64";
|
||||||
|
arm = check "qemu-armv7l" "ubootQemuArm";
|
||||||
|
mips = check "qemu" "ubootQemuMips";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue