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

[Xen-changelog] Merged.



# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID edefe24d78bd5e6e51bdd002f3ee7721d6dc2ce5
# Parent  7ad21a787d3f648e5bb434c9b613b949c6b7581e
# Parent  4d4b41264b849c1350e0755a58c32111bb828e49
Merged.

diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen0_ia64
--- a/buildconfigs/linux-defconfig_xen0_ia64    Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen0_ia64    Tue Apr 11 11:51:48 2006
@@ -95,6 +95,7 @@
 CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_BLKDEV_GRANT=y
 CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_BLKDEV_BACKEND=y
 CONFIG_XEN_SYSFS=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen0_x86_32
--- a/buildconfigs/linux-defconfig_xen0_x86_32  Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen0_x86_32  Tue Apr 11 11:51:48 2006
@@ -1316,6 +1316,7 @@
 #
 CONFIG_XEN_PRIVILEGED_GUEST=y
 # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_PCIDEV_BACKEND=y
 # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
 CONFIG_XEN_PCIDEV_BACKEND_PASS=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen0_x86_64
--- a/buildconfigs/linux-defconfig_xen0_x86_64  Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen0_x86_64  Tue Apr 11 11:51:48 2006
@@ -1246,6 +1246,7 @@
 #
 CONFIG_XEN_PRIVILEGED_GUEST=y
 # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_PCIDEV_BACKEND=y
 # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
 CONFIG_XEN_PCIDEV_BACKEND_PASS=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xenU_ia64
--- a/buildconfigs/linux-defconfig_xenU_ia64    Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xenU_ia64    Tue Apr 11 11:51:48 2006
@@ -92,6 +92,7 @@
 CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_BLKDEV_GRANT=y
 CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_BLKDEV_BACKEND=y
 CONFIG_XEN_SYSFS=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xenU_x86_32
--- a/buildconfigs/linux-defconfig_xenU_x86_32  Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xenU_x86_32  Tue Apr 11 11:51:48 2006
@@ -859,13 +859,9 @@
 #
 # CONFIG_XEN_PRIVILEGED_GUEST is not set
 CONFIG_XEN_UNPRIVILEGED_GUEST=y
-# CONFIG_XEN_PCIDEV_BACKEND is not set
-# CONFIG_XEN_BLKDEV_BACKEND is not set
-# CONFIG_XEN_NETDEV_BACKEND is not set
-# CONFIG_XEN_TPMDEV_BACKEND is not set
+# CONFIG_XEN_BACKEND is not set
 CONFIG_XEN_BLKDEV_FRONTEND=y
 CONFIG_XEN_NETDEV_FRONTEND=y
-# CONFIG_XEN_BLKDEV_TAP is not set
 # CONFIG_XEN_TPMDEV_FRONTEND is not set
 CONFIG_XEN_SCRUB_PAGES=y
 CONFIG_XEN_DISABLE_SERIAL=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xenU_x86_64
--- a/buildconfigs/linux-defconfig_xenU_x86_64  Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xenU_x86_64  Tue Apr 11 11:51:48 2006
@@ -1135,13 +1135,9 @@
 #
 # CONFIG_XEN_PRIVILEGED_GUEST is not set
 CONFIG_XEN_UNPRIVILEGED_GUEST=y
-# CONFIG_XEN_PCIDEV_BACKEND is not set
-# CONFIG_XEN_BLKDEV_BACKEND is not set
-# CONFIG_XEN_NETDEV_BACKEND is not set
-# CONFIG_XEN_TPMDEV_BACKEND is not set
+# CONFIG_XEN_BACKEND is not set
 CONFIG_XEN_BLKDEV_FRONTEND=y
 CONFIG_XEN_NETDEV_FRONTEND=y
-# CONFIG_XEN_BLKDEV_TAP is not set
 # CONFIG_XEN_TPMDEV_FRONTEND is not set
 CONFIG_XEN_SCRUB_PAGES=y
 CONFIG_XEN_DISABLE_SERIAL=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen_ia64
--- a/buildconfigs/linux-defconfig_xen_ia64     Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen_ia64     Tue Apr 11 11:51:48 2006
@@ -95,6 +95,7 @@
 CONFIG_XEN_PRIVILEGED_GUEST=y
 CONFIG_XEN_BLKDEV_GRANT=y
 CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_BLKDEV_BACKEND=y
 CONFIG_XEN_SYSFS=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen_x86_32
--- a/buildconfigs/linux-defconfig_xen_x86_32   Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen_x86_32   Tue Apr 11 11:51:48 2006
@@ -2979,6 +2979,7 @@
 #
 CONFIG_XEN_PRIVILEGED_GUEST=y
 # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_PCIDEV_BACKEND=y
 # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
 CONFIG_XEN_PCIDEV_BACKEND_PASS=y
diff -r 7ad21a787d3f -r edefe24d78bd buildconfigs/linux-defconfig_xen_x86_64
--- a/buildconfigs/linux-defconfig_xen_x86_64   Tue Apr 11 11:46:39 2006
+++ b/buildconfigs/linux-defconfig_xen_x86_64   Tue Apr 11 11:51:48 2006
@@ -2656,6 +2656,7 @@
 #
 CONFIG_XEN_PRIVILEGED_GUEST=y
 # CONFIG_XEN_UNPRIVILEGED_GUEST is not set
+CONFIG_XEN_BACKEND=y
 CONFIG_XEN_PCIDEV_BACKEND=y
 # CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set
 CONFIG_XEN_PCIDEV_BACKEND_PASS=y
diff -r 7ad21a787d3f -r edefe24d78bd linux-2.6-xen-sparse/arch/ia64/Kconfig
--- a/linux-2.6-xen-sparse/arch/ia64/Kconfig    Tue Apr 11 11:46:39 2006
+++ b/linux-2.6-xen-sparse/arch/ia64/Kconfig    Tue Apr 11 11:51:48 2006
@@ -79,8 +79,13 @@
        bool
        default y
 
+config XEN_BACKEND
+       depends on XEN
+       bool
+       default y
+
 config XEN_BLKDEV_BACKEND
-       depends on XEN
+       depends on XEN && XEN_BACKEND
        bool
        default y
 
diff -r 7ad21a787d3f -r edefe24d78bd linux-2.6-xen-sparse/drivers/xen/Kconfig
--- a/linux-2.6-xen-sparse/drivers/xen/Kconfig  Tue Apr 11 11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/Kconfig  Tue Apr 11 11:51:48 2006
@@ -28,9 +28,16 @@
        bool
        default !XEN_PRIVILEGED_GUEST
 
+config XEN_BACKEND
+        tristate "Backend driver support"
+        default y
+        help
+          Support for backend device drivers that provide I/O services
+          to other virtual machines.
+
 config XEN_PCIDEV_BACKEND
        tristate "PCI device backend driver"
-       depends PCI
+       depends on PCI && XEN_BACKEND
        default XEN_PRIVILEGED_GUEST
        help
          The PCI device backend driver allows the kernel to export arbitrary
@@ -70,6 +77,7 @@
 
 config XEN_BLKDEV_BACKEND
        tristate "Block-device backend driver"
+        depends on XEN_BACKEND
        default y
        help
          The block-device backend driver allows the kernel to export its
@@ -91,6 +99,7 @@
 
 config XEN_NETDEV_BACKEND
        tristate "Network-device backend driver"
+        depends on XEN_BACKEND
        default y
        help
          The network-device backend driver allows the kernel to export its
@@ -120,6 +129,7 @@
 
 config XEN_TPMDEV_BACKEND
        tristate "TPM-device backend driver"
+        depends on XEN_BACKEND
        default n
        help
          The TPM-device backend driver
@@ -155,6 +165,7 @@
 
 config XEN_BLKDEV_TAP
        tristate "Block device tap driver"
+        depends on XEN_BACKEND
        default n
        help
          This driver allows a VM to interact on block device channels
diff -r 7ad21a787d3f -r edefe24d78bd 
linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Tue Apr 11 
11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c      Tue Apr 11 
11:51:48 2006
@@ -300,13 +300,6 @@
                goto abort_transaction;
        }
 
-       err = xenbus_printf(xbt, dev->nodename,
-                           "state", "%d", XenbusStateConnected);
-       if (err) {
-               message = "writing frontend XenbusStateConnected";
-               goto abort_transaction;
-       }
-
        err = xenbus_transaction_end(xbt, 0);
        if (err) {
                if (err == -EAGAIN)
@@ -314,6 +307,8 @@
                xenbus_dev_fatal(dev, err, "completing transaction");
                goto destroy_ring;
        }
+
+       xenbus_switch_state(dev, XenbusStateConnected);
 
        return 0;
 
diff -r 7ad21a787d3f -r edefe24d78bd 
linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile  Tue Apr 11 11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/Makefile  Tue Apr 11 11:51:48 2006
@@ -1,4 +1,8 @@
 obj-y  += xenbus.o
+obj-$(CONFIG_XEN_BACKEND) += xenbus_be.o
+
+xenbus_be-objs =
+xenbus_be-objs += xenbus_backend_client.o
 
 xenbus-objs =
 xenbus-objs += xenbus_client.o
diff -r 7ad21a787d3f -r edefe24d78bd 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c   Tue Apr 11 
11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_client.c   Tue Apr 11 
11:51:48 2006
@@ -259,134 +259,6 @@
                xenbus_dev_error(dev, err, "freeing event channel %d", port);
        return err;
 }
-
-
-/* Based on Rusty Russell's skeleton driver's map_page */
-int xenbus_map_ring_valloc(struct xenbus_device *dev, int gnt_ref, void 
**vaddr)
-{
-       struct gnttab_map_grant_ref op = {
-               .flags = GNTMAP_host_map,
-               .ref   = gnt_ref,
-               .dom   = dev->otherend_id,
-       };
-       struct vm_struct *area;
-
-       *vaddr = NULL;
-
-       area = alloc_vm_area(PAGE_SIZE);
-       if (!area)
-               return -ENOMEM;
-
-       op.host_addr = (unsigned long)area->addr;
-
-       lock_vm_area(area);
-       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, &op, 1));
-       unlock_vm_area(area);
-
-       if (op.status != GNTST_okay) {
-               free_vm_area(area);
-               xenbus_dev_fatal(dev, op.status,
-                                "mapping in shared page %d from domain %d",
-                                gnt_ref, dev->otherend_id);
-               return op.status;
-       }
-
-       /* Stuff the handle in an unused field */
-       area->phys_addr = (unsigned long)op.handle;
-
-       *vaddr = area->addr;
-       return 0;
-}
-EXPORT_SYMBOL_GPL(xenbus_map_ring_valloc);
-
-
-int xenbus_map_ring(struct xenbus_device *dev, int gnt_ref,
-                  grant_handle_t *handle, void *vaddr)
-{
-       struct gnttab_map_grant_ref op = {
-               .host_addr = (unsigned long)vaddr,
-               .flags     = GNTMAP_host_map,
-               .ref       = gnt_ref,
-               .dom       = dev->otherend_id,
-       };
-
-       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, &op, 1));
-
-       if (op.status != GNTST_okay) {
-               xenbus_dev_fatal(dev, op.status,
-                                "mapping in shared page %d from domain %d",
-                                gnt_ref, dev->otherend_id);
-       } else
-               *handle = op.handle;
-
-       return op.status;
-}
-EXPORT_SYMBOL_GPL(xenbus_map_ring);
-
-
-/* Based on Rusty Russell's skeleton driver's unmap_page */
-int xenbus_unmap_ring_vfree(struct xenbus_device *dev, void *vaddr)
-{
-       struct vm_struct *area;
-       struct gnttab_unmap_grant_ref op = {
-               .host_addr = (unsigned long)vaddr,
-       };
-
-       /* It'd be nice if linux/vmalloc.h provided a find_vm_area(void *addr)
-        * method so that we don't have to muck with vmalloc internals here.
-        * We could force the user to hang on to their struct vm_struct from
-        * xenbus_map_ring_valloc, but these 6 lines considerably simplify
-        * this API.
-        */
-       read_lock(&vmlist_lock);
-       for (area = vmlist; area != NULL; area = area->next) {
-               if (area->addr == vaddr)
-                       break;
-       }
-       read_unlock(&vmlist_lock);
-
-       if (!area) {
-               xenbus_dev_error(dev, -ENOENT,
-                                "can't find mapped virtual address %p", vaddr);
-               return GNTST_bad_virt_addr;
-       }
-
-       op.handle = (grant_handle_t)area->phys_addr;
-
-       lock_vm_area(area);
-       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1));
-       unlock_vm_area(area);
-
-       if (op.status == GNTST_okay)
-               free_vm_area(area);
-       else
-               xenbus_dev_error(dev, op.status,
-                                "unmapping page at handle %d error %d",
-                                (int16_t)area->phys_addr, op.status);
-
-       return op.status;
-}
-EXPORT_SYMBOL_GPL(xenbus_unmap_ring_vfree);
-
-
-int xenbus_unmap_ring(struct xenbus_device *dev,
-                    grant_handle_t handle, void *vaddr)
-{
-       struct gnttab_unmap_grant_ref op = {
-               .host_addr = (unsigned long)vaddr,
-               .handle    = handle,
-       };
-
-       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1));
-
-       if (op.status != GNTST_okay)
-               xenbus_dev_error(dev, op.status,
-                                "unmapping page at handle %d error %d",
-                                handle, op.status);
-
-       return op.status;
-}
-EXPORT_SYMBOL_GPL(xenbus_unmap_ring);
 
 
 XenbusState xenbus_read_driver_state(const char *path)
diff -r 7ad21a787d3f -r edefe24d78bd 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Tue Apr 11 
11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Tue Apr 11 
11:51:48 2006
@@ -1065,19 +1065,16 @@
  */
 static int __init wait_for_devices(void)
 {
-       int i;
-
-       for (i = 0; i < 10 * HZ; i++) {
-               if (all_devices_ready()) {
-                       return;
-               }
-
-               set_current_state(TASK_INTERRUPTIBLE);
-               schedule_timeout(1);
-       }
-
-       printk(KERN_WARNING
-              "XENBUS: Timeout connecting to devices!\n");
+       unsigned long timeout = jiffies + 10*HZ;
+
+       while (time_before(jiffies, timeout)) {
+               if (all_devices_ready())
+                       return 0;
+               schedule_timeout_interruptible(HZ/10);
+       }
+
+       printk(KERN_WARNING "XENBUS: Timeout connecting to devices!\n");
+       return 0;
 }
 
 late_initcall(wait_for_devices);
diff -r 7ad21a787d3f -r edefe24d78bd tools/xenstat/xentop/Makefile
--- a/tools/xenstat/xentop/Makefile     Tue Apr 11 11:46:39 2006
+++ b/tools/xenstat/xentop/Makefile     Tue Apr 11 11:51:48 2006
@@ -34,9 +34,6 @@
 .PHONY: all
 all: xentop
 
-.PHONY: xentop
-xentop: xentop.o
-
 .PHONY: install
 install: xentop xentop.1
        $(INSTALL_PROG) xentop $(DESTDIR)$(sbindir)/xentop
diff -r 7ad21a787d3f -r edefe24d78bd tools/xenstore/Makefile
--- a/tools/xenstore/Makefile   Tue Apr 11 11:46:39 2006
+++ b/tools/xenstore/Makefile   Tue Apr 11 11:51:48 2006
@@ -57,14 +57,12 @@
 xs_tdb_dump: xs_tdb_dump.o utils.o tdb.o talloc.o
        $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
 
-.PHONY: xs_test xs_random xs_stress xs_crashme
 xs_test xs_random xs_stress xs_crashme: LDFLAGS+=-lpthread
 xs_test: xs_test.o xs_lib.o utils.o
 xs_random: xs_random.o xs_test_lib.o xs_lib.o talloc.o utils.o
 xs_stress: xs_stress.o xs_test_lib.o xs_lib.o talloc.o utils.o
 xs_crashme: xs_crashme.o xs_lib.o talloc.o utils.o
 
-.PHONY: speedtest
 speedtest: speedtest.o xs.o xs_lib.o utils.o talloc.o
 
 .PHONY: check-speed
diff -r 7ad21a787d3f -r edefe24d78bd xen/arch/ia64/tools/privop/Makefile
--- a/xen/arch/ia64/tools/privop/Makefile       Tue Apr 11 11:46:39 2006
+++ b/xen/arch/ia64/tools/privop/Makefile       Tue Apr 11 11:51:48 2006
@@ -4,7 +4,6 @@
 .PHONY: all
 all: postat
 
-.PHONY: postat
 postat: postat.c pohcalls.o
 
 .PHONY: clean
diff -r 7ad21a787d3f -r edefe24d78bd xen/arch/x86/hvm/platform.c
--- a/xen/arch/x86/hvm/platform.c       Tue Apr 11 11:46:39 2006
+++ b/xen/arch/x86/hvm/platform.c       Tue Apr 11 11:51:48 2006
@@ -401,6 +401,11 @@
         GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
         return reg_mem(instr->op_size, opcode, instr, rex);
 
+    case 0x3B: /* cmp m32/16, r32/16 */
+        instr->instr = INSTR_CMP;
+        GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
+        return mem_reg(instr->op_size, opcode, instr, rex);
+
     case 0x80:
     case 0x81:
         {
diff -r 7ad21a787d3f -r edefe24d78bd xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Tue Apr 11 11:46:39 2006
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Tue Apr 11 11:51:48 2006
@@ -1947,7 +1947,7 @@
         && !(vector & INTR_INFO_VALID_MASK))
         __hvm_bug(regs);
 
-    vector &= 0xff;
+    vector &= INTR_INFO_VECTOR_MASK;
     local_irq_disable();
     TRACE_VMEXIT(1,vector);
 
@@ -2077,10 +2077,8 @@
         return;
     }
 
-    {
-        __vmread(GUEST_RIP, &eip);
-        TRACE_VMEXIT(0,exit_reason);
-    }
+    __vmread(GUEST_RIP, &eip);
+    TRACE_VMEXIT(0,exit_reason);
 
     switch (exit_reason) {
     case EXIT_REASON_EXCEPTION_NMI:
@@ -2097,7 +2095,7 @@
         if ((error = __vmread(VM_EXIT_INTR_INFO, &vector))
             || !(vector & INTR_INFO_VALID_MASK))
             __hvm_bug(&regs);
-        vector &= 0xff;
+        vector &= INTR_INFO_VECTOR_MASK;
 
         TRACE_VMEXIT(1,vector);
         perfc_incra(cause_vector, vector);
diff -r 7ad21a787d3f -r edefe24d78bd xen/include/asm-ia64/event.h
--- a/xen/include/asm-ia64/event.h      Tue Apr 11 11:46:39 2006
+++ b/xen/include/asm-ia64/event.h      Tue Apr 11 11:51:48 2006
@@ -32,4 +32,9 @@
        vcpu_pend_interrupt(v, v->vcpu_info->arch.evtchn_vector);
 }
 
+/* Note: Bitwise operations result in fast code with no branches. */
+#define event_pending(v)                        \
+    (!!(v)->vcpu_info->evtchn_upcall_pending &  \
+      !(v)->vcpu_info->evtchn_upcall_mask)
+
 #endif
diff -r 7ad21a787d3f -r edefe24d78bd xen/include/asm-x86/event.h
--- a/xen/include/asm-x86/event.h       Tue Apr 11 11:46:39 2006
+++ b/xen/include/asm-x86/event.h       Tue Apr 11 11:51:48 2006
@@ -26,4 +26,9 @@
         smp_send_event_check_cpu(v->processor);
 }
 
+/* Note: Bitwise operations result in fast code with no branches. */
+#define event_pending(v)                        \
+    (!!(v)->vcpu_info->evtchn_upcall_pending &  \
+      !(v)->vcpu_info->evtchn_upcall_mask)
+
 #endif
diff -r 7ad21a787d3f -r edefe24d78bd xen/include/asm-x86/hvm/io.h
--- a/xen/include/asm-x86/hvm/io.h      Tue Apr 11 11:46:39 2006
+++ b/xen/include/asm-x86/hvm/io.h      Tue Apr 11 11:51:48 2006
@@ -77,7 +77,7 @@
     __u32   flags;
 };
 
-#define MAX_INST_LEN      32
+#define MAX_INST_LEN      15 /* Maximum instruction length = 15 bytes */
 
 struct mmio_op {
     int                    flags;
diff -r 7ad21a787d3f -r edefe24d78bd xen/include/xen/event.h
--- a/xen/include/xen/event.h   Tue Apr 11 11:46:39 2006
+++ b/xen/include/xen/event.h   Tue Apr 11 11:51:48 2006
@@ -38,11 +38,6 @@
  */
 extern void send_guest_pirq(struct domain *d, int pirq);
 
-/* Note: Bitwise operations result in fast code with no branches. */
-#define event_pending(v)                        \
-    (!!(v)->vcpu_info->evtchn_upcall_pending &  \
-      !(v)->vcpu_info->evtchn_upcall_mask)
-
 #define evtchn_pending(d, p)                    \
     (test_bit((p), &(d)->shared_info->evtchn_pending[0]))
 
diff -r 7ad21a787d3f -r edefe24d78bd xen/tools/Makefile
--- a/xen/tools/Makefile        Tue Apr 11 11:46:39 2006
+++ b/xen/tools/Makefile        Tue Apr 11 11:51:48 2006
@@ -11,6 +11,5 @@
        $(MAKE) -C figlet clean
        rm -f *.o symbols
 
-.PHONY: symbols
 symbols: symbols.c
        $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
diff -r 7ad21a787d3f -r edefe24d78bd 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_backend_client.c
--- /dev/null   Tue Apr 11 11:46:39 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_backend_client.c   Tue Apr 
11 11:51:48 2006
@@ -0,0 +1,173 @@
+/******************************************************************************
+ * Backend-client-facing interface for the Xenbus driver.  In other words, the
+ * interface between the Xenbus and the device-specific code in the backend
+ * driver.
+ *
+ * Copyright (C) 2005-2006 XenSource Ltd
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation; or, when distributed
+ * separately from the Linux kernel or incorporated into other
+ * software packages, subject to the following license:
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this source file (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy, modify,
+ * merge, publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <xen/gnttab.h>
+#include <xen/xenbus.h>
+#include <xen/driver_util.h>
+
+/* Based on Rusty Russell's skeleton driver's map_page */
+int xenbus_map_ring_valloc(struct xenbus_device *dev, int gnt_ref, void 
**vaddr)
+{
+       struct gnttab_map_grant_ref op = {
+               .flags = GNTMAP_host_map,
+               .ref   = gnt_ref,
+               .dom   = dev->otherend_id,
+       };
+       struct vm_struct *area;
+
+       *vaddr = NULL;
+
+       area = alloc_vm_area(PAGE_SIZE);
+       if (!area)
+               return -ENOMEM;
+
+       op.host_addr = (unsigned long)area->addr;
+
+       lock_vm_area(area);
+       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, &op, 1));
+       unlock_vm_area(area);
+
+       if (op.status != GNTST_okay) {
+               free_vm_area(area);
+               xenbus_dev_fatal(dev, op.status,
+                                "mapping in shared page %d from domain %d",
+                                gnt_ref, dev->otherend_id);
+               return op.status;
+       }
+
+       /* Stuff the handle in an unused field */
+       area->phys_addr = (unsigned long)op.handle;
+
+       *vaddr = area->addr;
+       return 0;
+}
+EXPORT_SYMBOL_GPL(xenbus_map_ring_valloc);
+
+
+int xenbus_map_ring(struct xenbus_device *dev, int gnt_ref,
+                  grant_handle_t *handle, void *vaddr)
+{
+       struct gnttab_map_grant_ref op = {
+               .host_addr = (unsigned long)vaddr,
+               .flags     = GNTMAP_host_map,
+               .ref       = gnt_ref,
+               .dom       = dev->otherend_id,
+       };
+
+       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, &op, 1));
+
+       if (op.status != GNTST_okay) {
+               xenbus_dev_fatal(dev, op.status,
+                                "mapping in shared page %d from domain %d",
+                                gnt_ref, dev->otherend_id);
+       } else
+               *handle = op.handle;
+
+       return op.status;
+}
+EXPORT_SYMBOL_GPL(xenbus_map_ring);
+
+
+/* Based on Rusty Russell's skeleton driver's unmap_page */
+int xenbus_unmap_ring_vfree(struct xenbus_device *dev, void *vaddr)
+{
+       struct vm_struct *area;
+       struct gnttab_unmap_grant_ref op = {
+               .host_addr = (unsigned long)vaddr,
+       };
+
+       /* It'd be nice if linux/vmalloc.h provided a find_vm_area(void *addr)
+        * method so that we don't have to muck with vmalloc internals here.
+        * We could force the user to hang on to their struct vm_struct from
+        * xenbus_map_ring_valloc, but these 6 lines considerably simplify
+        * this API.
+        */
+       read_lock(&vmlist_lock);
+       for (area = vmlist; area != NULL; area = area->next) {
+               if (area->addr == vaddr)
+                       break;
+       }
+       read_unlock(&vmlist_lock);
+
+       if (!area) {
+               xenbus_dev_error(dev, -ENOENT,
+                                "can't find mapped virtual address %p", vaddr);
+               return GNTST_bad_virt_addr;
+       }
+
+       op.handle = (grant_handle_t)area->phys_addr;
+
+       lock_vm_area(area);
+       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1));
+       unlock_vm_area(area);
+
+       if (op.status == GNTST_okay)
+               free_vm_area(area);
+       else
+               xenbus_dev_error(dev, op.status,
+                                "unmapping page at handle %d error %d",
+                                (int16_t)area->phys_addr, op.status);
+
+       return op.status;
+}
+EXPORT_SYMBOL_GPL(xenbus_unmap_ring_vfree);
+
+
+int xenbus_unmap_ring(struct xenbus_device *dev,
+                    grant_handle_t handle, void *vaddr)
+{
+       struct gnttab_unmap_grant_ref op = {
+               .host_addr = (unsigned long)vaddr,
+               .handle    = handle,
+       };
+
+       BUG_ON(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1));
+
+       if (op.status != GNTST_okay)
+               xenbus_dev_error(dev, op.status,
+                                "unmapping page at handle %d error %d",
+                                handle, op.status);
+
+       return op.status;
+}
+EXPORT_SYMBOL_GPL(xenbus_unmap_ring);
+
+
+/*
+ * Local variables:
+ *  c-file-style: "linux"
+ *  indent-tabs-mode: t
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ *  tab-width: 8
+ * End:
+ */

_______________________________________________
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®.