]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Revert "xen/hypercall: fix hypercall fallback code for very old hypervisors"
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 6 Nov 2012 20:56:35 +0000 (15:56 -0500)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 6 Nov 2012 20:56:35 +0000 (15:56 -0500)
This reverts commit 4ae4c7658a7c0501521c422d618038587c3edeca.

Conflicts:

drivers/xen/Makefile

arch/x86/include/asm/xen/hypercall.h
drivers/xen/Makefile
drivers/xen/fallback.c [deleted file]

index 40554218da08465d15fdb4a6a369c5423f86bbb6..59c226d120cdeccb6d8615e396f65b3ff2d4c050 100644 (file)
@@ -359,14 +359,18 @@ HYPERVISOR_update_va_mapping(unsigned long va, pte_t new_val,
                return _hypercall4(int, update_va_mapping, va,
                                   new_val.pte, new_val.pte >> 32, flags);
 }
-extern int __must_check xen_HYPERVISOR_event_channel_op_compat(int, void *);
 
 static inline int
 HYPERVISOR_event_channel_op(int cmd, void *arg)
 {
        int rc = _hypercall2(int, event_channel_op, cmd, arg);
-       if (unlikely(rc == -ENOSYS))
-               rc = xen_HYPERVISOR_event_channel_op_compat(cmd, arg);
+       if (unlikely(rc == -ENOSYS)) {
+               struct evtchn_op op;
+               op.cmd = cmd;
+               memcpy(&op.u, arg, sizeof(op.u));
+               rc = _hypercall1(int, event_channel_op_compat, &op);
+               memcpy(arg, &op.u, sizeof(op.u));
+       }
        return rc;
 }
 
@@ -382,14 +386,17 @@ HYPERVISOR_console_io(int cmd, int count, char *str)
        return _hypercall3(int, console_io, cmd, count, str);
 }
 
-extern int __must_check xen_HYPERVISOR_physdev_op_compat(int, void *);
-
 static inline int
 HYPERVISOR_physdev_op(int cmd, void *arg)
 {
        int rc = _hypercall2(int, physdev_op, cmd, arg);
-       if (unlikely(rc == -ENOSYS))
-               rc = xen_HYPERVISOR_physdev_op_compat(cmd, arg);
+       if (unlikely(rc == -ENOSYS)) {
+               struct physdev_op op;
+               op.cmd = cmd;
+               memcpy(&op.u, arg, sizeof(op.u));
+               rc = _hypercall1(int, physdev_op_compat, &op);
+               memcpy(arg, &op.u, sizeof(op.u));
+       }
        return rc;
 }
 
index 23d3737e8b78ecb5d5c79937bdd9385ae3e0a0fe..909bb56e3adeec1396bde66eadf95ba0efd47a3b 100644 (file)
@@ -2,7 +2,7 @@ ifneq ($(CONFIG_ARM),y)
 obj-y  += manage.o
 obj-$(CONFIG_HOTPLUG_CPU)              += cpu_hotplug.o
 endif
-obj-y  += grant-table.o features.o events.o balloon.o fallback.o
+obj-y  += grant-table.o features.o events.o balloon.o
 obj-y  += xenbus/
 
 nostackp := $(call cc-option, -fno-stack-protector)
diff --git a/drivers/xen/fallback.c b/drivers/xen/fallback.c
deleted file mode 100644 (file)
index b29ce32..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/bug.h>
-#include <linux/export.h>
-#include <asm/hypervisor.h>
-#include <asm/xen/hypercall.h>
-
-int xen_HYPERVISOR_event_channel_op_compat(int cmd, void *arg)
-{
-       struct evtchn_op op;
-       int rc;
-
-       op.cmd = cmd;
-       memcpy(&op.u, arg, sizeof(op.u));
-       rc = _hypercall1(int, event_channel_op_compat, &op);
-
-       switch (cmd) {
-       case EVTCHNOP_close:
-       case EVTCHNOP_send:
-       case EVTCHNOP_bind_vcpu:
-       case EVTCHNOP_unmask:
-               /* no output */
-               break;
-
-#define COPY_BACK(eop) \
-       case EVTCHNOP_##eop: \
-               memcpy(arg, &op.u.eop, sizeof(op.u.eop)); \
-               break
-
-       COPY_BACK(bind_interdomain);
-       COPY_BACK(bind_virq);
-       COPY_BACK(bind_pirq);
-       COPY_BACK(status);
-       COPY_BACK(alloc_unbound);
-       COPY_BACK(bind_ipi);
-#undef COPY_BACK
-
-       default:
-               WARN_ON(rc != -ENOSYS);
-               break;
-       }
-
-       return rc;
-}
-EXPORT_SYMBOL_GPL(xen_HYPERVISOR_event_channel_op_compat);
-
-int xen_HYPERVISOR_physdev_op_compat(int cmd, void *arg)
-{
-       struct physdev_op op;
-       int rc;
-
-       op.cmd = cmd;
-       memcpy(&op.u, arg, sizeof(op.u));
-       rc = _hypercall1(int, physdev_op_compat, &op);
-
-       switch (cmd) {
-       case PHYSDEVOP_IRQ_UNMASK_NOTIFY:
-       case PHYSDEVOP_set_iopl:
-       case PHYSDEVOP_set_iobitmap:
-       case PHYSDEVOP_apic_write:
-               /* no output */
-               break;
-
-#define COPY_BACK(pop, fld) \
-       case PHYSDEVOP_##pop: \
-               memcpy(arg, &op.u.fld, sizeof(op.u.fld)); \
-               break
-
-       COPY_BACK(irq_status_query, irq_status_query);
-       COPY_BACK(apic_read, apic_op);
-       COPY_BACK(ASSIGN_VECTOR, irq_op);
-#undef COPY_BACK
-
-       default:
-               WARN_ON(rc != -ENOSYS);
-               break;
-       }
-
-       return rc;
-}
-EXPORT_SYMBOL_GPL(xen_HYPERVISOR_physdev_op_compat);