I have a Xen server with two disk, gpt partitioned, raidframe mirrors on the dk(4) devices. That system boots off an USB flash key.
With "raidctl -A softroot raid0" the XEN3_DOM0 kernel does not detect raid0 as root device. It also doesn't detect raid0 as root device when the dom0 kernel is loaded with "bootdev=raid0". I see the following: boot> load /netbsd-XEN3_DOM0.gz; multiboot /xen.gz dom0_mem=1024M ... [ 6.1100463] boot device: dk0 [ 6.1100463] root on dk0 [ 6.1100463] vfs_mountroot: can't open root device [ 6.1100463] cannot mount root, error = 16 [ 6.1100463] root device (default dk0): Note dk0 is open as a component of raid0 here. BTW, if any dk(4) attaches, the xen kernel's cpu_bootconf() will select dk0 as boot device candidate because dk(4) attaches to the root of the device tree, causing them to be returned first with DEVITER_F_ROOT_FIRST, and the xen cpu_bootconf() will simply return the first configured disk device. boot> load /netbsd-XEN3_DOM0.gz bootdev=raid0; multiboot /xen.gz dom0_mem=1024M ... [ 6.1100510] boot device: raid0 [ 6.1500519] unknown device major 0xffffffffffffffff [ 6.1500519] root device (default raid0a): We get "unknown device major" because raid0 uses partitons and DEV_USES_PARTITIONS(dv) evaluates to true at line 436 in kern_subr.c r1.220. With the obvious change Index: kern_subr.c =================================================================== RCS file: /cvsroot/src/sys/kern/kern_subr.c,v retrieving revision 1.220 diff -u -r1.220 kern_subr.c --- kern_subr.c 7 Oct 2018 11:24:16 -0000 1.220 +++ kern_subr.c 8 Jan 2019 16:17:01 -0000 @@ -433,7 +433,7 @@ } if (dv != NULL && device_class(dv) == DV_DISK && - !DEV_USES_PARTITIONS(dv) && + DEV_USES_PARTITIONS(dv) && (majdev = devsw_name2blk(device_xname(dv), NULL, 0)) >= 0) { rootdv = dv; rootdev = makedev(majdev, device_unit(dv)); I see the following: boot> load /netbsd-XEN3_DOM0.gz; multiboot /xen.gz dom0_mem=1024M ... [ 6.1100509] boot device: dk0 [ 6.1100509] root on dk0 [ 6.1100509] vfs_mountroot: can't open root device [ 6.1100509] cannot mount root, error = 16 [ 6.1100509] root device (default dk0): boot> load /netbsd-XEN3_DOM0.gz bootdev=raid0; multiboot /xen.gz dom0_mem=1024M ... [ 6.1300540] boot device: raid0 [ 6.1500545] root on raid0a dumps on raid0b [ 6.1600524] Your machine does not initialize mem_clusters; sparse_dumps disabled [ 6.1700547] root file system type: ffs [ 6.1700547] kern.module.path=/stand/amd64-xen/8.99.29/modules And it boots normally. I've tested with -current as of 2018-12-26 and netbsd-8 as of 2018-12-12. I didn't bother with the netbsd-7 branch. I don't think the above change is the right fix. There are probably where the old code should match. But what is the right fix? --chris