diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-09-12 11:14:33 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-09-12 11:14:33 -0400 |
commit | 25a765b7f05cb8460fa01b54568894b20e184862 (patch) | |
tree | 0b56db57b4d9f912393ab303c269e0fe6cdf8635 /drivers/xen/xenbus | |
parent | 9d2be9287107695708e6aae5105a8a518a6cb4d0 (diff) | |
parent | 64282278989d5b0398dcb3ba7904cb00c621dc35 (diff) |
Merge branch 'x86/platform' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into stable/for-linus-3.7
* 'x86/platform' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (9690 commits)
x86: Document x86_init.paging.pagetable_init()
x86: xen: Cleanup and remove x86_init.paging.pagetable_setup_done()
x86: Move paging_init() call to x86_init.paging.pagetable_init()
x86: Rename pagetable_setup_start() to pagetable_init()
x86: Remove base argument from x86_init.paging.pagetable_setup_start
Linux 3.6-rc5
HID: tpkbd: work even if the new Lenovo Keyboard driver is not configured
Remove user-triggerable BUG from mpol_to_str
xen/pciback: Fix proper FLR steps.
uml: fix compile error in deliver_alarm()
dj: memory scribble in logi_dj
Fix order of arguments to compat_put_time[spec|val]
xen: Use correct masking in xen_swiotlb_alloc_coherent.
xen: fix logical error in tlb flushing
xen/p2m: Fix one-off error in checking the P2M tree directory.
powerpc: Don't use __put_user() in patch_instruction
powerpc: Make sure IPI handlers see data written by IPI senders
powerpc: Restore correct DSCR in context switch
powerpc: Fix DSCR inheritance in copy_thread()
powerpc: Keep thread.dscr and thread.dscr_inherit in sync
...
Diffstat (limited to 'drivers/xen/xenbus')
-rw-r--r-- | drivers/xen/xenbus/xenbus_xs.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c index d1c217b23a42..bce15cf4a8df 100644 --- a/drivers/xen/xenbus/xenbus_xs.c +++ b/drivers/xen/xenbus/xenbus_xs.c | |||
@@ -618,6 +618,23 @@ static struct xenbus_watch *find_watch(const char *token) | |||
618 | return NULL; | 618 | return NULL; |
619 | } | 619 | } |
620 | 620 | ||
621 | static void xs_reset_watches(void) | ||
622 | { | ||
623 | int err, supported = 0; | ||
624 | |||
625 | if (!xen_hvm_domain()) | ||
626 | return; | ||
627 | |||
628 | err = xenbus_scanf(XBT_NIL, "control", | ||
629 | "platform-feature-xs_reset_watches", "%d", &supported); | ||
630 | if (err != 1 || !supported) | ||
631 | return; | ||
632 | |||
633 | err = xs_error(xs_single(XBT_NIL, XS_RESET_WATCHES, "", NULL)); | ||
634 | if (err && err != -EEXIST) | ||
635 | printk(KERN_WARNING "xs_reset_watches failed: %d\n", err); | ||
636 | } | ||
637 | |||
621 | /* Register callback to watch this node. */ | 638 | /* Register callback to watch this node. */ |
622 | int register_xenbus_watch(struct xenbus_watch *watch) | 639 | int register_xenbus_watch(struct xenbus_watch *watch) |
623 | { | 640 | { |
@@ -900,5 +917,8 @@ int xs_init(void) | |||
900 | if (IS_ERR(task)) | 917 | if (IS_ERR(task)) |
901 | return PTR_ERR(task); | 918 | return PTR_ERR(task); |
902 | 919 | ||
920 | /* shutdown watches for kexec boot */ | ||
921 | xs_reset_watches(); | ||
922 | |||
903 | return 0; | 923 | return 0; |
904 | } | 924 | } |