Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
xen
19560-x86-flush-tlb-empty-mask.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 19560-x86-flush-tlb-empty-mask.patch of Package xen
# HG changeset patch # User Keir Fraser <keir.fraser@citrix.com> # Date 1240235791 -3600 # Node ID 423a7f500059751e62c55f2fa5fc23f80c40b9e6 # Parent cc2267c6d53b3831e160465d4f6959044e094fd1 x86: fix next->vcpu_dirty_cpumask checking in context_switch() There was a timing window where flush_tlb_mask() could be called with an empty mask (triggering a WARN_ON() in send_IPI_mask_flat() along with APIC errors) because rather than using the already taken snapshot of next's vcpu_dirty_cpumask struct vcpu's field was used directly, which can get its only bit cleared by remote CPUs. Replacing the structure field's use by the local variable then made the inner cpus_empty() check completely redundant with the one in the surrounding if()'s condition. Signed-off-by: Jan Beulich <jbeulich@novell.com> --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1257,8 +1257,7 @@ void context_switch(struct vcpu *prev, s if ( unlikely(!cpu_isset(cpu, dirty_mask) && !cpus_empty(dirty_mask)) ) { /* Other cpus call __sync_lazy_execstate from flush ipi handler. */ - if ( !cpus_empty(next->vcpu_dirty_cpumask) ) - flush_tlb_mask(next->vcpu_dirty_cpumask); + flush_tlb_mask(dirty_mask); } if ( is_hvm_vcpu(prev) && !list_empty(&prev->arch.hvm_vcpu.tm_list) )
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor