Lines Matching refs:segment

38  * rproc_coredump_add_segment() - add segment of device memory to coredump
41 * @size: size of segment
50 struct rproc_dump_segment *segment;
52 segment = kzalloc(sizeof(*segment), GFP_KERNEL);
53 if (!segment)
56 segment->da = da;
57 segment->size = size;
59 list_add_tail(&segment->node, &rproc->dump_segments);
66 * rproc_coredump_add_custom_segment() - add custom coredump segment
69 * @size: size of segment
70 * @dumpfn: custom dump function called for each segment during coredump
74 * and associate the segment with the given custom dump function and private
82 struct rproc_dump_segment *segment,
87 struct rproc_dump_segment *segment;
89 segment = kzalloc(sizeof(*segment), GFP_KERNEL);
90 if (!segment)
93 segment->da = da;
94 segment->size = size;
95 segment->priv = priv;
96 segment->dump = dumpfn;
98 list_add_tail(&segment->node, &rproc->dump_segments);
138 struct rproc_dump_segment *segment;
140 list_for_each_entry(segment, segments, node) {
141 if (user_offset < segment->size) {
142 *data_left = segment->size - user_offset;
143 return segment;
145 user_offset -= segment->size;
153 struct rproc_dump_segment *segment,
159 if (segment->dump) {
160 segment->dump(rproc, segment, dest, offset, size);
162 ptr = rproc_da_to_va(rproc, segment->da + offset, size, &is_iomem);
165 "invalid copy request for segment %pad with offset %zu and size %zu)\n",
166 &segment->da, offset, size);
196 * Find out the segment memory chunk to be copied based on offset.
237 struct rproc_dump_segment *segment;
258 list_for_each_entry(segment, &rproc->dump_segments, node) {
266 data_size += segment->size;
294 list_for_each_entry(segment, &rproc->dump_segments, node) {
298 elf_phdr_set_p_vaddr(class, phdr, segment->da);
299 elf_phdr_set_p_paddr(class, phdr, segment->da);
300 elf_phdr_set_p_filesz(class, phdr, segment->size);
301 elf_phdr_set_p_memsz(class, phdr, segment->size);
306 rproc_copy_segment(rproc, data + offset, segment, 0,
307 segment->size);
347 struct rproc_dump_segment *segment;
381 list_for_each_entry(segment, &rproc->dump_segments, node) {
383 strtbl_size += strlen(segment->priv) + 1;
385 data_size += segment->size;
434 list_for_each_entry(segment, &rproc->dump_segments, node) {
438 elf_shdr_set_sh_addr(class, shdr, segment->da);
439 elf_shdr_set_sh_size(class, shdr, segment->size);
443 elf_strtbl_add(segment->priv, ehdr, class, &strtbl_index));
447 rproc_copy_segment(rproc, data + offset, segment, 0,
448 segment->size);