[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [IA64] cleanup warning in xen/ia64 (arch/ia64/xen)



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 0b0be946cf9c76dd0a6e6ececb056f73919a5513
# Parent  bd9cb8dc97b65b6da4b9f3d4919b273c0c2bf275
[IA64] cleanup warning in xen/ia64 (arch/ia64/xen)

These patches fix many issue (ex. panic dom0, oops domU/dom0...).
we will fix compile warnnings one step at a time. 

Signed-off-by: Tsunehisa Doi <doi.tsunehisa@xxxxxxxxxxxxxx>
Signed-off-by: Kouya SHIMURA <kouya@xxxxxxxxxxxxxx>
Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>

diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/acpi.c
--- a/xen/arch/ia64/xen/acpi.c  Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/acpi.c  Tue Feb 28 17:29:30 2006
@@ -178,7 +178,7 @@
 
        if (lapic->address) {
                iounmap((void *) ipi_base_addr);
-               ipi_base_addr = (unsigned long) ioremap(lapic->address, 0);
+               ipi_base_addr = (void __iomem *) ioremap(lapic->address, 0);
        }
        return 0;
 }
@@ -265,7 +265,9 @@
        acpi_table_entry_header *header, const unsigned long end)
 {
        struct acpi_table_plat_int_src *plintsrc;
+#if 0
        int vector;
+#endif
 
        plintsrc = (struct acpi_table_plat_int_src *) header;
 
@@ -369,9 +371,9 @@
        /* Get base address of IPI Message Block */
 
        if (acpi_madt->lapic_address)
-               ipi_base_addr = (unsigned long) 
ioremap(acpi_madt->lapic_address, 0);
-
-       printk(KERN_INFO PREFIX "Local APIC address 0x%lx\n", ipi_base_addr);
+               ipi_base_addr = (void __iomem *) 
ioremap(acpi_madt->lapic_address, 0);
+
+       printk(KERN_INFO PREFIX "Local APIC address %p\n", ipi_base_addr);
 
        acpi_madt_oem_check(acpi_madt->header.oem_id,
                acpi_madt->header.oem_table_id);
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/dom0_ops.c
--- a/xen/arch/ia64/xen/dom0_ops.c      Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/dom0_ops.c      Tue Feb 28 17:29:30 2006
@@ -17,6 +17,7 @@
 #include <xen/trace.h>
 #include <xen/console.h>
 #include <public/sched_ctl.h>
+#include <asm/vmx.h>
 
 long arch_do_dom0_op(dom0_op_t *op, dom0_op_t *u_dom0_op)
 {
@@ -143,7 +144,7 @@
             n += j;
         }
 
-        free_xenheap_page((unsigned long)l_arr);
+        free_xenheap_page((void *) l_arr);
 
         put_domain(d);
     }
@@ -160,7 +161,6 @@
         unsigned long nr_pages = op->u.getmemlist.max_pfns & 0xffffffff;
         unsigned long mfn;
         unsigned long *buffer = op->u.getmemlist.buffer;
-        struct page *page;
 
         ret = -EINVAL;
         if ( d != NULL )
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c        Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/dom_fw.c        Tue Feb 28 17:29:30 2006
@@ -39,7 +39,8 @@
                while(1);
        }
        if (imva - imva_fw_base > PAGE_SIZE) {
-               printf("dom_pa: bad offset! imva=%p, imva_fw_base=%p 
(spinning...)\n",imva,imva_fw_base);
+               printf("dom_pa: bad offset! imva=0x%lx, imva_fw_base=0x%lx 
(spinning...)\n",
+                       imva, imva_fw_base);
                while(1);
        }
        return dom_fw_base_mpa + (imva - imva_fw_base);
@@ -48,31 +49,29 @@
 // builds a hypercall bundle at domain physical address
 void dom_efi_hypercall_patch(struct domain *d, unsigned long paddr, unsigned 
long hypercall)
 {
-       unsigned long imva;
+       unsigned long *imva;
 
        if (d == dom0) paddr += dom0_start;
-       imva = domain_mpa_to_imva(d,paddr);
-       build_hypercall_bundle(imva,d->arch.breakimm,hypercall,1);
+       imva = (unsigned long *) domain_mpa_to_imva(d, paddr);
+       build_hypercall_bundle(imva, d->arch.breakimm, hypercall, 1);
 }
 
 
 // builds a hypercall bundle at domain physical address
 static void dom_fw_hypercall_patch(struct domain *d, unsigned long paddr, 
unsigned long hypercall,unsigned long ret)
 {
-       unsigned long imva;
-
-       imva = domain_mpa_to_imva(d,paddr);
-       build_hypercall_bundle(imva,d->arch.breakimm,hypercall,ret);
+       unsigned long *imva;
+
+       imva = (unsigned long *) domain_mpa_to_imva(d, paddr);
+       build_hypercall_bundle(imva, d->arch.breakimm, hypercall, ret);
 }
 
 static void dom_fw_pal_hypercall_patch(struct domain *d, unsigned long paddr)
 {
        unsigned long *imva;
 
-       imva = (unsigned long *)domain_mpa_to_imva(d,paddr);
-
-       build_pal_hypercall_bundles (imva, d->arch.breakimm,
-                                     FW_HYPERCALL_PAL_CALL);
+       imva = (unsigned long *) domain_mpa_to_imva(d, paddr);
+       build_pal_hypercall_bundles(imva, d->arch.breakimm, 
FW_HYPERCALL_PAL_CALL);
 }
 
 
@@ -85,15 +84,13 @@
 
        dom_fw_base_mpa = 0;
        if (d == dom0) dom_fw_base_mpa += dom0_start;
-       imva_fw_base = domain_mpa_to_imva(d,dom_fw_base_mpa);
-       bp = dom_fw_init(d,args,arglen,imva_fw_base,PAGE_SIZE);
-       return dom_pa((unsigned long)bp);
+       imva_fw_base = domain_mpa_to_imva(d, dom_fw_base_mpa);
+       bp = dom_fw_init(d, args, arglen, (char *) imva_fw_base, PAGE_SIZE);
+       return dom_pa((unsigned long) bp);
 }
 
 
 /* the following heavily leveraged from linux/arch/ia64/hp/sim/fw-emu.c */
-
-#define MB     (1024*1024UL)
 
 #define NUM_EFI_SYS_TABLES 6
 # define NUM_MEM_DESCS 5
@@ -256,7 +253,8 @@
                        if (((in1 & ~0xffffffffUL) && (in4 == 0)) ||
                            (in4 > 1) ||
                            (in2 > 8) || (in2 & (in2-1)))
-                               printf("*** 
SAL_PCI_CONF_WRITE?!?(adr=%p,typ=%p,sz=%p,val=%p)\n",in1,in4,in2,in3);
+                               printf("*** 
SAL_PCI_CONF_WRITE?!?(adr=0x%lx,typ=0x%lx,sz=0x%lx,val=0x%lx)\n",
+                                       in1,in4,in2,in3);
                        // note that args are in a different order!!
                        status = ia64_sal_pci_config_write(in1,in4,in2,in3);
                }
@@ -296,7 +294,7 @@
        long status = -1;
 
        if (running_on_sim) return pal_emulator_static(index);
-       printk("xen_pal_emulator: index=%d\n",index);
+       printk("xen_pal_emulator: index=%lu\n", index);
        // pal code must be mapped by a TR when pal is called, however
        // calls are rare enough that we will map it lazily rather than
        // at every context switch
@@ -312,10 +310,16 @@
                status = ia64_pal_proc_get_features(&r9,&r10,&r11);
                break;
            case PAL_BUS_GET_FEATURES:
-               status = ia64_pal_bus_get_features(&r9,&r10,&r11);
+               status = ia64_pal_bus_get_features(
+                               (pal_bus_features_u_t *) &r9,
+                               (pal_bus_features_u_t *) &r10,
+                               (pal_bus_features_u_t *) &r11);
                break;
            case PAL_FREQ_RATIOS:
-               status = ia64_pal_freq_ratios(&r9,&r10,&r11);
+               status = ia64_pal_freq_ratios(
+                               (struct pal_freq_ratio *) &r9,
+                               (struct pal_freq_ratio *) &r10,
+                               (struct pal_freq_ratio *) &r11);
                break;
            case PAL_PTCE_INFO:
                {
@@ -326,7 +330,9 @@
                }
                break;
            case PAL_VERSION:
-               status = ia64_pal_version(&r9,&r10);
+               status = ia64_pal_version(
+                               (pal_version_u_t *) &r9,
+                               (pal_version_u_t *) &r10);
                break;
            case PAL_VM_PAGE_SIZE:
                status = ia64_pal_vm_page_size(&r9,&r10);
@@ -341,13 +347,21 @@
                // FIXME: what should xen return for these, figure out later
                // For now, linux does the right thing if pal call fails
                // In particular, rid_size must be set properly!
-               //status = ia64_pal_vm_summary(&r9,&r10);
+               //status = ia64_pal_vm_summary(
+               //              (pal_vm_info_1_u_t *) &r9,
+               //              (pal_vm_info_2_u_t *) &r10);
                break;
            case PAL_RSE_INFO:
-               status = ia64_pal_rse_info(&r9,&r10);
+               status = ia64_pal_rse_info(
+                               &r9,
+                               (pal_hints_u_t *) &r10);
                break;
            case PAL_VM_INFO:
-               status = ia64_pal_vm_info(in1,in2,&r9,&r10);
+               status = ia64_pal_vm_info(
+                               in1,
+                               in2,
+                               (pal_tc_info_u_t *) &r9,
+                               &r10);
                break;
            case PAL_REGISTER_INFO:
                status = ia64_pal_register_info(in1,&r9,&r10);
@@ -360,11 +374,12 @@
            case PAL_PERF_MON_INFO:
                {
                        unsigned long pm_buffer[16];
-                       int i;
-                       status = ia64_pal_perf_mon_info(pm_buffer,&r9);
+                       status = ia64_pal_perf_mon_info(
+                                       pm_buffer,
+                                       (pal_perf_mon_info_u_t *) &r9);
                        if (status != 0) {
                                while(1)
-                               printk("PAL_PERF_MON_INFO fails 
ret=%d\n",status);
+                               printk("PAL_PERF_MON_INFO fails ret=%ld\n", 
status);
                                break;
                        }
                        if (copy_to_user((void __user *)in1,pm_buffer,128)) {
@@ -409,7 +424,7 @@
                            domain_shutdown (current->domain, 0);
                    break;
            default:
-               printk("xen_pal_emulator: UNIMPLEMENTED PAL CALL %d!!!!\n",
+               printk("xen_pal_emulator: UNIMPLEMENTED PAL CALL %lu!!!!\n",
                                index);
                break;
        }
@@ -434,7 +449,7 @@
 
 /* Provide only one LP to guest */
 static int 
-acpi_update_lsapic (acpi_table_entry_header *header)
+acpi_update_lsapic (acpi_table_entry_header *header, const unsigned long end)
 {
        struct acpi_table_lsapic *lsapic;
 
@@ -529,8 +544,8 @@
        strcpy(xsdt->asl_compiler_id, "XEN");
        xsdt->asl_compiler_revision = (XEN_VERSION<<16)|(XEN_SUBVERSION);
 
-       xsdt->table_offset_entry[0] = dom_pa(fadt);
-       tables->madt_ptr = dom_pa(madt);
+       xsdt->table_offset_entry[0] = dom_pa((unsigned long) fadt);
+       tables->madt_ptr = dom_pa((unsigned long) madt);
 
        xsdt->checksum = generate_acpi_checksum(xsdt, xsdt->length);
 
@@ -547,8 +562,8 @@
        facs->version = 1;
        facs->length = sizeof(struct facs_descriptor_rev2);
 
-       fadt->xfirmware_ctrl = dom_pa(facs);
-       fadt->Xdsdt = dom_pa(dsdt);
+       fadt->xfirmware_ctrl = dom_pa((unsigned long) facs);
+       fadt->Xdsdt = dom_pa((unsigned long) dsdt);
 
        /*
         * All of the below FADT entries are filled it to prevent warnings
@@ -558,15 +573,15 @@
        fadt->pm1_evt_len = 4;
        fadt->xpm1a_evt_blk.address_space_id = ACPI_ADR_SPACE_SYSTEM_MEMORY;
        fadt->xpm1a_evt_blk.register_bit_width = 8;
-       fadt->xpm1a_evt_blk.address = dom_pa(&tables->pm1a_evt_blk);
+       fadt->xpm1a_evt_blk.address = dom_pa((unsigned long) 
&tables->pm1a_evt_blk);
        fadt->pm1_cnt_len = 1;
        fadt->xpm1a_cnt_blk.address_space_id = ACPI_ADR_SPACE_SYSTEM_MEMORY;
        fadt->xpm1a_cnt_blk.register_bit_width = 8;
-       fadt->xpm1a_cnt_blk.address = dom_pa(&tables->pm1a_cnt_blk);
+       fadt->xpm1a_cnt_blk.address = dom_pa((unsigned long) 
&tables->pm1a_cnt_blk);
        fadt->pm_tm_len = 4;
        fadt->xpm_tmr_blk.address_space_id = ACPI_ADR_SPACE_SYSTEM_MEMORY;
        fadt->xpm_tmr_blk.register_bit_width = 8;
-       fadt->xpm_tmr_blk.address = dom_pa(&tables->pm_tmr_blk);
+       fadt->xpm_tmr_blk.address = dom_pa((unsigned long) &tables->pm_tmr_blk);
 
        fadt->checksum = generate_acpi_checksum(fadt, fadt->length);
 
@@ -575,7 +590,7 @@
        strcpy(rsdp->oem_id, "XEN");
        rsdp->revision = 2; /* ACPI 2.0 includes XSDT */
        rsdp->length = sizeof(struct acpi20_table_rsdp);
-       rsdp->xsdt_address = dom_pa(xsdt);
+       rsdp->xsdt_address = dom_pa((unsigned long) xsdt);
 
        rsdp->checksum = generate_acpi_checksum(rsdp,
                                                ACPI_RSDP_CHECKSUM_LENGTH);
@@ -640,7 +655,7 @@
        unsigned long maxmem = (d->max_pages - d->arch.sys_pgnr) * PAGE_SIZE;
        const unsigned long start_mpaddr = ((d==dom0)?dom0_start:0);
 
-#      define MAKE_MD(typ, attr, start, end, abs)      \       
+#      define MAKE_MD(typ, attr, start, end, abs)      \
        do {                                            \
                md = efi_memmap + i++;                  \
                md->type = typ;                         \
@@ -669,7 +684,7 @@
        sal_ed      = (void *) cp; cp += sizeof(*sal_ed);
        efi_memmap  = (void *) cp; cp += NUM_MEM_DESCS*sizeof(*efi_memmap);
        bp          = (void *) cp; cp += sizeof(*bp);
-       pfn        = (void *) cp; cp += NFUNCPTRS * 2 * sizeof(pfn);
+       pfn         = (void *) cp; cp += NFUNCPTRS * 2 * sizeof(pfn);
        cmd_line    = (void *) cp;
 
        if (args) {
@@ -690,19 +705,19 @@
        cp += sizeof(FW_VENDOR) + (8-((unsigned long)cp & 7)); // round to 
64-bit boundary
 
        memcpy(fw_vendor,FW_VENDOR,sizeof(FW_VENDOR));
-       efi_systab->fw_vendor = dom_pa(fw_vendor);
+       efi_systab->fw_vendor = dom_pa((unsigned long) fw_vendor);
        
        efi_systab->fw_revision = 1;
-       efi_systab->runtime = (void *) dom_pa(efi_runtime);
+       efi_systab->runtime = (void *) dom_pa((unsigned long) efi_runtime);
        efi_systab->nr_tables = NUM_EFI_SYS_TABLES;
-       efi_systab->tables = dom_pa(efi_tables);
+       efi_systab->tables = dom_pa((unsigned long) efi_tables);
 
        efi_runtime->hdr.signature = EFI_RUNTIME_SERVICES_SIGNATURE;
        efi_runtime->hdr.revision = EFI_RUNTIME_SERVICES_REVISION;
        efi_runtime->hdr.headersize = sizeof(efi_runtime->hdr);
 #define EFI_HYPERCALL_PATCH(tgt,call) do { \
     
dom_efi_hypercall_patch(d,FW_HYPERCALL_##call##_PADDR,FW_HYPERCALL_##call); \
-    tgt = dom_pa(pfn); \
+    tgt = dom_pa((unsigned long) pfn); \
     *pfn++ = FW_HYPERCALL_##call##_PADDR + start_mpaddr; \
     *pfn++ = 0; \
     } while (0)
@@ -719,7 +734,7 @@
        EFI_HYPERCALL_PATCH(efi_runtime->reset_system,EFI_RESET_SYSTEM);
 
        efi_tables[0].guid = SAL_SYSTEM_TABLE_GUID;
-       efi_tables[0].table = dom_pa(sal_systab);
+       efi_tables[0].table = dom_pa((unsigned long) sal_systab);
        for (i = 1; i < NUM_EFI_SYS_TABLES; i++) {
                efi_tables[i].guid = NULL_GUID;
                efi_tables[i].table = 0;
@@ -773,7 +788,7 @@
                        dom_fw_fake_acpi(acpi_tables);
 
                        efi_tables[i].guid = ACPI_20_TABLE_GUID;
-                       efi_tables[i].table = dom_pa(acpi_tables);
+                       efi_tables[i].table = dom_pa((unsigned long) 
acpi_tables);
                        printf(" ACPI 2.0=0x%lx",efi_tables[i].table);
                        i++;
                }
@@ -850,12 +865,12 @@
                MAKE_MD(EFI_RESERVED_TYPE,0,0,0,0);
        }
 
-       bp->efi_systab = dom_pa(fw_mem);
-       bp->efi_memmap = dom_pa(efi_memmap);
+       bp->efi_systab = dom_pa((unsigned long) fw_mem);
+       bp->efi_memmap = dom_pa((unsigned long) efi_memmap);
        bp->efi_memmap_size = NUM_MEM_DESCS*sizeof(efi_memory_desc_t);
        bp->efi_memdesc_size = sizeof(efi_memory_desc_t);
        bp->efi_memdesc_version = 1;
-       bp->command_line = dom_pa(cmd_line);
+       bp->command_line = dom_pa((unsigned long) cmd_line);
        bp->console_info.num_cols = 80;
        bp->console_info.num_rows = 25;
        bp->console_info.orig_x = 0;
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/domain.c        Tue Feb 28 17:29:30 2006
@@ -45,6 +45,7 @@
 #include <asm/vmx.h>
 #include <asm/vmx_vcpu.h>
 #include <asm/vmx_vpd.h>
+#include <asm/vmx_phy_mode.h>
 #include <asm/pal.h>
 #include <asm/vhpt.h>
 #include <public/hvm/ioreq.h>
@@ -65,6 +66,15 @@
                      unsigned long *, unsigned long *, unsigned long *);
 
 extern unsigned long dom_fw_setup(struct domain *, char *, int);
+/* FIXME: where these declarations should be there ? */
+extern void domain_pend_keyboard_interrupt(int);
+extern long platform_is_hp_ski(void);
+extern unsigned long allocate_metaphysical_rr(void);
+extern int allocate_rid_range(struct domain *, unsigned long);
+extern void sync_split_caches(void);
+extern void init_all_rr(struct vcpu *);
+extern void serial_input_init(void);
+
 static void init_switch_stack(struct vcpu *v);
 
 /* this belongs in include/asm, but there doesn't seem to be a suitable place 
*/
@@ -275,8 +285,6 @@
 {
        struct pt_regs *regs = vcpu_regs (v);
        struct domain *d = v->domain;
-       int i, rc, ret;
-       unsigned long progress = 0;
 
        printf("arch_set_info_guest\n");
        if ( test_bit(_VCPUF_initialised, &v->vcpu_flags) )
@@ -304,7 +312,7 @@
        v->vcpu_info->arch.evtchn_vector = c->vcpu.evtchn_vector;
        if ( c->vcpu.privregs && copy_from_user(v->arch.privregs,
                           c->vcpu.privregs, sizeof(mapped_regs_t))) {
-           printk("Bad ctxt address in arch_set_info_guest: 0x%lx\n", 
c->vcpu.privregs);
+           printk("Bad ctxt address in arch_set_info_guest: %p\n", 
c->vcpu.privregs);
            return -EFAULT;
        }
 
@@ -331,9 +339,7 @@
 {
        struct domain *d = v->domain;
        struct pt_regs *regs;
-       struct ia64_boot_param *bp;
        extern char saved_command_line[];
-
 
 #ifdef CONFIG_DOMAIN0_CONTIGUOUS
        if (d == dom0) start_pc += dom0_start;
@@ -384,8 +390,9 @@
 static struct page * assign_new_domain0_page(unsigned long mpaddr)
 {
        if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
-               printk("assign_new_domain0_page: bad domain0 mpaddr 
%p!\n",mpaddr);
-printk("assign_new_domain0_page: 
start=%p,end=%p!\n",dom0_start,dom0_start+dom0_size);
+               printk("assign_new_domain0_page: bad domain0 mpaddr 
0x%lx!\n",mpaddr);
+               printk("assign_new_domain0_page: start=0x%lx,end=0x%lx!\n",
+                       dom0_start, dom0_start+dom0_size);
                while(1);
        }
        return mfn_to_page((mpaddr >> PAGE_SHIFT));
@@ -430,13 +437,13 @@
                        if (p) memset(__va(page_to_maddr(p)),0,PAGE_SIZE);
                }
                if (unlikely(!p)) {
-printf("assign_new_domain_page: Can't alloc!!!! Aaaargh!\n");
+                       printf("assign_new_domain_page: Can't alloc!!!! 
Aaaargh!\n");
                        return(p);
                }
                if (unlikely(page_to_maddr(p) > __get_cpu_var(vhpt_paddr)
                             && page_to_maddr(p) < __get_cpu_var(vhpt_pend))) {
-                 printf("assign_new_domain_page: reassigned vhpt page %p!!\n",
-                        page_to_maddr(p));
+                       printf("assign_new_domain_page: reassigned vhpt page 
%lx!!\n",
+                               page_to_maddr(p));
                }
                set_pte(pte, pfn_pte(page_to_maddr(p) >> PAGE_SHIFT,
                        __pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX)));
@@ -534,8 +541,8 @@
 #ifdef CONFIG_DOMAIN0_CONTIGUOUS
        if (d == dom0) {
                if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
-                       //printk("lookup_domain_mpa: bad dom0 mpaddr 
%p!\n",mpaddr);
-//printk("lookup_domain_mpa: 
start=%p,end=%p!\n",dom0_start,dom0_start+dom0_size);
+                       //printk("lookup_domain_mpa: bad dom0 mpaddr 
0x%lx!\n",mpaddr);
+                       //printk("lookup_domain_mpa: 
start=0x%lx,end=0x%lx!\n",dom0_start,dom0_start+dom0_size);
                        mpafoo(mpaddr);
                }
                pte_t pteval = pfn_pte(mpaddr >> PAGE_SHIFT,
@@ -563,8 +570,8 @@
        if ((mpaddr >> PAGE_SHIFT) < d->max_pages) {
                if (assign_new_domain_page(d,mpaddr)) goto tryagain;
        }
-       printk("lookup_domain_mpa: bad mpa %p (> %p\n",
-               mpaddr,d->max_pages<<PAGE_SHIFT);
+       printk("lookup_domain_mpa: bad mpa 0x%lx (> 0x%lx)\n",
+               mpaddr, (unsigned long) d->max_pages<<PAGE_SHIFT);
        mpafoo(mpaddr);
        return 0;
 }
@@ -577,7 +584,7 @@
        unsigned long imva;
 
        pte &= _PAGE_PPN_MASK;
-       imva = __va(pte);
+       imva = (unsigned long) __va(pte);
        imva |= mpaddr & ~PAGE_MASK;
        return(imva);
 }
@@ -606,13 +613,13 @@
 {
        int remain;
 
-       if (IS_XEN_ADDRESS(dom0,src)) {
+       if (IS_XEN_ADDRESS(dom0,(unsigned long) src)) {
                memcpy(dst,src,size);
        }
        else {
                printf("About to call __copy_from_user(%p,%p,%d)\n",
                        dst,src,size);
-               while (remain = __copy_from_user(dst,src,size)) {
+               while ((remain = __copy_from_user(dst,src,size)) != 0) {
                        printf("incomplete user copy, %d remain of %d\n",
                                remain,size);
                        dst += size - remain; src += size - remain;
@@ -623,16 +630,15 @@
 
 void loaddomainelfimage(struct domain *d, unsigned long image_start)
 {
-       char *elfbase = image_start;
+       char *elfbase = (char *) image_start;
        //Elf_Ehdr *ehdr = (Elf_Ehdr *)image_start;
        Elf_Ehdr ehdr;
        Elf_Phdr phdr;
-       int h, filesz, memsz, paddr;
+       int h, filesz, memsz;
        unsigned long elfaddr, dom_mpaddr, dom_imva;
        struct page *p;
-       unsigned long pteval;
   
-       copy_memory(&ehdr,image_start,sizeof(Elf_Ehdr));
+       copy_memory(&ehdr, (void *) image_start, sizeof(Elf_Ehdr));
        for ( h = 0; h < ehdr.e_phnum; h++ ) {
                copy_memory(&phdr,elfbase + ehdr.e_phoff + (h*ehdr.e_phentsize),
                sizeof(Elf_Phdr));
@@ -641,7 +647,7 @@
                continue;
        }
        filesz = phdr.p_filesz; memsz = phdr.p_memsz;
-       elfaddr = elfbase + phdr.p_offset;
+       elfaddr = (unsigned long) elfbase + phdr.p_offset;
        dom_mpaddr = phdr.p_paddr;
 //printf("p_offset: %x, size=%x\n",elfaddr,filesz);
 #ifdef CONFIG_DOMAIN0_CONTIGUOUS
@@ -650,9 +656,9 @@
                        printf("Domain0 doesn't fit in allocated space!\n");
                        while(1);
                }
-               dom_imva = __va(dom_mpaddr + dom0_start);
-               copy_memory(dom_imva,elfaddr,filesz);
-               if (memsz > filesz) memset(dom_imva+filesz,0,memsz-filesz);
+               dom_imva = (unsigned long) __va(dom_mpaddr + dom0_start);
+               copy_memory((void *) dom_imva, (void *) elfaddr, filesz);
+               if (memsz > filesz) memset((void *) dom_imva+filesz, 0, 
memsz-filesz);
 //FIXME: This test for code seems to find a lot more than objdump -x does
                if (phdr.p_flags & PF_X) privify_memory(dom_imva,filesz);
        }
@@ -661,20 +667,20 @@
        while (memsz > 0) {
                p = assign_new_domain_page(d,dom_mpaddr);
                if (unlikely(!p)) BUG();
-               dom_imva = __va(page_to_maddr(p));
+               dom_imva = (unsigned long) __va(page_to_maddr(p));
                if (filesz > 0) {
                        if (filesz >= PAGE_SIZE)
-                               copy_memory(dom_imva,elfaddr,PAGE_SIZE);
+                               copy_memory((void *) dom_imva, (void *) 
elfaddr, PAGE_SIZE);
                        else { // copy partial page, zero the rest of page
-                               copy_memory(dom_imva,elfaddr,filesz);
-                               memset(dom_imva+filesz,0,PAGE_SIZE-filesz);
+                               copy_memory((void *) dom_imva, (void *) 
elfaddr, filesz);
+                               memset((void *) dom_imva+filesz, 0, 
PAGE_SIZE-filesz);
                        }
 //FIXME: This test for code seems to find a lot more than objdump -x does
                        if (phdr.p_flags & PF_X)
                                privify_memory(dom_imva,PAGE_SIZE);
                }
                else if (memsz > 0) // always zero out entire page
-                       memset(dom_imva,0,PAGE_SIZE);
+                       memset((void *) dom_imva, 0, PAGE_SIZE);
                memsz -= PAGE_SIZE; filesz -= PAGE_SIZE;
                elfaddr += PAGE_SIZE; dom_mpaddr += PAGE_SIZE;
        }
@@ -689,33 +695,33 @@
        copy_memory(&ehdr,elfbase,sizeof(Elf_Ehdr));
 
        if ( !elf_sanity_check(&ehdr) ) {
-           printk("ELF sanity check failed.\n");
-           return -EINVAL;
+               printk("ELF sanity check failed.\n");
+               return -EINVAL;
        }
 
        if ( (ehdr.e_phoff + (ehdr.e_phnum * ehdr.e_phentsize)) > elfsize )
        {
-           printk("ELF program headers extend beyond end of image.\n");
-           return -EINVAL;
+               printk("ELF program headers extend beyond end of image.\n");
+               return -EINVAL;
        }
 
        if ( (ehdr.e_shoff + (ehdr.e_shnum * ehdr.e_shentsize)) > elfsize )
        {
-           printk("ELF section headers extend beyond end of image.\n");
-           return -EINVAL;
+               printk("ELF section headers extend beyond end of image.\n");
+               return -EINVAL;
        }
 
 #if 0
        /* Find the section-header strings table. */
        if ( ehdr.e_shstrndx == SHN_UNDEF )
        {
-           printk("ELF image has no section-header strings table 
(shstrtab).\n");
-           return -EINVAL;
+               printk("ELF image has no section-header strings table 
(shstrtab).\n");
+               return -EINVAL;
        }
 #endif
 
        *entry = ehdr.e_entry;
-printf("parsedomainelfimage: entry point = %p\n",*entry);
+       printf("parsedomainelfimage: entry point = 0x%lx\n", *entry);
 
        return 0;
 }
@@ -727,22 +733,21 @@
        if (platform_is_hp_ski()) {
        dom0_size = 128*1024*1024; //FIXME: Should be configurable
        }
-       printf("alloc_dom0: starting (initializing %d 
MB...)\n",dom0_size/(1024*1024));
+       printf("alloc_dom0: starting (initializing %lu 
MB...)\n",dom0_size/(1024*1024));
  
-     /* 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 >> PAGE_SHIFT, dom0_align >> PAGE_SHIFT);
-     dom0_start <<= PAGE_SHIFT;
+       /* 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 >> PAGE_SHIFT, dom0_align >> 
PAGE_SHIFT);
+       dom0_start <<= PAGE_SHIFT;
        if (!dom0_start) {
-       printf("construct_dom0: can't allocate contiguous memory size=%p\n",
+       printf("alloc_dom0: can't allocate contiguous memory size=%lu\n",
                dom0_size);
        while(1);
        }
-       printf("alloc_dom0: dom0_start=%p\n",dom0_start);
+       printf("alloc_dom0: dom0_start=0x%lx\n", dom0_start);
 #else
        dom0_start = 0;
 #endif
@@ -770,13 +775,8 @@
                       unsigned long initrd_start, unsigned long initrd_len,
                       char *cmdline)
 {
-       char *dst;
        int i, rc;
-       unsigned long pfn, mfn;
-       unsigned long nr_pt_pages;
-       unsigned long count;
        unsigned long alloc_start, alloc_end;
-       struct page_info *page = NULL;
        start_info_t *si;
        struct vcpu *v = d->vcpu[0];
 
@@ -787,7 +787,15 @@
        unsigned long pkern_end;
        unsigned long pinitrd_start = 0;
        unsigned long pstart_info;
-       unsigned long ret, progress = 0;
+#if 0
+       char *dst;
+       unsigned long nr_pt_pages;
+       unsigned long count;
+#endif
+#ifdef VALIDATE_VT
+       unsigned long mfn;
+       struct page_info *page = NULL;
+#endif
 
 //printf("construct_dom0: starting\n");
 
@@ -843,7 +851,7 @@
              pinitrd_start=(dom0_start+dom0_size) -
                           (PAGE_ALIGN(initrd_len) + 4*1024*1024);
 
-             memcpy(__va(pinitrd_start),initrd_start,initrd_len);
+             memcpy(__va(pinitrd_start), (void *) initrd_start, initrd_len);
              pstart_info = PAGE_ALIGN(pinitrd_start + initrd_len);
         } else {
              pstart_info = PAGE_ALIGN(pkern_end);
@@ -861,7 +869,8 @@
        {
            printk("Initial guest OS requires too much space\n"
                   "(%luMB is greater than %luMB limit)\n",
-                  (pkern_end-pkern_start)>>20, (d->max_pages<<PAGE_SHIFT)>>20);
+                  (pkern_end-pkern_start)>>20,
+                  (unsigned long) (d->max_pages<<PAGE_SHIFT)>>20);
            return -ENOMEM;
        }
 
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/hypercall.c
--- a/xen/arch/ia64/xen/hypercall.c     Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/hypercall.c     Tue Feb 28 17:29:30 2006
@@ -16,10 +16,15 @@
 
 #include <asm/vcpu.h>
 #include <asm/dom_fw.h>
+#include <public/dom0_ops.h>
+#include <public/event_channel.h>
 #include <public/memory.h>
 #include <public/sched.h>
 
 extern unsigned long translate_domain_mpaddr(unsigned long);
+/* FIXME: where these declarations should be there ? */
+extern int dump_privop_counts_to_user(char *, int);
+extern int zero_privop_counts_to_user(char *, int);
 
 unsigned long idle_when_pending = 0;
 unsigned long pal_halt_light_count = 0;
@@ -135,12 +140,12 @@
                regs->r8 = EFI_UNSUPPORTED;
                break;
            case FW_HYPERCALL_EFI_GET_TIME:
-               tv = vcpu_get_gr(v,32);
-               tc = vcpu_get_gr(v,33);
+               tv = (unsigned long *) vcpu_get_gr(v,32);
+               tc = (unsigned long *) vcpu_get_gr(v,33);
                //printf("efi_get_time(%p,%p) called...",tv,tc);
-               tv = __va(translate_domain_mpaddr(tv));
-               if (tc) tc = __va(translate_domain_mpaddr(tc));
-               regs->r8 = (*efi.get_time)(tv,tc);
+               tv = (unsigned long *) __va(translate_domain_mpaddr((unsigned 
long) tv));
+               if (tc) tc = (unsigned long *) 
__va(translate_domain_mpaddr((unsigned long) tc));
+               regs->r8 = (*efi.get_time)((efi_time_t *) tv, (efi_time_cap_t 
*) tc);
                //printf("and returns %lx\n",regs->r8);
                break;
            case FW_HYPERCALL_EFI_SET_TIME:
@@ -161,23 +166,23 @@
                break;
            case 0xffff:
                regs->r8 = dump_privop_counts_to_user(
-                       vcpu_get_gr(v,32),
-                       vcpu_get_gr(v,33));
+                       (char *) vcpu_get_gr(v,32),
+                       (int) vcpu_get_gr(v,33));
                break;
            case 0xfffe:
                regs->r8 = zero_privop_counts_to_user(
-                       vcpu_get_gr(v,32),
-                       vcpu_get_gr(v,33));
+                       (char *) vcpu_get_gr(v,32),
+                       (int) vcpu_get_gr(v,33));
                break;
            case __HYPERVISOR_dom0_op:
-               regs->r8 = do_dom0_op(regs->r14);
+               regs->r8 = do_dom0_op((struct dom0_op *) regs->r14);
                break;
 
            case __HYPERVISOR_memory_op:
                /* we don't handle reservations; just return success */
                {
                    struct xen_memory_reservation reservation;
-                   void *arg = regs->r15;
+                   void *arg = (void *) regs->r15;
 
                    switch(regs->r14) {
                    case XENMEM_increase_reservation:
@@ -189,34 +194,34 @@
                            regs->r8 = reservation.nr_extents;
                        break;
                    default:
-                       regs->r8 = do_memory_op(regs->r14, regs->r15);
+                       regs->r8 = do_memory_op((int) regs->r14, (void 
*)regs->r15);
                        break;
                    }
                }
                break;
 
            case __HYPERVISOR_event_channel_op:
-               regs->r8 = do_event_channel_op(regs->r14);
+               regs->r8 = do_event_channel_op((struct evtchn_op *) regs->r14);
                break;
 
            case __HYPERVISOR_grant_table_op:
-               regs->r8 = do_grant_table_op(regs->r14, regs->r15, regs->r16);
+               regs->r8 = do_grant_table_op((unsigned int) regs->r14, (void *) 
regs->r15, (unsigned int) regs->r16);
                break;
 
            case __HYPERVISOR_console_io:
-               regs->r8 = do_console_io(regs->r14, regs->r15, regs->r16);
+               regs->r8 = do_console_io((int) regs->r14, (int) regs->r15, 
(char *) regs->r16);
                break;
 
            case __HYPERVISOR_xen_version:
-               regs->r8 = do_xen_version(regs->r14, regs->r15);
+               regs->r8 = do_xen_version((int) regs->r14, (void *) regs->r15);
                break;
 
            case __HYPERVISOR_multicall:
-               regs->r8 = do_multicall(regs->r14, regs->r15);
+               regs->r8 = do_multicall((struct multicall_entry *) regs->r14, 
(unsigned int) regs->r15);
                break;
 
            default:
-               printf("unknown hypercall %x\n", regs->r2);
+               printf("unknown hypercall %lx\n", regs->r2);
                regs->r8 = do_ni_hypercall();
        }
        return 1;
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/irq.c
--- a/xen/arch/ia64/xen/irq.c   Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/irq.c   Tue Feb 28 17:29:30 2006
@@ -286,7 +286,9 @@
 int handle_IRQ_event(unsigned int irq,
                struct pt_regs *regs, struct irqaction *action)
 {
+#ifndef XEN
        int status = 1; /* Force the "do bottom halves" bit */
+#endif
        int retval = 0;
 
 #ifndef XEN
@@ -657,8 +659,10 @@
        if (!action)
                return -ENOMEM;
 
+#ifdef XEN
+       action->handler = (void *) handler;
+#else
        action->handler = handler;
-#ifndef XEN
        action->flags = irqflags;
        action->mask = 0;
 #endif
@@ -698,7 +702,9 @@
 #endif
 {
        irq_desc_t *desc;
+#ifndef XEN
        struct irqaction **p;
+#endif
        unsigned long flags;
 
        if (irq >= NR_IRQS)
@@ -755,7 +761,8 @@
  * disabled.
  */
 
-static DECLARE_MUTEX(probe_sem);
+#ifndef XEN
+static int DECLARE_MUTEX(probe_sem);
 
 /**
  *     probe_irq_on    - begin an interrupt autodetect
@@ -765,7 +772,6 @@
  *
  */
 
-#ifndef XEN
 unsigned long probe_irq_on(void)
 {
        unsigned int i;
@@ -936,7 +942,9 @@
 
 int setup_irq(unsigned int irq, struct irqaction * new)
 {
+#ifndef XEN
        int shared = 0;
+#endif
        unsigned long flags;
        struct irqaction *old, **p;
        irq_desc_t *desc = irq_descp(irq);
@@ -1371,7 +1379,7 @@
     return 0;
 }
 
-int pirq_guest_bind(struct vcpu *d, int irq, int will_share)
+int pirq_guest_bind(struct vcpu *v, int irq, int will_share)
 {
     irq_desc_t         *desc = &irq_desc[irq];
     irq_guest_action_t *action;
@@ -1431,7 +1439,7 @@
         goto out;
     }
 
-    action->guest[action->nr_guests++] = d;
+    action->guest[action->nr_guests++] = v->domain;
 
  out:
     spin_unlock_irqrestore(&desc->lock, flags);
@@ -1480,6 +1488,7 @@
 #ifdef XEN
 #ifdef IA64
 // this is a temporary hack until real console input is implemented
+extern void domain_pend_keyboard_interrupt(int irq);
 irqreturn_t guest_forward_keyboard_input(int irq, void *nada, struct pt_regs 
*regs)
 {
        domain_pend_keyboard_interrupt(irq);
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/mm_init.c
--- a/xen/arch/ia64/xen/mm_init.c       Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/mm_init.c       Tue Feb 28 17:29:30 2006
@@ -47,6 +47,7 @@
 #include <asm/uaccess.h>
 #include <asm/unistd.h>
 #include <asm/mca.h>
+#include <asm/vhpt.h>
 
 #ifndef XEN
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
@@ -63,7 +64,7 @@
 EXPORT_SYMBOL(vmem_map);
 #endif
 
-static int pgt_cache_water[2] = { 25, 50 };
+// static int pgt_cache_water[2] = { 25, 50 };
 
 struct page *zero_page_memmap_ptr;             /* map entry for zero page */
 EXPORT_SYMBOL(zero_page_memmap_ptr);
@@ -222,7 +223,7 @@
 ia64_set_rbs_bot (void)
 {
 #ifdef XEN
-       unsigned stack_size = MAX_USER_STACK_SIZE;
+       unsigned long stack_size = MAX_USER_STACK_SIZE;
 #else
        unsigned long stack_size = current->rlim[RLIMIT_STACK].rlim_max & -16;
 #endif
@@ -279,7 +280,7 @@
 #endif
 }
 
-setup_gate (void)
+void setup_gate (void)
 {
        printk("setup_gate not-implemented.\n");
 }
@@ -287,7 +288,10 @@
 void __devinit
 ia64_mmu_init (void *my_cpu_data)
 {
-       unsigned long psr, pta, impl_va_bits;
+       unsigned long psr, impl_va_bits;
+#if 0
+       unsigned long pta;
+#endif
        extern void __devinit tlb_init (void);
        int cpu;
 
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/pcdp.c
--- a/xen/arch/ia64/xen/pcdp.c  Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/pcdp.c  Tue Feb 28 17:29:30 2006
@@ -71,7 +71,9 @@
 {
        struct pcdp *pcdp;
        struct pcdp_uart *uart;
+#ifndef XEN
        struct pcdp_device *dev, *end;
+#endif
        int i, serial = 0;
 
        pcdp = efi.hcdp;
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/privop.c
--- a/xen/arch/ia64/xen/privop.c        Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/privop.c        Tue Feb 28 17:29:30 2006
@@ -11,7 +11,12 @@
 #include <asm/processor.h>
 #include <asm/delay.h> // Debug only
 #include <asm/dom_fw.h>
+#include <asm/vhpt.h>
 //#include <debug.h>
+
+/* FIXME: where these declarations should be there ? */
+extern int dump_reflect_counts(char *);
+extern void zero_reflect_counts(void);
 
 long priv_verbose=0;
 
@@ -600,7 +605,7 @@
        if (__copy_from_user(&bundle,iip,sizeof(bundle)))
 #endif
        {
-//printf("*** priv_handle_op: privop bundle @%p not mapped, retrying\n",iip);
+//printf("*** priv_handle_op: privop bundle at 0x%lx not mapped, 
retrying\n",iip);
                return vcpu_force_data_miss(vcpu,regs->cr_iip);
        }
 #if 0
@@ -613,8 +618,8 @@
 #endif
        if (privop_trace) {
                static long i = 400;
-               //if (i > 0) printf("privop @%p\n",iip);
-               if (i > 0) printf("priv_handle_op: @%p, itc=%lx, itm=%lx\n",
+               //if (i > 0) printf("priv_handle_op: at 0x%lx\n",iip);
+               if (i > 0) printf("priv_handle_op: privop trace at 0x%lx, 
itc=%lx, itm=%lx\n",
                        iip,ia64_get_itc(),ia64_get_itm());
                i--;
        }
@@ -727,7 +732,7 @@
                break;
        }
         //printf("We who are about do die salute you\n");
-       printf("handle_op: can't handle privop at 0x%lx (op=0x%016lx) slot %d 
(type=%d), ipsr=%p\n",
+       printf("priv_handle_op: can't handle privop at 0x%lx (op=0x%016lx) slot 
%d (type=%d), ipsr=0x%lx\n",
                 iip, (UINT64)inst.inst, slot, slot_type, ipsr);
         //printf("vtop(0x%lx)==0x%lx\n", iip, tr_vtop(iip));
         //thread_mozambique("privop fault\n");
@@ -768,7 +773,7 @@
                (void)vcpu_increment_iip(vcpu);
        }
        if (fault == IA64_ILLOP_FAULT)
-               printf("priv_emulate: priv_handle_op fails, isr=%p\n",isr);
+               printf("priv_emulate: priv_handle_op fails, isr=0x%lx\n",isr);
        return fault;
 }
 
@@ -797,8 +802,7 @@
 char *hyperpriv_str[HYPERPRIVOP_MAX+1] = {
        0, "rfi", "rsm.dt", "ssm.dt", "cover", "itc.d", "itc.i", "ssm.i",
        "=ivr", "=tpr", "tpr=", "eoi", "itm=", "thash", "ptc.ga", "itr.d",
-       "=rr", "rr=", "kr=",
-       0
+       "=rr", "rr=", "kr="
 };
 
 unsigned long slow_hyperpriv_cnt[HYPERPRIVOP_MAX+1] = { 0 };
@@ -809,15 +813,14 @@
 int
 ia64_hyperprivop(unsigned long iim, REGS *regs)
 {
-       struct vcpu *v = (struct domain *) current;
-       INST64 inst;
+       struct vcpu *v = current;
        UINT64 val;
        UINT64 itir, ifa;
 
 // FIXME: Handle faults appropriately for these
        if (!iim || iim > HYPERPRIVOP_MAX) {
                printf("bad hyperprivop; ignored\n");
-               printf("iim=%d, iip=%p\n",iim,regs->cr_iip);
+               printf("iim=%lx, iip=0x%lx\n", iim, regs->cr_iip);
                return 1;
        }
        slow_hyperpriv_cnt[iim]++;
@@ -946,48 +949,48 @@
        for (i=0; i < 64; i++) sum += privcnt.Mpriv_cnt[i];
        s += sprintf(s,"Privop statistics: (Total privops: %ld)\n",sum);
        if (privcnt.mov_to_ar_imm)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.mov_to_ar_imm,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.mov_to_ar_imm,
                        "mov_to_ar_imm", (privcnt.mov_to_ar_imm*100L)/sum);
        if (privcnt.mov_to_ar_reg)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.mov_to_ar_reg,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.mov_to_ar_reg,
                        "mov_to_ar_reg", (privcnt.mov_to_ar_reg*100L)/sum);
        if (privcnt.mov_from_ar)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.mov_from_ar,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.mov_from_ar,
                        "privified-mov_from_ar", 
(privcnt.mov_from_ar*100L)/sum);
        if (privcnt.ssm)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.ssm,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.ssm,
                        "ssm", (privcnt.ssm*100L)/sum);
        if (privcnt.rsm)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.rsm,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.rsm,
                        "rsm", (privcnt.rsm*100L)/sum);
        if (privcnt.rfi)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.rfi,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.rfi,
                        "rfi", (privcnt.rfi*100L)/sum);
        if (privcnt.bsw0)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.bsw0,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.bsw0,
                        "bsw0", (privcnt.bsw0*100L)/sum);
        if (privcnt.bsw1)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.bsw1,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.bsw1,
                        "bsw1", (privcnt.bsw1*100L)/sum);
        if (privcnt.cover)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.cover,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.cover,
                        "cover", (privcnt.cover*100L)/sum);
        if (privcnt.fc)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.fc,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.fc,
                        "privified-fc", (privcnt.fc*100L)/sum);
        if (privcnt.cpuid)
-               s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.cpuid,
+               s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.cpuid,
                        "privified-getcpuid", (privcnt.cpuid*100L)/sum);
        for (i=0; i < 64; i++) if (privcnt.Mpriv_cnt[i]) {
                if (!Mpriv_str[i]) s += sprintf(s,"PRIVSTRING NULL!!\n");
-               else s += sprintf(s,"%10d  %s [%d%%]\n", privcnt.Mpriv_cnt[i],
+               else s += sprintf(s,"%10ld  %s [%ld%%]\n", privcnt.Mpriv_cnt[i],
                        Mpriv_str[i], (privcnt.Mpriv_cnt[i]*100L)/sum);
                if (i == 0x24) { // mov from CR
                        s += sprintf(s,"            [");
                        for (j=0; j < 128; j++) if (from_cr_cnt[j]) {
                                if (!cr_str[j])
                                        s += sprintf(s,"PRIVSTRING NULL!!\n");
-                               s += 
sprintf(s,"%s(%d),",cr_str[j],from_cr_cnt[j]);
+                               s += 
sprintf(s,"%s(%ld),",cr_str[j],from_cr_cnt[j]);
                        }
                        s += sprintf(s,"]\n");
                }
@@ -996,7 +999,7 @@
                        for (j=0; j < 128; j++) if (to_cr_cnt[j]) {
                                if (!cr_str[j])
                                        s += sprintf(s,"PRIVSTRING NULL!!\n");
-                               s += 
sprintf(s,"%s(%d),",cr_str[j],to_cr_cnt[j]);
+                               s += 
sprintf(s,"%s(%ld),",cr_str[j],to_cr_cnt[j]);
                        }
                        s += sprintf(s,"]\n");
                }
@@ -1050,7 +1053,7 @@
                s += sprintf(s,"%s:\n",v->instname);
                for (j = 0; j < PRIVOP_COUNT_NADDRS; j++) {
                        if (!v->addr[j]) break;
-                       s += sprintf(s," @%p #%ld\n",v->addr[j],v->count[j]);
+                       s += sprintf(s," at 0x%lx 
#%ld\n",v->addr[j],v->count[j]);
                }
                if (v->overflow) 
                        s += sprintf(s," other #%ld\n",v->overflow);
@@ -1085,17 +1088,17 @@
 int dump_misc_stats(char *buf)
 {
        char *s = buf;
-       s += sprintf(s,"Virtual TR translations: %d\n",tr_translate_count);
-       s += sprintf(s,"Virtual VHPT slow translations: 
%d\n",vhpt_translate_count);
-       s += sprintf(s,"Virtual VHPT fast translations: 
%d\n",fast_vhpt_translate_count);
-       s += sprintf(s,"Virtual DTLB translations: %d\n",dtlb_translate_count);
-       s += sprintf(s,"Physical translations: %d\n",phys_translate_count);
-       s += sprintf(s,"Recoveries to page fault: 
%d\n",recover_to_page_fault_count);
-       s += sprintf(s,"Recoveries to break fault: 
%d\n",recover_to_break_fault_count);
-       s += sprintf(s,"Idle when pending: %d\n",idle_when_pending);
-       s += sprintf(s,"PAL_HALT_LIGHT (no pending): 
%d\n",pal_halt_light_count);
-       s += sprintf(s,"context switches: %d\n",context_switch_count);
-       s += sprintf(s,"Lazy covers: %d\n",lazy_cover_count);
+       s += sprintf(s,"Virtual TR translations: %ld\n",tr_translate_count);
+       s += sprintf(s,"Virtual VHPT slow translations: 
%ld\n",vhpt_translate_count);
+       s += sprintf(s,"Virtual VHPT fast translations: 
%ld\n",fast_vhpt_translate_count);
+       s += sprintf(s,"Virtual DTLB translations: %ld\n",dtlb_translate_count);
+       s += sprintf(s,"Physical translations: %ld\n",phys_translate_count);
+       s += sprintf(s,"Recoveries to page fault: 
%ld\n",recover_to_page_fault_count);
+       s += sprintf(s,"Recoveries to break fault: 
%ld\n",recover_to_break_fault_count);
+       s += sprintf(s,"Idle when pending: %ld\n",idle_when_pending);
+       s += sprintf(s,"PAL_HALT_LIGHT (no pending): 
%ld\n",pal_halt_light_count);
+       s += sprintf(s,"context switches: %ld\n",context_switch_count);
+       s += sprintf(s,"Lazy covers: %ld\n",lazy_cover_count);
        return s - buf;
 }
 
@@ -1120,17 +1123,17 @@
        char *s = buf;
        unsigned long total = 0;
        for (i = 1; i <= HYPERPRIVOP_MAX; i++) total += slow_hyperpriv_cnt[i];
-       s += sprintf(s,"Slow hyperprivops (total %d):\n",total);
+       s += sprintf(s,"Slow hyperprivops (total %ld):\n",total);
        for (i = 1; i <= HYPERPRIVOP_MAX; i++)
                if (slow_hyperpriv_cnt[i])
-                       s += sprintf(s,"%10d %s\n",
+                       s += sprintf(s,"%10ld %s\n",
                                slow_hyperpriv_cnt[i], hyperpriv_str[i]);
        total = 0;
        for (i = 1; i <= HYPERPRIVOP_MAX; i++) total += fast_hyperpriv_cnt[i];
-       s += sprintf(s,"Fast hyperprivops (total %d):\n",total);
+       s += sprintf(s,"Fast hyperprivops (total %ld):\n",total);
        for (i = 1; i <= HYPERPRIVOP_MAX; i++)
                if (fast_hyperpriv_cnt[i])
-                       s += sprintf(s,"%10d %s\n",
+                       s += sprintf(s,"%10ld %s\n",
                                fast_hyperpriv_cnt[i], hyperpriv_str[i]);
        return s - buf;
 }
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/process.c
--- a/xen/arch/ia64/xen/process.c       Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/process.c       Tue Feb 28 17:29:30 2006
@@ -33,8 +33,14 @@
 #include <xen/multicall.h>
 #include <asm/debugger.h>
 
-extern unsigned long vcpu_get_itir_on_fault(struct vcpu *, UINT64);
 extern void die_if_kernel(char *str, struct pt_regs *regs, long err);
+/* FIXME: where these declarations shold be there ? */
+extern void load_region_regs(struct vcpu *);
+extern void panic_domain(struct pt_regs *, const char *, ...);
+extern long platform_is_hp_ski(void);
+extern int ia64_hyperprivop(unsigned long, REGS *);
+extern int ia64_hypercall(struct pt_regs *regs);
+extern void vmx_do_launch(struct vcpu *);
 
 extern unsigned long dom0_start, dom0_size;
 
@@ -98,14 +104,17 @@
        mpaddr = ((pteval & _PAGE_PPN_MASK) & ~mask) | (address & mask);
        if (d == dom0) {
                if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
-                       //printk("translate_domain_pte: out-of-bounds dom0 
mpaddr %p! itc=%lx...\n",mpaddr,ia64_get_itc());
+                       /*
+                       printk("translate_domain_pte: out-of-bounds dom0 mpaddr 
0x%lx! itc=%lx...\n",
+                               mpaddr, ia64_get_itc());
+                       */
                        tdpfoo();
                }
        }
        else if ((mpaddr >> PAGE_SHIFT) > d->max_pages) {
                if ((mpaddr & ~0x1fffL ) != (1L << 40))
-               printf("translate_domain_pte: bad mpa=%p (> 
%p),vadr=%p,pteval=%p,itir=%p\n",
-                       mpaddr,d->max_pages<<PAGE_SHIFT,address,pteval,itir);
+               printf("translate_domain_pte: bad mpa=0x%lx (> 
0x%lx),vadr=0x%lx,pteval=0x%lx,itir=0x%lx\n",
+                       mpaddr, (unsigned long) d->max_pages<<PAGE_SHIFT, 
address, pteval, itir);
                tdpfoo();
        }
        pteval2 = lookup_domain_mpa(d,mpaddr);
@@ -123,7 +132,8 @@
 
        if (current->domain == dom0) {
                if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
-                       printk("translate_domain_mpaddr: out-of-bounds dom0 
mpaddr %p! continuing...\n",mpaddr);
+                       printk("translate_domain_mpaddr: out-of-bounds dom0 
mpaddr 0x%lx! continuing...\n",
+                               mpaddr);
                        tdpfoo();
                }
        }
@@ -150,7 +160,7 @@
 
        s += sprintf(s,"Slow reflections by vector:\n");
        for (i = 0, j = 0; i < 0x80; i++) {
-               if (cnt = slow_reflect_count[i]) {
+               if ( (cnt = slow_reflect_count[i]) != 0 ) {
                        s += sprintf(s,"0x%02x00:%10d, ",i,cnt);
                        if ((j++ & 3) == 3) s += sprintf(s,"\n");
                }
@@ -158,7 +168,7 @@
        if (j & 3) s += sprintf(s,"\n");
        s += sprintf(s,"Fast reflections by vector:\n");
        for (i = 0, j = 0; i < 0x80; i++) {
-               if (cnt = fast_reflect_count[i]) {
+               if ( (cnt = fast_reflect_count[i]) != 0 ) {
                        s += sprintf(s,"0x%02x00:%10d, ",i,cnt);
                        if ((j++ & 3) == 3) s += sprintf(s,"\n");
                }
@@ -186,7 +196,6 @@
 
 void reflect_interruption(unsigned long isr, struct pt_regs *regs, unsigned 
long vector)
 {
-       unsigned long vcpu_get_ipsr_int_state(struct vcpu *,unsigned long);
        struct vcpu *v = current;
 
        if (!PSCB(v,interrupt_collection_enabled))
@@ -205,7 +214,7 @@
 #ifdef CONFIG_SMP
 #warning "SMP FIXME: sharedinfo doesn't handle smp yet, need page per vcpu"
 #endif
-       regs->r31 = &(((mapped_regs_t *)SHARED_ARCHINFO_ADDR)->ipsr);
+       regs->r31 = (unsigned long) &(((mapped_regs_t 
*)SHARED_ARCHINFO_ADDR)->ipsr);
 
        PSCB(v,interrupt_delivery_enabled) = 0;
        PSCB(v,interrupt_collection_enabled) = 0;
@@ -219,13 +228,13 @@
 
 void reflect_extint(struct pt_regs *regs)
 {
-       extern unsigned long vcpu_verbose, privop_trace;
+//     extern unsigned long vcpu_verbose, privop_trace;
        unsigned long isr = regs->cr_ipsr & IA64_PSR_RI;
        struct vcpu *v = current;
-       static first_extint = 1;
+       static int first_extint = 1;
 
        if (first_extint) {
-               printf("Delivering first extint to domain: isr=%p, 
iip=%p\n",isr,regs->cr_iip);
+               printf("Delivering first extint to domain: isr=0x%lx, 
iip=0x%lx\n", isr, regs->cr_iip);
                //privop_trace = 1; vcpu_verbose = 1;
                first_extint = 0;
        }
@@ -297,11 +306,11 @@
                        // should never happen.  If it does, region 0 addr may
                        // indicate a bad xen pointer
                        printk("*** xen_handle_domain_access: exception table"
-                              " lookup failed, iip=%p, addr=%p, spinning...\n",
-                               iip,address);
+                              " lookup failed, iip=0x%lx, addr=0x%lx, 
spinning...\n",
+                               iip, address);
                        panic_domain(regs,"*** xen_handle_domain_access: 
exception table"
-                              " lookup failed, iip=%p, addr=%p, spinning...\n",
-                               iip,address);
+                              " lookup failed, iip=0x%lx, addr=0x%lx, 
spinning...\n",
+                               iip, address);
                }
                return;
        }
@@ -329,9 +338,12 @@
            unsigned long arg6, unsigned long arg7, unsigned long stack)
 {
        struct pt_regs *regs = (struct pt_regs *) &stack;
-       unsigned long code, error = isr;
+       unsigned long code;
+#if 0
+       unsigned long error = isr;
+       int result, sig;
+#endif
        char buf[128];
-       int result, sig;
        static const char *reason[] = {
                "IA-64 Illegal Operation fault",
                "IA-64 Privileged Operation fault",
@@ -543,7 +555,6 @@
 /**/   static int last_fd, last_count; // FIXME FIXME FIXME
 /**/                                   // BROKEN FOR MULTIPLE DOMAINS & SMP
 /**/   struct ssc_disk_stat { int fd; unsigned count;} *stat, last_stat;
-       extern unsigned long vcpu_verbose, privop_trace;
 
        arg0 = vcpu_get_gr(current,32);
        switch(ssc) {
@@ -588,11 +599,11 @@
                arg3 = vcpu_get_gr(current,35);
                if (arg2) {     // metaphysical address of descriptor
                        struct ssc_disk_req *req;
-                       unsigned long mpaddr, paddr;
+                       unsigned long mpaddr;
                        long len;
 
                        arg2 = translate_domain_mpaddr(arg2);
-                       req = (struct disk_req *)__va(arg2);
+                       req = (struct ssc_disk_req *) __va(arg2);
                        req->len &= 0xffffffffL;        // avoid strange bug
                        len = req->len;
 /**/                   last_fd = arg1;
@@ -640,7 +651,8 @@
                vcpu_set_gr(current,8,-1L,0);
                break;
            default:
-               printf("ia64_handle_break: bad ssc code %lx, iip=%p, b0=%p... 
spinning\n",ssc,regs->cr_iip,regs->b0);
+               printf("ia64_handle_break: bad ssc code %lx, iip=0x%lx, 
b0=0x%lx... spinning\n",
+                       ssc, regs->cr_iip, regs->b0);
                while(1);
                break;
        }
@@ -696,9 +708,9 @@
 ia64_handle_privop (unsigned long ifa, struct pt_regs *regs, unsigned long 
isr, unsigned long itir)
 {
        IA64FAULT vector;
-       struct domain *d = current->domain;
        struct vcpu *v = current;
-       vector = priv_emulate(current,regs,isr);
+
+       vector = priv_emulate(v,regs,isr);
        if (vector != IA64_NO_FAULT && vector != IA64_RFI_IN_PROGRESS) {
                // Note: if a path results in a vector to reflect that requires
                // iha/itir (e.g. vcpu_force_data_miss), they must be set there
@@ -712,8 +724,7 @@
 void
 ia64_handle_reflection (unsigned long ifa, struct pt_regs *regs, unsigned long 
isr, unsigned long iim, unsigned long vector)
 {
-       struct domain *d = (struct domain *) current->domain;
-       struct vcpu *v = (struct domain *) current;
+       struct vcpu *v = current;
        unsigned long check_lazy_cover = 0;
        unsigned long psr = regs->cr_ipsr;
 
@@ -753,7 +764,7 @@
                }
 #endif
 printf("*** NaT fault... attempting to handle as privop\n");
-printf("isr=%p, ifa=%p,iip=%p,ipsr=%p\n",isr,ifa,regs->cr_iip,psr);
+printf("isr=0x%lx, ifa=0x%lx, iip=0x%lx, ipsr=0x%lx\n", isr, ifa, 
regs->cr_iip, psr);
                //regs->eml_unat = 0;  FIXME: DO WE NEED THIS???
                // certain NaT faults are higher priority than privop faults
                vector = priv_emulate(v,regs,isr);
@@ -800,8 +811,7 @@
        unsigned int op, unsigned int nr_args, ...)
 {
     struct mc_state *mcs = &mc_state[smp_processor_id()];
-    VCPU *vcpu = current;
-    struct cpu_user_regs *regs = vcpu_regs(vcpu);
+    struct vcpu *v = current;
     unsigned int i;
     va_list args;
 
@@ -809,25 +819,25 @@
     if ( test_bit(_MCSF_in_multicall, &mcs->flags) ) {
        panic("PREEMPT happen in multicall\n"); // Not support yet
     } else {
-       vcpu_set_gr(vcpu, 2, op, 0);
+       vcpu_set_gr(v, 2, op, 0);
        for ( i = 0; i < nr_args; i++) {
            switch (i) {
-           case 0: vcpu_set_gr(vcpu, 14, va_arg(args, unsigned long), 0);
+           case 0: vcpu_set_gr(v, 14, va_arg(args, unsigned long), 0);
                    break;
-           case 1: vcpu_set_gr(vcpu, 15, va_arg(args, unsigned long), 0);
+           case 1: vcpu_set_gr(v, 15, va_arg(args, unsigned long), 0);
                    break;
-           case 2: vcpu_set_gr(vcpu, 16, va_arg(args, unsigned long), 0);
+           case 2: vcpu_set_gr(v, 16, va_arg(args, unsigned long), 0);
                    break;
-           case 3: vcpu_set_gr(vcpu, 17, va_arg(args, unsigned long), 0);
+           case 3: vcpu_set_gr(v, 17, va_arg(args, unsigned long), 0);
                    break;
-           case 4: vcpu_set_gr(vcpu, 18, va_arg(args, unsigned long), 0);
+           case 4: vcpu_set_gr(v, 18, va_arg(args, unsigned long), 0);
                    break;
            default: panic("Too many args for hypercall continuation\n");
                    break;
            }
        }
     }
-    vcpu->arch.hypercall_continuation = 1;
+    v->arch.hypercall_continuation = 1;
     va_end(args);
     return op;
 }
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/regionreg.c
--- a/xen/arch/ia64/xen/regionreg.c     Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/regionreg.c     Tue Feb 28 17:29:30 2006
@@ -18,6 +18,8 @@
 extern void ia64_new_rr7(unsigned long rid,void *shared_info, void 
*shared_arch_info, unsigned long p_vhpt, unsigned long v_pal);
 extern void *pal_vaddr;
 
+/* FIXME: where these declarations should be there ? */
+extern void panic_domain(struct pt_regs *, const char *, ...);
 
 #define        IA64_MIN_IMPL_RID_BITS  (IA64_MIN_IMPL_RID_MSB+1)
 #define        IA64_MAX_IMPL_RID_BITS  24
@@ -142,7 +144,7 @@
        // setup domain struct
        d->arch.rid_bits = ridbits;
        d->arch.starting_rid = i << IA64_MIN_IMPL_RID_BITS; d->arch.ending_rid 
= (i+n_rid_blocks) << IA64_MIN_IMPL_RID_BITS;
-printf("###allocating rid_range, domain %p: starting_rid=%lx, 
ending_rid=%lx\n",
+printf("###allocating rid_range, domain %p: starting_rid=%x, ending_rid=%x\n",
 d,d->arch.starting_rid, d->arch.ending_rid);
        
        return 1;
@@ -219,8 +221,8 @@
        newrid = v->arch.starting_rid + rrv.rid;
 
        if (newrid > v->arch.ending_rid) {
-               printk("can't set rr%d to %lx, starting_rid=%lx,"
-                       "ending_rid=%lx, val=%lx\n", rreg, newrid,
+               printk("can't set rr%d to %lx, starting_rid=%x,"
+                       "ending_rid=%x, val=%lx\n", (int) rreg, newrid,
                        v->arch.starting_rid,v->arch.ending_rid,val);
                return 0;
        }
@@ -253,7 +255,7 @@
        else if (rreg == 7)
                ia64_new_rr7(vmMangleRID(newrrv.rrval),v->vcpu_info,
                             v->arch.privregs, __get_cpu_var(vhpt_paddr),
-                            pal_vaddr);
+                            (unsigned long) pal_vaddr);
        else set_rr(rr,newrrv.rrval);
 #endif
        return 1;
@@ -263,11 +265,12 @@
 int set_metaphysical_rr0(void)
 {
        struct vcpu *v = current;
-       ia64_rr rrv;
+//     ia64_rr rrv;
        
 //     rrv.ve = 1;     FIXME: TURN ME BACK ON WHEN VHPT IS WORKING
        ia64_set_rr(0,v->arch.metaphysical_rr0);
        ia64_srlz_d();
+       return 1;
 }
 
 // validates/changes region registers 0-6 in the currently executing domain
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/sn_console.c
--- a/xen/arch/ia64/xen/sn_console.c    Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/sn_console.c    Tue Feb 28 17:29:30 2006
@@ -9,7 +9,13 @@
 #include <asm/sn/sn_sal.h>
 #include <xen/serial.h>
 
-void sn_putc(struct serial_port *, char);
+/*
+ * sn_putc - Send a character to the console, polled or interrupt mode
+ */
+static void sn_putc(struct serial_port *port, char c)
+{
+       ia64_sn_console_putc(c);
+}
 
 static struct uart_driver sn_sal_console = {
        .putc = sn_putc,
@@ -75,11 +81,3 @@
 
        return 0;
 }
-
-/*
- * sn_putc - Send a character to the console, polled or interrupt mode
- */
-void sn_putc(struct serial_port *port, char c)
-{
-       return ia64_sn_console_putc(c);
-}
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/vcpu.c  Tue Feb 28 17:29:30 2006
@@ -21,7 +21,15 @@
 #include <asm/processor.h>
 #include <asm/delay.h>
 #include <asm/vmx_vcpu.h>
+#include <asm/vhpt.h>
+#include <asm/tlbflush.h>
 #include <xen/event.h>
+
+/* FIXME: where these declarations should be there ? */
+extern void getreg(unsigned long regnum, unsigned long *val, int *nat, struct 
pt_regs *regs);
+extern void setreg(unsigned long regnum, unsigned long val, int nat, struct 
pt_regs *regs);
+extern void panic_domain(struct pt_regs *, const char *, ...);
+extern int set_metaphysical_rr0(void);
 
 typedef        union {
        struct ia64_psr ia64_psr;
@@ -47,10 +55,10 @@
 #define STATIC
 
 #ifdef PRIVOP_ADDR_COUNT
-struct privop_addr_count privop_addr_counter[PRIVOP_COUNT_NINSTS] = {
-       { "=ifa", { 0 }, { 0 }, 0 },
+struct privop_addr_count privop_addr_counter[PRIVOP_COUNT_NINSTS+1] = {
+       { "=ifa",  { 0 }, { 0 }, 0 },
        { "thash", { 0 }, { 0 }, 0 },
-       0
+       { 0,       { 0 }, { 0 }, 0 }
 };
 extern void privop_count_addr(unsigned long addr, int inst);
 #define        PRIVOP_COUNT_ADDR(regs,inst) 
privop_count_addr(regs->cr_iip,inst)
@@ -375,7 +383,7 @@
 UINT64 vcpu_get_ipsr_int_state(VCPU *vcpu,UINT64 prevpsr)
 {
        UINT64 dcr = PSCBX(vcpu,dcr);
-       PSR psr = {0};
+       PSR psr;
 
        //printf("*** vcpu_get_ipsr_int_state (0x%016lx)...",prevpsr);
        psr.i64 = prevpsr;
@@ -397,7 +405,7 @@
 
 IA64FAULT vcpu_get_dcr(VCPU *vcpu, UINT64 *pval)
 {
-extern unsigned long privop_trace;
+//extern unsigned long privop_trace;
 //privop_trace=0;
 //verbose("vcpu_get_dcr: called @%p\n",PSCB(vcpu,iip));
        // Reads of cr.dcr on Xen always have the sign bit set, so
@@ -525,7 +533,7 @@
 
 IA64FAULT vcpu_set_dcr(VCPU *vcpu, UINT64 val)
 {
-extern unsigned long privop_trace;
+//extern unsigned long privop_trace;
 //privop_trace=1;
        // Reads of cr.dcr on SP always have the sign bit set, so
        // a domain can differentiate whether it is running on SP or not
@@ -747,7 +755,7 @@
 
 IA64FAULT vcpu_get_lid(VCPU *vcpu, UINT64 *pval)
 {
-extern unsigned long privop_trace;
+//extern unsigned long privop_trace;
 //privop_trace=1;
        //TODO: Implement this
        printf("vcpu_get_lid: WARNING: Getting cr.lid always returns zero\n");
@@ -764,9 +772,10 @@
 #define HEARTBEAT_FREQ 16      // period in seconds
 #ifdef HEARTBEAT_FREQ
 #define N_DOMS 16      // period in seconds
+#if 0
        static long count[N_DOMS] = { 0 };
+#endif
        static long nonclockcount[N_DOMS] = { 0 };
-       REGS *regs = vcpu_regs(vcpu);
        unsigned domid = vcpu->domain->domain_id;
 #endif
 #ifdef IRQ_DEBUG
@@ -803,7 +812,7 @@
        // getting ivr has "side effects"
 #ifdef IRQ_DEBUG
        if (firsttime[vector]) {
-               printf("*** First get_ivr on vector=%d,itc=%lx\n",
+               printf("*** First get_ivr on vector=%lu,itc=%lx\n",
                        vector,ia64_get_itc());
                firsttime[vector]=0;
        }
@@ -817,7 +826,7 @@
 
        i = vector >> 6;
        mask = 1L << (vector & 0x3f);
-//printf("ZZZZZZ vcpu_get_ivr: setting insvc mask for vector %ld\n",vector);
+//printf("ZZZZZZ vcpu_get_ivr: setting insvc mask for vector %lu\n",vector);
        PSCBX(vcpu,insvc[i]) |= mask;
        PSCBX(vcpu,irr[i]) &= ~mask;
        //PSCB(vcpu,pending_interruption)--;
@@ -983,19 +992,19 @@
 {
     PSCBX(vcpu,xen_timer_interval) = cycles;
     vcpu_set_next_timer(vcpu);
-    printf("vcpu_enable_timer(%d): interval set to %d cycles\n",
+    printf("vcpu_enable_timer: interval set to %lu cycles\n",
              PSCBX(vcpu,xen_timer_interval));
     __set_bit(PSCB(vcpu,itv), PSCB(vcpu,delivery_mask));
 }
 
 IA64FAULT vcpu_set_itv(VCPU *vcpu, UINT64 val)
 {
-extern unsigned long privop_trace;
+//extern unsigned long privop_trace;
 //privop_trace=1;
        if (val & 0xef00) return (IA64_ILLOP_FAULT);
        PSCB(vcpu,itv) = val;
        if (val & 0x10000) {
-printf("**** vcpu_set_itv(%d): vitm=%lx, setting to 
0\n",val,PSCBX(vcpu,domain_itm));
+printf("**** vcpu_set_itv(%lu): vitm=%lx, setting to 
0\n",val,PSCBX(vcpu,domain_itm));
                PSCBX(vcpu,domain_itm) = 0;
        }
        else vcpu_enable_timer(vcpu,1000000L);
@@ -1103,7 +1112,7 @@
 
 IA64FAULT vcpu_set_itm(VCPU *vcpu, UINT64 val)
 {
-       UINT now = ia64_get_itc();
+       //UINT now = ia64_get_itc();
 
        //if (val < now) val = now + 1000;
 //printf("*** vcpu_set_itm: called with %lx\n",val);
@@ -1114,7 +1123,10 @@
 
 IA64FAULT vcpu_set_itc(VCPU *vcpu, UINT64 val)
 {
-
+#define DISALLOW_SETTING_ITC_FOR_NOW
+#ifdef DISALLOW_SETTING_ITC_FOR_NOW
+printf("vcpu_set_itc: Setting ar.itc is currently disabled\n");
+#else
        UINT64 oldnow = ia64_get_itc();
        UINT64 olditm = PSCBX(vcpu,domain_itm);
        unsigned long d = olditm - oldnow;
@@ -1122,10 +1134,6 @@
 
        UINT64 newnow = val, min_delta;
 
-#define DISALLOW_SETTING_ITC_FOR_NOW
-#ifdef DISALLOW_SETTING_ITC_FOR_NOW
-printf("vcpu_set_itc: Setting ar.itc is currently disabled\n");
-#else
        local_irq_disable();
        if (olditm) {
 printf("**** vcpu_set_itc(%lx): vitm changed to %lx\n",val,newnow+d);
@@ -1314,7 +1322,7 @@
 // this down, but since it has been apparently harmless, just flag it for now
 //                     panic_domain(vcpu_regs(vcpu),
                        printk(
-                        "vcpu_translate: bad physical address: %p\n",address);
+                        "vcpu_translate: bad physical address: 
0x%lx\n",address);
                }
                *pteval = (address & _PAGE_PPN_MASK) | __DIRTY_BITS | 
_PAGE_PL_2 | _PAGE_AR_RWX;
                *itir = PAGE_SHIFT << 2;
@@ -1327,7 +1335,8 @@
                unsigned long vipsr = PSCB(vcpu,ipsr);
                unsigned long iip = regs->cr_iip;
                unsigned long ipsr = regs->cr_ipsr;
-               printk("vcpu_translate: bad address %p, viip=%p, vipsr=%p, 
iip=%p, ipsr=%p continuing\n", address, viip, vipsr, iip, ipsr);
+               printk("vcpu_translate: bad address 0x%lx, viip=0x%lx, 
vipsr=0x%lx, iip=0x%lx, ipsr=0x%lx continuing\n",
+                       address, viip, vipsr, iip, ipsr);
        }
 
        rr = PSCB(vcpu,rrs)[region];
@@ -1888,7 +1897,7 @@
 
 IA64FAULT vcpu_ptc_ga(VCPU *vcpu,UINT64 vadr,UINT64 addr_range)
 {
-       extern ia64_global_tlb_purge(UINT64 start, UINT64 end, UINT64 nbits);
+       extern void ia64_global_tlb_purge(UINT64 start, UINT64 end, UINT64 
nbits);
        // FIXME: validate not flushing Xen addresses
        // if (Xen address) return(IA64_ILLOP_FAULT);
        // FIXME: ??breaks if domain PAGE_SIZE < Xen PAGE_SIZE
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/vhpt.c
--- a/xen/arch/ia64/xen/vhpt.c  Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/vhpt.c  Tue Feb 28 17:29:30 2006
@@ -21,7 +21,7 @@
 void vhpt_flush(void)
 {
        struct vhpt_lf_entry *v = (void *)VHPT_ADDR;
-       int i, cnt = 0;
+       int i;
 #if 0
 static int firsttime = 2;
 
@@ -48,7 +48,6 @@
 #ifdef VHPT_GLOBAL
 void vhpt_flush_address(unsigned long vadr, unsigned long addr_range)
 {
-       unsigned long ps;
        struct vhpt_lf_entry *vlfe;
 
        if ((vadr >> 61) == 7) {
@@ -131,7 +130,8 @@
        // allocate a huge chunk of physical memory.... how???
        vhpt_total_size = 1 << VHPT_SIZE_LOG2;  // 4MB, 16MB, 64MB, or 256MB
        vhpt_alignment = 1 << VHPT_SIZE_LOG2;   // 4MB, 16MB, 64MB, or 256MB
-       printf("vhpt_init: vhpt size=%p, 
align=%p\n",vhpt_total_size,vhpt_alignment);
+       printf("vhpt_init: vhpt size=0x%lx, align=0x%lx\n",
+               vhpt_total_size, vhpt_alignment);
        /* This allocation only holds true if vhpt table is unique for
         * all domains. Or else later new vhpt table should be allocated
         * from domain heap when each domain is created. Assume xen buddy
@@ -146,8 +146,8 @@
        paddr = page_to_maddr(page);
        __get_cpu_var(vhpt_paddr) = paddr;
        __get_cpu_var(vhpt_pend) = paddr + vhpt_total_size - 1;
-       printf("vhpt_init: vhpt paddr=%p, end=%p\n",
-              paddr, __get_cpu_var(vhpt_pend));
+       printf("vhpt_init: vhpt paddr=0x%lx, end=0x%lx\n",
+               paddr, __get_cpu_var(vhpt_pend));
        pte = pte_val(pfn_pte(paddr >> PAGE_SHIFT, PAGE_KERNEL));
        vhpt_map(pte);
        ia64_set_pta(VHPT_ADDR | (1 << 8) | (VHPT_SIZE_LOG2 << 2) |
@@ -173,6 +173,6 @@
                if (v->CChain) vhpt_chains++;
        }
        s += sprintf(s,"VHPT usage: %ld/%ld (%ld collision chains)\n",
-               vhpt_valid,VHPT_NUM_ENTRIES,vhpt_chains);
+               vhpt_valid, (unsigned long) VHPT_NUM_ENTRIES, vhpt_chains);
        return s - buf;
 }
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/xenirq.c
--- a/xen/arch/ia64/xen/xenirq.c        Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/xenirq.c        Tue Feb 28 17:29:30 2006
@@ -24,7 +24,7 @@
                firstirq = 0;
        }
        if (firsttime[vector]) {
-               printf("**** (entry) First received int on vector=%d,itc=%lx\n",
+               printf("**** (entry) First received int on 
vector=%lu,itc=%lx\n",
                        (unsigned long) vector, ia64_get_itc());
                firsttime[vector] = 0;
        }
@@ -38,13 +38,13 @@
                extern void vcpu_pend_interrupt(void *, int);
 #if 0
                if (firsttime[vector]) {
-                       printf("**** (iterate) First received int on 
vector=%d,itc=%lx\n",
-                       (unsigned long) vector, ia64_get_itc());
+                       printf("**** (iterate) First received int on 
vector=%lu,itc=%lx\n",
+                               (unsigned long) vector, ia64_get_itc());
                        firsttime[vector] = 0;
                }
                if (firstpend[vector]) {
-                       printf("**** First pended int on vector=%d,itc=%lx\n",
-                               (unsigned long) vector,ia64_get_itc());
+                       printf("**** First pended int on vector=%lu,itc=%lx\n",
+                               (unsigned long) vector, ia64_get_itc());
                        firstpend[vector] = 0;
                }
 #endif
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/xenmem.c
--- a/xen/arch/ia64/xen/xenmem.c        Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/xenmem.c        Tue Feb 28 17:29:30 2006
@@ -34,7 +34,6 @@
 void
 paging_init (void)
 {
-       struct page_info *pg;
        unsigned int mpt_order;
        /* Create machine to physical mapping table
         * NOTE: similar to frame table, later we may need virtually
@@ -61,7 +60,7 @@
 #define FT_ALIGN_SIZE  (16UL << 20)
 void __init init_frametable(void)
 {
-       unsigned long i, pfn;
+       unsigned long pfn;
        frame_table_size = max_page * sizeof(struct page_info);
        frame_table_size = (frame_table_size + PAGE_SIZE - 1) & PAGE_MASK;
 
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/xenmisc.c
--- a/xen/arch/ia64/xen/xenmisc.c       Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/xenmisc.c       Tue Feb 28 17:29:30 2006
@@ -19,12 +19,18 @@
 #include <public/sched.h>
 #include <asm/vhpt.h>
 #include <asm/debugger.h>
+#include <asm/vmx.h>
+#include <asm/vmx_vcpu.h>
 
 efi_memory_desc_t ia64_efi_io_md;
 EXPORT_SYMBOL(ia64_efi_io_md);
 unsigned long wait_init_idle;
 int phys_proc_id[NR_CPUS];
 unsigned long loops_per_jiffy = (1<<12);       // from linux/init/main.c
+
+/* FIXME: where these declarations should be there ? */
+extern void load_region_regs(struct vcpu *);
+extern void show_registers(struct pt_regs *regs);
 
 void ia64_mca_init(void) { printf("ia64_mca_init() skipped (Machine check 
abort handling)\n"); }
 void ia64_mca_cpu_init(void *x) { }
@@ -251,6 +257,7 @@
           unsigned long user_rbs_end, unsigned long addr, long *val)
 {
        printk("ia64_peek: called, not implemented\n");
+       return 1;
 }
 
 long
@@ -258,6 +265,7 @@
           unsigned long user_rbs_end, unsigned long addr, long val)
 {
        printk("ia64_poke: called, not implemented\n");
+       return 1;
 }
 
 void
@@ -314,7 +322,7 @@
 static int i = 100;
 int id = ((struct vcpu *)current)->domain->domain_id & 0xf;
 if (!cnt[id]--) { printk("%x",id); cnt[id] = 500000; }
-if (!i--) { printk("+",id); i = 1000000; }
+if (!i--) { printk("+"); i = 1000000; }
 }
 
     if (VMX_DOMAIN(current)){
@@ -358,12 +366,12 @@
        va_list args;
        char buf[128];
        struct vcpu *v = current;
-       static volatile int test = 1;   // so can continue easily in debug
-       extern spinlock_t console_lock;
-       unsigned long flags;
+//     static volatile int test = 1;   // so can continue easily in debug
+//     extern spinlock_t console_lock;
+//     unsigned long flags;
     
 loop:
-       printf("$$$$$ PANIC in domain %d (k6=%p): ",
+       printf("$$$$$ PANIC in domain %d (k6=0x%lx): ",
                v->domain->domain_id, 
                __get_cpu_var(cpu_kr)._kr[IA64_KR_CURRENT]);
        va_start(args, fmt);
@@ -378,7 +386,7 @@
        }
        domain_pause_by_systemcontroller(current->domain);
        v->domain->shutdown_code = SHUTDOWN_crash;
-       set_bit(_DOMF_shutdown, v->domain->domain_flags);
+       set_bit(_DOMF_shutdown, &v->domain->domain_flags);
        if (v->domain->domain_id == 0) {
                int i = 1000000000L;
                // if domain0 crashes, just periodically print out panic
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/xensetup.c
--- a/xen/arch/ia64/xen/xensetup.c      Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/xensetup.c      Tue Feb 28 17:29:30 2006
@@ -14,7 +14,7 @@
 #include <public/version.h>
 //#include <xen/delay.h>
 #include <xen/compile.h>
-//#include <xen/console.h>
+#include <xen/console.h>
 #include <xen/serial.h>
 #include <xen/trace.h>
 #include <asm/meminit.h>
@@ -22,6 +22,7 @@
 #include <asm/setup.h>
 #include <xen/string.h>
 #include <asm/vmx.h>
+#include <linux/efi.h>
 
 unsigned long xenheap_phys_end;
 
@@ -35,6 +36,16 @@
 
 int find_max_pfn (unsigned long, unsigned long, void *);
 void start_of_day(void);
+
+/* FIXME: which header these declarations should be there ? */
+extern long is_platform_hp_ski(void);
+extern void early_setup_arch(char **);
+extern void late_setup_arch(char **);
+extern void hpsim_serial_init(void);
+extern void alloc_dom0(void);
+extern void setup_per_cpu_areas(void);
+extern void mem_init(void);
+extern void init_IRQ(void);
 
 /* opt_nosmp: If true, secondary processors are ignored. */
 static int opt_nosmp = 0;
@@ -149,8 +160,7 @@
 {
     unsigned char *cmdline;
     void *heap_start;
-    int i;
-    unsigned long max_mem, nr_pages, firsthole_start;
+    unsigned long nr_pages, firsthole_start;
     unsigned long dom0_memory_start, dom0_memory_size;
     unsigned long dom0_initrd_start, dom0_initrd_size;
     unsigned long initial_images_start, initial_images_end;
@@ -160,7 +170,7 @@
     /* Kernel may be relocated by EFI loader */
     xen_pstart = ia64_tpa(KERNEL_START);
 
-    early_setup_arch(&cmdline);
+    early_setup_arch((char **) &cmdline);
 
     /* We initialise the serial devices very early so we can get debugging. */
     if (running_on_sim) hpsim_serial_init();
@@ -248,9 +258,9 @@
        max_page);
 
     heap_start = memguard_init(ia64_imva(&_end));
-    printf("Before heap_start: 0x%lx\n", heap_start);
+    printf("Before heap_start: %p\n", heap_start);
     heap_start = __va(init_boot_allocator(__pa(heap_start)));
-    printf("After heap_start: 0x%lx\n", heap_start);
+    printf("After heap_start: %p\n", heap_start);
 
     reserve_memory();
 
@@ -281,7 +291,7 @@
     idle_domain = domain_create(IDLE_DOMAIN_ID, 0);
     BUG_ON(idle_domain == NULL);
 
-    late_setup_arch(&cmdline);
+    late_setup_arch((char **) &cmdline);
     setup_per_cpu_areas();
     mem_init();
 
@@ -298,6 +308,8 @@
 #endif
 
 #ifdef CONFIG_SMP
+    int i;
+
     if ( opt_nosmp )
     {
         max_cpus = 0;
@@ -349,9 +361,9 @@
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
     printk("About to call construct_dom0()\n");
-    dom0_memory_start = __va(initial_images_start);
+    dom0_memory_start = (unsigned long) __va(initial_images_start);
     dom0_memory_size = ia64_boot_param->domain_size;
-    dom0_initrd_start = __va(initial_images_start +
+    dom0_initrd_start = (unsigned long) __va(initial_images_start +
                             PAGE_ALIGN(ia64_boot_param->domain_size));
     dom0_initrd_size = ia64_boot_param->initrd_size;
  
diff -r bd9cb8dc97b6 -r 0b0be946cf9c xen/arch/ia64/xen/xentime.c
--- a/xen/arch/ia64/xen/xentime.c       Tue Feb 28 17:26:43 2006
+++ b/xen/arch/ia64/xen/xentime.c       Tue Feb 28 17:29:30 2006
@@ -30,6 +30,9 @@
 #include <linux/jiffies.h>     // not included by xen/sched.h
 #include <xen/softirq.h>
 
+/* FIXME: where these declarations should be there ? */
+extern void ia64_init_itm(void);
+
 seqlock_t xtime_lock __cacheline_aligned_in_smp = SEQLOCK_UNLOCKED;
 
 #define TIME_KEEPER_ID  0
@@ -70,7 +73,7 @@
 s_time_t get_s_time(void)
 {
     s_time_t now;
-    unsigned long flags, seq;
+    unsigned long seq;
 
     do {
        seq = read_seqbegin(&xtime_lock);
@@ -202,7 +205,7 @@
 }
 
 static struct irqaction xen_timer_irqaction = {
-       .handler =      xen_timer_interrupt,
+       .handler =      (void *) xen_timer_interrupt,
        .name =         "timer"
 };
 
@@ -217,8 +220,6 @@
 /* Late init function (after all CPUs are booted). */
 int __init init_xen_time()
 {
-    struct timespec tm;
-
     ia64_time_init();
     itc_scale  = 1000000000UL << 32 ;
     itc_scale /= local_cpu_data->itc_freq;
@@ -253,7 +254,7 @@
        } while (unlikely(read_seqretry(&xtime_lock, seq)));
 
        local_cpu_data->itm_next = itm_next;
-       vcpu_set_next_timer(current);
+       vcpu_set_next_timer(v);
        return 1;
 }
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.