What is the kernel die message

来自个人维基
2019年11月20日 (三) 16:23free6d1823讨论 | 贡献的版本

跳转至: 导航搜索

error

[   36.735247] ufshcd-hi3660 ff3b0000.ufs: set TX_EQUALIZER 3.5db
[   36.743489] ufshcd-hi3660 ff3b0000.ufs: check TX_EQUALIZER DB value lane0 = 0x1
[   36.750709] ufshcd-hi3660 ff3b0000.ufs: TX_EQUALIZER DB value lane1 = 0x1
[   36.757552] ufshcd-hi3660 ff3b0000.ufs: ufshcd_print_pwr_info:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2
[   36.769752] VFS: Cannot open root device "sdd10" or unknown-block(0,0): error -6
[   36.777071] Please append a correct "root=" boot option; here are the available partitions:
[   36.785478] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[   36.793786] CPU: 7 PID: 1 Comm: swapper/0 Tainted: G S              4.14.0-rc7-linaro-hikey960+ #2
[   36.802802] Hardware name: HiKey960 (DT)
[   36.806789] Call trace:
[   36.809316] [<ffff000008088be0>] dump_backtrace+0x0/0x370
[   36.814770] [<ffff000008088f64>] show_stack+0x14/0x20
[   36.819887] [<ffff000008a72780>] dump_stack+0x9c/0xbc
[   36.825003] [<ffff0000080c78d8>] panic+0x11c/0x28c
[   36.829861] [<ffff000008f41158>] mount_block_root+0x190/0x264
[   36.835667] [<ffff000008f41348>] mount_root+0x11c/0x134
[   36.840962] [<ffff000008f41498>] prepare_namespace+0x138/0x180
[   36.846854] [<ffff000008f40d8c>] kernel_init_freeable+0x208/0x22c
[   36.853013] [<ffff000008a84c68>] kernel_init+0x10/0x100
[   36.858301] [<ffff000008084b58>] ret_from_fork+0x10/0x18
[   36.863683] SMP: stopping secondary CPUs
[   36.867703] Kernel Offset: disabled
[   36.871221] CPU features: 0x082004
[   36.874688] Memory Limit: none
[   36.877816] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

init\do_mount.c

void __init prepare_namespace(void)
{
	int is_floppy;
 
	md_run_setup();
 
	if (saved_root_name[0]) {
		root_device_name = saved_root_name;
		if (!strncmp(root_device_name, "mtd", 3) ||
		    !strncmp(root_device_name, "ubi", 3)) {
			mount_block_root(root_device_name, root_mountflags);
			goto out;
		}
		ROOT_DEV = name_to_dev_t(root_device_name);
		if (strncmp(root_device_name, "/dev/", 5) == 0)
			root_device_name += 5;
	}
 
 
	mount_root();
}
 
void __init mount_root(void)
{
		int err = create_dev("/dev/root", ROOT_DEV);
 
		if (err < 0)
			pr_emerg("Failed to create /dev/root: %d\n", err);
		mount_block_root("/dev/root", root_mountflags);
}
 
void __init mount_block_root(char *name, int flags) //name shouldn't be sdd10
	struct page *page = alloc_page(GFP_KERNEL |
					__GFP_NOTRACK_FALSE_POSITIVE);
	char *fs_names = page_address(page);
	char *p;
 	char b[BDEVNAME_SIZE];
 
	get_fs_names(fs_names);
retry:
	for (p = fs_names; *p; p += strlen(p)+1) {
		int err = do_mount_root(name, p, flags, root_mount_data);//SYS_MOUNT(name, "/root",fs) error
		switch (err) {
			case 0:
				goto out;
			case -EACCES:
			case -EINVAL:
				continue;
		}
	        /*
		 * Allow the user to distinguish between failed sys_open
		 * and bad superblock on root device.
		 * and give them a list of the available devices
		 */
#ifdef CONFIG_BLOCK
		__bdevname(ROOT_DEV, b); //ROOT_DEV=0
#endif
		printk("VFS: Cannot open root device \"%s\" or %s: error %d\n",
				root_device_name, b, err);
//VFS: Cannot open root device "sdd10" or unknown-block(0,0): error -6
 
		printk("Please append a correct \"root=\" boot option; here are the available partitions:\n");
                      //Please append a correct "root=" boot option; here are the available partitions:
 
		printk_all_partitions();//NO OUTPUT
#ifdef CONFIG_DEBUG_BLOCK_EXT_DEVT
		printk("DEBUG_BLOCK_EXT_DEVT is enabled, you need to specify "
		       "explicit textual name for \"root=\" boot option.\n");
#endif
		panic("VFS: Unable to mount root fs on %s", b);
                // VFS: Unable to mount root fs on unknown-block(0,0)
	}
	if (!(flags & SB_RDONLY)) {
		flags |= SB_RDONLY;
		goto retry;
	}
 
	printk("List of all partitions:\n");
	printk_all_partitions();
	printk("No filesystem could mount root, tried: ");
	for (p = fs_names; *p; p += strlen(p)+1)
		printk(" %s", p);
	printk("\n");
#ifdef CONFIG_BLOCK
	__bdevname(ROOT_DEV, b);
#endif
	panic("VFS: Unable to mount root fs on %s", b);
out:
	put_page(page);
}
 
static int __init do_mount_root(char *name, char *fs, int flags, void *data)
{
	struct super_block *s;
	int err = sys_mount(name, "/root", fs, flags, data);
	if (err)
		return err;
 
	sys_chdir("/root");
	s = current->fs->pwd.dentry->d_sb;
	ROOT_DEV = s->s_dev;
	printk(KERN_INFO
	       "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
	       s->s_type->name,
	       sb_rdonly(s) ? " readonly" : "",
	       MAJOR(ROOT_DEV), MINOR(ROOT_DEV));
	return 0;
}