Xen bug fixes for 3.17-rc0

- Fix ARM build.
 - Fix boot crash with PVH guests.
 - Improve reliability of resume/migration.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQEcBAABAgAGBQJT6y4zAAoJEFxbo/MsZsTRqI4H/3c+TXRjeB5787wkm3Lya1JO
 5+DsbbtlM13PT+Oi0Zop7xUYMPya7Xkwix0FvFvJ/q0/NFMf6RDJREtRy7atRkkp
 IRKccsGA/OH0ETcmQJOGHErnK51cAjMrm+ilJHIIYd6btEVCuP212G9f8CVGMyIK
 r0U6sVUxTJ5TPOLjvv5e8Rz+iTtP+OXvxaf2+rcqAf1QAJJ6S6+ipJZjZemX8OR/
 IoUPiee5Ou/ogQekt0f473vJrxX5nP7wLdJ2F7YA/A6F/HQHNbYDgQXf2IXrqFmb
 DpkpXxaowZGKXwnwqHUr3pVDdeMpvYJKZDPZmTQq2htrXufHIiY/E3qr9wGjqxk=
 =iVy1
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2014-08-14 09:40:44 -06:00
commit 4dacb91c7d
3 changed files with 6 additions and 11 deletions

View File

@ -49,8 +49,3 @@ int arch_gnttab_init(unsigned long nr_shared)
{ {
return 0; return 0;
} }
int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status)
{
return 0;
}

View File

@ -118,6 +118,7 @@ static int __init xlated_setup_gnttab_pages(void)
{ {
struct page **pages; struct page **pages;
xen_pfn_t *pfns; xen_pfn_t *pfns;
void *vaddr;
int rc; int rc;
unsigned int i; unsigned int i;
unsigned long nr_grant_frames = gnttab_max_grant_frames(); 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++) for (i = 0; i < nr_grant_frames; i++)
pfns[i] = page_to_pfn(pages[i]); pfns[i] = page_to_pfn(pages[i]);
rc = arch_gnttab_map_shared(pfns, nr_grant_frames, nr_grant_frames, vaddr = vmap(pages, nr_grant_frames, 0, PAGE_KERNEL);
&xen_auto_xlat_grant_frames.vaddr); if (!vaddr) {
if (rc) {
pr_warn("%s Couldn't map %ld pfns rc:%d\n", __func__, pr_warn("%s Couldn't map %ld pfns rc:%d\n", __func__,
nr_grant_frames, rc); nr_grant_frames, rc);
free_xenballooned_pages(nr_grant_frames, pages); free_xenballooned_pages(nr_grant_frames, pages);
kfree(pages); kfree(pages);
kfree(pfns); kfree(pfns);
return rc; return -ENOMEM;
} }
kfree(pages); kfree(pages);
xen_auto_xlat_grant_frames.pfn = pfns; xen_auto_xlat_grant_frames.pfn = pfns;
xen_auto_xlat_grant_frames.count = nr_grant_frames; xen_auto_xlat_grant_frames.count = nr_grant_frames;
xen_auto_xlat_grant_frames.vaddr = vaddr;
return 0; return 0;
} }

View File

@ -444,7 +444,7 @@ void xen_setup_timer(int cpu)
irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt, irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt,
IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER| IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER|
IRQF_FORCE_RESUME, IRQF_FORCE_RESUME|IRQF_EARLY_RESUME,
name, NULL); name, NULL);
(void)xen_set_irq_priority(irq, XEN_IRQ_PRIORITY_MAX); (void)xen_set_irq_priority(irq, XEN_IRQ_PRIORITY_MAX);