Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4dacb91c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'stable/for-linus-3.17-b-rc0-tag' of...

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
parents ba368991 7d951f3c
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -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;
}
+5 −5
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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);