-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'stable/for-linus-3.7-rc5-tag' of git://git.kernel.org/pub/…
…scm/linux/kernel/git/konrad/xen Pull Xen fixes from Konrad Rzeszutek Wilk: "There are three ARM compile fixes (we forgot to export certain functions and if the drivers are built as an module - we go belly-up). There is also an mismatch of irq_enter() / exit_idle() calls sequence which were fixed some time ago in other piece of codes, but failed to appear in the Xen code. Lastly a fix for to help in the field with troubleshooting in case we cannot get the appropriate parameter and also fallback code when working with very old hypervisors." Bug-fixes: - Fix compile issues on ARM. - Fix hypercall fallback code for old hypervisors. - Print out which HVM parameter failed if it fails. - Fix idle notifier call after irq_enter. * tag 'stable/for-linus-3.7-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: xen/arm: Fix compile errors when drivers are compiled as modules (export more). xen/arm: Fix compile errors when drivers are compiled as modules. xen/generic: Disable fallback build on ARM. xen/events: fix RCU warning, or Call idle notifier after irq_enter() xen/hvm: If we fail to fetch an HVM parameter print out which flag it is. xen/hypercall: fix hypercall fallback code for very old hypervisors
- Loading branch information
Showing
6 changed files
with
132 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#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_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_event_channel_op_compat); | ||
|
||
int 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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters