ia64/xen-unstable
changeset 8900:ded14681ae84
merge
author | awilliam@xenbuild.aw |
---|---|
date | Sat Feb 18 13:17:24 2006 -0700 (2006-02-18) |
parents | 864dcee1f899 dcbe36ee2171 |
children | f53282b4b33a |
files | linux-2.6-xen-sparse/arch/ia64/kernel/setup.c xen/include/asm-ia64/config.h |
line diff
1.1 --- a/linux-2.6-xen-sparse/arch/ia64/kernel/setup.c Sat Feb 18 11:56:51 2006 +0100 1.2 +++ b/linux-2.6-xen-sparse/arch/ia64/kernel/setup.c Sat Feb 18 13:17:24 2006 -0700 1.3 @@ -61,6 +61,9 @@ 1.4 #include <asm/system.h> 1.5 #include <asm/unistd.h> 1.6 #include <asm/system.h> 1.7 +#ifdef CONFIG_XEN 1.8 +#include <asm/hypervisor.h> 1.9 +#endif 1.10 1.11 #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) 1.12 # error "struct cpuinfo_ia64 too big!" 1.13 @@ -243,6 +246,12 @@ reserve_memory (void) 1.14 rsvd_region[n].end = (unsigned long) ia64_imva(_end); 1.15 n++; 1.16 1.17 +#ifdef CONFIG_XEN 1.18 + rsvd_region[n].start = (unsigned long) (HYPERVISOR_shared_info->arch.start_info_pfn << PAGE_SHIFT); 1.19 + rsvd_region[n].end = rsvd_region[n].start + PAGE_SIZE; 1.20 + n++; 1.21 +#endif 1.22 + 1.23 #ifdef CONFIG_BLK_DEV_INITRD 1.24 if (ia64_boot_param->initrd_start) { 1.25 rsvd_region[n].start = (unsigned long)__va(ia64_boot_param->initrd_start);
2.1 --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c Sat Feb 18 11:56:51 2006 +0100 2.2 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c Sat Feb 18 13:17:24 2006 -0700 2.3 @@ -106,8 +106,10 @@ int bind_virq_to_irqhandler( 2.4 BUG_ON(HYPERVISOR_event_channel_op(&op) != 0 ); 2.5 evtchn = op.u.bind_virq.port; 2.6 2.7 - if (!unbound_irq(evtchn)) 2.8 - return -EINVAL; 2.9 + if (!unbound_irq(evtchn)) { 2.10 + evtchn = -EINVAL; 2.11 + goto out; 2.12 + } 2.13 2.14 evtchns[evtchn].handler = handler; 2.15 evtchns[evtchn].dev_id = dev_id; 2.16 @@ -115,6 +117,7 @@ int bind_virq_to_irqhandler( 2.17 irq_info[evtchn] = mk_irq_info(IRQT_VIRQ, virq, evtchn); 2.18 2.19 unmask_evtchn(evtchn); 2.20 +out: 2.21 spin_unlock(&irq_mapping_update_lock); 2.22 return evtchn; 2.23 } 2.24 @@ -125,8 +128,10 @@ int bind_evtchn_to_irqhandler(unsigned i 2.25 { 2.26 spin_lock(&irq_mapping_update_lock); 2.27 2.28 - if (!unbound_irq(evtchn)) 2.29 - return -EINVAL; 2.30 + if (!unbound_irq(evtchn)) { 2.31 + evtchn = -EINVAL; 2.32 + goto out; 2.33 + } 2.34 2.35 evtchns[evtchn].handler = handler; 2.36 evtchns[evtchn].dev_id = dev_id; 2.37 @@ -134,6 +139,7 @@ int bind_evtchn_to_irqhandler(unsigned i 2.38 irq_info[evtchn] = mk_irq_info(IRQT_EVTCHN, 0, evtchn); 2.39 2.40 unmask_evtchn(evtchn); 2.41 +out: 2.42 spin_unlock(&irq_mapping_update_lock); 2.43 return evtchn; 2.44 } 2.45 @@ -158,7 +164,7 @@ void unbind_from_irqhandler(unsigned int 2.46 spin_lock(&irq_mapping_update_lock); 2.47 2.48 if (unbound_irq(irq)) 2.49 - return; 2.50 + goto out; 2.51 2.52 op.cmd = EVTCHNOP_close; 2.53 op.u.close.port = evtchn; 2.54 @@ -179,6 +185,7 @@ void unbind_from_irqhandler(unsigned int 2.55 evtchns[evtchn].handler = NULL; 2.56 evtchns[evtchn].opened = 0; 2.57 2.58 +out: 2.59 spin_unlock(&irq_mapping_update_lock); 2.60 } 2.61
3.1 --- a/xen/arch/ia64/linux-xen/README.origin Sat Feb 18 11:56:51 2006 +0100 3.2 +++ b/xen/arch/ia64/linux-xen/README.origin Sat Feb 18 13:17:24 2006 -0700 3.3 @@ -5,19 +5,24 @@ 3.4 # (e.g. with #ifdef XEN or XEN in a comment) so that they can be 3.5 # easily updated to future versions of the corresponding Linux files. 3.6 3.7 -efi.c -> linux/arch/ia64/kernel/efi.c 3.8 -entry.h -> linux/arch/ia64/kernel/entry.h 3.9 -entry.S -> linux/arch/ia64/kernel/entry.S 3.10 -hpsim_ssc.h -> linux/arch/ia64/hp/sim/hpsim_ssc.h 3.11 -irq_ia64.c -> linux/arch/ia64/kernel/irq_ia64.c 3.12 -minstate.h -> linux/arch/ia64/kernel/minstate.h 3.13 -mm_contig.c -> linux/arch/ia64/mm/contig.c 3.14 -pal.S -> linux/arch/ia64/kernel/pal.S 3.15 -sal.c -> linux/arch/ia64/kernel/sal.c 3.16 -setup.c -> linux/arch/ia64/kernel/setup.c 3.17 -smp.c -> linux/arch/ia64/kernel/smp.c 3.18 -smpboot.c -> linux/arch/ia64/kernel/smpboot.c 3.19 -sort.c -> linux/lib/sort.c 3.20 -time.c -> linux/arch/ia64/kernel/time.c 3.21 -tlb.c -> linux/arch/ia64/mm/tlb.c 3.22 -unaligned.c -> linux/arch/ia64/kernel/unaligned.c 3.23 +efi.c -> linux/arch/ia64/kernel/efi.c 3.24 +entry.h -> linux/arch/ia64/kernel/entry.h 3.25 +entry.S -> linux/arch/ia64/kernel/entry.S 3.26 +head.S -> linux/arch/ia64/kernel/head.S 3.27 +hpsim_ssc.h -> linux/arch/ia64/hp/sim/hpsim_ssc.h 3.28 +irq_ia64.c -> linux/arch/ia64/kernel/irq_ia64.c 3.29 +minstate.h -> linux/arch/ia64/kernel/minstate.h 3.30 +mm_contig.c -> linux/arch/ia64/mm/contig.c 3.31 +pal.S -> linux/arch/ia64/kernel/pal.S 3.32 +process-linux-xen.c -> linux/arch/ia64/kernel/process.c 3.33 +sal.c -> linux/arch/ia64/kernel/sal.c 3.34 +setup.c -> linux/arch/ia64/kernel/setup.c 3.35 +smp.c -> linux/arch/ia64/kernel/smp.c 3.36 +smpboot.c -> linux/arch/ia64/kernel/smpboot.c 3.37 +sort.c -> linux/lib/sort.c 3.38 +time.c -> linux/arch/ia64/kernel/time.c 3.39 +tlb.c -> linux/arch/ia64/mm/tlb.c 3.40 +unaligned.c -> linux/arch/ia64/kernel/unaligned.c 3.41 +unwind.c -> linux/arch/ia64/kernel/unwind.c 3.42 +unwind_decoder.c -> linux/arch/ia64/kernel/unwind_decoder.c 3.43 +unwind_i.h -> linux/arch/ia64/kernel/unwind_i.h
4.1 --- a/xen/arch/ia64/linux-xen/irq_ia64.c Sat Feb 18 11:56:51 2006 +0100 4.2 +++ b/xen/arch/ia64/linux-xen/irq_ia64.c Sat Feb 18 13:17:24 2006 -0700 4.3 @@ -169,7 +169,7 @@ ia64_handle_irq (ia64_vector vector, str 4.4 * handler needs to be able to wait for further keyboard interrupts, which can't 4.5 * come through until ia64_eoi() has been done. 4.6 */ 4.7 - xen_irq_exit(regs); 4.8 + irq_exit(); 4.9 } 4.10 4.11 #ifdef CONFIG_HOTPLUG_CPU
5.1 --- a/xen/arch/ia64/linux/README.origin Sat Feb 18 11:56:51 2006 +0100 5.2 +++ b/xen/arch/ia64/linux/README.origin Sat Feb 18 13:17:24 2006 -0700 5.3 @@ -5,14 +5,15 @@ needs to be changed, move it to ../linux 5.4 the instructions in the README there. 5.5 5.6 cmdline.c -> linux/lib/cmdline.c 5.7 -efi_stub.S -> linux/arch/ia64/efi_stub.S 5.8 +efi_stub.S -> linux/arch/ia64/kernel/efi_stub.S 5.9 extable.c -> linux/arch/ia64/mm/extable.c 5.10 hpsim.S -> linux/arch/ia64/hp/sim/hpsim.S 5.11 ia64_ksyms.c -> linux/arch/ia64/kernel/ia64_ksyms.c 5.12 +irq_lsapic.c -> linux/arch/ia64/kernel/irq_lsapic.c 5.13 linuxextable.c -> linux/kernel/extable.c 5.14 machvec.c -> linux/arch/ia64/kernel/machvec.c 5.15 patch.c -> linux/arch/ia64/kernel/patch.c 5.16 -pcdp.h -> drivers/firmware/pcdp.h 5.17 +pcdp.h -> linux/drivers/firmware/pcdp.h 5.18 5.19 bitop.c -> linux/arch/ia64/lib/bitop.c 5.20 clear_page.S -> linux/arch/ia64/lib/clear_page.S
6.1 --- a/xen/arch/ia64/vmx/vmx_init.c Sat Feb 18 11:56:51 2006 +0100 6.2 +++ b/xen/arch/ia64/vmx/vmx_init.c Sat Feb 18 13:17:24 2006 -0700 6.3 @@ -317,7 +317,7 @@ int vmx_alloc_contig_pages(struct domain 6.4 for (j = io_ranges[i].start; 6.5 j < io_ranges[i].start + io_ranges[i].size; 6.6 j += PAGE_SIZE) 6.7 - map_domain_page(d, j, io_ranges[i].type); 6.8 + assign_domain_page(d, j, io_ranges[i].type); 6.9 } 6.10 6.11 conf_nr = VMX_CONFIG_PAGES(d); 6.12 @@ -334,14 +334,14 @@ int vmx_alloc_contig_pages(struct domain 6.13 for (i = 0; 6.14 i < (end < MMIO_START ? end : MMIO_START); 6.15 i += PAGE_SIZE, pgnr++) 6.16 - map_domain_page(d, i, pgnr << PAGE_SHIFT); 6.17 + assign_domain_page(d, i, pgnr << PAGE_SHIFT); 6.18 6.19 /* Map normal memory beyond 4G */ 6.20 if (unlikely(end > MMIO_START)) { 6.21 start = 4 * MEM_G; 6.22 end = start + (end - 3 * MEM_G); 6.23 for (i = start; i < end; i += PAGE_SIZE, pgnr++) 6.24 - map_domain_page(d, i, pgnr << PAGE_SHIFT); 6.25 + assign_domain_page(d, i, pgnr << PAGE_SHIFT); 6.26 } 6.27 6.28 d->arch.max_pfn = end >> PAGE_SHIFT; 6.29 @@ -356,7 +356,7 @@ int vmx_alloc_contig_pages(struct domain 6.30 /* Map guest firmware */ 6.31 pgnr = page_to_mfn(page); 6.32 for (i = GFW_START; i < GFW_START + GFW_SIZE; i += PAGE_SIZE, pgnr++) 6.33 - map_domain_page(d, i, pgnr << PAGE_SHIFT); 6.34 + assign_domain_page(d, i, pgnr << PAGE_SHIFT); 6.35 6.36 if (unlikely((page = alloc_domheap_pages(d, 1, 0)) == NULL)) { 6.37 printk("Could not allocate order=1 pages for vmx contig alloc\n"); 6.38 @@ -365,9 +365,9 @@ int vmx_alloc_contig_pages(struct domain 6.39 6.40 /* Map for shared I/O page and xenstore */ 6.41 pgnr = page_to_mfn(page); 6.42 - map_domain_page(d, IO_PAGE_START, pgnr << PAGE_SHIFT); 6.43 + assign_domain_page(d, IO_PAGE_START, pgnr << PAGE_SHIFT); 6.44 pgnr++; 6.45 - map_domain_page(d, STORE_PAGE_START, pgnr << PAGE_SHIFT); 6.46 + assign_domain_page(d, STORE_PAGE_START, pgnr << PAGE_SHIFT); 6.47 6.48 set_bit(ARCH_VMX_CONTIG_MEM, &v->arch.arch_vmx.flags); 6.49 return 0;
7.1 --- a/xen/arch/ia64/xen/domain.c Sat Feb 18 11:56:51 2006 +0100 7.2 +++ b/xen/arch/ia64/xen/domain.c Sat Feb 18 13:17:24 2006 -0700 7.3 @@ -251,9 +251,12 @@ int arch_domain_create(struct domain *d) 7.4 return 0; 7.5 7.6 fail_nomem: 7.7 - free_xenheap_page(d->shared_info); 7.8 - xfree(d->arch.mm); 7.9 - pgd_free(d->arch.mm->pgd); 7.10 + if (d->arch.mm->pgd != NULL) 7.11 + pgd_free(d->arch.mm->pgd); 7.12 + if (d->arch.mm != NULL) 7.13 + xfree(d->arch.mm); 7.14 + if (d->shared_info != NULL) 7.15 + free_xenheap_page(d->shared_info); 7.16 return -ENOMEM; 7.17 } 7.18 7.19 @@ -389,7 +392,7 @@ printk("map_new_domain0_page: start=%p,e 7.20 } 7.21 7.22 /* allocate new page for domain and map it to the specified metaphysical addr */ 7.23 -struct page * map_new_domain_page(struct domain *d, unsigned long mpaddr) 7.24 +struct page * assign_new_domain_page(struct domain *d, unsigned long mpaddr) 7.25 { 7.26 struct mm_struct *mm = d->arch.mm; 7.27 struct page *p = (struct page *)0; 7.28 @@ -400,7 +403,7 @@ struct page * map_new_domain_page(struct 7.29 extern unsigned long vhpt_paddr, vhpt_pend; 7.30 7.31 if (!mm->pgd) { 7.32 - printk("map_new_domain_page: domain pgd must exist!\n"); 7.33 + printk("assign_new_domain_page: domain pgd must exist!\n"); 7.34 return(p); 7.35 } 7.36 pgd = pgd_offset(mm,mpaddr); 7.37 @@ -428,21 +431,21 @@ extern unsigned long vhpt_paddr, vhpt_pe 7.38 if (p) memset(__va(page_to_maddr(p)),0,PAGE_SIZE); 7.39 } 7.40 if (unlikely(!p)) { 7.41 -printf("map_new_domain_page: Can't alloc!!!! Aaaargh!\n"); 7.42 +printf("assign_new_domain_page: Can't alloc!!!! Aaaargh!\n"); 7.43 return(p); 7.44 } 7.45 if (unlikely(page_to_maddr(p) > vhpt_paddr && page_to_maddr(p) < vhpt_pend)) { 7.46 - printf("map_new_domain_page: reassigned vhpt page %p!!\n",page_to_maddr(p)); 7.47 + printf("assign_new_domain_page: reassigned vhpt page %p!!\n",page_to_maddr(p)); 7.48 } 7.49 set_pte(pte, pfn_pte(page_to_maddr(p) >> PAGE_SHIFT, 7.50 __pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX))); 7.51 } 7.52 - else printk("map_new_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.53 + else printk("assign_new_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.54 return p; 7.55 } 7.56 7.57 /* map a physical address to the specified metaphysical addr */ 7.58 -void map_domain_page(struct domain *d, unsigned long mpaddr, unsigned long physaddr) 7.59 +void assign_domain_page(struct domain *d, unsigned long mpaddr, unsigned long physaddr) 7.60 { 7.61 struct mm_struct *mm = d->arch.mm; 7.62 pgd_t *pgd; 7.63 @@ -451,7 +454,7 @@ void map_domain_page(struct domain *d, u 7.64 pte_t *pte; 7.65 7.66 if (!mm->pgd) { 7.67 - printk("map_domain_page: domain pgd must exist!\n"); 7.68 + printk("assign_domain_page: domain pgd must exist!\n"); 7.69 return; 7.70 } 7.71 pgd = pgd_offset(mm,mpaddr); 7.72 @@ -472,11 +475,11 @@ void map_domain_page(struct domain *d, u 7.73 set_pte(pte, pfn_pte(physaddr >> PAGE_SHIFT, 7.74 __pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX))); 7.75 } 7.76 - else printk("map_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.77 + else printk("assign_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.78 } 7.79 #if 0 7.80 /* map a physical address with specified I/O flag */ 7.81 -void map_domain_io_page(struct domain *d, unsigned long mpaddr, unsigned long flags) 7.82 +void assign_domain_io_page(struct domain *d, unsigned long mpaddr, unsigned long flags) 7.83 { 7.84 struct mm_struct *mm = d->arch.mm; 7.85 pgd_t *pgd; 7.86 @@ -486,7 +489,7 @@ void map_domain_io_page(struct domain *d 7.87 pte_t io_pte; 7.88 7.89 if (!mm->pgd) { 7.90 - printk("map_domain_page: domain pgd must exist!\n"); 7.91 + printk("assign_domain_page: domain pgd must exist!\n"); 7.92 return; 7.93 } 7.94 ASSERT(flags & GPFN_IO_MASK); 7.95 @@ -509,7 +512,7 @@ void map_domain_io_page(struct domain *d 7.96 pte_val(io_pte) = flags; 7.97 set_pte(pte, io_pte); 7.98 } 7.99 - else printk("map_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.100 + else printk("assign_domain_page: mpaddr %lx already mapped!\n",mpaddr); 7.101 } 7.102 #endif 7.103 void mpafoo(unsigned long mpaddr) 7.104 @@ -557,7 +560,7 @@ tryagain: 7.105 } 7.106 /* if lookup fails and mpaddr is "legal", "create" the page */ 7.107 if ((mpaddr >> PAGE_SHIFT) < d->max_pages) { 7.108 - if (map_new_domain_page(d,mpaddr)) goto tryagain; 7.109 + if (assign_new_domain_page(d,mpaddr)) goto tryagain; 7.110 } 7.111 printk("lookup_domain_mpa: bad mpa %p (> %p\n", 7.112 mpaddr,d->max_pages<<PAGE_SHIFT); 7.113 @@ -655,15 +658,9 @@ void loaddomainelfimage(struct domain *d 7.114 else 7.115 #endif 7.116 while (memsz > 0) { 7.117 -#ifdef DOMU_AUTO_RESTART 7.118 - pteval = lookup_domain_mpa(d,dom_mpaddr); 7.119 - if (pteval) dom_imva = __va(pteval & _PFN_MASK); 7.120 - else { printf("loaddomainelfimage: BAD!\n"); while(1); } 7.121 -#else 7.122 - p = map_new_domain_page(d,dom_mpaddr); 7.123 + p = assign_new_domain_page(d,dom_mpaddr); 7.124 if (unlikely(!p)) BUG(); 7.125 dom_imva = __va(page_to_maddr(p)); 7.126 -#endif 7.127 if (filesz > 0) { 7.128 if (filesz >= PAGE_SIZE) 7.129 copy_memory(dom_imva,elfaddr,PAGE_SIZE); 7.130 @@ -788,16 +785,15 @@ int construct_dom0(struct domain *d, 7.131 unsigned long pkern_entry; 7.132 unsigned long pkern_end; 7.133 unsigned long pinitrd_start = 0; 7.134 + unsigned long pstart_info; 7.135 unsigned long ret, progress = 0; 7.136 7.137 //printf("construct_dom0: starting\n"); 7.138 7.139 -#ifndef CLONE_DOMAIN0 7.140 /* Sanity! */ 7.141 BUG_ON(d != dom0); 7.142 BUG_ON(d->vcpu[0] == NULL); 7.143 BUG_ON(test_bit(_VCPUF_initialised, &v->vcpu_flags)); 7.144 -#endif 7.145 7.146 memset(&dsi, 0, sizeof(struct domain_setup_info)); 7.147 7.148 @@ -847,13 +843,18 @@ int construct_dom0(struct domain *d, 7.149 (PAGE_ALIGN(initrd_len) + 4*1024*1024); 7.150 7.151 memcpy(__va(pinitrd_start),initrd_start,initrd_len); 7.152 + pstart_info = PAGE_ALIGN(pinitrd_start + initrd_len); 7.153 + } else { 7.154 + pstart_info = PAGE_ALIGN(pkern_end); 7.155 } 7.156 7.157 printk("METAPHYSICAL MEMORY ARRANGEMENT:\n" 7.158 " Kernel image: %lx->%lx\n" 7.159 " Entry address: %lx\n" 7.160 - " Init. ramdisk: %lx len %lx\n", 7.161 - pkern_start, pkern_end, pkern_entry, pinitrd_start, initrd_len); 7.162 + " Init. ramdisk: %lx len %lx\n" 7.163 + " Start info.: %lx->%lx\n", 7.164 + pkern_start, pkern_end, pkern_entry, pinitrd_start, initrd_len, 7.165 + pstart_info, pstart_info + PAGE_SIZE); 7.166 7.167 if ( (pkern_end - pkern_start) > (d->max_pages * PAGE_SIZE) ) 7.168 { 7.169 @@ -908,9 +909,9 @@ int construct_dom0(struct domain *d, 7.170 7.171 7.172 /* Set up start info area. */ 7.173 - si = (start_info_t *)alloc_xenheap_page(); 7.174 + d->shared_info->arch.start_info_pfn = pstart_info >> PAGE_SHIFT; 7.175 + si = __va(pstart_info); 7.176 memset(si, 0, PAGE_SIZE); 7.177 - d->shared_info->arch.start_info_pfn = __pa(si) >> PAGE_SHIFT; 7.178 sprintf(si->magic, "xen-%i.%i-ia64", XEN_VERSION, XEN_SUBVERSION); 7.179 si->nr_pages = d->tot_pages; 7.180 7.181 @@ -962,9 +963,6 @@ int construct_dom0(struct domain *d, 7.182 sync_split_caches(); 7.183 7.184 // FIXME: Hack for keyboard input 7.185 -#ifdef CLONE_DOMAIN0 7.186 -if (d == dom0) 7.187 -#endif 7.188 serial_input_init(); 7.189 if (d == dom0) { 7.190 VCPU(v, delivery_mask[0]) = -1L; 7.191 @@ -977,65 +975,6 @@ if (d == dom0) 7.192 return 0; 7.193 } 7.194 7.195 -// FIXME: When dom0 can construct domains, this goes away (or is rewritten) 7.196 -int construct_domU(struct domain *d, 7.197 - unsigned long image_start, unsigned long image_len, 7.198 - unsigned long initrd_start, unsigned long initrd_len, 7.199 - char *cmdline) 7.200 -{ 7.201 - int i, rc; 7.202 - struct vcpu *v = d->vcpu[0]; 7.203 - unsigned long pkern_entry; 7.204 - 7.205 -#ifndef DOMU_AUTO_RESTART 7.206 - BUG_ON(test_bit(_VCPUF_initialised, &v->vcpu_flags)); 7.207 -#endif 7.208 - 7.209 - printk("*** LOADING DOMAIN %d ***\n",d->domain_id); 7.210 - 7.211 - d->max_pages = dom0_size/PAGE_SIZE; // FIXME: use dom0 size 7.212 - // FIXME: use domain0 command line 7.213 - rc = parsedomainelfimage(image_start, image_len, &pkern_entry); 7.214 - printk("parsedomainelfimage returns %d\n",rc); 7.215 - if ( rc != 0 ) return rc; 7.216 - 7.217 - /* Mask all upcalls... */ 7.218 - for ( i = 0; i < MAX_VIRT_CPUS; i++ ) 7.219 - d->shared_info->vcpu_info[i].evtchn_upcall_mask = 1; 7.220 - 7.221 - /* Copy the OS image. */ 7.222 - printk("calling loaddomainelfimage(%p,%p)\n",d,image_start); 7.223 - loaddomainelfimage(d,image_start); 7.224 - printk("loaddomainelfimage returns\n"); 7.225 - 7.226 - set_bit(_VCPUF_initialised, &v->vcpu_flags); 7.227 - 7.228 - printk("calling new_thread, entry=%p\n",pkern_entry); 7.229 -#ifdef DOMU_AUTO_RESTART 7.230 - v->domain->arch.image_start = image_start; 7.231 - v->domain->arch.image_len = image_len; 7.232 - v->domain->arch.entry = pkern_entry; 7.233 -#endif 7.234 - new_thread(v, pkern_entry, 0, 0); 7.235 - printk("new_thread returns\n"); 7.236 - sync_split_caches(); 7.237 - __set_bit(0x30, VCPU(v, delivery_mask)); 7.238 - 7.239 - return 0; 7.240 -} 7.241 - 7.242 -#ifdef DOMU_AUTO_RESTART 7.243 -void reconstruct_domU(struct vcpu *v) 7.244 -{ 7.245 - /* re-copy the OS image to reset data values to original */ 7.246 - printk("reconstruct_domU: restarting domain %d...\n", 7.247 - v->domain->domain_id); 7.248 - loaddomainelfimage(v->domain,v->domain->arch.image_start); 7.249 - new_thread(v, v->domain->arch.entry, 0, 0); 7.250 - sync_split_caches(); 7.251 -} 7.252 -#endif 7.253 - 7.254 void machine_restart(char * __unused) 7.255 { 7.256 if (platform_is_hp_ski()) dummy();
8.1 --- a/xen/arch/ia64/xen/hypercall.c Sat Feb 18 11:56:51 2006 +0100 8.2 +++ b/xen/arch/ia64/xen/hypercall.c Sat Feb 18 13:17:24 2006 -0700 8.3 @@ -9,6 +9,7 @@ 8.4 #include <xen/config.h> 8.5 #include <xen/sched.h> 8.6 #include <xen/hypercall.h> 8.7 +#include <xen/multicall.h> 8.8 8.9 #include <linux/efi.h> /* FOR EFI_UNIMPLEMENTED */ 8.10 #include <asm/sal.h> /* FOR struct ia64_sal_retval */ 8.11 @@ -23,10 +24,46 @@ extern unsigned long translate_domain_mp 8.12 unsigned long idle_when_pending = 0; 8.13 unsigned long pal_halt_light_count = 0; 8.14 8.15 +hypercall_t ia64_hypercall_table[] = 8.16 + { 8.17 + (hypercall_t)do_ni_hypercall, /* do_set_trap_table */ /* 0 */ 8.18 + (hypercall_t)do_ni_hypercall, /* do_mmu_update */ 8.19 + (hypercall_t)do_ni_hypercall, /* do_set_gdt */ 8.20 + (hypercall_t)do_ni_hypercall, /* do_stack_switch */ 8.21 + (hypercall_t)do_ni_hypercall, /* do_set_callbacks */ 8.22 + (hypercall_t)do_ni_hypercall, /* do_fpu_taskswitch */ /* 5 */ 8.23 + (hypercall_t)do_ni_hypercall, /* do_sched_op */ 8.24 + (hypercall_t)do_dom0_op, 8.25 + (hypercall_t)do_ni_hypercall, /* do_set_debugreg */ 8.26 + (hypercall_t)do_ni_hypercall, /* do_get_debugreg */ 8.27 + (hypercall_t)do_ni_hypercall, /* do_update_descriptor */ /* 10 */ 8.28 + (hypercall_t)do_ni_hypercall, /* do_ni_hypercall */ 8.29 + (hypercall_t)do_memory_op, 8.30 + (hypercall_t)do_multicall, 8.31 + (hypercall_t)do_ni_hypercall, /* do_update_va_mapping */ 8.32 + (hypercall_t)do_ni_hypercall, /* do_set_timer_op */ /* 15 */ 8.33 + (hypercall_t)do_event_channel_op, 8.34 + (hypercall_t)do_xen_version, 8.35 + (hypercall_t)do_console_io, 8.36 + (hypercall_t)do_ni_hypercall, /* do_physdev_op */ 8.37 + (hypercall_t)do_grant_table_op, /* 20 */ 8.38 + (hypercall_t)do_ni_hypercall, /* do_vm_assist */ 8.39 + (hypercall_t)do_ni_hypercall, /* do_update_va_mapping_otherdomain */ 8.40 + (hypercall_t)do_ni_hypercall, /* (x86 only) */ 8.41 + (hypercall_t)do_ni_hypercall, /* do_vcpu_op */ 8.42 + (hypercall_t)do_ni_hypercall, /* (x86_64 only) */ /* 25 */ 8.43 + (hypercall_t)do_ni_hypercall, /* do_mmuext_op */ 8.44 + (hypercall_t)do_ni_hypercall, /* do_acm_op */ 8.45 + (hypercall_t)do_ni_hypercall, /* do_nmi_op */ 8.46 + (hypercall_t)do_ni_hypercall, /* */ 8.47 + (hypercall_t)do_ni_hypercall, /* */ /* 30 */ 8.48 + (hypercall_t)do_ni_hypercall /* */ 8.49 + }; 8.50 + 8.51 int 8.52 ia64_hypercall (struct pt_regs *regs) 8.53 { 8.54 - struct vcpu *v = (struct domain *) current; 8.55 + struct vcpu *v = current; 8.56 struct sal_ret_values x; 8.57 unsigned long *tv, *tc; 8.58 int pi; 8.59 @@ -94,15 +131,8 @@ ia64_hypercall (struct pt_regs *regs) 8.60 printf("(by dom0)\n "); 8.61 (*efi.reset_system)(EFI_RESET_WARM,0,0,NULL); 8.62 } 8.63 -#ifdef DOMU_AUTO_RESTART 8.64 - else { 8.65 - reconstruct_domU(current); 8.66 - return 0; // don't increment ip! 8.67 - } 8.68 -#else 8.69 printf("(not supported for non-0 domain)\n"); 8.70 regs->r8 = EFI_UNSUPPORTED; 8.71 -#endif 8.72 break; 8.73 case FW_HYPERCALL_EFI_GET_TIME: 8.74 tv = vcpu_get_gr(v,32); 8.75 @@ -181,9 +211,13 @@ ia64_hypercall (struct pt_regs *regs) 8.76 regs->r8 = do_xen_version(regs->r14, regs->r15); 8.77 break; 8.78 8.79 + case __HYPERVISOR_multicall: 8.80 + regs->r8 = do_multicall(regs->r14, regs->r15); 8.81 + break; 8.82 + 8.83 default: 8.84 printf("unknown hypercall %x\n", regs->r2); 8.85 - regs->r8 = (unsigned long)-1; 8.86 + regs->r8 = do_ni_hypercall(); 8.87 } 8.88 return 1; 8.89 }
9.1 --- a/xen/arch/ia64/xen/hyperprivop.S Sat Feb 18 11:56:51 2006 +0100 9.2 +++ b/xen/arch/ia64/xen/hyperprivop.S Sat Feb 18 13:17:24 2006 -0700 9.3 @@ -1336,7 +1336,7 @@ ENTRY(hyper_ssm_dt) 9.4 movl r22=THIS_CPU(cpu_kr)+IA64_KR_CURRENT_OFFSET;; 9.5 ld8 r22=[r22];; 9.6 adds r22=IA64_VCPU_META_SAVED_RR0_OFFSET,r22;; 9.7 - ld4 r23=[r22];; 9.8 + ld8 r23=[r22];; 9.9 mov rr[r0]=r23;; 9.10 srlz.i;; 9.11 st4 [r20]=r0 ;; 9.12 @@ -1372,7 +1372,7 @@ ENTRY(hyper_rsm_dt) 9.13 movl r22=THIS_CPU(cpu_kr)+IA64_KR_CURRENT_OFFSET;; 9.14 ld8 r22=[r22];; 9.15 adds r22=IA64_VCPU_META_RR0_OFFSET,r22;; 9.16 - ld4 r23=[r22];; 9.17 + ld8 r23=[r22];; 9.18 mov rr[r0]=r23;; 9.19 srlz.i;; 9.20 adds r21=1,r0 ;; 9.21 @@ -1733,7 +1733,7 @@ ENTRY(hyper_set_rr) 9.22 dep r23=r28,r23,16,8;; 9.23 dep r23=r29,r23,8,8 9.24 cmp.eq p6,p0=r25,r0;; // if rr0, save for metaphysical 9.25 -(p6) st4 [r24]=r23 9.26 +(p6) st8 [r24]=r23 9.27 mov rr[r8]=r23;; 9.28 // done, mosey on back 9.29 1: mov r24=cr.ipsr
10.1 --- a/xen/arch/ia64/xen/vcpu.c Sat Feb 18 11:56:51 2006 +0100 10.2 +++ b/xen/arch/ia64/xen/vcpu.c Sat Feb 18 13:17:24 2006 -0700 10.3 @@ -81,7 +81,7 @@ unsigned long vcpu_verbose = 0; 10.4 **************************************************************************/ 10.5 #ifdef XEN 10.6 UINT64 10.7 -vcpu_get_gr(VCPU *vcpu, unsigned reg) 10.8 +vcpu_get_gr(VCPU *vcpu, unsigned long reg) 10.9 { 10.10 REGS *regs = vcpu_regs(vcpu); 10.11 UINT64 val; 10.12 @@ -90,7 +90,7 @@ vcpu_get_gr(VCPU *vcpu, unsigned reg) 10.13 return val; 10.14 } 10.15 IA64FAULT 10.16 -vcpu_get_gr_nat(VCPU *vcpu, unsigned reg, UINT64 *val) 10.17 +vcpu_get_gr_nat(VCPU *vcpu, unsigned long reg, UINT64 *val) 10.18 { 10.19 REGS *regs = vcpu_regs(vcpu); 10.20 int nat; 10.21 @@ -104,7 +104,7 @@ vcpu_get_gr_nat(VCPU *vcpu, unsigned reg 10.22 // IA64_ILLOP_FAULT if the register would cause an Illegal Operation fault 10.23 // IA64_NO_FAULT otherwise 10.24 IA64FAULT 10.25 -vcpu_set_gr(VCPU *vcpu, unsigned reg, UINT64 value, int nat) 10.26 +vcpu_set_gr(VCPU *vcpu, unsigned long reg, UINT64 value, int nat) 10.27 { 10.28 REGS *regs = vcpu_regs(vcpu); 10.29 if (!reg) return IA64_ILLOP_FAULT; 10.30 @@ -118,7 +118,7 @@ vcpu_set_gr(VCPU *vcpu, unsigned reg, UI 10.31 // IA64_ILLOP_FAULT if the register would cause an Illegal Operation fault 10.32 // IA64_NO_FAULT otherwise 10.33 IA64FAULT 10.34 -vcpu_set_gr(VCPU *vcpu, unsigned reg, UINT64 value) 10.35 +vcpu_set_gr(VCPU *vcpu, unsigned long reg, UINT64 value) 10.36 { 10.37 REGS *regs = vcpu_regs(vcpu); 10.38 long sof = (regs->cr_ifs) & 0x7f;
11.1 --- a/xen/arch/ia64/xen/xenirq.c Sat Feb 18 11:56:51 2006 +0100 11.2 +++ b/xen/arch/ia64/xen/xenirq.c Sat Feb 18 13:17:24 2006 -0700 11.3 @@ -59,7 +59,7 @@ xen_do_IRQ(ia64_vector vector) 11.4 /* 11.5 * Exit an interrupt context. Process softirqs if needed and possible: 11.6 */ 11.7 -void xen_irq_exit(struct pt_regs *regs) 11.8 +void irq_exit(void) 11.9 { 11.10 sub_preempt_count(IRQ_EXIT_OFFSET); 11.11 }
12.1 --- a/xen/arch/ia64/xen/xenmisc.c Sat Feb 18 11:56:51 2006 +0100 12.2 +++ b/xen/arch/ia64/xen/xenmisc.c Sat Feb 18 13:17:24 2006 -0700 12.3 @@ -168,7 +168,11 @@ void __free_pages(struct page *page, uns 12.4 12.5 void *pgtable_quicklist_alloc(void) 12.6 { 12.7 - return alloc_xenheap_pages(0); 12.8 + void *p; 12.9 + p = alloc_xenheap_pages(0); 12.10 + if (p) 12.11 + clear_page(p); 12.12 + return p; 12.13 } 12.14 12.15 void pgtable_quicklist_free(void *pgtable_entry) 12.16 @@ -291,6 +295,7 @@ unsigned long context_switch_count = 0; 12.17 void context_switch(struct vcpu *prev, struct vcpu *next) 12.18 { 12.19 uint64_t spsr; 12.20 + uint64_t pta; 12.21 12.22 local_irq_save(spsr); 12.23 if(VMX_DOMAIN(prev)){ 12.24 @@ -298,9 +303,9 @@ void context_switch(struct vcpu *prev, s 12.25 } 12.26 context_switch_count++; 12.27 switch_to(prev,next,prev); 12.28 - if(VMX_DOMAIN(current)){ 12.29 - vtm_domain_in(current); 12.30 - } 12.31 +// if(VMX_DOMAIN(current)){ 12.32 +// vtm_domain_in(current); 12.33 +// } 12.34 12.35 // leave this debug for now: it acts as a heartbeat when more than 12.36 // one domain is active 12.37 @@ -313,18 +318,26 @@ if (!i--) { printk("+",id); i = 1000000; 12.38 } 12.39 12.40 if (VMX_DOMAIN(current)){ 12.41 + vtm_domain_in(current); 12.42 vmx_load_all_rr(current); 12.43 }else{ 12.44 - extern char ia64_ivt; 12.45 - ia64_set_iva(&ia64_ivt); 12.46 - ia64_set_pta(VHPT_ADDR | (1 << 8) | (VHPT_SIZE_LOG2 << 2) | 12.47 - VHPT_ENABLED); 12.48 + extern char ia64_ivt; 12.49 + ia64_set_iva(&ia64_ivt); 12.50 if (!is_idle_domain(current->domain)) { 12.51 + ia64_set_pta(VHPT_ADDR | (1 << 8) | (VHPT_SIZE_LOG2 << 2) | 12.52 + VHPT_ENABLED); 12.53 load_region_regs(current); 12.54 vcpu_load_kernel_regs(current); 12.55 - if (vcpu_timer_expired(current)) vcpu_pend_timer(current); 12.56 - } 12.57 - if (vcpu_timer_expired(current)) vcpu_pend_timer(current); 12.58 + if (vcpu_timer_expired(current)) 12.59 + vcpu_pend_timer(current); 12.60 + }else { 12.61 + /* When switching to idle domain, only need to disable vhpt 12.62 + * walker. Then all accesses happen within idle context will 12.63 + * be handled by TR mapping and identity mapping. 12.64 + */ 12.65 + pta = ia64_get_pta(); 12.66 + ia64_set_pta(pta & ~VHPT_ENABLED); 12.67 + } 12.68 } 12.69 12.70 local_irq_restore(spsr);
13.1 --- a/xen/arch/ia64/xen/xensetup.c Sat Feb 18 11:56:51 2006 +0100 13.2 +++ b/xen/arch/ia64/xen/xensetup.c Sat Feb 18 13:17:24 2006 -0700 13.3 @@ -31,9 +31,6 @@ struct vcpu *idle_vcpu[NR_CPUS]; 13.4 13.5 cpumask_t cpu_present_map; 13.6 13.7 -#ifdef CLONE_DOMAIN0 13.8 -struct domain *clones[CLONE_DOMAIN0]; 13.9 -#endif 13.10 extern unsigned long domain0_ready; 13.11 13.12 int find_max_pfn (unsigned long, unsigned long, void *); 13.13 @@ -342,16 +339,6 @@ printk("About to call sort_main_extable( 13.14 printk("About to call domain_create()\n"); 13.15 dom0 = domain_create(0, 0); 13.16 13.17 -#ifdef CLONE_DOMAIN0 13.18 - { 13.19 - int i; 13.20 - for (i = 0; i < CLONE_DOMAIN0; i++) { 13.21 - clones[i] = domain_create(i+1, 0); 13.22 - if ( clones[i] == NULL ) 13.23 - panic("Error creating domain0 clone %d\n",i); 13.24 - } 13.25 - } 13.26 -#endif 13.27 if ( dom0 == NULL ) 13.28 panic("Error creating domain 0\n"); 13.29 13.30 @@ -376,22 +363,6 @@ printk("About to call domain_create()\n" 13.31 /* PIN domain0 on CPU 0. */ 13.32 dom0->vcpu[0]->cpu_affinity = cpumask_of_cpu(0); 13.33 13.34 -#ifdef CLONE_DOMAIN0 13.35 - { 13.36 - int i; 13.37 - dom0_memory_start = __va(ia64_boot_param->domain_start); 13.38 - dom0_memory_size = ia64_boot_param->domain_size; 13.39 - 13.40 - for (i = 0; i < CLONE_DOMAIN0; i++) { 13.41 - printk("CONSTRUCTING DOMAIN0 CLONE #%d\n",i+1); 13.42 - if ( construct_domU(clones[i], dom0_memory_start, dom0_memory_size, 13.43 - dom0_initrd_start,dom0_initrd_size, 13.44 - 0) != 0) 13.45 - panic("Could not set up DOM0 clone %d\n",i); 13.46 - } 13.47 - } 13.48 -#endif 13.49 - 13.50 /* The stash space for the initial kernel image can now be freed up. */ 13.51 init_domheap_pages(ia64_boot_param->domain_start, 13.52 ia64_boot_param->domain_size); 13.53 @@ -412,13 +383,6 @@ printk("About to call init_trace_bufs()\ 13.54 console_endboot(cmdline && strstr(cmdline, "tty0")); 13.55 #endif 13.56 13.57 -#ifdef CLONE_DOMAIN0 13.58 - { 13.59 - int i; 13.60 - for (i = 0; i < CLONE_DOMAIN0; i++) 13.61 - domain_unpause_by_systemcontroller(clones[i]); 13.62 - } 13.63 -#endif 13.64 domain0_ready = 1; 13.65 13.66 local_irq_enable();
14.1 --- a/xen/include/asm-ia64/config.h Sat Feb 18 11:56:51 2006 +0100 14.2 +++ b/xen/include/asm-ia64/config.h Sat Feb 18 13:17:24 2006 -0700 14.3 @@ -3,11 +3,8 @@ 14.4 14.5 #undef USE_PAL_EMULATOR 14.6 // control flags for turning on/off features under test 14.7 -#undef CLONE_DOMAIN0 14.8 -//#define CLONE_DOMAIN0 1 14.9 #undef DOMU_BUILD_STAGING 14.10 #define VHPT_GLOBAL 14.11 -#define DOMU_AUTO_RESTART 14.12 14.13 #undef DEBUG_PFMON 14.14 14.15 @@ -215,9 +212,6 @@ void sort_main_extable(void); 14.16 // see include/asm-ia64/mm.h, handle remaining page_info uses until gone 14.17 #define page_info page 14.18 14.19 -// see common/memory.c 14.20 -#define set_gpfn_from_mfn(x,y) do { } while (0) 14.21 - 14.22 // see common/keyhandler.c 14.23 #define nop() asm volatile ("nop 0") 14.24
15.1 --- a/xen/include/asm-ia64/domain.h Sat Feb 18 11:56:51 2006 +0100 15.2 +++ b/xen/include/asm-ia64/domain.h Sat Feb 18 13:17:24 2006 -0700 15.3 @@ -15,8 +15,8 @@ extern void domain_relinquish_resources( 15.4 struct arch_domain { 15.5 struct mm_struct *active_mm; 15.6 struct mm_struct *mm; 15.7 - int metaphysical_rr0; 15.8 - int metaphysical_rr4; 15.9 + unsigned long metaphysical_rr0; 15.10 + unsigned long metaphysical_rr4; 15.11 int starting_rid; /* first RID assigned to domain */ 15.12 int ending_rid; /* one beyond highest RID assigned to domain */ 15.13 int rid_bits; /* number of virtual rid bits (default: 18) */ 15.14 @@ -32,11 +32,6 @@ struct arch_domain { 15.15 u64 xen_vastart; 15.16 u64 xen_vaend; 15.17 u64 shared_info_va; 15.18 -#ifdef DOMU_AUTO_RESTART 15.19 - u64 image_start; 15.20 - u64 image_len; 15.21 - u64 entry; 15.22 -#endif 15.23 unsigned long initrd_start; 15.24 unsigned long initrd_len; 15.25 char *cmdline; 15.26 @@ -66,10 +61,10 @@ struct arch_vcpu { 15.27 unsigned long xen_timer_interval; 15.28 #endif 15.29 mapped_regs_t *privregs; /* save the state of vcpu */ 15.30 - int metaphysical_rr0; // from arch_domain (so is pinned) 15.31 - int metaphysical_rr4; // from arch_domain (so is pinned) 15.32 - int metaphysical_saved_rr0; // from arch_domain (so is pinned) 15.33 - int metaphysical_saved_rr4; // from arch_domain (so is pinned) 15.34 + unsigned long metaphysical_rr0; // from arch_domain (so is pinned) 15.35 + unsigned long metaphysical_rr4; // from arch_domain (so is pinned) 15.36 + unsigned long metaphysical_saved_rr0; // from arch_domain (so is pinned) 15.37 + unsigned long metaphysical_saved_rr4; // from arch_domain (so is pinned) 15.38 int breakimm; // from arch_domain (so is pinned) 15.39 int starting_rid; /* first RID assigned to domain */ 15.40 int ending_rid; /* one beyond highest RID assigned to domain */
16.1 --- a/xen/include/asm-ia64/grant_table.h Sat Feb 18 11:56:51 2006 +0100 16.2 +++ b/xen/include/asm-ia64/grant_table.h Sat Feb 18 13:17:24 2006 -0700 16.3 @@ -17,7 +17,7 @@ 16.4 #define gnttab_shared_gmfn(d, t, i) \ 16.5 ( ((d) == dom0) ? \ 16.6 ((virt_to_maddr((t)->shared) >> PAGE_SHIFT) + (i)) : \ 16.7 - (map_domain_page((d), 1UL<<40, virt_to_maddr((t)->shared)), \ 16.8 + (assign_domain_page((d), 1UL<<40, virt_to_maddr((t)->shared)), \ 16.9 1UL << (40 - PAGE_SHIFT)) \ 16.10 ) 16.11
17.1 --- a/xen/include/asm-ia64/linux-xen/asm/README.origin Sat Feb 18 11:56:51 2006 +0100 17.2 +++ b/xen/include/asm-ia64/linux-xen/asm/README.origin Sat Feb 18 13:17:24 2006 -0700 17.3 @@ -5,6 +5,7 @@ 17.4 # (e.g. with #ifdef XEN or XEN in a comment) so that they can be 17.5 # easily updated to future versions of the corresponding Linux files. 17.6 17.7 +cache.h -> linux/include/asm-ia64/cache.h 17.8 gcc_intrin.h -> linux/include/asm-ia64/gcc_intrin.h 17.9 ia64regs.h -> linux/include/asm-ia64/ia64regs.h 17.10 io.h -> linux/include/asm-ia64/io.h
18.1 --- a/xen/include/asm-ia64/linux-xen/asm/processor.h Sat Feb 18 11:56:51 2006 +0100 18.2 +++ b/xen/include/asm-ia64/linux-xen/asm/processor.h Sat Feb 18 13:17:24 2006 -0700 18.3 @@ -639,6 +639,19 @@ ia64_get_ivr (void) 18.4 return r; 18.5 } 18.6 18.7 +#ifdef XEN 18.8 +/* Get the page table address and control bits. */ 18.9 +static inline __u64 18.10 +ia64_get_pta (void) 18.11 +{ 18.12 + __u64 r; 18.13 + ia64_srlz_d(); 18.14 + r = ia64_getreg(_IA64_REG_CR_PTA); 18.15 + ia64_srlz_d(); 18.16 + return r; 18.17 +} 18.18 +#endif 18.19 + 18.20 static inline void 18.21 ia64_set_dbr (__u64 regnum, __u64 value) 18.22 {
19.1 --- a/xen/include/asm-ia64/linux/README.origin Sat Feb 18 11:56:51 2006 +0100 19.2 +++ b/xen/include/asm-ia64/linux/README.origin Sat Feb 18 13:17:24 2006 -0700 19.3 @@ -4,31 +4,31 @@ 19.4 # needs to be changed, move it to ../linux-xen and follow 19.5 # the instructions in the README there. 19.6 19.7 -bcd.h ->linux/include/linux/bcd.h 19.8 -bitmap.h ->linux/include/linux/bitmap.h 19.9 -bitops.h ->linux/include/linux/bitops.h 19.10 -dma-mapping.h ->linux/include/linux/dma-mapping.h 19.11 -efi.h ->linux/include/linux/efi.h 19.12 -err.h ->linux/include/linux/err.h 19.13 -initrd.h ->linux/include/linux/initrd.h 19.14 -jiffies.h ->linux/include/linux/jiffies.h 19.15 -kmalloc_sizes.h ->linux/include/linux/kmalloc_sizes.h 19.16 -linkage.h ->linux/include/linux/linkage.h 19.17 -mmzone.h ->linux/include/linux/mmzone.h 19.18 -notifier.h ->linux/include/linux/notifier.h 19.19 -numa.h ->linux/include/linux/numa.h 19.20 -page-flags.h ->linux/include/linux/page-flags.h 19.21 -percpu.h ->linux/include/linux/percpu.h 19.22 -preempt.h ->linux/include/linux/preempt.h 19.23 -rbtree.h ->linux/include/linux/rbtree.h 19.24 -rwsem.h ->linux/include/linux/rwsem.h 19.25 -seqlock.h ->linux/include/linux/seqlock.h 19.26 -slab.h ->linux/include/linux/slab.h 19.27 -sort.h ->linux/include/linux/sort.h 19.28 -stddef.h ->linux/include/linux/stddef.h 19.29 -thread_info.h ->linux/include/linux/thread_info.h 19.30 -threads.h ->linux/include/linux/threads.h 19.31 -time.h ->linux/include/linux/time.h 19.32 -timex.h ->linux/include/linux/timex.h 19.33 -topology.h ->linux/include/linux/topology.h 19.34 -wait.h ->linux/include/linux/wait.h 19.35 +bcd.h -> linux/include/linux/bcd.h 19.36 +bitmap.h -> linux/include/linux/bitmap.h 19.37 +bitops.h -> linux/include/linux/bitops.h 19.38 +dma-mapping.h -> linux/include/linux/dma-mapping.h 19.39 +efi.h -> linux/include/linux/efi.h 19.40 +err.h -> linux/include/linux/err.h 19.41 +initrd.h -> linux/include/linux/initrd.h 19.42 +jiffies.h -> linux/include/linux/jiffies.h 19.43 +kmalloc_sizes.h -> linux/include/linux/kmalloc_sizes.h 19.44 +linkage.h -> linux/include/linux/linkage.h 19.45 +mmzone.h -> linux/include/linux/mmzone.h 19.46 +notifier.h -> linux/include/linux/notifier.h 19.47 +numa.h -> linux/include/linux/numa.h 19.48 +page-flags.h -> linux/include/linux/page-flags.h 19.49 +percpu.h -> linux/include/linux/percpu.h 19.50 +preempt.h -> linux/include/linux/preempt.h 19.51 +rbtree.h -> linux/include/linux/rbtree.h 19.52 +rwsem.h -> linux/include/linux/rwsem.h 19.53 +seqlock.h -> linux/include/linux/seqlock.h 19.54 +slab.h -> linux/include/linux/slab.h 19.55 +sort.h -> linux/include/linux/sort.h 19.56 +stddef.h -> linux/include/linux/stddef.h 19.57 +thread_info.h -> linux/include/linux/thread_info.h 19.58 +threads.h -> linux/include/linux/threads.h 19.59 +time.h -> linux/include/linux/time.h 19.60 +timex.h -> linux/include/linux/timex.h 19.61 +topology.h -> linux/include/linux/topology.h 19.62 +wait.h -> linux/include/linux/wait.h
20.1 --- a/xen/include/asm-ia64/linux/asm/README.origin Sat Feb 18 11:56:51 2006 +0100 20.2 +++ b/xen/include/asm-ia64/linux/asm/README.origin Sat Feb 18 13:17:24 2006 -0700 20.3 @@ -4,6 +4,7 @@ 20.4 # needs to be changed, move it to ../linux-xen and follow 20.5 # the instructions in the README there. 20.6 20.7 +acpi.h -> linux/include/asm-ia64/acpi.h 20.8 asmmacro.h -> linux/include/asm-ia64/asmmacro.h 20.9 atomic.h -> linux/include/asm-ia64/atomic.h 20.10 bitops.h -> linux/include/asm-ia64/bitops.h 20.11 @@ -11,7 +12,6 @@ break.h -> linux/include/asm-ia64/brea 20.12 bug.h -> linux/include/asm-ia64/bug.h 20.13 byteorder.h -> linux/include/asm-ia64/byteorder.h 20.14 cacheflush.h -> linux/include/asm-ia64/cacheflush.h 20.15 -cache.h -> linux/include/asm-ia64/cache.h 20.16 checksum.h -> linux/include/asm-ia64/checksum.h 20.17 current.h -> linux/include/asm-ia64/current.h 20.18 delay.h -> linux/include/asm-ia64/delay.h
21.1 --- a/xen/include/asm-ia64/linux/byteorder/README.origin Sat Feb 18 11:56:51 2006 +0100 21.2 +++ b/xen/include/asm-ia64/linux/byteorder/README.origin Sat Feb 18 13:17:24 2006 -0700 21.3 @@ -4,6 +4,6 @@ 21.4 # needs to be changed, move it to ../linux-xen and follow 21.5 # the instructions in the README there. 21.6 21.7 -generic.h -> linux/include/byteorder/generic.h 21.8 -little_endian.h -> linux/include/byteorder/little_endian.h 21.9 -swab.h -> linux/include/byteorder/swab.h 21.10 +generic.h -> linux/include/linux/byteorder/generic.h 21.11 +little_endian.h -> linux/include/linux/byteorder/little_endian.h 21.12 +swab.h -> linux/include/linux/byteorder/swab.h
22.1 --- a/xen/include/asm-ia64/multicall.h Sat Feb 18 11:56:51 2006 +0100 22.2 +++ b/xen/include/asm-ia64/multicall.h Sat Feb 18 13:17:24 2006 -0700 22.3 @@ -1,5 +1,27 @@ 22.4 #ifndef __ASM_IA64_MULTICALL_H__ 22.5 #define __ASM_IA64_MULTICALL_H__ 22.6 22.7 -#define do_multicall_call(_call) BUG() 22.8 +#include <public/xen.h> 22.9 + 22.10 +typedef unsigned long (*hypercall_t)( 22.11 + unsigned long arg0, 22.12 + unsigned long arg1, 22.13 + unsigned long arg2, 22.14 + unsigned long arg3, 22.15 + unsigned long arg4, 22.16 + unsigned long arg5); 22.17 + 22.18 +extern hypercall_t ia64_hypercall_table[]; 22.19 + 22.20 +static inline void do_multicall_call(multicall_entry_t *call) 22.21 +{ 22.22 + call->result = (*ia64_hypercall_table[call->op])( 22.23 + call->args[0], 22.24 + call->args[1], 22.25 + call->args[2], 22.26 + call->args[3], 22.27 + call->args[4], 22.28 + call->args[5]); 22.29 +} 22.30 + 22.31 #endif /* __ASM_IA64_MULTICALL_H__ */
23.1 --- a/xen/include/asm-ia64/vcpu.h Sat Feb 18 11:56:51 2006 +0100 23.2 +++ b/xen/include/asm-ia64/vcpu.h Sat Feb 18 13:17:24 2006 -0700 23.3 @@ -34,9 +34,9 @@ struct privop_addr_count { 23.4 #endif 23.5 23.6 /* general registers */ 23.7 -extern UINT64 vcpu_get_gr(VCPU *vcpu, unsigned reg); 23.8 -extern IA64FAULT vcpu_get_gr_nat(VCPU *vcpu, unsigned reg, UINT64 *val); 23.9 -extern IA64FAULT vcpu_set_gr(VCPU *vcpu, unsigned reg, UINT64 value, int nat); 23.10 +extern UINT64 vcpu_get_gr(VCPU *vcpu, unsigned long reg); 23.11 +extern IA64FAULT vcpu_get_gr_nat(VCPU *vcpu, unsigned long reg, UINT64 *val); 23.12 +extern IA64FAULT vcpu_set_gr(VCPU *vcpu, unsigned long reg, UINT64 value, int nat); 23.13 /* application registers */ 23.14 extern IA64FAULT vcpu_set_ar(VCPU *vcpu, UINT64 reg, UINT64 val); 23.15 /* psr */