Lines Matching +full:prop +full:-

1 // SPDX-License-Identifier: GPL-2.0-only
27 * bootargs, kaslr-seed, rng-seed, useable-memory-range and elfcorehdr.
32 * fdt_find_and_del_mem_rsv - delete memory reservation with given address and size
50 return -EINVAL; in fdt_find_and_del_mem_rsv()
57 return -EINVAL; in fdt_find_and_del_mem_rsv()
64 return -ENOENT; in fdt_find_and_del_mem_rsv()
68 * get_addr_size_cells - Get address and size of root node
81 return -EINVAL; in get_addr_size_cells()
92 * do_get_kexec_buffer - Get address and size of device tree property
94 * @prop: Device tree property
95 * @len: Size of @prop
101 static int do_get_kexec_buffer(const void *prop, int len, unsigned long *addr, in do_get_kexec_buffer() argument
111 return -ENOENT; in do_get_kexec_buffer()
113 *addr = of_read_number(prop, addr_cells); in do_get_kexec_buffer()
114 *size = of_read_number(prop + 4 * addr_cells, size_cells); in do_get_kexec_buffer()
121 * ima_get_kexec_buffer - get IMA buffer from the previous kernel
133 const void *prop; in ima_get_kexec_buffer() local
135 prop = of_get_property(of_chosen, "linux,ima-kexec-buffer", &len); in ima_get_kexec_buffer()
136 if (!prop) in ima_get_kexec_buffer()
137 return -ENOENT; in ima_get_kexec_buffer()
139 ret = do_get_kexec_buffer(prop, len, &tmp_addr, &tmp_size); in ima_get_kexec_buffer()
143 /* Do some sanity on the returned size for the ima-kexec buffer */ in ima_get_kexec_buffer()
145 return -ENOENT; in ima_get_kexec_buffer()
152 end_pfn = PHYS_PFN(tmp_addr + tmp_size - 1); in ima_get_kexec_buffer()
156 return -EINVAL; in ima_get_kexec_buffer()
166 * ima_free_kexec_buffer - free memory used by the IMA buffer
173 struct property *prop; in ima_free_kexec_buffer() local
175 prop = of_find_property(of_chosen, "linux,ima-kexec-buffer", NULL); in ima_free_kexec_buffer()
176 if (!prop) in ima_free_kexec_buffer()
177 return -ENOENT; in ima_free_kexec_buffer()
179 ret = do_get_kexec_buffer(prop->value, prop->length, &addr, &size); in ima_free_kexec_buffer()
183 ret = of_remove_property(of_chosen, prop); in ima_free_kexec_buffer()
193 * remove_ima_buffer - remove the IMA buffer property and reservation from @fdt
206 const void *prop; in remove_ima_buffer() local
211 prop = fdt_getprop(fdt, chosen_node, "linux,ima-kexec-buffer", &len); in remove_ima_buffer()
212 if (!prop) in remove_ima_buffer()
215 ret = do_get_kexec_buffer(prop, len, &addr, &size); in remove_ima_buffer()
216 fdt_delprop(fdt, chosen_node, "linux,ima-kexec-buffer"); in remove_ima_buffer()
227 * setup_ima_buffer - add IMA buffer information to the fdt
239 if (!image->ima_buffer_size) in setup_ima_buffer()
243 "linux,ima-kexec-buffer", in setup_ima_buffer()
244 image->ima_buffer_addr, in setup_ima_buffer()
245 image->ima_buffer_size); in setup_ima_buffer()
247 return -EINVAL; in setup_ima_buffer()
249 ret = fdt_add_mem_rsv(fdt, image->ima_buffer_addr, in setup_ima_buffer()
250 image->ima_buffer_size); in setup_ima_buffer()
252 return -EINVAL; in setup_ima_buffer()
255 image->ima_buffer_addr, image->ima_buffer_size); in setup_ima_buffer()
276 ret = fdt_delprop(fdt, chosen_node, "linux,kho-fdt"); in kho_add_chosen()
277 if (ret && ret != -FDT_ERR_NOTFOUND) in kho_add_chosen()
279 ret = fdt_delprop(fdt, chosen_node, "linux,kho-scratch"); in kho_add_chosen()
280 if (ret && ret != -FDT_ERR_NOTFOUND) in kho_add_chosen()
283 if (!image->kho.fdt || !image->kho.scratch) in kho_add_chosen()
286 fdt_mem = image->kho.fdt; in kho_add_chosen()
288 scratch_mem = image->kho.scratch->mem; in kho_add_chosen()
289 scratch_len = image->kho.scratch->bufsz; in kho_add_chosen()
293 ret = fdt_appendprop_addrrange(fdt, 0, chosen_node, "linux,kho-fdt", in kho_add_chosen()
297 ret = fdt_appendprop_addrrange(fdt, 0, chosen_node, "linux,kho-scratch", in kho_add_chosen()
305 * of_kexec_alloc_and_setup_fdt - Alloc and setup a new Flattened Device Tree
323 const void *prop; in of_kexec_alloc_and_setup_fdt() local
343 if (ret == -EINVAL) { in of_kexec_alloc_and_setup_fdt()
349 if (chosen_node == -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
358 if (ret && ret != -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
360 ret = fdt_delprop(fdt, chosen_node, "linux,usable-memory-range"); in of_kexec_alloc_and_setup_fdt()
361 if (ret && ret != -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
365 prop = fdt_getprop(fdt, chosen_node, "linux,initrd-start", &len); in of_kexec_alloc_and_setup_fdt()
366 if (prop) { in of_kexec_alloc_and_setup_fdt()
369 tmp_start = of_read_number(prop, len / 4); in of_kexec_alloc_and_setup_fdt()
371 prop = fdt_getprop(fdt, chosen_node, "linux,initrd-end", &len); in of_kexec_alloc_and_setup_fdt()
372 if (!prop) { in of_kexec_alloc_and_setup_fdt()
373 ret = -EINVAL; in of_kexec_alloc_and_setup_fdt()
377 tmp_end = of_read_number(prop, len / 4); in of_kexec_alloc_and_setup_fdt()
383 tmp_size = tmp_end - tmp_start; in of_kexec_alloc_and_setup_fdt()
385 if (ret == -ENOENT) in of_kexec_alloc_and_setup_fdt()
388 if (ret == -EINVAL) in of_kexec_alloc_and_setup_fdt()
392 /* add initrd-* */ in of_kexec_alloc_and_setup_fdt()
394 ret = fdt_setprop_u64(fdt, chosen_node, "linux,initrd-start", in of_kexec_alloc_and_setup_fdt()
399 ret = fdt_setprop_u64(fdt, chosen_node, "linux,initrd-end", in of_kexec_alloc_and_setup_fdt()
409 ret = fdt_delprop(fdt, chosen_node, "linux,initrd-start"); in of_kexec_alloc_and_setup_fdt()
410 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
413 ret = fdt_delprop(fdt, chosen_node, "linux,initrd-end"); in of_kexec_alloc_and_setup_fdt()
414 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
418 if (image->type == KEXEC_TYPE_CRASH) { in of_kexec_alloc_and_setup_fdt()
421 "linux,elfcorehdr", image->elf_load_addr, in of_kexec_alloc_and_setup_fdt()
422 image->elf_headers_sz); in of_kexec_alloc_and_setup_fdt()
430 ret = fdt_add_mem_rsv(fdt, image->elf_load_addr, in of_kexec_alloc_and_setup_fdt()
431 image->elf_headers_sz); in of_kexec_alloc_and_setup_fdt()
436 /* add linux,usable-memory-range */ in of_kexec_alloc_and_setup_fdt()
438 "linux,usable-memory-range", crashk_res.start, in of_kexec_alloc_and_setup_fdt()
439 crashk_res.end - crashk_res.start + 1); in of_kexec_alloc_and_setup_fdt()
445 "linux,usable-memory-range", in of_kexec_alloc_and_setup_fdt()
447 crashk_low_res.end - crashk_low_res.start + 1); in of_kexec_alloc_and_setup_fdt()
466 if (ret && (ret != -FDT_ERR_NOTFOUND)) in of_kexec_alloc_and_setup_fdt()
470 /* add kaslr-seed */ in of_kexec_alloc_and_setup_fdt()
471 ret = fdt_delprop(fdt, chosen_node, "kaslr-seed"); in of_kexec_alloc_and_setup_fdt()
472 if (ret == -FDT_ERR_NOTFOUND) in of_kexec_alloc_and_setup_fdt()
480 ret = fdt_setprop_u64(fdt, chosen_node, "kaslr-seed", seed); in of_kexec_alloc_and_setup_fdt()
485 "kaslr-seed"); in of_kexec_alloc_and_setup_fdt()
488 /* add rng-seed */ in of_kexec_alloc_and_setup_fdt()
492 ret = fdt_setprop_placeholder(fdt, chosen_node, "rng-seed", in of_kexec_alloc_and_setup_fdt()
499 "rng-seed"); in of_kexec_alloc_and_setup_fdt()
502 ret = fdt_setprop(fdt, chosen_node, "linux,booted-from-kexec", NULL, 0); in of_kexec_alloc_and_setup_fdt()