[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Merge
# HG changeset patch # User Tim Deegan <Tim.Deegan@xxxxxxxxxx> # Date 1295625899 0 # Node ID ca64bd257a6fb0818bb0fa5e559c5220eafd80fa # Parent e9277ab439472bbcf5717c82155361e6f97afa3a # Parent 1637fdbfc21e2c732eca29136943a568f8f341cd Merge --- xen/arch/x86/apic.c | 16 ++++++++++++++++ xen/arch/x86/hvm/svm/svm.c | 2 +- xen/arch/x86/x86_32/domain_page.c | 2 ++ xen/drivers/passthrough/vtd/quirks.c | 10 ++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff -r e9277ab43947 -r ca64bd257a6f xen/arch/x86/apic.c --- a/xen/arch/x86/apic.c Fri Jan 21 15:37:36 2011 +0000 +++ b/xen/arch/x86/apic.c Fri Jan 21 16:04:59 2011 +0000 @@ -961,6 +961,22 @@ void __init x2apic_bsp_setup(void) if ( !cpu_has_x2apic ) return; +#ifdef __i386__ + clear_bit(X86_FEATURE_X2APIC, boot_cpu_data.x86_capability); + if ( x2apic_enabled ) + { + uint64_t msr_content; + rdmsrl(MSR_IA32_APICBASE, msr_content); + msr_content &= ~(MSR_IA32_APICBASE_ENABLE | MSR_IA32_APICBASE_EXTD); + wrmsrl(MSR_IA32_APICBASE, msr_content); + msr_content |= MSR_IA32_APICBASE_ENABLE; + wrmsrl(MSR_IA32_APICBASE, msr_content); + x2apic_enabled = 0; + } + printk("x2APIC disabled permanently on x86_32.\n"); + return; +#endif + if ( !opt_x2apic ) { if ( !x2apic_enabled ) diff -r e9277ab43947 -r ca64bd257a6f xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Fri Jan 21 15:37:36 2011 +0000 +++ b/xen/arch/x86/hvm/svm/svm.c Fri Jan 21 16:04:59 2011 +0000 @@ -705,7 +705,7 @@ static void svm_do_resume(struct vcpu *v { v->arch.hvm_svm.launch_core = smp_processor_id(); hvm_migrate_timers(v); - + hvm_migrate_pirqs(v); /* Migrating to another ASID domain. Request a new ASID. */ hvm_asid_flush_vcpu(v); } diff -r e9277ab43947 -r ca64bd257a6f xen/arch/x86/x86_32/domain_page.c --- a/xen/arch/x86/x86_32/domain_page.c Fri Jan 21 15:37:36 2011 +0000 +++ b/xen/arch/x86/x86_32/domain_page.c Fri Jan 21 16:04:59 2011 +0000 @@ -53,6 +53,8 @@ void *map_domain_page(unsigned long mfn) perfc_incr(map_domain_page_count); v = mapcache_current_vcpu(); + /* Prevent vcpu pointer being used before initialize. */ + ASSERT((unsigned long)v != 0xfffff000); dcache = &v->domain->arch.mapcache; vcache = &v->arch.mapcache; diff -r e9277ab43947 -r ca64bd257a6f xen/drivers/passthrough/vtd/quirks.c --- a/xen/drivers/passthrough/vtd/quirks.c Fri Jan 21 15:37:36 2011 +0000 +++ b/xen/drivers/passthrough/vtd/quirks.c Fri Jan 21 16:04:59 2011 +0000 @@ -217,10 +217,15 @@ static void snb_vtd_ops_postamble(struct /* * call before VT-d translation enable and IOTLB flush operations. */ + +static int snb_igd_quirk; +boolean_param("snb_igd_quirk", snb_igd_quirk); + void vtd_ops_preamble_quirk(struct iommu* iommu) { cantiga_vtd_ops_preamble(iommu); - snb_vtd_ops_preamble(iommu); + if ( snb_igd_quirk ) + snb_vtd_ops_preamble(iommu); } /* @@ -228,7 +233,8 @@ void vtd_ops_preamble_quirk(struct iommu */ void vtd_ops_postamble_quirk(struct iommu* iommu) { - snb_vtd_ops_postamble(iommu); + if ( snb_igd_quirk ) + snb_vtd_ops_postamble(iommu); } /* initialize platform identification flags */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |