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-ppc-devel

[XenPPC] [linux-ppc-2.6] [ppc] turn on more stuff

To: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Subject: [XenPPC] [linux-ppc-2.6] [ppc] turn on more stuff
From: Xen patchbot-linux-ppc-2.6 <patchbot-linux-ppc-2.6@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 09 Jun 2006 13:46:06 +0000
Delivery-date: Fri, 09 Jun 2006 07:00:18 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
# Node ID 760669a37a3a04dd629823cf41a6bc8ee662e224
# Parent  3c78a28f3fb0c424ee82e2962136a798bf4fe939
[ppc] turn on more stuff

This patch allows for the net/block front/back devices to build and be 
recognized by Dom0.  It also cleans up mush of our Kconfig and Make logic.

Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
---
 arch/powerpc/configs/xen_maple_defconfig |   17 ++++-
 arch/powerpc/platforms/xen/Makefile      |    4 +
 arch/powerpc/platforms/xen/balloon.c     |   31 ++++++++++
 arch/powerpc/platforms/xen/hcall.c       |   92 ++++++++++++++++++++-----------
 drivers/xen/Kconfig                      |   26 ++++++++
 drivers/xen/Makefile                     |   10 ---
 drivers/xen/core/Makefile                |   25 +++-----
 include/asm-powerpc/xen/asm/hypercall.h  |    2 
 include/asm-powerpc/xen/asm/hypervisor.h |   26 +++++++-
 9 files changed, 167 insertions(+), 66 deletions(-)

diff -r 3c78a28f3fb0 -r 760669a37a3a arch/powerpc/configs/xen_maple_defconfig
--- a/arch/powerpc/configs/xen_maple_defconfig  Wed Jun 07 18:10:22 2006 -0400
+++ b/arch/powerpc/configs/xen_maple_defconfig  Wed Jun 07 19:53:53 2006 -0400
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.17-rc6
-# Wed Jun  7 17:51:46 2006
+# Wed Jun  7 19:45:10 2006
 #
 CONFIG_PPC64=y
 CONFIG_64BIT=y
@@ -1267,11 +1267,14 @@ CONFIG_XEN_UNPRIVILEGED_GUEST=y
 CONFIG_XEN_UNPRIVILEGED_GUEST=y
 CONFIG_XEN_BACKEND=y
 # CONFIG_XEN_PCIDEV_BACKEND is not set
-# CONFIG_XEN_BLKDEV_BACKEND is not set
-# CONFIG_XEN_NETDEV_BACKEND is not set
+CONFIG_XEN_BLKDEV_BACKEND=y
+# CONFIG_XEN_BLKDEV_TAP_BE is not set
+CONFIG_XEN_NETDEV_BACKEND=y
+# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
+CONFIG_XEN_NETDEV_LOOPBACK=y
 # CONFIG_XEN_TPMDEV_BACKEND is not set
-# CONFIG_XEN_BLKDEV_FRONTEND is not set
-# CONFIG_XEN_NETDEV_FRONTEND is not set
+CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_NETDEV_FRONTEND=y
 # CONFIG_XEN_BLKDEV_TAP is not set
 CONFIG_XEN_SCRUB_PAGES=y
 CONFIG_XEN_DISABLE_SERIAL=y
@@ -1279,7 +1282,11 @@ CONFIG_XEN_SYSFS=y
 # CONFIG_XEN_COMPAT_030002_AND_LATER is not set
 CONFIG_XEN_COMPAT_LATEST_ONLY=y
 # CONFIG_XEN_COMPAT_030002 is not set
+CONFIG_HAVE_ARCH_ALLOC_SKB=y
+CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
 CONFIG_NO_IDLE_HZ=y
+CONFIG_XEN_UTIL=y
+CONFIG_XEN_SKBUFF=y
 CONFIG_XEN_XENCOMM=y
 
 #
diff -r 3c78a28f3fb0 -r 760669a37a3a arch/powerpc/platforms/xen/Makefile
--- a/arch/powerpc/platforms/xen/Makefile       Wed Jun 07 18:10:22 2006 -0400
+++ b/arch/powerpc/platforms/xen/Makefile       Wed Jun 07 19:53:53 2006 -0400
@@ -1,1 +1,5 @@ obj-y   += setup.o evtchn.o hcall.o udbg_x
 obj-y  += setup.o evtchn.o hcall.o udbg_xen.o xen_guest.o
+
+ifndef CONFIG_XEN_BALLOON
+obj-y += balloon.o
+endif
diff -r 3c78a28f3fb0 -r 760669a37a3a arch/powerpc/platforms/xen/hcall.c
--- a/arch/powerpc/platforms/xen/hcall.c        Wed Jun 07 18:10:22 2006 -0400
+++ b/arch/powerpc/platforms/xen/hcall.c        Wed Jun 07 19:53:53 2006 -0400
@@ -179,6 +179,13 @@ int HYPERVISOR_grant_table_op(unsigned i
        return rc;
 }
 EXPORT_SYMBOL(HYPERVISOR_grant_table_op);
+
+int HYPERVISOR_multicall(void *call_list, int nr_calls)
+{
+       BUG_ON(1);
+       return -ENOSYS;
+}
+EXPORT_SYMBOL(HYPERVISOR_multicall);
 
 static int xenppc_privcmd_dom0_op(privcmd_hypercall_t *hypercall)
 {
@@ -314,56 +321,77 @@ out:
        return ret;
 }
 
-static int xenppc_privcmd_memory_op(privcmd_hypercall_t *hypercall)
-{
-       xen_memory_reservation_t kern_op;
-       xen_memory_reservation_t __user *user_op;
+int HYPERVISOR_memory_op(unsigned int cmd, void *arg)
+{
+       int ret;
        struct xencomm_desc *op_desc;
-       const unsigned long cmd = hypercall->arg[0];
-       int ret = 0;
-
-       user_op = (xen_memory_reservation_t __user *)hypercall->arg[1];
-       if (copy_from_user(&kern_op, user_op, sizeof(xen_memory_reservation_t)))
-               return -EFAULT;
-
-       ret = xencomm_create(&kern_op, sizeof(xen_memory_reservation_t),
+       xen_memory_reservation_t *mop;
+
+
+       mop = (xen_memory_reservation_t *)arg;
+       ret = xencomm_create(mop, sizeof(xen_memory_reservation_t),
                             &op_desc, GFP_KERNEL);
        if (ret)
                return ret;
 
        switch (cmd) {
        case XENMEM_increase_reservation:
-       case XENMEM_decrease_reservation: {
+       case XENMEM_decrease_reservation:
+       {
                struct xencomm_desc *desc = NULL;
-               if (xen_guest_handle(kern_op.extent_start)) {
+
+               if (xen_guest_handle(mop->extent_start)) {
                        ret = xencomm_create(
-                               xen_guest_handle(kern_op.extent_start),
-                               kern_op.nr_extents *
-                               sizeof(*xen_guest_handle(kern_op.extent_start)),
+                               xen_guest_handle(mop->extent_start),
+                               mop->nr_extents *
+                               sizeof(*xen_guest_handle(mop->extent_start)),
                                &desc, GFP_KERNEL);
                        if (ret)
-                               goto out;
-
-                       set_xen_guest_handle(kern_op.extent_start,
-                                                (void *)__pa(desc));
+                               return ret;
+
+                       set_xen_guest_handle(mop->extent_start,
+                                            (void *)__pa(desc));
                }
 
-               ret = plpar_hcall_norets(XEN_MARK(hypercall->op), cmd, 
__pa(op_desc));
+               ret = plpar_hcall_norets(XEN_MARK(__HYPERVISOR_memory_op),
+                                        cmd, __pa(op_desc));
 
                xencomm_free(desc);
-               }
-               break;
-       default:
-               printk("%s: unknown memory cmd %ld\n", __func__, cmd);
+       }
+               break;
+               
+       case XENMEM_maximum_ram_page:
+               /* arg is NULL so we can call thru here */
+               ret = plpar_hcall_norets(XEN_MARK(__HYPERVISOR_memory_op),
+                                       cmd, NULL);
+               break;
+       default:
+               printk("%s: unknown grant table op %d\n", __func__, cmd);
                ret = -ENOSYS;
-               goto out;
-       }
-
-       if (copy_to_user(user_op, &kern_op, sizeof(xen_memory_reservation_t)))
+       }
+       xencomm_free(op_desc);
+       return ret;
+
+}
+EXPORT_SYMBOL(HYPERVISOR_memory_op);
+
+static int xenppc_privcmd_memory_op(privcmd_hypercall_t *hypercall)
+{
+       xen_memory_reservation_t kern_op;
+       xen_memory_reservation_t __user *user_op;
+       const unsigned long cmd = hypercall->arg[0];
+       int ret = 0;
+
+       user_op = (xen_memory_reservation_t __user *)hypercall->arg[1];
+       if (copy_from_user(&kern_op, user_op,
+                          sizeof(xen_memory_reservation_t)))
                return -EFAULT;
 
-out:
-       xencomm_free(op_desc);
+       if (!HYPERVISOR_memory_op(cmd, &kern_op)) {
+               if (copy_to_user(user_op, &kern_op,
+                                sizeof(xen_memory_reservation_t)))
+                       return -EFAULT;
+       }
        return ret;
 }
 
diff -r 3c78a28f3fb0 -r 760669a37a3a drivers/xen/Kconfig
--- a/drivers/xen/Kconfig       Wed Jun 07 18:10:22 2006 -0400
+++ b/drivers/xen/Kconfig       Wed Jun 07 19:53:53 2006 -0400
@@ -218,15 +218,37 @@ endmenu
 
 config HAVE_ARCH_ALLOC_SKB
        bool
-       default y if ! PPC_XEN
+       default y
 
 config HAVE_ARCH_DEV_ALLOC_SKB
        bool
-       default y if ! PPC_XEN
+       default y
 
 config NO_IDLE_HZ
        bool
        default y
+
+config XEN_UTIL
+       bool
+       default y
+
+config XEN_BALLOON
+       bool
+       default y if ! PPC_XEN
+
+config XEN_SKBUFF
+       bool
+       depends on NET
+       default y
+
+config XEN_REBOOT
+       bool
+       default y if ! PPC_XEN
+
+config XEN_SMPBOOT
+       bool
+       depends on SMP
+       default y if ! PPC_XEN
 
 config XEN_XENCOMM
        bool
diff -r 3c78a28f3fb0 -r 760669a37a3a drivers/xen/Makefile
--- a/drivers/xen/Makefile      Wed Jun 07 18:10:22 2006 -0400
+++ b/drivers/xen/Makefile      Wed Jun 07 19:53:53 2006 -0400
@@ -1,23 +1,17 @@
-
-obj-y  += util.o
-
 obj-y  += core/
 obj-y  += char/
 obj-y  += console/
 obj-y  += evtchn/
-ifndef CONFIG_PPC_XEN
-obj-y  += balloon/
-endif
 obj-y  += privcmd/
 obj-y  += xenbus/
 
+obj-$(CONFIG_XEN_UTIL)                 += util.o
+obj-$(CONFIG_XEN_BALLOON)              += balloon/
 obj-$(CONFIG_XEN_BLKDEV_BACKEND)       += blkback/
 obj-$(CONFIG_XEN_NETDEV_BACKEND)       += netback/
 obj-$(CONFIG_XEN_TPMDEV_BACKEND)       += tpmback/
 obj-$(CONFIG_XEN_BLKDEV_FRONTEND)      += blkfront/
 obj-$(CONFIG_XEN_NETDEV_FRONTEND)      += netfront/
 obj-$(CONFIG_XEN_BLKDEV_TAP)           += blktap/
-ifndef CONFIG_PPC_XEN
 obj-$(CONFIG_XEN_PCIDEV_BACKEND)       += pciback/
-endif
 obj-$(CONFIG_XEN_PCIDEV_FRONTEND)      += pcifront/
diff -r 3c78a28f3fb0 -r 760669a37a3a drivers/xen/core/Makefile
--- a/drivers/xen/core/Makefile Wed Jun 07 18:10:22 2006 -0400
+++ b/drivers/xen/core/Makefile Wed Jun 07 19:53:53 2006 -0400
@@ -2,19 +2,14 @@
 # Makefile for the linux kernel.
 #
 
-obj-y := evtchn.o
-ifndef CONFIG_PPC_XEN
-obj-y += reboot.o
-endif
-obj-y += gnttab.o
-obj-y += features.o
+obj-y := evtchn.o gnttab.o features.o
 
-obj-$(CONFIG_PROC_FS)     += xen_proc.o
-ifndef CONFIG_PPC_XEN
-obj-$(CONFIG_NET)         += skbuff.o
-obj-$(CONFIG_SMP)         += smpboot.o
-obj-$(CONFIG_HOTPLUG_CPU) += cpu_hotplug.o
-endif
-obj-$(CONFIG_SYSFS)       += hypervisor_sysfs.o
-obj-$(CONFIG_XEN_SYSFS)   += xen_sysfs.o
-obj-$(CONFIG_XEN_XENCOMM) += xencomm.o
+
+obj-$(CONFIG_PROC_FS)          += xen_proc.o
+obj-$(CONFIG_SYSFS)            += hypervisor_sysfs.o
+obj-$(CONFIG_HOTPLUG_CPU)      += cpu_hotplug.o
+obj-$(CONFIG_XEN_SYSFS)                += xen_sysfs.o
+obj-$(CONFIG_XEN_SKBUFF)       += skbuff.o
+obj-$(CONFIG_XEN_REBOOT)       += reboot.o
+obj-$(CONFIG_XEN_SMPBOOT)      += smpboot.o
+obj-$(CONFIG_XEN_XENCOMM)      += xencomm.o
diff -r 3c78a28f3fb0 -r 760669a37a3a include/asm-powerpc/xen/asm/hypercall.h
--- a/include/asm-powerpc/xen/asm/hypercall.h   Wed Jun 07 18:10:22 2006 -0400
+++ b/include/asm-powerpc/xen/asm/hypercall.h   Wed Jun 07 19:53:53 2006 -0400
@@ -43,6 +43,8 @@ extern int HYPERVISOR_physdev_op(int cmd
 extern int HYPERVISOR_physdev_op(int cmd, void *op);
 extern int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop,
                unsigned int count);
+extern int HYPERVISOR_memory_op(unsigned int cmd, void *arg);
+extern int HYPERVISOR_multicall(void *call_list, int nr_calls);
 
 static inline int HYPERVISOR_sched_op(int cmd, unsigned long arg)
 {
diff -r 3c78a28f3fb0 -r 760669a37a3a include/asm-powerpc/xen/asm/hypervisor.h
--- a/include/asm-powerpc/xen/asm/hypervisor.h  Wed Jun 07 18:10:22 2006 -0400
+++ b/include/asm-powerpc/xen/asm/hypervisor.h  Wed Jun 07 19:53:53 2006 -0400
@@ -35,6 +35,7 @@
 #include <linux/kernel.h>
 #include <linux/version.h>
 #include <xen/interface/xen.h>
+#include <xen/foreign_page.h>
 #include <xen/interface/dom0_ops.h>
 #include <asm/ptrace.h>
 #include <asm/page.h>
@@ -104,10 +105,16 @@ void xen_invlpg_mask(cpumask_t *mask, un
 #endif
 
 /* Returns zero on success else negative errno. */
-int xen_create_contiguous_region(
-    unsigned long vstart, unsigned int order, unsigned int address_bits);
-void xen_destroy_contiguous_region(
-    unsigned long vstart, unsigned int order);
+static inline int xen_create_contiguous_region(
+    unsigned long vstart, unsigned int order, unsigned int address_bits)
+{
+       return 0;
+}
+static inline void xen_destroy_contiguous_region(
+    unsigned long vstart, unsigned int order)
+{
+       return;
+}
 
 #include <asm/hypercall.h>
 
@@ -212,4 +219,15 @@ MULTI_update_va_mapping_otherdomain(
 #endif
 }
 
+#define set_phys_to_machine(_x,_y)     do {} while (0)
+#define pfn_pte_ma(pfn, prot)  __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+
+typedef unsigned long maddr_t;
+
+#ifdef CONFIG_XEN_SCRUB_PAGES
+#define scrub_pages(_p,_n) memset((void *)(_p), 0, (_n) << PAGE_SHIFT)
+#else
+#define scrub_pages(_p,_n) ((void)0)
+#endif
+
 #endif /* __HYPERVISOR_H__ */
diff -r 3c78a28f3fb0 -r 760669a37a3a arch/powerpc/platforms/xen/balloon.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/arch/powerpc/platforms/xen/balloon.c      Wed Jun 07 19:53:53 2006 -0400
@@ -0,0 +1,31 @@
+#include <linux/module.h>
+#include <linux/mm.h>
+
+/*
+ * FIXME: Port balloon driver, if ever
+ */
+
+struct page *balloon_alloc_empty_page_range(unsigned long nr_pages)
+{
+       unsigned long vstart;
+       unsigned int  order = get_order(nr_pages * PAGE_SIZE);
+
+       vstart = __get_free_pages(GFP_KERNEL, order);
+       if (vstart == 0)
+               return NULL;
+
+       return virt_to_page(vstart);
+}
+
+void balloon_dealloc_empty_page_range(
+       struct page *page, unsigned long nr_pages)
+{
+       __free_pages(page, get_order(nr_pages * PAGE_SIZE));
+}
+
+void balloon_update_driver_allowance(long delta)
+{
+}
+
+EXPORT_SYMBOL(balloon_alloc_empty_page_range);
+EXPORT_SYMBOL(balloon_dealloc_empty_page_range);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [XenPPC] [linux-ppc-2.6] [ppc] turn on more stuff, Xen patchbot-linux-ppc-2 . 6 <=