[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] More getting xenlinux/ia64 to build with drivers from -sparse
# HG changeset patch # User djm@xxxxxxxxxxxxxxx # Node ID 60928c906666d4a0f158bc701aeac2871c0b1761 # Parent 109a27c1c00459e02678beabebbdec73376e736d More getting xenlinux/ia64 to build with drivers from -sparse diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre --- a/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre Fri Sep 23 17:15:48 2005 @@ -1,7 +1,15 @@ #!/bin/bash -if [ -e mm ] +# restructure directories to match future drivers/xen plan +# and move aside xen/x86 specific changes +# WARNING!: This directory movement really confuses hg which makes +# it difficult to do development in a directory which is being used +# for building (as all files in mv'd directories are thought by hg +# to have been deleted). I don't know how to avoid this right now, +# but if someone has a better way, I'm all ears +if [ ! -e mm.xen-x86 ] then mv mm mm.xen-x86 + mkdir mm mv net net.xen-x86 mv kernel kernel.xen-x86 mv drivers/acpi/tables.c drivers/acpi/tables.c.xen-x86 @@ -11,9 +19,32 @@ mv arch/xen.xen-x86/configs arch/xen mv include/asm-generic include/asm-generic.xen-x86 mv include/linux include/linux.xen-x86 + mkdir include/linux fi + +# need to grab a couple of xen-modified files for generic_page_range and +# typedef pte_fn_t which are used by driver/xen blkif +cp mm.xen-x86/memory.c mm/memory.c +cp include/linux.xen-x86/mm.h include/linux/mm.h + +#eventually asm-xsi-offsets needs to be part of hypervisor.h/hypercall.h cp ../xen/include/asm-ia64/asm-xsi-offsets.h include/asm-ia64/xen/ + +#ia64 drivers/xen isn't fully functional yet, workaround... +#also ignore core/evtchn.c which uses a different irq mechanism than ia64 +#(warning: there be dragons here if these files diverge) cp arch/ia64/xen/drivers/Makefile drivers/xen/Makefile cp arch/ia64/xen/drivers/coreMakefile drivers/xen/core/Makefile + +#not sure where these ia64-specific files will end up in the future cp arch/ia64/xen/drivers/xenia64_init.c drivers/xen/core cp arch/ia64/xen/drivers/evtchn_ia64.c drivers/xen/core + +#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 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/Makefile --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/Makefile Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/Makefile Fri Sep 23 17:15:48 2005 @@ -1,4 +1,5 @@ +obj-y += util.o obj-y += core/ obj-y += console/ diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/blkback.c.patch --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/blkback.c.patch Fri Sep 23 17:15:48 2005 @@ -0,0 +1,57 @@ +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 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/console.c.patch --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/console.c.patch Fri Sep 23 17:15:48 2005 @@ -0,0 +1,20 @@ +diff -Naur xen/console/console.c xen.patched/console/console.c +--- xen/console/console.c 2005-09-23 10:54:50.000000000 -0600 ++++ xen.patched/console/console.c 2005-09-23 10:57:51.000000000 -0600 +@@ -768,9 +768,16 @@ + #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); + (void)request_irq(xencons_priv_irq, + xencons_priv_interrupt, 0, "console", NULL); ++#endif + } else { + xencons_ring_register_receiver(xencons_rx); + } diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/devmem.c.patch --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/devmem.c.patch Fri Sep 23 17:15:48 2005 @@ -0,0 +1,13 @@ +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 +@@ -93,6 +93,9 @@ + if (uncached_access(file)) + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + ++#ifdef __ia64__ ++#define direct_remap_pfn_range(a,b,c,d,e,f) remap_pfn_range(a,b,c,d,e) ++#endif + if (direct_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, + vma->vm_end - vma->vm_start, + vma->vm_page_prot, DOMID_IO)) diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/gnttab.c.patch --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/gnttab.c.patch Fri Sep 23 17:15:48 2005 @@ -0,0 +1,68 @@ +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 +@@ -22,6 +22,10 @@ + #include <asm-xen/gnttab.h> + #include <asm/synch_bitops.h> + ++#ifdef __ia64__ ++#define synch_cmpxchg ia64_cmpxchg4_acq ++#endif ++ + #if 1 + #define ASSERT(_p) \ + if ( !(_p) ) { printk(KERN_ALERT"Assertion '%s': line %d, file %s\n", \ +@@ -339,6 +343,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; pushl %%esi; pushl %%edi; " +@@ -351,6 +359,7 @@ + TRAP_INSTR "; " + "popl %%edi; popl %%esi; popl %%edx; popl %%ecx; popl %%ebx" + : "=a" (ret) : "0" (&hypercall) : "memory" ); ++#endif + + return ret; + } +@@ -414,8 +423,13 @@ + BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1) != 0); + 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; + } +@@ -425,8 +439,10 @@ + { + int i; + ++#ifndef __ia64__ + for ( i = 0; i < NR_GRANT_FRAMES; i++ ) + clear_fixmap(FIX_GNTTAB_END - i); ++#endif + + return 0; + } +@@ -441,7 +457,9 @@ + + BUG_ON(gnttab_resume()); + ++#ifndef __ia64__ + shared = (grant_entry_t *)fix_to_virt(FIX_GNTTAB_END); ++#endif + + for ( i = 0; i < NR_GRANT_ENTRIES; i++ ) + gnttab_list[i] = i + 1; diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/privcmd.c.patch --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/patches/privcmd.c.patch Fri Sep 23 17:15:48 2005 @@ -0,0 +1,49 @@ +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 +@@ -134,6 +134,9 @@ + > vma->vm_end ) + return -EINVAL; + ++#ifdef __ia64__ ++#define direct_remap_pfn_range(a,b,c,d,e,f) remap_pfn_range(a,b,c,d,e) ++#endif + if ((rc = direct_remap_pfn_range( + vma, + msg[j].va&PAGE_MASK, +@@ -148,6 +151,7 @@ + } + break; + ++#ifndef __ia64__ + case IOCTL_PRIVCMD_MMAPBATCH: { + mmu_update_t u; + privcmd_mmapbatch_t m; +@@ -206,7 +210,9 @@ + } + break; + #endif ++#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); +@@ -218,6 +224,7 @@ + -EFAULT: 0; + } + break; ++#endif + + case IOCTL_PRIVCMD_INITDOMAIN_STORE: { + extern int do_xenbus_probe(void*); +@@ -241,6 +248,9 @@ + + /* Initial connect. Setup channel and page. */ + xen_start_info->store_evtchn = data; ++#ifdef __ia64__ ++#define pfn_to_mfn(x) (x) ++#endif + xen_start_info->store_mfn = + pfn_to_mfn(virt_to_phys((void *)page) >> + PAGE_SHIFT); diff -r 109a27c1c004 -r 60928c906666 linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h --- /dev/null Fri Sep 23 14:12:28 2005 +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/fixmap.h Fri Sep 23 17:15:48 2005 @@ -0,0 +1,1 @@ +/* empty */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |