1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // SPDX-License-Identifier: GPL-2.0-only
- #include <linux/init.h>
- #include <linux/of_fdt.h>
- #include <linux/printk.h>
- #include <linux/memblock.h>
- #include <init.h>
- #include "um_arch.h"
- static char *dtb __initdata;
- void uml_dtb_init(void)
- {
- long long size;
- void *area;
- area = uml_load_file(dtb, &size);
- if (!area)
- return;
- if (!early_init_dt_scan(area)) {
- pr_err("invalid DTB %s\n", dtb);
- memblock_free(area, size);
- return;
- }
- early_init_fdt_scan_reserved_mem();
- unflatten_device_tree();
- }
- static int __init uml_dtb_setup(char *line, int *add)
- {
- dtb = line;
- return 0;
- }
- __uml_setup("dtb=", uml_dtb_setup,
- "dtb=<file>\n"
- " Boot the kernel with the devicetree blob from the specified file.\n"
- );
|