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.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

+9 -8
+5 -7
drivers/xen/balloon.c
··· 426 426 * p2m are consistent. 427 427 */ 428 428 if (!xen_feature(XENFEAT_auto_translated_physmap)) { 429 - unsigned long p; 430 - struct page *scratch_page = get_balloon_scratch_page(); 431 - 432 429 if (!PageHighMem(page)) { 430 + struct page *scratch_page = get_balloon_scratch_page(); 431 + 433 432 ret = HYPERVISOR_update_va_mapping( 434 433 (unsigned long)__va(pfn << PAGE_SHIFT), 435 434 pfn_pte(page_to_pfn(scratch_page), 436 435 PAGE_KERNEL_RO), 0); 437 436 BUG_ON(ret); 438 - } 439 - p = page_to_pfn(scratch_page); 440 - __set_phys_to_machine(pfn, pfn_to_mfn(p)); 441 437 442 - put_balloon_scratch_page(); 438 + put_balloon_scratch_page(); 439 + } 440 + __set_phys_to_machine(pfn, INVALID_P2M_ENTRY); 443 441 } 444 442 #endif 445 443
+4 -1
drivers/xen/manage.c
··· 88 88 89 89 if (!si->cancelled) { 90 90 xen_irq_resume(); 91 - xen_console_resume(); 92 91 xen_timer_resume(); 93 92 } 94 93 ··· 133 134 si.cancelled = 1; 134 135 135 136 err = stop_machine(xen_suspend, &si, cpumask_of(0)); 137 + 138 + /* Resume console as early as possible. */ 139 + if (!si.cancelled) 140 + xen_console_resume(); 136 141 137 142 raw_notifier_call_chain(&xen_resume_notifier, 0, NULL); 138 143