Merge tag 'stable/for-linus-3.17-b-rc0-tag' of git://git.kernel.org/pub/scm/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 14 Aug 2014 15:40:44 +0000 (09:40 -0600)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 14 Aug 2014 15:40:44 +0000 (09:40 -0600)
Pull Xen bugfixes from David Vrabel:
 - fix ARM build
 - fix boot crash with PVH guests
 - improve reliability of resume/migration

* tag 'stable/for-linus-3.17-b-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  x86/xen: use vmap() to map grant table pages in PVH guests
  x86/xen: resume timer irqs early
  arm/xen: remove duplicate arch_gnttab_init() function

arch/arm/xen/grant-table.c
arch/x86/xen/grant-table.c
arch/x86/xen/time.c

index 2c4041c9bac5e18e320d25b0577d034c52514b43..e43791829aceb2a725d45b419b36c21b54ec0300 100644 (file)
@@ -49,8 +49,3 @@ int arch_gnttab_init(unsigned long nr_shared)
 {
        return 0;
 }
-
-int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status)
-{
-       return 0;
-}
index c0413046483ae9862c1d487348b3a701a2045e3a..1580e7a5a4cf7600d0f424ddd5a66d76efef6b2f 100644 (file)
@@ -118,6 +118,7 @@ static int __init xlated_setup_gnttab_pages(void)
 {
        struct page **pages;
        xen_pfn_t *pfns;
+       void *vaddr;
        int rc;
        unsigned int i;
        unsigned long nr_grant_frames = gnttab_max_grant_frames();
@@ -143,21 +144,20 @@ static int __init xlated_setup_gnttab_pages(void)
        for (i = 0; i < nr_grant_frames; i++)
                pfns[i] = page_to_pfn(pages[i]);
 
-       rc = arch_gnttab_map_shared(pfns, nr_grant_frames, nr_grant_frames,
-                                   &xen_auto_xlat_grant_frames.vaddr);
-
-       if (rc) {
+       vaddr = vmap(pages, nr_grant_frames, 0, PAGE_KERNEL);
+       if (!vaddr) {
                pr_warn("%s Couldn't map %ld pfns rc:%d\n", __func__,
                        nr_grant_frames, rc);
                free_xenballooned_pages(nr_grant_frames, pages);
                kfree(pages);
                kfree(pfns);
-               return rc;
+               return -ENOMEM;
        }
        kfree(pages);
 
        xen_auto_xlat_grant_frames.pfn = pfns;
        xen_auto_xlat_grant_frames.count = nr_grant_frames;
+       xen_auto_xlat_grant_frames.vaddr = vaddr;
 
        return 0;
 }
index 7b78f88c1707b994b34f20408bc1b6046447eb22..5718b0b58b60f663a845207af02d930962e96b8f 100644 (file)
@@ -444,7 +444,7 @@ void xen_setup_timer(int cpu)
 
        irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt,
                                      IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER|
-                                     IRQF_FORCE_RESUME,
+                                     IRQF_FORCE_RESUME|IRQF_EARLY_RESUME,
                                      name, NULL);
        (void)xen_set_irq_priority(irq, XEN_IRQ_PRIORITY_MAX);