ChangeSet 1.1311.1.35, 2005/03/24 09:30:14-07:00, djm@djmnc4000.(none)
Merge http://djm@sportsman//home/djm/xeno-unstable-ia64.bk
into djmnc4000.(none):/home/djm/src/xen/xeno-unstable-ia64.bk
domain.c | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c 2005-03-25 19:05:23 -05:00
+++ b/xen/arch/ia64/domain.c 2005-03-25 19:05:23 -05:00
@@ -39,8 +39,6 @@
//FIXME: alignment should be 256MB, lest Linux use a 256MB page size
unsigned long dom0_align = 64*1024*1024;
-extern kmem_cache_t *domain_struct_cachep;
-
// initialized by arch/ia64/setup.c:find_initrd()
unsigned long initrd_start = 0, initrd_end = 0;
@@ -136,22 +134,24 @@
struct domain *arch_alloc_domain_struct(void)
{
- return xmem_cache_alloc(domain_struct_cachep);
+ return xmalloc(struct domain);
}
void arch_free_domain_struct(struct domain *d)
{
- xmem_cache_free(domain_struct_cachep,d);
+ xfree(d);
}
struct exec_domain *arch_alloc_exec_domain_struct(void)
{
- return alloc_task_struct();
+ /* Per-vp stack is used here. So we need keep exec_domain
+ * same page as per-vp stack */
+ return alloc_xenheap_pages(KERNEL_STACK_SIZE_ORDER);
}
void arch_free_exec_domain_struct(struct exec_domain *ed)
{
- free_task_struct(ed);
+ free_xenheap_pages(ed, KERNEL_STACK_SIZE_ORDER);
}
void arch_do_createdomain(struct exec_domain *ed)
@@ -313,7 +313,7 @@
if (d == dom0) p = map_new_domain0_page(mpaddr);
else
#endif
- p = alloc_page(GFP_KERNEL);
+ p = alloc_domheap_page(d);
if (unlikely(!p)) {
printf("map_new_domain_page: Can't alloc!!!! Aaaargh!\n");
return(p);
@@ -523,7 +523,13 @@
dom0_size = 128*1024*1024; //FIXME: Should be configurable
}
printf("alloc_dom0: starting (initializing %d
MB...)\n",dom0_size/(1024*1024));
- dom0_start =
__alloc_bootmem(dom0_size,dom0_align,__pa(MAX_DMA_ADDRESS));
+
+ /* FIXME: The first trunk (say 256M) should always be assigned to
+ * Dom0, since Dom0's physical == machine address for DMA purpose.
+ * Some old version linux, like 2.4, assumes physical memory existing
+ * in 2nd 64M space.
+ */
+ dom0_start = alloc_boot_pages(dom0_size,dom0_align);
if (!dom0_start) {
printf("construct_dom0: can't allocate contiguous memory size=%p\n",
dom0_size);
@@ -625,7 +631,7 @@
// prepare domain0 pagetable (maps METAphysical to physical)
// following is roughly mm_init() in linux/kernel/fork.c
- d->arch.mm = kmem_cache_alloc(mm_cachep, SLAB_KERNEL);
+ d->arch.mm = xmalloc(struct mm_struct);
if (unlikely(!d->arch.mm)) {
printk("Can't allocate mm_struct for domain0\n");
return -ENOMEM;
@@ -735,7 +741,7 @@
printk("parsedomainelfimage returns %d\n",rc);
if ( rc != 0 ) return rc;
- d->arch.mm = kmem_cache_alloc(mm_cachep, SLAB_KERNEL);
+ d->arch.mm = xmalloc(struct mm_struct);
if (unlikely(!d->arch.mm)) {
printk("Can't allocate mm_struct for domain %d\n",d->id);
return -ENOMEM;
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-changelog
|