[LINUX] Set up /proc/iomem in a sensibel way to indicate

code & data resources, and a RAM area on domU.
From: Gerd Hoffmann <kraxel@suse.de>
Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
kaf24@firebug.cl.cam.ac.uk committed 2006-06-08 10:24:48 +01:00
1 parent 3f63cf9724
commit b4c43b75ea
3 files changed
+21 -15

No files matched your search

@@ -1378,7 +1378,6 @@ legacy_init_iomem_resources(struct e820entry *e820, int nr_map,
res->end = res->start + e820[i].size - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
request_resource(&iomem_resource, res);
#ifndef CONFIG_XEN
if (e820[i].type == E820_RAM) {
/*
* We don't know which RAM region contains kernel data,
@@ -1391,7 +1390,6 @@ legacy_init_iomem_resources(struct e820entry *e820, int nr_map,
request_resource(res, &crashk_res);
#endif
}
#endif
}
}
@@ -1460,8 +1458,16 @@ static void __init register_memory(void)
int i;
/* Nothing to do if not running in dom0. */
if (!(xen_start_info->flags & SIF_INITDOMAIN))
if (!(xen_start_info->flags & SIF_INITDOMAIN)) {
struct e820entry domU_e820 = {
.addr = 0,
.size = max_pfn << PAGE_SHIFT,
.type = E820_RAM,
};
legacy_init_iomem_resources(&domU_e820, 1,
&code_resource, &data_resource);
return;
}
#ifdef CONFIG_XEN
machine_e820 = alloc_bootmem_low_pages(PAGE_SIZE);
@@ -1698,11 +1704,10 @@ void __init setup_arch(char **cmdline_p)
init_mm.brk = (PFN_UP(__pa(xen_start_info->pt_base)) +
xen_start_info->nr_pt_frames) << PAGE_SHIFT;
/* XEN: This is nonsense: kernel may not even be contiguous in RAM. */
/*code_resource.start = virt_to_phys(_text);*/
/*code_resource.end = virt_to_phys(_etext)-1;*/
/*data_resource.start = virt_to_phys(_etext);*/
/*data_resource.end = virt_to_phys(_edata)-1;*/
code_resource.start = virt_to_phys(_text);
code_resource.end = virt_to_phys(_etext)-1;
data_resource.start = virt_to_phys(_etext);
data_resource.end = virt_to_phys(_edata)-1;
parse_cmdline_early(cmdline_p);
@@ -44,9 +44,7 @@ unsigned long end_pfn_map;
*/
unsigned long end_user_pfn = MAXMEM>>PAGE_SHIFT;
#ifndef CONFIG_XEN
extern struct resource code_resource, data_resource;
#endif
/* Check for some hardcoded bad areas that early boot is not allowed to touch */
static inline int bad_addr(unsigned long *addrp, unsigned long size)
@@ -251,8 +249,7 @@ void __init e820_reserve_resources(struct e820entry *e820, int nr_map)
res->end = res->start + e820[i].size - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
request_resource(&iomem_resource, res);
#ifndef CONFIG_XEN
if (e820.map[i].type == E820_RAM) {
if (e820[i].type == E820_RAM) {
/*
* We don't know which RAM region contains kernel data,
* so we try it repeatedly and let the resource manager
@@ -264,7 +261,6 @@ void __init e820_reserve_resources(struct e820entry *e820, int nr_map)
request_resource(res, &crashk_res);
#endif
}
#endif
}
}
@@ -692,12 +692,10 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) &_edata;
init_mm.brk = (unsigned long) &_end;
#ifndef CONFIG_XEN
code_resource.start = virt_to_phys(&_text);
code_resource.end = virt_to_phys(&_etext)-1;
data_resource.start = virt_to_phys(&_etext);
data_resource.end = virt_to_phys(&_edata)-1;
#endif
parse_cmdline_early(cmdline_p);
@@ -921,6 +919,13 @@ void __init setup_arch(char **cmdline_p)
BUG_ON(HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap));
e820_reserve_resources(machine_e820, memmap.nr_entries);
} else {
struct e820entry domU_e820 = {
.addr = 0,
.size = max_pfn << PAGE_SHIFT,
.type = E820_RAM,
};
e820_reserve_resources(&domU_e820, 1);
}
#elif !defined(CONFIG_XEN)
probe_roms();
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.