Lines Matching +full:firmware +full:- +full:initialised
1 // SPDX-License-Identifier: GPL-2.0-only
25 * bootargs, kaslr-seed, rng-seed, useable-memory-range and elfcorehdr.
30 * fdt_find_and_del_mem_rsv - delete memory reservation with given address and size
48 return -EINVAL; in fdt_find_and_del_mem_rsv()
55 return -EINVAL; in fdt_find_and_del_mem_rsv()
62 return -ENOENT; in fdt_find_and_del_mem_rsv()
66 * get_addr_size_cells - Get address and size of root node
79 return -EINVAL; in get_addr_size_cells()
90 * do_get_kexec_buffer - Get address and size of device tree property
109 return -ENOENT; in do_get_kexec_buffer()
118 * ima_get_kexec_buffer - get IMA buffer from the previous kernel
132 return -ENOTSUPP; in ima_get_kexec_buffer()
134 prop = of_get_property(of_chosen, "linux,ima-kexec-buffer", &len); in ima_get_kexec_buffer()
136 return -ENOENT; in ima_get_kexec_buffer()
149 * ima_free_kexec_buffer - free memory used by the IMA buffer
159 return -ENOTSUPP; in ima_free_kexec_buffer()
161 prop = of_find_property(of_chosen, "linux,ima-kexec-buffer", NULL); in ima_free_kexec_buffer()
163 return -ENOENT; in ima_free_kexec_buffer()
165 ret = do_get_kexec_buffer(prop->value, prop->length, &addr, &size); in ima_free_kexec_buffer()
178 * remove_ima_buffer - remove the IMA buffer property and reservation from @fdt
196 prop = fdt_getprop(fdt, chosen_node, "linux,ima-kexec-buffer", &len); in remove_ima_buffer()
201 fdt_delprop(fdt, chosen_node, "linux,ima-kexec-buffer"); in remove_ima_buffer()
212 * setup_ima_buffer - add IMA buffer information to the fdt
224 if (!image->ima_buffer_size) in setup_ima_buffer()
228 "linux,ima-kexec-buffer", in setup_ima_buffer()
229 image->ima_buffer_addr, in setup_ima_buffer()
230 image->ima_buffer_size); in setup_ima_buffer()
232 return -EINVAL; in setup_ima_buffer()
234 ret = fdt_add_mem_rsv(fdt, image->ima_buffer_addr, in setup_ima_buffer()
235 image->ima_buffer_size); in setup_ima_buffer()
237 return -EINVAL; in setup_ima_buffer()
240 image->ima_buffer_addr, image->ima_buffer_size); in setup_ima_buffer()
253 * of_kexec_alloc_and_setup_fdt - Alloc and setup a new Flattened Device Tree
291 if (ret == -EINVAL) { in of_kexec_alloc_and_setup_fdt()
297 if (chosen_node == -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
306 if (ret && ret != -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
308 ret = fdt_delprop(fdt, chosen_node, "linux,usable-memory-range"); in of_kexec_alloc_and_setup_fdt()
309 if (ret && ret != -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
313 prop = fdt_getprop(fdt, chosen_node, "linux,initrd-start", NULL); in of_kexec_alloc_and_setup_fdt()
319 prop = fdt_getprop(fdt, chosen_node, "linux,initrd-end", NULL); in of_kexec_alloc_and_setup_fdt()
321 ret = -EINVAL; in of_kexec_alloc_and_setup_fdt()
328 * kexec reserves exact initrd size, while firmware may in of_kexec_alloc_and_setup_fdt()
331 tmp_size = tmp_end - tmp_start; in of_kexec_alloc_and_setup_fdt()
333 if (ret == -ENOENT) in of_kexec_alloc_and_setup_fdt()
336 if (ret == -EINVAL) in of_kexec_alloc_and_setup_fdt()
340 /* add initrd-* */ in of_kexec_alloc_and_setup_fdt()
342 ret = fdt_setprop_u64(fdt, chosen_node, "linux,initrd-start", in of_kexec_alloc_and_setup_fdt()
347 ret = fdt_setprop_u64(fdt, chosen_node, "linux,initrd-end", in of_kexec_alloc_and_setup_fdt()
357 ret = fdt_delprop(fdt, chosen_node, "linux,initrd-start"); in of_kexec_alloc_and_setup_fdt()
358 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
361 ret = fdt_delprop(fdt, chosen_node, "linux,initrd-end"); in of_kexec_alloc_and_setup_fdt()
362 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
366 if (image->type == KEXEC_TYPE_CRASH) { in of_kexec_alloc_and_setup_fdt()
369 "linux,elfcorehdr", image->elf_load_addr, in of_kexec_alloc_and_setup_fdt()
370 image->elf_headers_sz); in of_kexec_alloc_and_setup_fdt()
378 ret = fdt_add_mem_rsv(fdt, image->elf_load_addr, in of_kexec_alloc_and_setup_fdt()
379 image->elf_headers_sz); in of_kexec_alloc_and_setup_fdt()
383 /* add linux,usable-memory-range */ in of_kexec_alloc_and_setup_fdt()
385 "linux,usable-memory-range", crashk_res.start, in of_kexec_alloc_and_setup_fdt()
386 crashk_res.end - crashk_res.start + 1); in of_kexec_alloc_and_setup_fdt()
398 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
402 /* add kaslr-seed */ in of_kexec_alloc_and_setup_fdt()
403 ret = fdt_delprop(fdt, chosen_node, "kaslr-seed"); in of_kexec_alloc_and_setup_fdt()
404 if (ret == -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
412 ret = fdt_setprop_u64(fdt, chosen_node, "kaslr-seed", seed); in of_kexec_alloc_and_setup_fdt()
416 pr_notice("RNG is not initialised: omitting \"%s\" property\n", in of_kexec_alloc_and_setup_fdt()
417 "kaslr-seed"); in of_kexec_alloc_and_setup_fdt()
420 /* add rng-seed */ in of_kexec_alloc_and_setup_fdt()
424 ret = fdt_setprop_placeholder(fdt, chosen_node, "rng-seed", in of_kexec_alloc_and_setup_fdt()
430 pr_notice("RNG is not initialised: omitting \"%s\" property\n", in of_kexec_alloc_and_setup_fdt()
431 "rng-seed"); in of_kexec_alloc_and_setup_fdt()
434 ret = fdt_setprop(fdt, chosen_node, "linux,booted-from-kexec", NULL, 0); in of_kexec_alloc_and_setup_fdt()