support qcow2, so blktap is needed to support domains with 'tap:qcow2' disk configurations. modified tmp-initscript-modprobe.patch - bnc#809203 - xen.efi isn't signed with SUSE Secure Boot key xen.spec - Fix adding managed PCI device to an inactive domain modified xen-managed-pci-device.patch - bnc#805094 - xen hot plug attach/detach fails modified blktap-pv-cdrom.patch - bnc# 802690 - domain locking can prevent a live migration from completing modified xend-domain-lock.patch - bnc#797014 - no way to control live migrations 26675-tools-xentoollog_update_tty_detection_in_stdiostream_progress.patch xen.migrate.tools-xc_print_messages_from_xc_save_with_xc_report.patch xen.migrate.tools-xc_document_printf_calls_in_xc_restore.patch xen.migrate.tools-xc_rework_xc_save.cswitch_qemu_logdirty.patch xen.migrate.tools_set_migration_constraints_from_cmdline.patch xen.migrate.tools_add_xm_migrate_--log_progress_option.patch - Upstream patches from Jan 26585-x86-mm-Take-the-p2m-lock-even-in-shadow-mode.patch 26595-x86-nhvm-properly-clean-up-after-failure-to-set-up-all-vCPU-s.patch 26601-honor-ACPI-v4-FADT-flags.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=232
51 lines
1.8 KiB
Diff
51 lines
1.8 KiB
Diff
# Commit a15d87475ed95840dba693ab0a56d0b48a215cbc
|
|
# Date 2013-02-21 15:16:20 +0000
|
|
# Author Tim Deegan <tim@xen.org>
|
|
# Committer Tim Deegan <tim@xen.org>
|
|
x86/mm: Take the p2m lock even in shadow mode.
|
|
|
|
The reworking of p2m lookups to use get_gfn()/put_gfn() left the
|
|
shadow code not taking the p2m lock, even in cases where the p2m would
|
|
be updated (i.e. PoD).
|
|
|
|
In many cases, shadow code doesn't need the exclusion that
|
|
get_gfn()/put_gfn() provides, as it has its own interlocks against p2m
|
|
updates, but this is taking things too far, and can lead to crashes in
|
|
the PoD code.
|
|
|
|
Now that most shadow-code p2m lookups are done with explicitly
|
|
unlocked accessors, or with the get_page_from_gfn() accessor, which is
|
|
often lock-free, we can just turn this locking on.
|
|
|
|
The remaining locked lookups are in sh_page_fault() (in a path that's
|
|
almost always already serializing on the paging lock), and in
|
|
emulate_map_dest() (which can probably be updated to use
|
|
get_page_from_gfn()). They're not addressed here but may be in a
|
|
follow-up patch.
|
|
|
|
Signed-off-by: Tim Deegan <tim@xen.org>
|
|
Acked-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
|
|
|
|
--- a/xen/arch/x86/mm/p2m.c
|
|
+++ b/xen/arch/x86/mm/p2m.c
|
|
@@ -163,8 +163,7 @@ mfn_t __get_gfn_type_access(struct p2m_d
|
|
return _mfn(gfn);
|
|
}
|
|
|
|
- /* For now only perform locking on hap domains */
|
|
- if ( locked && (hap_enabled(p2m->domain)) )
|
|
+ if ( locked )
|
|
/* Grab the lock here, don't release until put_gfn */
|
|
gfn_lock(p2m, gfn, 0);
|
|
|
|
@@ -197,8 +196,7 @@ mfn_t __get_gfn_type_access(struct p2m_d
|
|
|
|
void __put_gfn(struct p2m_domain *p2m, unsigned long gfn)
|
|
{
|
|
- if ( !p2m || !paging_mode_translate(p2m->domain)
|
|
- || !hap_enabled(p2m->domain) )
|
|
+ if ( !p2m || !paging_mode_translate(p2m->domain) )
|
|
/* Nothing to do in this case */
|
|
return;
|
|
|