Fixes:
- Fixes console deadlock when resuming PV guests - Fix regression hit when ballooning and resuming PV guests -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJTxt1pAAoJEFjIrFwIi8fJbGcH/RW88DhFw3wJrtyd68R2uY4R BQVsUeXltzS7cRZ46ytStn+UveXOII9SI1kdU0yAPWbpzgKwXkXLTGUbL26vXmfq ZpAGIVFBG+SrHuTDEYP/IhB2TI6ugTeHVK8+Mo+HfjEs99OJ+BAf4IlZ9cLUvrW8 l51HcFe7c9ueH7YculTAesUWZrdS6p5FBbTz0pwG8BvU5NxJ2EC+MktLEKZmV27Q Y3CN///BhIN6YXhPA3Frykxs36m4gFJUPgXbEQFea79I67f+frBX/VdKNPeaMoaR yb305PStdxwo6Ja8Qx/CrTl+y8vTtLP1cADRGSdLD3m1vI42PNF4Qjr1ruLbA34= =ky5L -----END PGP SIGNATURE----- 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
This commit is contained in:
Коммит
59ca9ee428
|
@ -426,20 +426,18 @@ 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;
|
||||
struct page *scratch_page = get_balloon_scratch_page();
|
||||
|
||||
if (!PageHighMem(page)) {
|
||||
struct page *scratch_page = get_balloon_scratch_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();
|
||||
put_balloon_scratch_page();
|
||||
}
|
||||
__set_phys_to_machine(pfn, INVALID_P2M_ENTRY);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче