All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@suse.com>
To: Keir Fraser <keir.xen@gmail.com>, xen-devel@lists.xen.org
Cc: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>,
	Ian.Campbell@citrix.com, xen-ia64-devel@lists.xen.org
Subject: Re: removal of ia64 port
Date: Tue, 03 Apr 2012 09:18:17 +0100	[thread overview]
Message-ID: <4F7ACE69020000780007C3E0@nat28.tlf.novell.com> (raw)
In-Reply-To: <CB9F855E.2FDCE%keir.xen@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 21273 bytes --]

>>> On 02.04.12 at 17:33, Keir Fraser <keir.xen@gmail.com> wrote:
> On 02/04/2012 16:16, "Jan Beulich" <JBeulich@suse.com> wrote:
>> now that we apparently having reached consensus here, are you
>> going to purge the ia64 bits from the tree, or do you want me to?
> 
> Please go ahead.

This is the patch I'm intending to commit (omitting all the ia64 files
that are going to be removed).

It retains IA64-specific bits in code imported from elsewhere (e.g.
ACPI, EFI) as well as in the public headers.

It also doesn't touch the tools, mini-os, and unmodified_drivers
sub-trees.

--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -138,14 +138,6 @@ M:	Tim Deegan <tim@xen.org>
 S:	Supported
 F:	tools/debugger/kdd/
 
-IA64 ARCHITECTURE
-M:	KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>
-S:	Supported
-L:	xen-ia64-devel@lists.xensource.com 
-F:	xen/arch/ia64/*
-F:	xen/include/asm-ia64/*
-F:	tools/libxc/ia64/*
-
 INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 M:	Joseph Cihula <joseph.cihula@intel.com>
 M:	Gang Wei <gang.wei@intel.com>
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -58,7 +58,6 @@ subdir-$(CONFIG_COMPAT) += compat
 
 subdir-$(x86_32) += hvm
 subdir-$(x86_64) += hvm
-subdir-$(ia64) += hvm
 
 subdir-y += libelf
 subdir-$(HAS_DEVICE_TREE) += libfdt
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1514,9 +1514,7 @@ gnttab_transfer(
             goto copyback;
         }
 
-#ifndef __ia64__ /* IA64 implicitly replaces the old page in steal_page(). */
         guest_physmap_remove_page(d, gop.mfn, mfn, 0);
-#endif
         flush_tlb_mask(d->domain_dirty_cpumask);
 
         /* Find the target domain. */
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -721,11 +721,7 @@ static void crash_save_vmcoreinfo(void)
     VMCOREINFO_STRUCT_SIZE(domain);
 
     VMCOREINFO_OFFSET(page_info, count_info);
-#ifdef __ia64__
-    VMCOREINFO_OFFSET_SUB(page_info, u.inuse, _domain);
-#else
     VMCOREINFO_OFFSET_SUB(page_info, v.inuse, _domain);
-#endif
     VMCOREINFO_OFFSET(domain, domain_id);
     VMCOREINFO_OFFSET(domain, next_in_list);
 
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -23,9 +23,7 @@
 #include <xen/tmem_xen.h>
 #include <asm/current.h>
 #include <asm/hardirq.h>
-#ifndef __ia64__
 #include <asm/p2m.h>
-#endif
 #include <xen/numa.h>
 #include <public/memory.h>
 #include <xsm/xsm.h>
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1141,7 +1141,7 @@ void __init scrub_heap_pages(void)
  * XEN-HEAP SUB-ALLOCATOR
  */
 
-#if !defined(__x86_64__) && !defined(__ia64__)
+#if !defined(__x86_64__)
 
 void init_xenheap_pages(paddr_t ps, paddr_t pe)
 {
--- a/xen/common/tmem_xen.c
+++ b/xen/common/tmem_xen.c
@@ -88,7 +88,7 @@ void tmh_copy_page(char *to, char*from)
 #endif
 }
 
-#if defined(__ia64__) || defined (CONFIG_ARM)
+#if defined(CONFIG_ARM)
 static inline void *cli_get_page(tmem_cli_mfn_t cmfn, unsigned long *pcli_mfn,
                                  pfp_t **pcli_pfp, bool_t cli_write)
 {
--- a/xen/drivers/cpufreq/cpufreq.c
+++ b/xen/drivers/cpufreq/cpufreq.c
@@ -442,16 +442,6 @@ int set_px_pminfo(uint32_t acpi_id, stru
             goto out;
         }
 
-#ifdef CONFIG_IA64
-        /* for IA64, currently it only supports FFH */
-        if (dom0_px_info->control_register.space_id !=
-            ACPI_ADR_SPACE_FIXED_HARDWARE)
-        {
-            ret = -EINVAL;
-            goto out;
-        }
-#endif
-
         memcpy ((void *)&pxpt->control_register,
                 (void *)&dom0_px_info->control_register,
                 sizeof(struct xen_pct_register));
@@ -493,7 +483,6 @@ int set_px_pminfo(uint32_t acpi_id, stru
     {
 #ifdef CONFIG_X86
         /* for X86, check domain coordination */
-        /* for IA64, _PSD is optional for current IA64 cpufreq algorithm */
         if (dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_ALL &&
             dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_ANY &&
             dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_HW)
--- a/xen/drivers/passthrough/Makefile
+++ b/xen/drivers/passthrough/Makefile
@@ -1,5 +1,4 @@
 subdir-$(x86) += vtd
-subdir-$(ia64) += vtd
 subdir-$(x86) += amd
 subdir-$(x86_64) += x86
 
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -419,7 +419,6 @@ int hvm_do_IRQ_dpci(struct domain *d, st
     return 1;
 }
 
-#ifdef SUPPORT_MSI_REMAPPING
 /* called with d->event_lock held */
 static void __msi_pirq_eoi(struct hvm_pirq_dpci *pirq_dpci)
 {
@@ -479,7 +478,6 @@ static int hvm_pci_msi_assert(struct dom
             ? send_guest_pirq(d, pirq)
             : vmsi_deliver_pirq(d, pirq_dpci));
 }
-#endif
 
 static int _hvm_dirq_assist(struct domain *d, struct hvm_pirq_dpci *pirq_dpci,
                             void *arg)
@@ -489,13 +487,12 @@ static int _hvm_dirq_assist(struct domai
 
     if ( test_and_clear_bool(pirq_dpci->masked) )
     {
-#ifdef SUPPORT_MSI_REMAPPING
         if ( pirq_dpci->flags & HVM_IRQ_DPCI_GUEST_MSI )
         {
             hvm_pci_msi_assert(d, pirq_dpci);
             return 0;
         }
-#endif
+
         list_for_each_entry ( digl, &pirq_dpci->digl_list, list )
         {
             struct pirq *info = dpci_pirq(pirq_dpci);
@@ -508,13 +505,11 @@ static int _hvm_dirq_assist(struct domai
                 hvm_pci_intx_assert(d, device, intx);
             pirq_dpci->pending++;
 
-#ifdef SUPPORT_MSI_REMAPPING
             if ( pirq_dpci->flags & HVM_IRQ_DPCI_TRANSLATE )
             {
                 /* for translated MSI to INTx interrupt, eoi as early as possible */
                 __msi_pirq_eoi(pirq_dpci);
             }
-#endif
         }
 
         /*
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -593,17 +593,6 @@ int iommu_do_domctl(
         bus = (domctl->u.assign_device.machine_sbdf >> 8) & 0xff;
         devfn = domctl->u.assign_device.machine_sbdf & 0xff;
 
-#ifdef __ia64__ /* XXX Is this really needed? */
-        if ( device_assigned(seg, bus, devfn) )
-        {
-            printk(XENLOG_G_ERR "XEN_DOMCTL_assign_device: "
-                   "%04x:%02x:%02x.%u already assigned, or non-existent\n",
-                   seg, bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
-            ret = -EINVAL;
-            goto assign_device_out;
-        }
-#endif
-
         ret = assign_device(d, seg, bus, devfn);
         if ( ret )
             printk(XENLOG_G_ERR "XEN_DOMCTL_assign_device: "
@@ -632,14 +621,6 @@ int iommu_do_domctl(
         bus = (domctl->u.assign_device.machine_sbdf >> 8) & 0xff;
         devfn = domctl->u.assign_device.machine_sbdf & 0xff;
 
-#ifdef __ia64__ /* XXX Is this really needed? */
-        if ( !device_assigned(seg, bus, devfn) )
-        {
-            ret = -EINVAL;
-            goto deassign_device_out;
-        }
-#endif
-
         spin_lock(&pcidevs_lock);
         ret = deassign_device(d, seg, bus, devfn);
         spin_unlock(&pcidevs_lock);
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -696,7 +696,6 @@ void __init setup_dom0_pci_devices(
     spin_unlock(&pcidevs_lock);
 }
 
-#ifdef SUPPORT_MSI_REMAPPING
 static int _dump_pci_devices(struct pci_seg *pseg, void *arg)
 {
     struct pci_dev *pdev;
@@ -738,8 +737,6 @@ static int __init setup_dump_pcidevs(voi
     return 0;
 }
 __initcall(setup_dump_pcidevs);
-#endif
-
 
 /*
  * Local variables:
--- a/xen/drivers/passthrough/vtd/Makefile
+++ b/xen/drivers/passthrough/vtd/Makefile
@@ -1,5 +1,4 @@
 subdir-$(x86) += x86
-subdir-$(ia64) += ia64
 
 obj-y += iommu.o
 obj-y += dmar.o
--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -31,26 +31,7 @@
 #include "vtd.h"
 #include "extern.h"
 
-#ifdef __ia64__
-#define nr_ioapics              iosapic_get_nr_iosapics()
-#define nr_ioapic_entries(i)  iosapic_get_nr_pins(i)
-#define __io_apic_read(apic, reg) \
-    (*IO_APIC_BASE(apic) = reg, *(IO_APIC_BASE(apic)+4))
-#define __io_apic_write(apic, reg, val) \
-    (*IO_APIC_BASE(apic) = reg, *(IO_APIC_BASE(apic)+4) = (val))
-#define __ioapic_read_entry(apic, pin, raw) ({ \
-    struct IO_xAPIC_route_entry _e_; \
-    ASSERT(raw); \
-    ((u32 *)&_e_)[0] = __io_apic_read(apic, 0x10 + 2 * (pin)); \
-    ((u32 *)&_e_)[1] = __io_apic_read(apic, 0x11 + 2 * (pin)); \
-    _e_; \
-})
-#define __ioapic_write_entry(apic, pin, raw, ent) ({ \
-    ASSERT(raw); \
-    __io_apic_write(apic, 0x10 + 2 * (pin), ((u32 *)&(ent))[0]); \
-    __io_apic_write(apic, 0x11 + 2 * (pin), ((u32 *)&(ent))[1]); \
-})
-#else
+#if defined(__i386__) || defined(__x86_64__)
 #include <asm/apic.h>
 #include <asm/io_apic.h>
 #define nr_ioapic_entries(i)  nr_ioapic_entries[i]
@@ -326,8 +307,6 @@ static int ioapic_rte_to_remap_entry(str
             new_ire.lo.dst = value;
         else
             new_ire.lo.dst = (value >> 24) << 8;
-#else /* __ia64__ */
-        new_ire.lo.dst = value >> 16;
 #endif
     }
     else
@@ -625,12 +604,8 @@ static int msi_msg_to_remap_entry(
     new_ire.lo.dm = (msg->address_lo >> MSI_ADDR_DESTMODE_SHIFT) & 0x1;
     new_ire.lo.tm = (msg->data >> MSI_DATA_TRIGGER_SHIFT) & 0x1;
     new_ire.lo.dlm = (msg->data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x1;
-#ifdef CONFIG_X86
     /* Hardware require RH = 1 for LPR delivery mode */
     new_ire.lo.rh = (new_ire.lo.dlm == dest_LowestPrio);
-#else
-    new_ire.lo.rh = 0;
-#endif
     new_ire.lo.avail = 0;
     new_ire.lo.res_1 = 0;
     new_ire.lo.vector = (msg->data >> MSI_DATA_VECTOR_SHIFT) &
@@ -703,18 +678,6 @@ void msi_msg_write_remap_rte(
 
     msi_msg_to_remap_entry(iommu, pdev, msi_desc, msg);
 }
-#elif defined(__ia64__)
-void msi_msg_read_remap_rte(
-    struct msi_desc *msi_desc, struct msi_msg *msg)
-{
-    /* TODO. */
-}
-
-void msi_msg_write_remap_rte(
-    struct msi_desc *msi_desc, struct msi_msg *msg)
-{
-    /* TODO. */
-}
 #endif
 
 int enable_intremap(struct iommu *iommu, int eim)
@@ -838,8 +801,6 @@ out:
     spin_unlock_irqrestore(&iommu->register_lock, flags);
 }
 
-#ifndef __ia64__
-
 /*
  * This function is used to enable Interrupt remapping when
  * enable x2apic
@@ -914,5 +875,3 @@ void iommu_disable_x2apic_IR(void)
     for_each_drhd_unit ( drhd )
         disable_qinval(drhd->iommu);
 }
-
-#endif /* !__ia64__ */
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -33,7 +33,7 @@
 #include <xen/keyhandler.h>
 #include <asm/msi.h>
 #include <asm/irq.h>
-#ifndef __ia64__
+#if defined(__i386__) || defined(__x86_64__)
 #include <asm/hvm/vmx/vmx.h>
 #include <asm/p2m.h>
 #include <mach_apic.h>
@@ -44,10 +44,6 @@
 #include "vtd.h"
 #include "../ats.h"
 
-#ifdef __ia64__
-#define nr_ioapics              iosapic_get_nr_iosapics()
-#endif
-
 /* Possible unfiltered LAPIC/MSI messages from untrusted sources? */
 bool_t __read_mostly untrusted_msi;
 
@@ -1057,11 +1053,7 @@ static unsigned int dma_msi_startup(stru
     return 0;
 }
 
-#ifndef __ia64__
 static void dma_msi_end(struct irq_desc *desc, u8 vector)
-#else
-static void dma_msi_end(struct irq_desc *desc)
-#endif
 {
     dma_msi_unmask(desc);
     ack_APIC_irq();
@@ -1841,7 +1833,6 @@ void iommu_pte_flush(struct domain *d, u
 
 static int vtd_ept_page_compatible(struct iommu *iommu)
 {
-#ifndef __ia64__
     u64 ept_cap, vtd_cap = iommu->cap;
 
     /* EPT is not initialised yet, so we must check the capability in
@@ -1851,9 +1842,6 @@ static int vtd_ept_page_compatible(struc
 
     return ( ept_has_2mb(ept_cap) == cap_sps_2mb(vtd_cap) 
              && ept_has_1gb(ept_cap) == cap_sps_1gb(vtd_cap) );
-#else
-    return 0;
-#endif
 }
 
 /*
@@ -1861,7 +1849,6 @@ static int vtd_ept_page_compatible(struc
  */
 void iommu_set_pgd(struct domain *d)
 {
-#ifndef __ia64__
     struct hvm_iommu *hd  = domain_hvm_iommu(d);
     mfn_t pgd_mfn;
 
@@ -1872,7 +1859,6 @@ void iommu_set_pgd(struct domain *d)
 
     pgd_mfn = pagetable_get_mfn(p2m_get_pagetable(p2m_get_hostp2m(d)));
     hd->pgd_maddr = pagetable_get_paddr(pagetable_from_mfn(pgd_mfn));
-#endif
 }
 
 static int rmrr_identity_mapping(struct domain *d,
--- a/xen/drivers/passthrough/vtd/utils.c
+++ b/xen/drivers/passthrough/vtd/utils.c
@@ -301,8 +301,7 @@ static void dump_iommu_info(unsigned cha
         }
     }
 #else
-    printk("%s: not implemnted on IA64 for now.\n", __func__);
-    /* ia64: TODO */
+    printk("%s: not implemented for now\n", __func__);
 #endif
 }
 
--- a/xen/drivers/passthrough/vtd/vtd.h
+++ b/xen/drivers/passthrough/vtd/vtd.h
@@ -26,44 +26,8 @@
 #define MAP_ME_PHANTOM_FUNC      1
 #define UNMAP_ME_PHANTOM_FUNC    0
 
-/* Accomodate both IOAPIC and IOSAPIC. */
-#ifndef __ia64__
+/* Allow for both IOAPIC and IOSAPIC. */
 #define IO_xAPIC_route_entry IO_APIC_route_entry
-#else
-struct IO_xAPIC_route_entry {
-    __u32   vector      :  8,
-        delivery_mode   :  3,   /* 000: FIXED
-                                 * 001: lowest prio
-                                 * 111: ExtINT
-                                 */
-        dest_mode       :  1,   /* 0: physical, 1: logical */
-        delivery_status :  1,
-        polarity        :  1,
-        irr             :  1,
-        trigger         :  1,   /* 0: edge, 1: level */
-        mask            :  1,   /* 0: enabled, 1: disabled */
-        __reserved_2    : 15;
-
-    union {
-        struct { __u32
-            __reserved_1    : 24,
-            physical_dest   :  4,
-            __reserved_2    :  4;
-        } physical;
-
-        struct { __u32
-            __reserved_1    : 24,
-            logical_dest    :  8;
-        } logical;
-
-        struct { __u32
-            __reserved_1    : 16,
-            dest_id         : 16;
-        };
-    } dest;
-
-} __attribute__ ((packed));
-#endif
 
 struct IO_APIC_route_remap_entry {
     union {
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -38,7 +38,7 @@ suffix-$(CONFIG_X86)      := \#pragma pa
 endif
 
 public-$(CONFIG_X86) := $(wildcard public/arch-x86/*.h public/arch-x86/*/*.h)
-public-$(CONFIG_IA64) := $(wildcard public/arch-ia64/*.h public/arch-ia64/*/*.h)
+public-$(CONFIG_ARM) := $(wildcard public/arch-arm/*.h public/arch-arm/*/*.h)
 
 .PHONY: all
 all: $(headers-y)
@@ -74,8 +74,6 @@ compat/xlat.h: xlat.lst $(filter-out com
 	mv -f $@.new $@
 
 ifeq ($(XEN_TARGET_ARCH),$(XEN_COMPILE_ARCH))
-# public/arch-ia64.h explicitly bails on __STRICT_ANSI__
-ifeq ($(CONFIG_IA64),)
 
 all: headers.chk
 
@@ -84,7 +82,6 @@ headers.chk: $(filter-out public/arch-% 
 	mv $@.new $@
 
 endif
-endif
 
 clean::
 	rm -rf compat headers.chk
--- a/xen/include/asm-x86/hvm/irq.h
+++ b/xen/include/asm-x86/hvm/irq.h
@@ -104,11 +104,4 @@ struct hvm_intack hvm_vcpu_has_pending_i
 struct hvm_intack hvm_vcpu_ack_pending_irq(struct vcpu *v,
                                            struct hvm_intack intack);
 
-/*
- * Currently IA64 Xen doesn't support MSI. So for x86, we define this macro
- * to control the conditional compilation of some MSI-related functions.
- * This macro will be removed once IA64 has MSI support.
- */
-#define SUPPORT_MSI_REMAPPING 1
-
 #endif /* __ASM_X86_HVM_IRQ_H__ */
--- a/xen/include/asm-x86/hvm/vioapic.h
+++ b/xen/include/asm-x86/hvm/vioapic.h
@@ -41,7 +41,7 @@
 /* Direct registers. */
 #define VIOAPIC_REG_SELECT  0x00
 #define VIOAPIC_REG_WINDOW  0x10
-#define VIOAPIC_REG_EOI     0x40 /* IA64 IOSAPIC only */
+#define VIOAPIC_REG_EOI     0x40
 
 /* Indirect registers. */
 #define VIOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */
--- a/xen/include/xen/cpumask.h
+++ b/xen/include/xen/cpumask.h
@@ -82,7 +82,7 @@ typedef struct cpumask{ DECLARE_BITMAP(b
 
 extern unsigned int nr_cpu_ids;
 
-#if NR_CPUS > 4 * BITS_PER_LONG && !defined(__ia64__)
+#if NR_CPUS > 4 * BITS_PER_LONG
 /* Assuming NR_CPUS is huge, a runtime limit is more efficient.  Also,
  * not all bits may be allocated. */
 extern unsigned int nr_cpumask_bits;
@@ -263,37 +263,6 @@ static inline const cpumask_t *cpumask_o
 	return (const cpumask_t *)(p - cpu / BITS_PER_LONG);
 }
 
-#if defined(__ia64__) /* XXX needs cleanup */
-#define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)
-
-#if NR_CPUS <= BITS_PER_LONG
-
-#define CPU_MASK_ALL							\
-/*(cpumask_t)*/ { {							\
-	[BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD			\
-} }
-
-#else
-
-#define CPU_MASK_ALL							\
-/*(cpumask_t)*/ { {							\
-	[0 ... BITS_TO_LONGS(NR_CPUS)-2] = ~0UL,			\
-	[BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD			\
-} }
-
-#endif
-
-#define CPU_MASK_NONE							\
-/*(cpumask_t)*/ { {							\
-	0UL								\
-} }
-
-#define CPU_MASK_CPU0							\
-/*(cpumask_t)*/ { {							\
-	[0] =  1UL							\
-} }
-#endif /* __ia64__ */
-
 #define cpumask_bits(maskp) ((maskp)->bits)
 
 static inline int cpumask_scnprintf(char *buf, int len,
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -5,15 +5,11 @@
 #include <xen/types.h>
 #endif
 
-#if defined(__ia64__)
-# include_next <linux/efi.h>
+#if defined(__i386__)
+# define efi_enabled 0
 #else
-
-# if defined(__i386__)
-#  define efi_enabled 0
-# else
 extern const bool_t efi_enabled;
-# endif
+#endif
 
 #define EFI_INVALID_TABLE_ADDR (~0UL)
 
@@ -27,8 +23,6 @@ struct efi {
 
 extern struct efi efi;
 
-#endif
-
 #ifndef __ASSEMBLY__
 
 union xenpf_efi_info;
--- a/xen/include/xen/elfcore.h
+++ b/xen/include/xen/elfcore.h
@@ -69,9 +69,6 @@ typedef struct {
     unsigned long xen_phys_start;
     unsigned long dom0_pfn_to_mfn_frame_list_list;
 #endif
-#if defined(__ia64__)
-    unsigned long dom0_mm_pgd_mfn;
-#endif
 } crash_xen_info_t;
 
 #endif /* __ELFCOREC_H__ */
--- a/xen/include/xen/hvm/irq.h
+++ b/xen/include/xen/hvm/irq.h
@@ -78,8 +78,6 @@ struct hvm_girq_dpci_mapping {
 #define NR_LINK     4
 #if defined(__i386__) || defined(__x86_64__)
 # define NR_HVM_IRQS VIOAPIC_NUM_PINS
-#elif defined(__ia64__)
-# define NR_HVM_IRQS VIOSAPIC_NUM_PINS
 #endif
 
 /* Protected by domain's event_lock */
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -35,11 +35,7 @@ extern bool_t iommu_debug;
 extern bool_t amd_iommu_perdev_intremap;
 
 /* Does this domain have a P2M table we can use as its IOMMU pagetable? */
-#ifndef __ia64__
 #define iommu_use_hap_pt(d) (hap_enabled(d) && iommu_hap_pt_share)
-#else
-#define iommu_use_hap_pt(d) 0
-#endif
 
 extern struct rangeset *mmio_ro_ranges;
 
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -95,37 +95,19 @@ int arch_init_one_irq_desc(struct irq_de
 
 #define irq_desc_initialized(desc) ((desc)->handler != NULL)
 
-#if defined(__ia64__)
-extern irq_desc_t irq_desc[NR_VECTORS];
-
-#define setup_irq(irq, action) \
-    setup_irq_vector(irq_to_vector(irq), action)
-
-#define release_irq(irq) \
-    release_irq_vector(irq_to_vector(irq))
-
-#define request_irq(irq, handler, irqflags, devname, devid) \
-    request_irq_vector(irq_to_vector(irq), handler, irqflags, devname, devid)
-
-#elif defined(__arm__)
+#if defined(__arm__)
 
 #define NR_IRQS		1024
 #define nr_irqs NR_IRQS
 extern irq_desc_t irq_desc[NR_IRQS];
 
-extern int setup_irq(unsigned int irq, struct irqaction *);
-extern void release_irq(unsigned int irq);
-extern int request_irq(unsigned int irq,
-               void (*handler)(int, void *, struct cpu_user_regs *),
-               unsigned long irqflags, const char * devname, void *dev_id);
+#endif
 
-#else
 extern int setup_irq(unsigned int irq, struct irqaction *);
 extern void release_irq(unsigned int irq);
 extern int request_irq(unsigned int irq,
                void (*handler)(int, void *, struct cpu_user_regs *),
                unsigned long irqflags, const char * devname, void *dev_id);
-#endif
 
 extern hw_irq_controller no_irq_type;
 extern void no_action(int cpl, void *dev_id, struct cpu_user_regs *regs);
--- a/xen/include/xen/libelf.h
+++ b/xen/include/xen/libelf.h
@@ -23,7 +23,7 @@
 #ifndef __XEN_LIBELF_H__
 #define __XEN_LIBELF_H__
 
-#if defined(__i386__) || defined(__x86_64__) || defined(__ia64__) || defined(__arm__)
+#if defined(__i386__) || defined(__x86_64__) || defined(__arm__)
 #define XEN_ELF_LITTLE_ENDIAN
 #else
 #error define architectural endianness
--- a/xen/include/xen/symbols.h
+++ b/xen/include/xen/symbols.h
@@ -21,13 +21,9 @@ static void __check_printsym_format(cons
 {
 }
 
-/* ia64 and ppc64 use function descriptors, which contain the real address */
-#if defined(CONFIG_IA64) || defined(CONFIG_PPC64)
-#define print_fn_descriptor_symbol(fmt, addr)		\
-do {						\
-	unsigned long *__faddr = (unsigned long*) addr;		\
-	print_symbol(fmt, __faddr[0]);		\
-} while (0)
+#if 0
+#define print_fn_descriptor_symbol(fmt, addr)	\
+	print_symbol(fmt, *(unsigned long *)addr)
 #else
 #define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr)
 #endif



[-- Attachment #2: ia64-purge.patch --]
[-- Type: text/plain, Size: 20868 bytes --]

It retains IA64-specific bits in code imported from elsewhere (e.g.
ACPI, EFI) as well as in the public headers.

It also doesn't touch the tools, mini-os, and unmodified_drivers
sub-trees.

--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -138,14 +138,6 @@ M:	Tim Deegan <tim@xen.org>
 S:	Supported
 F:	tools/debugger/kdd/
 
-IA64 ARCHITECTURE
-M:	KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>
-S:	Supported
-L:	xen-ia64-devel@lists.xensource.com
-F:	xen/arch/ia64/*
-F:	xen/include/asm-ia64/*
-F:	tools/libxc/ia64/*
-
 INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 M:	Joseph Cihula <joseph.cihula@intel.com>
 M:	Gang Wei <gang.wei@intel.com>
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -58,7 +58,6 @@ subdir-$(CONFIG_COMPAT) += compat
 
 subdir-$(x86_32) += hvm
 subdir-$(x86_64) += hvm
-subdir-$(ia64) += hvm
 
 subdir-y += libelf
 subdir-$(HAS_DEVICE_TREE) += libfdt
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1514,9 +1514,7 @@ gnttab_transfer(
             goto copyback;
         }
 
-#ifndef __ia64__ /* IA64 implicitly replaces the old page in steal_page(). */
         guest_physmap_remove_page(d, gop.mfn, mfn, 0);
-#endif
         flush_tlb_mask(d->domain_dirty_cpumask);
 
         /* Find the target domain. */
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -721,11 +721,7 @@ static void crash_save_vmcoreinfo(void)
     VMCOREINFO_STRUCT_SIZE(domain);
 
     VMCOREINFO_OFFSET(page_info, count_info);
-#ifdef __ia64__
-    VMCOREINFO_OFFSET_SUB(page_info, u.inuse, _domain);
-#else
     VMCOREINFO_OFFSET_SUB(page_info, v.inuse, _domain);
-#endif
     VMCOREINFO_OFFSET(domain, domain_id);
     VMCOREINFO_OFFSET(domain, next_in_list);
 
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -23,9 +23,7 @@
 #include <xen/tmem_xen.h>
 #include <asm/current.h>
 #include <asm/hardirq.h>
-#ifndef __ia64__
 #include <asm/p2m.h>
-#endif
 #include <xen/numa.h>
 #include <public/memory.h>
 #include <xsm/xsm.h>
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1141,7 +1141,7 @@ void __init scrub_heap_pages(void)
  * XEN-HEAP SUB-ALLOCATOR
  */
 
-#if !defined(__x86_64__) && !defined(__ia64__)
+#if !defined(__x86_64__)
 
 void init_xenheap_pages(paddr_t ps, paddr_t pe)
 {
--- a/xen/common/tmem_xen.c
+++ b/xen/common/tmem_xen.c
@@ -88,7 +88,7 @@ void tmh_copy_page(char *to, char*from)
 #endif
 }
 
-#if defined(__ia64__) || defined (CONFIG_ARM)
+#if defined(CONFIG_ARM)
 static inline void *cli_get_page(tmem_cli_mfn_t cmfn, unsigned long *pcli_mfn,
                                  pfp_t **pcli_pfp, bool_t cli_write)
 {
--- a/xen/drivers/cpufreq/cpufreq.c
+++ b/xen/drivers/cpufreq/cpufreq.c
@@ -442,16 +442,6 @@ int set_px_pminfo(uint32_t acpi_id, stru
             goto out;
         }
 
-#ifdef CONFIG_IA64
-        /* for IA64, currently it only supports FFH */
-        if (dom0_px_info->control_register.space_id !=
-            ACPI_ADR_SPACE_FIXED_HARDWARE)
-        {
-            ret = -EINVAL;
-            goto out;
-        }
-#endif
-
         memcpy ((void *)&pxpt->control_register,
                 (void *)&dom0_px_info->control_register,
                 sizeof(struct xen_pct_register));
@@ -493,7 +483,6 @@ int set_px_pminfo(uint32_t acpi_id, stru
     {
 #ifdef CONFIG_X86
         /* for X86, check domain coordination */
-        /* for IA64, _PSD is optional for current IA64 cpufreq algorithm */
         if (dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_ALL &&
             dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_ANY &&
             dom0_px_info->shared_type != CPUFREQ_SHARED_TYPE_HW)
--- a/xen/drivers/passthrough/Makefile
+++ b/xen/drivers/passthrough/Makefile
@@ -1,5 +1,4 @@
 subdir-$(x86) += vtd
-subdir-$(ia64) += vtd
 subdir-$(x86) += amd
 subdir-$(x86_64) += x86
 
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -419,7 +419,6 @@ int hvm_do_IRQ_dpci(struct domain *d, st
     return 1;
 }
 
-#ifdef SUPPORT_MSI_REMAPPING
 /* called with d->event_lock held */
 static void __msi_pirq_eoi(struct hvm_pirq_dpci *pirq_dpci)
 {
@@ -479,7 +478,6 @@ static int hvm_pci_msi_assert(struct dom
             ? send_guest_pirq(d, pirq)
             : vmsi_deliver_pirq(d, pirq_dpci));
 }
-#endif
 
 static int _hvm_dirq_assist(struct domain *d, struct hvm_pirq_dpci *pirq_dpci,
                             void *arg)
@@ -489,13 +487,12 @@ static int _hvm_dirq_assist(struct domai
 
     if ( test_and_clear_bool(pirq_dpci->masked) )
     {
-#ifdef SUPPORT_MSI_REMAPPING
         if ( pirq_dpci->flags & HVM_IRQ_DPCI_GUEST_MSI )
         {
             hvm_pci_msi_assert(d, pirq_dpci);
             return 0;
         }
-#endif
+
         list_for_each_entry ( digl, &pirq_dpci->digl_list, list )
         {
             struct pirq *info = dpci_pirq(pirq_dpci);
@@ -508,13 +505,11 @@ static int _hvm_dirq_assist(struct domai
                 hvm_pci_intx_assert(d, device, intx);
             pirq_dpci->pending++;
 
-#ifdef SUPPORT_MSI_REMAPPING
             if ( pirq_dpci->flags & HVM_IRQ_DPCI_TRANSLATE )
             {
                 /* for translated MSI to INTx interrupt, eoi as early as possible */
                 __msi_pirq_eoi(pirq_dpci);
             }
-#endif
         }
 
         /*
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -593,17 +593,6 @@ int iommu_do_domctl(
         bus = (domctl->u.assign_device.machine_sbdf >> 8) & 0xff;
         devfn = domctl->u.assign_device.machine_sbdf & 0xff;
 
-#ifdef __ia64__ /* XXX Is this really needed? */
-        if ( device_assigned(seg, bus, devfn) )
-        {
-            printk(XENLOG_G_ERR "XEN_DOMCTL_assign_device: "
-                   "%04x:%02x:%02x.%u already assigned, or non-existent\n",
-                   seg, bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
-            ret = -EINVAL;
-            goto assign_device_out;
-        }
-#endif
-
         ret = assign_device(d, seg, bus, devfn);
         if ( ret )
             printk(XENLOG_G_ERR "XEN_DOMCTL_assign_device: "
@@ -632,14 +621,6 @@ int iommu_do_domctl(
         bus = (domctl->u.assign_device.machine_sbdf >> 8) & 0xff;
         devfn = domctl->u.assign_device.machine_sbdf & 0xff;
 
-#ifdef __ia64__ /* XXX Is this really needed? */
-        if ( !device_assigned(seg, bus, devfn) )
-        {
-            ret = -EINVAL;
-            goto deassign_device_out;
-        }
-#endif
-
         spin_lock(&pcidevs_lock);
         ret = deassign_device(d, seg, bus, devfn);
         spin_unlock(&pcidevs_lock);
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -696,7 +696,6 @@ void __init setup_dom0_pci_devices(
     spin_unlock(&pcidevs_lock);
 }
 
-#ifdef SUPPORT_MSI_REMAPPING
 static int _dump_pci_devices(struct pci_seg *pseg, void *arg)
 {
     struct pci_dev *pdev;
@@ -738,8 +737,6 @@ static int __init setup_dump_pcidevs(voi
     return 0;
 }
 __initcall(setup_dump_pcidevs);
-#endif
-
 
 /*
  * Local variables:
--- a/xen/drivers/passthrough/vtd/Makefile
+++ b/xen/drivers/passthrough/vtd/Makefile
@@ -1,5 +1,4 @@
 subdir-$(x86) += x86
-subdir-$(ia64) += ia64
 
 obj-y += iommu.o
 obj-y += dmar.o
--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -31,26 +31,7 @@
 #include "vtd.h"
 #include "extern.h"
 
-#ifdef __ia64__
-#define nr_ioapics              iosapic_get_nr_iosapics()
-#define nr_ioapic_entries(i)  iosapic_get_nr_pins(i)
-#define __io_apic_read(apic, reg) \
-    (*IO_APIC_BASE(apic) = reg, *(IO_APIC_BASE(apic)+4))
-#define __io_apic_write(apic, reg, val) \
-    (*IO_APIC_BASE(apic) = reg, *(IO_APIC_BASE(apic)+4) = (val))
-#define __ioapic_read_entry(apic, pin, raw) ({ \
-    struct IO_xAPIC_route_entry _e_; \
-    ASSERT(raw); \
-    ((u32 *)&_e_)[0] = __io_apic_read(apic, 0x10 + 2 * (pin)); \
-    ((u32 *)&_e_)[1] = __io_apic_read(apic, 0x11 + 2 * (pin)); \
-    _e_; \
-})
-#define __ioapic_write_entry(apic, pin, raw, ent) ({ \
-    ASSERT(raw); \
-    __io_apic_write(apic, 0x10 + 2 * (pin), ((u32 *)&(ent))[0]); \
-    __io_apic_write(apic, 0x11 + 2 * (pin), ((u32 *)&(ent))[1]); \
-})
-#else
+#if defined(__i386__) || defined(__x86_64__)
 #include <asm/apic.h>
 #include <asm/io_apic.h>
 #define nr_ioapic_entries(i)  nr_ioapic_entries[i]
@@ -326,8 +307,6 @@ static int ioapic_rte_to_remap_entry(str
             new_ire.lo.dst = value;
         else
             new_ire.lo.dst = (value >> 24) << 8;
-#else /* __ia64__ */
-        new_ire.lo.dst = value >> 16;
 #endif
     }
     else
@@ -625,12 +604,8 @@ static int msi_msg_to_remap_entry(
     new_ire.lo.dm = (msg->address_lo >> MSI_ADDR_DESTMODE_SHIFT) & 0x1;
     new_ire.lo.tm = (msg->data >> MSI_DATA_TRIGGER_SHIFT) & 0x1;
     new_ire.lo.dlm = (msg->data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x1;
-#ifdef CONFIG_X86
     /* Hardware require RH = 1 for LPR delivery mode */
     new_ire.lo.rh = (new_ire.lo.dlm == dest_LowestPrio);
-#else
-    new_ire.lo.rh = 0;
-#endif
     new_ire.lo.avail = 0;
     new_ire.lo.res_1 = 0;
     new_ire.lo.vector = (msg->data >> MSI_DATA_VECTOR_SHIFT) &
@@ -703,18 +678,6 @@ void msi_msg_write_remap_rte(
 
     msi_msg_to_remap_entry(iommu, pdev, msi_desc, msg);
 }
-#elif defined(__ia64__)
-void msi_msg_read_remap_rte(
-    struct msi_desc *msi_desc, struct msi_msg *msg)
-{
-    /* TODO. */
-}
-
-void msi_msg_write_remap_rte(
-    struct msi_desc *msi_desc, struct msi_msg *msg)
-{
-    /* TODO. */
-}
 #endif
 
 int enable_intremap(struct iommu *iommu, int eim)
@@ -838,8 +801,6 @@ out:
     spin_unlock_irqrestore(&iommu->register_lock, flags);
 }
 
-#ifndef __ia64__
-
 /*
  * This function is used to enable Interrupt remapping when
  * enable x2apic
@@ -914,5 +875,3 @@ void iommu_disable_x2apic_IR(void)
     for_each_drhd_unit ( drhd )
         disable_qinval(drhd->iommu);
 }
-
-#endif /* !__ia64__ */
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -33,7 +33,7 @@
 #include <xen/keyhandler.h>
 #include <asm/msi.h>
 #include <asm/irq.h>
-#ifndef __ia64__
+#if defined(__i386__) || defined(__x86_64__)
 #include <asm/hvm/vmx/vmx.h>
 #include <asm/p2m.h>
 #include <mach_apic.h>
@@ -44,10 +44,6 @@
 #include "vtd.h"
 #include "../ats.h"
 
-#ifdef __ia64__
-#define nr_ioapics              iosapic_get_nr_iosapics()
-#endif
-
 /* Possible unfiltered LAPIC/MSI messages from untrusted sources? */
 bool_t __read_mostly untrusted_msi;
 
@@ -1057,11 +1053,7 @@ static unsigned int dma_msi_startup(stru
     return 0;
 }
 
-#ifndef __ia64__
 static void dma_msi_end(struct irq_desc *desc, u8 vector)
-#else
-static void dma_msi_end(struct irq_desc *desc)
-#endif
 {
     dma_msi_unmask(desc);
     ack_APIC_irq();
@@ -1841,7 +1833,6 @@ void iommu_pte_flush(struct domain *d, u
 
 static int vtd_ept_page_compatible(struct iommu *iommu)
 {
-#ifndef __ia64__
     u64 ept_cap, vtd_cap = iommu->cap;
 
     /* EPT is not initialised yet, so we must check the capability in
@@ -1851,9 +1842,6 @@ static int vtd_ept_page_compatible(struc
 
     return ( ept_has_2mb(ept_cap) == cap_sps_2mb(vtd_cap) 
              && ept_has_1gb(ept_cap) == cap_sps_1gb(vtd_cap) );
-#else
-    return 0;
-#endif
 }
 
 /*
@@ -1861,7 +1849,6 @@ static int vtd_ept_page_compatible(struc
  */
 void iommu_set_pgd(struct domain *d)
 {
-#ifndef __ia64__
     struct hvm_iommu *hd  = domain_hvm_iommu(d);
     mfn_t pgd_mfn;
 
@@ -1872,7 +1859,6 @@ void iommu_set_pgd(struct domain *d)
 
     pgd_mfn = pagetable_get_mfn(p2m_get_pagetable(p2m_get_hostp2m(d)));
     hd->pgd_maddr = pagetable_get_paddr(pagetable_from_mfn(pgd_mfn));
-#endif
 }
 
 static int rmrr_identity_mapping(struct domain *d,
--- a/xen/drivers/passthrough/vtd/utils.c
+++ b/xen/drivers/passthrough/vtd/utils.c
@@ -301,8 +301,7 @@ static void dump_iommu_info(unsigned cha
         }
     }
 #else
-    printk("%s: not implemnted on IA64 for now.\n", __func__);
-    /* ia64: TODO */
+    printk("%s: not implemented for now\n", __func__);
 #endif
 }
 
--- a/xen/drivers/passthrough/vtd/vtd.h
+++ b/xen/drivers/passthrough/vtd/vtd.h
@@ -26,44 +26,8 @@
 #define MAP_ME_PHANTOM_FUNC      1
 #define UNMAP_ME_PHANTOM_FUNC    0
 
-/* Accomodate both IOAPIC and IOSAPIC. */
-#ifndef __ia64__
+/* Allow for both IOAPIC and IOSAPIC. */
 #define IO_xAPIC_route_entry IO_APIC_route_entry
-#else
-struct IO_xAPIC_route_entry {
-    __u32   vector      :  8,
-        delivery_mode   :  3,   /* 000: FIXED
-                                 * 001: lowest prio
-                                 * 111: ExtINT
-                                 */
-        dest_mode       :  1,   /* 0: physical, 1: logical */
-        delivery_status :  1,
-        polarity        :  1,
-        irr             :  1,
-        trigger         :  1,   /* 0: edge, 1: level */
-        mask            :  1,   /* 0: enabled, 1: disabled */
-        __reserved_2    : 15;
-
-    union {
-        struct { __u32
-            __reserved_1    : 24,
-            physical_dest   :  4,
-            __reserved_2    :  4;
-        } physical;
-
-        struct { __u32
-            __reserved_1    : 24,
-            logical_dest    :  8;
-        } logical;
-
-        struct { __u32
-            __reserved_1    : 16,
-            dest_id         : 16;
-        };
-    } dest;
-
-} __attribute__ ((packed));
-#endif
 
 struct IO_APIC_route_remap_entry {
     union {
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -38,7 +38,7 @@ suffix-$(CONFIG_X86)      := \#pragma pa
 endif
 
 public-$(CONFIG_X86) := $(wildcard public/arch-x86/*.h public/arch-x86/*/*.h)
-public-$(CONFIG_IA64) := $(wildcard public/arch-ia64/*.h public/arch-ia64/*/*.h)
+public-$(CONFIG_ARM) := $(wildcard public/arch-arm/*.h public/arch-arm/*/*.h)
 
 .PHONY: all
 all: $(headers-y)
@@ -74,8 +74,6 @@ compat/xlat.h: xlat.lst $(filter-out com
 	mv -f $@.new $@
 
 ifeq ($(XEN_TARGET_ARCH),$(XEN_COMPILE_ARCH))
-# public/arch-ia64.h explicitly bails on __STRICT_ANSI__
-ifeq ($(CONFIG_IA64),)
 
 all: headers.chk
 
@@ -84,7 +82,6 @@ headers.chk: $(filter-out public/arch-% 
 	mv $@.new $@
 
 endif
-endif
 
 clean::
 	rm -rf compat headers.chk
--- a/xen/include/asm-x86/hvm/irq.h
+++ b/xen/include/asm-x86/hvm/irq.h
@@ -104,11 +104,4 @@ struct hvm_intack hvm_vcpu_has_pending_i
 struct hvm_intack hvm_vcpu_ack_pending_irq(struct vcpu *v,
                                            struct hvm_intack intack);
 
-/*
- * Currently IA64 Xen doesn't support MSI. So for x86, we define this macro
- * to control the conditional compilation of some MSI-related functions.
- * This macro will be removed once IA64 has MSI support.
- */
-#define SUPPORT_MSI_REMAPPING 1
-
 #endif /* __ASM_X86_HVM_IRQ_H__ */
--- a/xen/include/asm-x86/hvm/vioapic.h
+++ b/xen/include/asm-x86/hvm/vioapic.h
@@ -41,7 +41,7 @@
 /* Direct registers. */
 #define VIOAPIC_REG_SELECT  0x00
 #define VIOAPIC_REG_WINDOW  0x10
-#define VIOAPIC_REG_EOI     0x40 /* IA64 IOSAPIC only */
+#define VIOAPIC_REG_EOI     0x40
 
 /* Indirect registers. */
 #define VIOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */
--- a/xen/include/xen/cpumask.h
+++ b/xen/include/xen/cpumask.h
@@ -82,7 +82,7 @@ typedef struct cpumask{ DECLARE_BITMAP(b
 
 extern unsigned int nr_cpu_ids;
 
-#if NR_CPUS > 4 * BITS_PER_LONG && !defined(__ia64__)
+#if NR_CPUS > 4 * BITS_PER_LONG
 /* Assuming NR_CPUS is huge, a runtime limit is more efficient.  Also,
  * not all bits may be allocated. */
 extern unsigned int nr_cpumask_bits;
@@ -263,37 +263,6 @@ static inline const cpumask_t *cpumask_o
 	return (const cpumask_t *)(p - cpu / BITS_PER_LONG);
 }
 
-#if defined(__ia64__) /* XXX needs cleanup */
-#define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)
-
-#if NR_CPUS <= BITS_PER_LONG
-
-#define CPU_MASK_ALL							\
-/*(cpumask_t)*/ { {							\
-	[BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD			\
-} }
-
-#else
-
-#define CPU_MASK_ALL							\
-/*(cpumask_t)*/ { {							\
-	[0 ... BITS_TO_LONGS(NR_CPUS)-2] = ~0UL,			\
-	[BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD			\
-} }
-
-#endif
-
-#define CPU_MASK_NONE							\
-/*(cpumask_t)*/ { {							\
-	0UL								\
-} }
-
-#define CPU_MASK_CPU0							\
-/*(cpumask_t)*/ { {							\
-	[0] =  1UL							\
-} }
-#endif /* __ia64__ */
-
 #define cpumask_bits(maskp) ((maskp)->bits)
 
 static inline int cpumask_scnprintf(char *buf, int len,
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -5,15 +5,11 @@
 #include <xen/types.h>
 #endif
 
-#if defined(__ia64__)
-# include_next <linux/efi.h>
+#if defined(__i386__)
+# define efi_enabled 0
 #else
-
-# if defined(__i386__)
-#  define efi_enabled 0
-# else
 extern const bool_t efi_enabled;
-# endif
+#endif
 
 #define EFI_INVALID_TABLE_ADDR (~0UL)
 
@@ -27,8 +23,6 @@ struct efi {
 
 extern struct efi efi;
 
-#endif
-
 #ifndef __ASSEMBLY__
 
 union xenpf_efi_info;
--- a/xen/include/xen/elfcore.h
+++ b/xen/include/xen/elfcore.h
@@ -69,9 +69,6 @@ typedef struct {
     unsigned long xen_phys_start;
     unsigned long dom0_pfn_to_mfn_frame_list_list;
 #endif
-#if defined(__ia64__)
-    unsigned long dom0_mm_pgd_mfn;
-#endif
 } crash_xen_info_t;
 
 #endif /* __ELFCOREC_H__ */
--- a/xen/include/xen/hvm/irq.h
+++ b/xen/include/xen/hvm/irq.h
@@ -78,8 +78,6 @@ struct hvm_girq_dpci_mapping {
 #define NR_LINK     4
 #if defined(__i386__) || defined(__x86_64__)
 # define NR_HVM_IRQS VIOAPIC_NUM_PINS
-#elif defined(__ia64__)
-# define NR_HVM_IRQS VIOSAPIC_NUM_PINS
 #endif
 
 /* Protected by domain's event_lock */
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -35,11 +35,7 @@ extern bool_t iommu_debug;
 extern bool_t amd_iommu_perdev_intremap;
 
 /* Does this domain have a P2M table we can use as its IOMMU pagetable? */
-#ifndef __ia64__
 #define iommu_use_hap_pt(d) (hap_enabled(d) && iommu_hap_pt_share)
-#else
-#define iommu_use_hap_pt(d) 0
-#endif
 
 extern struct rangeset *mmio_ro_ranges;
 
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -95,37 +95,19 @@ int arch_init_one_irq_desc(struct irq_de
 
 #define irq_desc_initialized(desc) ((desc)->handler != NULL)
 
-#if defined(__ia64__)
-extern irq_desc_t irq_desc[NR_VECTORS];
-
-#define setup_irq(irq, action) \
-    setup_irq_vector(irq_to_vector(irq), action)
-
-#define release_irq(irq) \
-    release_irq_vector(irq_to_vector(irq))
-
-#define request_irq(irq, handler, irqflags, devname, devid) \
-    request_irq_vector(irq_to_vector(irq), handler, irqflags, devname, devid)
-
-#elif defined(__arm__)
+#if defined(__arm__)
 
 #define NR_IRQS		1024
 #define nr_irqs NR_IRQS
 extern irq_desc_t irq_desc[NR_IRQS];
 
-extern int setup_irq(unsigned int irq, struct irqaction *);
-extern void release_irq(unsigned int irq);
-extern int request_irq(unsigned int irq,
-               void (*handler)(int, void *, struct cpu_user_regs *),
-               unsigned long irqflags, const char * devname, void *dev_id);
+#endif
 
-#else
 extern int setup_irq(unsigned int irq, struct irqaction *);
 extern void release_irq(unsigned int irq);
 extern int request_irq(unsigned int irq,
                void (*handler)(int, void *, struct cpu_user_regs *),
                unsigned long irqflags, const char * devname, void *dev_id);
-#endif
 
 extern hw_irq_controller no_irq_type;
 extern void no_action(int cpl, void *dev_id, struct cpu_user_regs *regs);
--- a/xen/include/xen/libelf.h
+++ b/xen/include/xen/libelf.h
@@ -23,7 +23,7 @@
 #ifndef __XEN_LIBELF_H__
 #define __XEN_LIBELF_H__
 
-#if defined(__i386__) || defined(__x86_64__) || defined(__ia64__) || defined(__arm__)
+#if defined(__i386__) || defined(__x86_64__) || defined(__arm__)
 #define XEN_ELF_LITTLE_ENDIAN
 #else
 #error define architectural endianness
--- a/xen/include/xen/symbols.h
+++ b/xen/include/xen/symbols.h
@@ -21,13 +21,9 @@ static void __check_printsym_format(cons
 {
 }
 
-/* ia64 and ppc64 use function descriptors, which contain the real address */
-#if defined(CONFIG_IA64) || defined(CONFIG_PPC64)
-#define print_fn_descriptor_symbol(fmt, addr)		\
-do {						\
-	unsigned long *__faddr = (unsigned long*) addr;		\
-	print_symbol(fmt, __faddr[0]);		\
-} while (0)
+#if 0
+#define print_fn_descriptor_symbol(fmt, addr)	\
+	print_symbol(fmt, *(unsigned long *)addr)
 #else
 #define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr)
 #endif

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2012-04-03  8:18 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-21  8:45 removal of ia64 port Jan Beulich
2012-03-22 10:58 ` Keir Fraser
2012-03-22 11:04   ` Jan Beulich
2012-03-22 11:19     ` Keir Fraser
2012-03-22 12:10       ` Ian Campbell
2012-03-23  6:52 ` KUWAMURA Shin'ya
     [not found] ` <20120323.155249.425911897.kuwa@jp.fujitsu.com>
2012-03-23  9:01   ` Jan Beulich
2012-03-29  9:13     ` Ian Campbell
2012-03-30  8:54       ` KUWAMURA Shin'ya
     [not found]       ` <20120330.175445.321377065.kuwa@jp.fujitsu.com>
2012-04-02 15:16         ` Jan Beulich
2012-04-02 15:33           ` Keir Fraser
2012-04-03  8:18             ` Jan Beulich [this message]
2012-04-03  8:57               ` Keir Fraser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F7ACE69020000780007C3E0@nat28.tlf.novell.com \
    --to=jbeulich@suse.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=keir.xen@gmail.com \
    --cc=kuwa@jp.fujitsu.com \
    --cc=xen-devel@lists.xen.org \
    --cc=xen-ia64-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.