diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre --- a/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre Tue Jun 06 09:11:25 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre Tue Jun 06 09:56:17 2006 -0600 @@ -15,12 +15,3 @@ ln -sf ../../../../xen/include/asm-ia64/ #(warning: there be dragons here if these files diverge) ln -sf ../../arch/ia64/xen/drivers/Makefile drivers/xen/Makefile ln -sf ../../../arch/ia64/xen/drivers/coreMakefile drivers/xen/core/Makefile - -#still a few x86-ism's in various drivers/xen files, patch them -#cd drivers/xen -#if [ ! -e ia64.patch.semaphore ] -#then -# cat ../../arch/ia64/xen/drivers/patches/* | patch -p1 -b -#fi -#touch ia64.patch.semaphore -#cd ../.. diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/blkback.c.patch --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/blkback.c.patch Tue Jun 06 09:11:25 2006 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -diff -Naur xen/blkback/blkback.c xen.patched/blkback/blkback.c ---- xen/blkback/blkback.c 2005-09-23 10:54:50.000000000 -0600 -+++ xen.patched/blkback/blkback.c 2005-09-23 10:57:51.000000000 -0600 -@@ -30,10 +30,16 @@ - static unsigned long mmap_vstart; - #define MMAP_PAGES \ - (MAX_PENDING_REQS * BLKIF_MAX_SEGMENTS_PER_REQUEST) -+#ifdef __ia64__ -+static void *pending_vaddrs[MMAP_PAGES]; -+#define MMAP_VADDR(_idx, _i) \ -+ (unsigned long)(pending_vaddrs[((_idx) * BLKIF_MAX_SEGMENTS_PER_REQUEST) + (_i)]) -+#else - #define MMAP_VADDR(_req,_seg) \ - (mmap_vstart + \ - ((_req) * BLKIF_MAX_SEGMENTS_PER_REQUEST * PAGE_SIZE) + \ - ((_seg) * PAGE_SIZE)) -+#endif - - /* - * Each outstanding request that we've passed to the lower device layers has a -@@ -377,9 +383,13 @@ - goto bad_descriptor; - } - -+#ifdef __ia64__ -+ MMAP_VADDR(pending_idx,i) = gnttab_map_vaddr(map[i]); -+#else - phys_to_machine_mapping[__pa(MMAP_VADDR( - pending_idx, i)) >> PAGE_SHIFT] = - FOREIGN_FRAME(map[i].dev_bus_addr >> PAGE_SHIFT); -+#endif - - pending_handle(pending_idx, i) = map[i].handle; - } -@@ -500,9 +510,22 @@ - - blkif_interface_init(); - -+#ifdef __ia64__ -+ { -+ extern unsigned long alloc_empty_foreign_map_page_range(unsigned long pages); -+ int i; -+ -+ mmap_vstart = alloc_empty_foreign_map_page_range(MMAP_PAGES); -+ printk("Allocated mmap_vstart: 0x%lx\n", mmap_vstart); -+ for(i = 0; i < MMAP_PAGES; i++) -+ pending_vaddrs[i] = mmap_vstart + (i << PAGE_SHIFT); -+ BUG_ON(mmap_vstart == NULL); -+ } -+#else - page = balloon_alloc_empty_page_range(MMAP_PAGES); - BUG_ON(page == NULL); - mmap_vstart = (unsigned long)pfn_to_kaddr(page_to_pfn(page)); -+#endif - - pending_cons = 0; - pending_prod = MAX_PENDING_REQS; diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/console.c.patch --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/console.c.patch Tue Jun 06 09:11:25 2006 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ ---- xen/console/console.c 2005-11-02 14:13:07.000000000 +0100 -+++ xen.patched/console/console.c 2005-11-02 14:21:20.000000000 +0100 -@@ -768,9 +771,15 @@ - #endif - - if (xen_start_info->flags & SIF_INITDOMAIN) { -+#ifdef __ia64__ -+ xencons_priv_irq = bind_virq_to_evtchn(VIRQ_CONSOLE); -+ bind_evtchn_to_irqhandler(xencons_priv_irq, -+ xencons_priv_interrupt, 0, "console", NULL); -+#else - xencons_priv_irq = bind_virq_to_irq(VIRQ_CONSOLE, 0); - (void)request_irq(xencons_priv_irq, - xencons_priv_interrupt, 0, "console", NULL); -+#endif - } else { - xencons_ring_register_receiver(xencons_rx); - } diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/devmem.c.patch --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/devmem.c.patch Tue Jun 06 09:11:25 2006 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -diff -Naur xen/core/devmem.c xen.patched/core/devmem.c ---- xen/core/devmem.c 2005-09-23 10:54:50.000000000 -0600 -+++ xen.patched/core/devmem.c 2005-09-23 10:57:51.000000000 -0600 diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/gnttab.c.patch --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/gnttab.c.patch Tue Jun 06 09:11:25 2006 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -diff -Naur xen/core/gnttab.c xen.patched/core/gnttab.c ---- xen/core/gnttab.c 2005-09-23 10:54:50.000000000 -0600 -+++ xen.patched/core/gnttab.c 2005-09-23 10:57:51.000000000 -0600 -@@ -346,6 +350,10 @@ - if ( hypercall.op != __HYPERVISOR_grant_table_op ) - return -ENOSYS; - -+ -+#ifdef __ia64__ -+ ret = HYPERVISOR_grant_table_op(hypercall.arg[0], (void *)hypercall.arg[1], hypercall.arg[2]); -+#else - /* hypercall-invoking asm taken from privcmd.c */ - __asm__ __volatile__ ( - "pushl %%ebx; pushl %%ecx; pushl %%edx; " -@@ -359,6 +367,7 @@ - TRAP_INSTR "; " - "popl %%edi; popl %%esi; popl %%edx; popl %%ecx; popl %%ebx" - : "=a" (ret) : "0" (&hypercall) : "memory" ); -+#endif - - return ret; - } -@@ -423,8 +432,13 @@ - BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1)); - BUG_ON(setup.status != 0); - -+#ifdef __ia64__ -+ shared = __va(frames[0] << PAGE_SHIFT); -+ printk("grant table at %p\n", shared); -+#else - for (i = 0; i < NR_GRANT_FRAMES; i++) - set_fixmap(FIX_GNTTAB_END - i, frames[i] << PAGE_SHIFT); -+#endif - - return 0; - } -@@ -450,7 +466,9 @@ - - BUG_ON(gnttab_resume()); - -+#ifndef __ia64__ - shared = (grant_entry_t *)fix_to_virt(FIX_GNTTAB_END); -+#endif - - for (i = NR_RESERVED_ENTRIES; i < NR_GRANT_ENTRIES; i++) - gnttab_list[i] = i + 1; diff -r 4e78528e3480 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/privcmd.c.patch --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/privcmd.c.patch Tue Jun 06 09:11:25 2006 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -diff -Naur xen/privcmd/privcmd.c xen.patched/privcmd/privcmd.c ---- xen/privcmd/privcmd.c 2005-09-23 10:54:50.000000000 -0600 -+++ xen.patched/privcmd/privcmd.c 2005-09-23 10:57:51.000000000 -0600 -@@ -180,6 +183,15 @@ - for (i = 0; i < m.num; i++, addr += PAGE_SIZE, p++) { - if (get_user(mfn, p)) - return -EFAULT; -+#ifdef __ia64__ -+ ret = remap_pfn_range(vma, -+ addr&PAGE_MASK, -+ mfn, -+ 1<vm_page_prot); -+ if (ret < 0) -+ goto batch_err; -+#else - - ret = create_lookup_pte_addr(vma->vm_mm, addr, &ptep); - if (ret) -@@ -190,6 +202,7 @@ - - if (HYPERVISOR_mmu_update(&u, 1, NULL, m.dom) < 0) - put_user(0xF0000000 | mfn, p); -+#endif - } - - ret = 0; -@@ -205,6 +218,7 @@ - break; - #endif - -+#ifndef __ia64__ - case IOCTL_PRIVCMD_GET_MACH2PHYS_START_MFN: { - unsigned long m2pv = (unsigned long)machine_to_phys_mapping; - pgd_t *pgd = pgd_offset_k(m2pv); -@@ -216,6 +230,7 @@ - -EFAULT: 0; - } - break; -+#endif - - default: - ret = -EINVAL;