Module Name: src Committed By: mrg Date: Sun Feb 5 22:42:39 UTC 2023
Modified Files: src/sys/arch/evbarm/evbarm: autoconf.c src/sys/arch/evbarm/fdt: fdt_machdep.c src/sys/arch/evbarm/include: types.h Log Message: fix root detection on evbarm when raid is involved there are several problems solved in this change: - lots of work was re-done when we already have determined the device booted from, so several new early returns introduced if booted_device has been set - due to the lack of cpu_bootconf(), raidframe softroot would override "root=xxx" on the boot command line (note that platforms that use eg, device_register() to detect the boot device are not affected by this issue as they find the boot device much earlier.) - in the new cpu_bootconf(), switch the order of the platform boot-config with the set_root_device() call. this avoids a problem where "root=xxx" is checked after automated methods, and is thus ignored. - in fdt_detect_root_device(), remove the code to add "root=xxx"" string to the boot_args[] that would be later parsed by the set_root_device() call, and simply set booted_device and, for mbr installs, booted_partition directly. also, for any successful call, perform an early return. - define __HAVE_CPU_BOOTCONF so early boot calls cpu_bootconf(). tested on: - rockpro64 booting from emmc, sata (big, and little endian) - rockpro64 loading kernel from msdos partition - rockpro64 booting from network (fails to auto-detect, with or without this change) - quartz64 booting from nvme - lx2k booting from nvme XXX: pullup-10 To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/evbarm/evbarm/autoconf.c cvs rdiff -u -r1.99 -r1.100 src/sys/arch/evbarm/fdt/fdt_machdep.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/evbarm/include/types.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.