WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [linux-2.6.18-xen] [IA64] Pull in changes from xen-ia64

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] [IA64] Pull in changes from xen-ia64 tree
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 16 Jun 2007 05:57:54 -0700
Delivery-date: Sat, 16 Jun 2007 05:56:21 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1181595593 21600
# Node ID 245902ee7ce0c1499c172b3a9240b8e2ede45a5f
# Parent  c09686d2bbffa5ec2152f685df0eaa090ddddd83
[IA64] Pull in changes from xen-ia64 tree

Includes changes to old sparse tree and interface changes from
xen-ia64-unstable.hg csets:
15115:24463758319b - 15169:8655f7b7d50c

Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
 arch/ia64/kernel/setup.c                     |    2 -
 arch/ia64/xen/hypervisor.c                   |    4 +-
 arch/ia64/xen/xcom_hcall.c                   |    7 +++
 arch/ia64/xen/xcom_mini.c                    |   16 ++++++++
 arch/ia64/xen/xcom_privcmd.c                 |   49 +++++++++++++++++++++++++++
 arch/ia64/xen/xen_dma.c                      |   15 ++++----
 include/asm-ia64/hypercall.h                 |    9 ++++
 include/asm-ia64/hypervisor.h                |    1 
 include/asm-ia64/pal.h                       |    1 
 include/xen/interface/arch-ia64.h            |   24 ++++++++++++-
 include/xen/interface/foreign/reference.size |    4 +-
 11 files changed, 118 insertions(+), 14 deletions(-)

diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/kernel/setup.c
--- a/arch/ia64/kernel/setup.c  Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/kernel/setup.c  Mon Jun 11 14:59:53 2007 -0600
@@ -610,7 +610,7 @@ setup_arch (char **cmdline_p)
 #endif
        paging_init();
 #ifdef CONFIG_XEN
-       contiguous_bitmap_init(max_pfn);
+       xen_contiguous_bitmap_init(max_pfn);
 #endif
 }
 
diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/xen/hypervisor.c
--- a/arch/ia64/xen/hypervisor.c        Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/xen/hypervisor.c        Mon Jun 11 14:59:53 2007 -0600
@@ -158,7 +158,7 @@ __contiguous_bitmap_init(unsigned long s
 }
 
 void
-contiguous_bitmap_init(unsigned long end_pfn)
+xen_contiguous_bitmap_init(unsigned long end_pfn)
 {
        unsigned long size = (end_pfn + 2 * BITS_PER_LONG) >> 3;
 #ifndef CONFIG_VIRTUAL_MEM_MAP
@@ -1208,7 +1208,7 @@ xen_ia64_allocate_resource(unsigned long
        struct resource* res;
        int error;
        
-       res = kmalloc(sizeof(*res), GFP_KERNEL);
+       res = kzalloc(sizeof(*res), GFP_KERNEL);
        if (res == NULL)
                return ERR_PTR(-ENOMEM);
 
diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/xen/xcom_hcall.c
--- a/arch/ia64/xen/xcom_hcall.c        Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/xen/xcom_hcall.c        Mon Jun 11 14:59:53 2007 -0600
@@ -395,3 +395,10 @@ xencomm_hypercall_vcpu_op(int cmd, int c
        return xencomm_arch_hypercall_vcpu_op(cmd, cpu,
                                              xencomm_create_inline(arg));
 }
+
+int
+xencomm_hypercall_fpswa_revision(unsigned int *revision)
+{
+       return xencomm_arch_hypercall_fpswa_revision(
+               xencomm_create_inline(revision));
+}
diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/xen/xcom_mini.c
--- a/arch/ia64/xen/xcom_mini.c Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/xen/xcom_mini.c Mon Jun 11 14:59:53 2007 -0600
@@ -467,3 +467,19 @@ xencomm_mini_hypercall_sched_op(int cmd,
        return xencomm_arch_hypercall_sched_op(cmd, desc);
 }
 EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_sched_op);
+
+int
+xencomm_mini_hypercall_fpswa_revision(unsigned int *revision)
+{
+       int nbr_area = 2;
+       struct xencomm_mini xc_area[2];
+       struct xencomm_handle *desc;
+       int rc;
+
+       rc = xencomm_create_mini(xc_area, &nbr_area,
+                                revision, sizeof(*revision), &desc);
+       if (rc)
+               return rc;
+       return xencomm_arch_hypercall_fpswa_revision(desc);
+}
+EXPORT_SYMBOL_GPL(xencomm_mini_hypercall_fpswa_revision);
diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/xen/xcom_privcmd.c
--- a/arch/ia64/xen/xcom_privcmd.c      Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/xen/xcom_privcmd.c      Mon Jun 11 14:59:53 2007 -0600
@@ -430,6 +430,21 @@ xencomm_privcmd_memory_op(privcmd_hyperc
 
                return ret;
        }
+       case XENMEM_maximum_gpfn:
+       {
+               domid_t kern_domid;
+               domid_t __user *user_domid;
+               struct xencomm_handle *desc;
+
+               user_domid = (domid_t __user *)hypercall->arg[1];
+               if (copy_from_user(&kern_domid, user_domid, sizeof(domid_t)))
+                       return -EFAULT;
+               desc = xencomm_create_inline(&kern_domid);
+
+               ret = xencomm_arch_hypercall_memory_op(cmd, desc);
+
+               return ret;
+       }
        case XENMEM_translate_gpfn_list:
        {
                xen_translate_gpfn_list_t kern_op;
@@ -640,6 +655,38 @@ xencomm_privcmd_sched_op(privcmd_hyperca
        ret = xencomm_arch_hypercall_sched_op(cmd, desc);
 
        xencomm_free(desc);
+       return ret;
+}
+
+static int
+xencomm_privcmd_ia64_dom0vp_op(privcmd_hypercall_t *hypercall)
+{
+       int cmd = hypercall->arg[0];
+       int ret;
+       
+       switch (cmd) {
+       case IA64_DOM0VP_fpswa_revision: {
+               unsigned int revision;
+               unsigned int __user *revision_user =
+                       (unsigned int* __user)hypercall->arg[1];
+               struct xencomm_handle *desc;
+               ret = xencomm_create(&revision, sizeof(revision),
+                                    &desc, GFP_KERNEL);
+               if (ret)
+                       break;
+               ret = xencomm_arch_hypercall_fpswa_revision(desc);
+               xencomm_free(desc);
+               if (ret)
+                       break;
+               if (copy_to_user(revision_user, &revision, sizeof(revision)))
+                       ret = -EFAULT;
+               break;
+       }
+       default:
+               printk("%s: unknown IA64 DOM0VP op %d\n", __func__, cmd);
+               ret = -EINVAL;
+               break;
+       }
        return ret;
 }
 
@@ -665,6 +712,8 @@ privcmd_hypercall(privcmd_hypercall_t *h
                return xencomm_privcmd_hvm_op(hypercall);
        case __HYPERVISOR_sched_op:
                return xencomm_privcmd_sched_op(hypercall);
+       case __HYPERVISOR_ia64_dom0vp_op:
+               return xencomm_privcmd_ia64_dom0vp_op(hypercall);
        default:
                printk("%s: unknown hcall (%ld)\n", __func__, hypercall->op);
                return -ENOSYS;
diff -r c09686d2bbff -r 245902ee7ce0 arch/ia64/xen/xen_dma.c
--- a/arch/ia64/xen/xen_dma.c   Mon Jun 11 15:56:06 2007 +0100
+++ b/arch/ia64/xen/xen_dma.c   Mon Jun 11 14:59:53 2007 -0600
@@ -22,6 +22,7 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
+#include <linux/bitops.h>
 #include <linux/dma-mapping.h>
 #include <linux/mm.h>
 #include <asm/scatterlist.h>
@@ -40,18 +41,18 @@ do {                                                        
        \
  * when merged with upstream Linux.
  */
 static inline int
-address_needs_mapping(struct device *hwdev, dma_addr_t addr)
+address_needs_mapping(struct device *dev, dma_addr_t addr)
 {
        dma_addr_t mask = 0xffffffff;
 
        /* If the device has a mask, use it, otherwise default to 32 bits */
-       if (hwdev && hwdev->dma_mask)
-               mask = *hwdev->dma_mask;
+       if (dev && dev->dma_mask)
+               mask = *dev->dma_mask;
        return (addr & ~mask) != 0;
 }
 
 int
-xen_map_sg(struct device *hwdev, struct scatterlist *sg, int nents,
+xen_map_sg(struct device *dev, struct scatterlist *sg, int nents,
           int direction)
 {
        int i;
@@ -60,7 +61,7 @@ xen_map_sg(struct device *hwdev, struct 
                sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
                sg[i].dma_length  = sg[i].length;
 
-               IOMMU_BUG_ON(address_needs_mapping(hwdev, sg[i].dma_address));
+               IOMMU_BUG_ON(address_needs_mapping(dev, sg[i].dma_address));
        }
 
        return nents;
@@ -68,7 +69,7 @@ EXPORT_SYMBOL(xen_map_sg);
 EXPORT_SYMBOL(xen_map_sg);
 
 void
-xen_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
+xen_unmap_sg(struct device *dev, struct scatterlist *sg, int nents,
             int direction)
 {
 }
@@ -101,7 +102,7 @@ xen_alloc_coherent(struct device *dev, s
                return NULL;
 
        if (xen_create_contiguous_region(vaddr, order,
-                                        dev->coherent_dma_mask)) {
+                                        fls64(dev->coherent_dma_mask))) {
                free_pages(vaddr, order);
                return NULL;
        }
diff -r c09686d2bbff -r 245902ee7ce0 include/asm-ia64/hypercall.h
--- a/include/asm-ia64/hypercall.h      Mon Jun 11 15:56:06 2007 +0100
+++ b/include/asm-ia64/hypercall.h      Mon Jun 11 14:59:53 2007 -0600
@@ -380,6 +380,13 @@ xencomm_arch_hypercall_perfmon_op(unsign
 {
        return _hypercall4(int, ia64_dom0vp_op,
                           IA64_DOM0VP_perfmon, cmd, arg, count);
+}
+
+static inline int
+xencomm_arch_hypercall_fpswa_revision(struct xencomm_handle *arg)
+{
+       return _hypercall2(int, ia64_dom0vp_op,
+                          IA64_DOM0VP_fpswa_revision, arg);
 }
 
 // for balloon driver
@@ -397,6 +404,7 @@ xencomm_arch_hypercall_perfmon_op(unsign
 #define HYPERVISOR_memory_op xencomm_mini_hypercall_memory_op
 #define HYPERVISOR_xenoprof_op xencomm_mini_hypercall_xenoprof_op
 #define HYPERVISOR_perfmon_op xencomm_mini_hypercall_perfmon_op
+#define HYPERVISOR_fpswa_revision xencomm_mini_hypercall_fpswa_revision
 #else
 #define HYPERVISOR_sched_op xencomm_hypercall_sched_op
 #define HYPERVISOR_event_channel_op xencomm_hypercall_event_channel_op
@@ -408,6 +416,7 @@ xencomm_arch_hypercall_perfmon_op(unsign
 #define HYPERVISOR_memory_op xencomm_hypercall_memory_op
 #define HYPERVISOR_xenoprof_op xencomm_hypercall_xenoprof_op
 #define HYPERVISOR_perfmon_op xencomm_hypercall_perfmon_op
+#define HYPERVISOR_fpswa_revision xencomm_hypercall_fpswa_revision
 #endif
 
 #define HYPERVISOR_suspend xencomm_hypercall_suspend
diff -r c09686d2bbff -r 245902ee7ce0 include/asm-ia64/hypervisor.h
--- a/include/asm-ia64/hypervisor.h     Mon Jun 11 15:56:06 2007 +0100
+++ b/include/asm-ia64/hypervisor.h     Mon Jun 11 14:59:53 2007 -0600
@@ -145,6 +145,7 @@ int privcmd_mmap(struct file * file, str
 #define pfn_pte_ma(_x,_y)      __pte_ma(0)     /* unmodified use */
 
 #ifndef CONFIG_VMX_GUEST
+void xen_contiguous_bitmap_init(unsigned long end_pfn);
 int __xen_create_contiguous_region(unsigned long vstart, unsigned int order, 
unsigned int address_bits);
 static inline int
 xen_create_contiguous_region(unsigned long vstart,
diff -r c09686d2bbff -r 245902ee7ce0 include/asm-ia64/pal.h
--- a/include/asm-ia64/pal.h    Mon Jun 11 15:56:06 2007 +0100
+++ b/include/asm-ia64/pal.h    Mon Jun 11 14:59:53 2007 -0600
@@ -82,7 +82,6 @@
 #ifndef __ASSEMBLY__
 
 #include <linux/types.h>
-#include <asm/processor.h>
 #include <asm/fpu.h>
 
 /*
diff -r c09686d2bbff -r 245902ee7ce0 include/xen/interface/arch-ia64.h
--- a/include/xen/interface/arch-ia64.h Mon Jun 11 15:56:06 2007 +0100
+++ b/include/xen/interface/arch-ia64.h Mon Jun 11 14:59:53 2007 -0600
@@ -78,6 +78,10 @@ typedef unsigned long xen_ulong_t;
 #define MEM_G   (1UL << 30)
 #define MEM_M   (1UL << 20)
 #define MEM_K   (1UL << 10)
+
+/* Guest physical address of IO ports space.  */
+#define IO_PORTS_PADDR          0x00000ffffc000000UL
+#define IO_PORTS_SIZE           0x0000000004000000UL
 
 #define MMIO_START       (3 * MEM_G)
 #define MMIO_SIZE        (512 * MEM_M)
@@ -344,7 +348,12 @@ struct arch_shared_info {
     /* Interrupt vector for event channel.  */
     int evtchn_vector;
 
-    uint64_t pad[32];
+    /* PFN of memmap_info page */
+    unsigned int memmap_info_num_pages;/* currently only = 1 case is
+                                          supported. */
+    unsigned long memmap_info_pfn;
+
+    uint64_t pad[31];
 };
 typedef struct arch_shared_info arch_shared_info_t;
 
@@ -460,8 +469,18 @@ struct vcpu_guest_context_regs {
 
         struct vcpu_tr_regs tr;
 
+#if 0
+       /*
+        * The vcpu_guest_context structure is allocated on the stack in
+        * a few places.  With this array for RBS storage, that structure
+        * is a bit over 21k.  It looks like maybe we're blowing the stack
+        * and causing rather random looking failures on a couple systems.
+        * Remove since we're not actually using it for now.
+        */
+
         /* Note: loadrs is 2**14 bytes == 2**11 slots.  */
         unsigned long rbs[2048];
+#endif
 };
 
 struct vcpu_guest_context {
@@ -508,6 +527,9 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_conte
 
 /* gmfn version of IA64_DOM0VP_add_physmap */
 #define IA64_DOM0VP_add_physmap_with_gmfn       9
+
+/* get fpswa revision */
+#define IA64_DOM0VP_fpswa_revision      10
 
 // flags for page assignement to pseudo physical address space
 #define _ASSIGN_readonly                0
diff -r c09686d2bbff -r 245902ee7ce0 
include/xen/interface/foreign/reference.size
--- a/include/xen/interface/foreign/reference.size      Mon Jun 11 15:56:06 
2007 +0100
+++ b/include/xen/interface/foreign/reference.size      Mon Jun 11 14:59:53 
2007 -0600
@@ -8,8 +8,8 @@ xen_ia64_boot_param       |       -     
 xen_ia64_boot_param       |       -       -      96
 ia64_tr_entry             |       -       -      32
 vcpu_tr_regs              |       -       -     512
-vcpu_guest_context_regs   |       -       -   21872
-vcpu_guest_context        |    2800    5168   21904
+vcpu_guest_context_regs   |       -       -    5488
+vcpu_guest_context        |    2800    5168    5520
 arch_vcpu_info            |      24      16       0
 vcpu_time_info            |      32      32      32
 vcpu_info                 |      64      64      48

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [linux-2.6.18-xen] [IA64] Pull in changes from xen-ia64 tree, Xen patchbot-linux-2.6.18-xen <=