summaryrefslogtreecommitdiff
path: root/kernel/kexec_core.c
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2026-02-13 18:10:09 +0100
committerMiquel Raynal <miquel.raynal@bootlin.com>2026-02-13 18:10:09 +0100
commit7e96d76c74175ef9747f6fc14ee567f89d72153c (patch)
treeca62cab4867acccdf339e2b199c247b910e24a8b /kernel/kexec_core.c
parent875382759298650c96192bf2c12e2d1e4575de92 (diff)
parent6c7860aa28b81b7e909b8d2072ed76fa22db6eda (diff)
Merge tag 'nand/for-7.0' into mtd/next
SPI NAND - The major feature this release is the support for octal DTR modes (8D-8D-8D). - There has been as well a series of conversion to scoped for each OF child loops. - Support for Foresee F35SQB002G chips has been added. Other changes are small fixes.
Diffstat (limited to 'kernel/kexec_core.c')
-rw-r--r--kernel/kexec_core.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 0f92acdd354d..95c585c6ddc3 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -953,17 +953,24 @@ int kimage_load_segment(struct kimage *image, int idx)
return result;
}
-void *kimage_map_segment(struct kimage *image,
- unsigned long addr, unsigned long size)
+void *kimage_map_segment(struct kimage *image, int idx)
{
+ unsigned long addr, size, eaddr;
unsigned long src_page_addr, dest_page_addr = 0;
- unsigned long eaddr = addr + size;
kimage_entry_t *ptr, entry;
struct page **src_pages;
unsigned int npages;
+ struct page *cma;
void *vaddr = NULL;
int i;
+ cma = image->segment_cma[idx];
+ if (cma)
+ return page_address(cma);
+
+ addr = image->segment[idx].mem;
+ size = image->segment[idx].memsz;
+ eaddr = addr + size;
/*
* Collect the source pages and map them in a contiguous VA range.
*/
@@ -1004,7 +1011,8 @@ void *kimage_map_segment(struct kimage *image,
void kimage_unmap_segment(void *segment_buffer)
{
- vunmap(segment_buffer);
+ if (is_vmalloc_addr(segment_buffer))
+ vunmap(segment_buffer);
}
struct kexec_load_limit {