physmem.c (77bf4400319db9d2a8af6b00c2be6faa0f3d07cb) physmem.c (ba180fd437156f7fd8cfb2fdd021d949eeef08d6)
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#include "linux/bootmem.h"
7#include "linux/mm.h"
8#include "linux/pfn.h"

--- 61 unchanged lines hidden (view full) ---

70{
71 __u64 offset;
72 int fd, err;
73
74 fd = phys_mapping(phys, &offset);
75 err = os_map_memory((void *) virt, fd, offset, len, r, w, x);
76 if (err) {
77 if (err == -ENOMEM)
1/*
2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3 * Licensed under the GPL
4 */
5
6#include "linux/bootmem.h"
7#include "linux/mm.h"
8#include "linux/pfn.h"

--- 61 unchanged lines hidden (view full) ---

70{
71 __u64 offset;
72 int fd, err;
73
74 fd = phys_mapping(phys, &offset);
75 err = os_map_memory((void *) virt, fd, offset, len, r, w, x);
76 if (err) {
77 if (err == -ENOMEM)
78 printk("try increasing the host's "
78 printk(KERN_ERR "try increasing the host's "
79 "/proc/sys/vm/max_map_count to <physical "
80 "memory size>/4096\n");
81 panic("map_memory(0x%lx, %d, 0x%llx, %ld, %d, %d, %d) failed, "
82 "err = %d\n", virt, fd, offset, len, r, w, x, err);
83 }
84}
85
86extern int __syscall_stub_start;

--- 11 unchanged lines hidden (view full) ---

98 offset = uml_reserved - uml_physmem;
99 err = os_map_memory((void *) uml_reserved, physmem_fd, offset,
100 len - offset, 1, 1, 1);
101 if (err < 0) {
102 os_print_error(err, "Mapping memory");
103 exit(1);
104 }
105
79 "/proc/sys/vm/max_map_count to <physical "
80 "memory size>/4096\n");
81 panic("map_memory(0x%lx, %d, 0x%llx, %ld, %d, %d, %d) failed, "
82 "err = %d\n", virt, fd, offset, len, r, w, x, err);
83 }
84}
85
86extern int __syscall_stub_start;

--- 11 unchanged lines hidden (view full) ---

98 offset = uml_reserved - uml_physmem;
99 err = os_map_memory((void *) uml_reserved, physmem_fd, offset,
100 len - offset, 1, 1, 1);
101 if (err < 0) {
102 os_print_error(err, "Mapping memory");
103 exit(1);
104 }
105
106 /* Special kludge - This page will be mapped in to userspace processes
106 /*
107 * Special kludge - This page will be mapped in to userspace processes
107 * from physmem_fd, so it needs to be written out there.
108 */
109 os_seek_file(physmem_fd, __pa(&__syscall_stub_start));
110 os_write_file(physmem_fd, &__syscall_stub_start, PAGE_SIZE);
111
112 bootmap_size = init_bootmem(pfn, pfn + delta);
113 free_bootmem(__pa(reserve_end) + bootmap_size,
114 len - bootmap_size - reserve);

--- 82 unchanged lines hidden (view full) ---

197 struct iomem_region *region = iomem_regions;
198 unsigned long iomem_start = high_physmem + PAGE_SIZE;
199 int err;
200
201 while (region != NULL) {
202 err = os_map_memory((void *) iomem_start, region->fd, 0,
203 region->size, 1, 1, 0);
204 if (err)
108 * from physmem_fd, so it needs to be written out there.
109 */
110 os_seek_file(physmem_fd, __pa(&__syscall_stub_start));
111 os_write_file(physmem_fd, &__syscall_stub_start, PAGE_SIZE);
112
113 bootmap_size = init_bootmem(pfn, pfn + delta);
114 free_bootmem(__pa(reserve_end) + bootmap_size,
115 len - bootmap_size - reserve);

--- 82 unchanged lines hidden (view full) ---

198 struct iomem_region *region = iomem_regions;
199 unsigned long iomem_start = high_physmem + PAGE_SIZE;
200 int err;
201
202 while (region != NULL) {
203 err = os_map_memory((void *) iomem_start, region->fd, 0,
204 region->size, 1, 1, 0);
205 if (err)
205 printk("Mapping iomem region for driver '%s' failed, "
206 "errno = %d\n", region->driver, -err);
206 printk(KERN_ERR "Mapping iomem region for driver '%s' "
207 "failed, errno = %d\n", region->driver, -err);
207 else {
208 region->virt = iomem_start;
209 region->phys = __pa(region->virt);
210 }
211
212 iomem_start += region->size + PAGE_SIZE;
213 region = region->next;
214 }
215
216 return 0;
217}
218
219__initcall(setup_iomem);
208 else {
209 region->virt = iomem_start;
210 region->phys = __pa(region->virt);
211 }
212
213 iomem_start += region->size + PAGE_SIZE;
214 region = region->next;
215 }
216
217 return 0;
218}
219
220__initcall(setup_iomem);