hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/arch/um/kernel/physmem.c
....@@ -1,10 +1,10 @@
1
+// SPDX-License-Identifier: GPL-2.0
12 /*
23 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3
- * Licensed under the GPL
44 */
55
66 #include <linux/module.h>
7
-#include <linux/bootmem.h>
7
+#include <linux/memblock.h>
88 #include <linux/mm.h>
99 #include <linux/pfn.h>
1010 #include <asm/page.h>
....@@ -80,28 +80,23 @@
8080 unsigned long len, unsigned long long highmem)
8181 {
8282 unsigned long reserve = reserve_end - start;
83
- unsigned long pfn = PFN_UP(__pa(reserve_end));
84
- unsigned long delta = (len - reserve) >> PAGE_SHIFT;
85
- unsigned long offset, bootmap_size;
86
- long map_size;
83
+ long map_size = len - reserve;
8784 int err;
8885
89
- offset = uml_reserved - uml_physmem;
90
- map_size = len - offset;
9186 if(map_size <= 0) {
9287 os_warn("Too few physical memory! Needed=%lu, given=%lu\n",
93
- offset, len);
88
+ reserve, len);
9489 exit(1);
9590 }
9691
9792 physmem_fd = create_mem_file(len + highmem);
9893
99
- err = os_map_memory((void *) uml_reserved, physmem_fd, offset,
94
+ err = os_map_memory((void *) reserve_end, physmem_fd, reserve,
10095 map_size, 1, 1, 1);
10196 if (err < 0) {
10297 os_warn("setup_physmem - mapping %ld bytes of memory at 0x%p "
10398 "failed - errno = %d\n", map_size,
104
- (void *) uml_reserved, err);
99
+ (void *) reserve_end, err);
105100 exit(1);
106101 }
107102
....@@ -113,9 +108,11 @@
113108 os_write_file(physmem_fd, __syscall_stub_start, PAGE_SIZE);
114109 os_fsync_file(physmem_fd);
115110
116
- bootmap_size = init_bootmem(pfn, pfn + delta);
117
- free_bootmem(__pa(reserve_end) + bootmap_size,
118
- len - bootmap_size - reserve);
111
+ memblock_add(__pa(start), len + highmem);
112
+ memblock_reserve(__pa(start), reserve);
113
+
114
+ min_low_pfn = PFN_UP(__pa(reserve_end));
115
+ max_low_pfn = min_low_pfn + (map_size >> PAGE_SHIFT);
119116 }
120117
121118 int phys_mapping(unsigned long phys, unsigned long long *offset_out)
....@@ -146,6 +143,7 @@
146143
147144 return fd;
148145 }
146
+EXPORT_SYMBOL(phys_mapping);
149147
150148 static int __init uml_mem_setup(char *line, int *add)
151149 {