int __init arch_cpu_early_init(void) { const char *options; struct vmm_devtree_node *node; /* * Host virtual memory, device tree, heap is up. * Do necessary early stuff like iomapping devices * memory or boot time memory reservation here. */ node = vmm_devtree_getnode(VMM_DEVTREE_PATH_SEPARATOR_STRING VMM_DEVTREE_CHOSEN_NODE_NAME); if (!node) { return VMM_ENODEV; } if (vmm_devtree_read_string(node, VMM_DEVTREE_BOOTARGS_ATTR_NAME, &options) == VMM_OK) { vmm_parse_early_options(options); } vmm_devtree_dref_node(node); return VMM_OK; }
void __init cpu_init(struct multiboot_info *binfo, char *cmdline) { memcpy(&boot_info, binfo, sizeof(struct multiboot_info)); memcpy(boot_cmd_line, cmdline, sizeof(boot_cmd_line)); BUG_ON(!(binfo->flags & MULTIBOOT_INFO_MEMORY)); vmm_parse_early_options((char *)boot_cmd_line); indentify_cpu(); /* Initialize VMM (APIs only available after this) */ vmm_init(); /* We should never come back here. */ vmm_hang(); }
int __init arch_cpu_early_init(void) { char *attr; struct vmm_devtree_node *node; /* * Host virtual memory, device tree, heap is up. * Do necessary early stuff like iomapping devices * memory or boot time memory reservation here. */ node = vmm_devtree_getnode(VMM_DEVTREE_PATH_SEPARATOR_STRING VMM_DEVTREE_CHOSEN_NODE_NAME); if (!node) { return VMM_ENODEV; } attr = vmm_devtree_attrval(node, VMM_DEVTREE_BOOTARGS_ATTR_NAME); if (attr) { vmm_parse_early_options(attr); } return VMM_OK; }