merge with xen-unstable.hg
authorawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Sat, 27 Jan 2007 21:07:19 +0000 (14:07 -0700)
committerawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Sat, 27 Jan 2007 21:07:19 +0000 (14:07 -0700)
1  2 
linux-2.6-xen-sparse/arch/ia64/kernel/irq_ia64.c
xen/arch/ia64/vmx/vmmu.c
xen/arch/ia64/xen/domain.c

Simple merge
index 17f24837618504be621002c6943552c0d78d0925,f83dd9335b3fdcea777e21e21f685534b48b135f..5eab071de5638c7d371c024fa92fef8d6b98c785
@@@ -1049,16 -1000,48 +1033,31 @@@ int construct_dom0(struct domain *d
        max_pages = dom0_size / PAGE_SIZE;
        d->max_pages = max_pages;
        d->tot_pages = 0;
-       dsi.image_addr = (unsigned long)image_start;
-       dsi.image_len  = image_len;
-       rc = parseelfimage(&dsi);
+       rc = elf_init(&elf, (void*)image_start, image_len);
        if ( rc != 0 )
            return rc;
+ #ifdef VERBOSE
+       elf_set_verbose(&elf);
+ #endif
+       elf_parse_binary(&elf);
+       if (0 != (elf_xen_parse(&elf, &parms)))
+               return rc;
+       printk(" Dom0 kernel: %s, %s, paddr 0x%" PRIx64 " -> 0x%" PRIx64 "\n",
+              elf_64bit(&elf) ? "64-bit" : "32-bit",
+              elf_msb(&elf)   ? "msb"    : "lsb",
+              elf.pstart, elf.pend);
+         if (!elf_64bit(&elf) ||
+           elf_uval(&elf, elf.ehdr, e_machine) != EM_IA_64) {
+               printk("Incompatible kernel binary\n");
+               return -1;
+       }
  
-       p_start = dsi.v_start;
-       pkern_start = dsi.v_kernstart;
-       pkern_end = dsi.v_kernend;
-       pkern_entry = dsi.v_kernentry;
 -#ifdef VALIDATE_VT
 -      /* Temp workaround */
 -      if (running_on_sim)
 -          dsi.xen_section_string = (char *)1;
 -
 -      /* Check whether dom0 is vti domain */
 -      if ((!vmx_enabled) && !dsi.xen_section_string) {
 -          printk("Lack of hardware support for unmodified vmx dom0\n");
 -          panic("");
 -      }
 -
 -      if (vmx_enabled && !dsi.xen_section_string) {
 -          printk("Dom0 is vmx domain!\n");
 -          vmx_dom0 = 1;
 -      }
 -#endif
 -
+       p_start = parms.virt_base;
+       pkern_start = parms.virt_kstart;
+       pkern_end = parms.virt_kend;
+       pkern_entry = parms.virt_entry;
  
  //printk("p_start=%lx, pkern_start=%lx, pkern_end=%lx, pkern_entry=%lx\n",p_start,pkern_start,pkern_end,pkern_entry);