1// SPDX-License-Identifier: GPL-2.0
2#include <linux/crash_dump.h>
3#include <linux/io.h>
4#include <linux/uio.h>
5
6ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn,
7 size_t csize, unsigned long offset)
8{
9 void *vaddr;
10
11 if (!csize)
12 return 0;
13
14 vaddr = memremap(__pfn_to_phys(pfn), PAGE_SIZE, flags: MEMREMAP_WB);
15 if (!vaddr)
16 return -ENOMEM;
17
18 csize = copy_to_iter(addr: vaddr + offset, bytes: csize, i: iter);
19
20 memunmap(addr: vaddr);
21
22 return csize;
23}
24

source code of linux/arch/loongarch/kernel/crash_dump.c