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

Commit 59ca9ee4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'stable/for-linus-3.16-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull Xen fixes from Konrad Rzeszutek Wilk:
 "Two fixes found during migration of PV guests.  David would be the one
  doing this pull but he is on vacation.

  Fixes:
   - fix console deadlock when resuming PV guests
   - fix regression hit when ballooning and resuming PV guests"

* tag 'stable/for-linus-3.16-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen/balloon: set ballooned out pages as invalid in p2m
  xen/manage: fix potential deadlock when resuming the console
parents 22d36854 fb9a0c44
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -426,21 +426,19 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
		 * p2m are consistent.
		 */
		if (!xen_feature(XENFEAT_auto_translated_physmap)) {
			unsigned long p;
			if (!PageHighMem(page)) {
				struct page *scratch_page = get_balloon_scratch_page();

			if (!PageHighMem(page)) {
				ret = HYPERVISOR_update_va_mapping(
						(unsigned long)__va(pfn << PAGE_SHIFT),
						pfn_pte(page_to_pfn(scratch_page),
							PAGE_KERNEL_RO), 0);
				BUG_ON(ret);
			}
			p = page_to_pfn(scratch_page);
			__set_phys_to_machine(pfn, pfn_to_mfn(p));

				put_balloon_scratch_page();
			}
			__set_phys_to_machine(pfn, INVALID_P2M_ENTRY);
		}
#endif

		balloon_append(page);
+4 −1
Original line number Diff line number Diff line
@@ -88,7 +88,6 @@ static int xen_suspend(void *data)

	if (!si->cancelled) {
		xen_irq_resume();
		xen_console_resume();
		xen_timer_resume();
	}

@@ -135,6 +134,10 @@ static void do_suspend(void)

	err = stop_machine(xen_suspend, &si, cpumask_of(0));

	/* Resume console as early as possible. */
	if (!si.cancelled)
		xen_console_resume();

	raw_notifier_call_chain(&xen_resume_notifier, 0, NULL);

	dpm_resume_start(si.cancelled ? PMSG_THAW : PMSG_RESTORE);