Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'stable/for-linus-3.17-b-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

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

+6 -11
-5
arch/arm/xen/grant-table.c
··· 49 49 { 50 50 return 0; 51 51 } 52 - 53 - int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status) 54 - { 55 - return 0; 56 - }
+5 -5
arch/x86/xen/grant-table.c
··· 118 118 { 119 119 struct page **pages; 120 120 xen_pfn_t *pfns; 121 + void *vaddr; 121 122 int rc; 122 123 unsigned int i; 123 124 unsigned long nr_grant_frames = gnttab_max_grant_frames(); ··· 144 143 for (i = 0; i < nr_grant_frames; i++) 145 144 pfns[i] = page_to_pfn(pages[i]); 146 145 147 - rc = arch_gnttab_map_shared(pfns, nr_grant_frames, nr_grant_frames, 148 - &xen_auto_xlat_grant_frames.vaddr); 149 - 150 - if (rc) { 146 + vaddr = vmap(pages, nr_grant_frames, 0, PAGE_KERNEL); 147 + if (!vaddr) { 151 148 pr_warn("%s Couldn't map %ld pfns rc:%d\n", __func__, 152 149 nr_grant_frames, rc); 153 150 free_xenballooned_pages(nr_grant_frames, pages); 154 151 kfree(pages); 155 152 kfree(pfns); 156 - return rc; 153 + return -ENOMEM; 157 154 } 158 155 kfree(pages); 159 156 160 157 xen_auto_xlat_grant_frames.pfn = pfns; 161 158 xen_auto_xlat_grant_frames.count = nr_grant_frames; 159 + xen_auto_xlat_grant_frames.vaddr = vaddr; 162 160 163 161 return 0; 164 162 }
+1 -1
arch/x86/xen/time.c
··· 444 444 445 445 irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt, 446 446 IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER| 447 - IRQF_FORCE_RESUME, 447 + IRQF_FORCE_RESUME|IRQF_EARLY_RESUME, 448 448 name, NULL); 449 449 (void)xen_set_irq_priority(irq, XEN_IRQ_PRIORITY_MAX); 450 450