diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-02 10:12:01 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-12-02 10:12:01 -0800 | 
| commit | bcc2f9b718d0be9cd77551d37c28daf4ebbc570c (patch) | |
| tree | 5debda8b953b288bd547d2be8e36046746762fb0 | |
| parent | aeac81033bc04c9e7e3ecf5b93f476d26d4cb25b (diff) | |
| parent | 14883a75ec76b44759385fb12629f4a0f1aef4e3 (diff) | |
Merge tag 'stable/for-linus-3.13-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip
Pull Xen bug-fixes from Konrad Rzeszutek Wilk:
 "Fixes to patches that went in this merge window along with a latent
  bug:
   - Fix lazy flushing in case m2p override fails.
   - Fix module compile issues with ARM/Xen
   - Add missing call to DMA map page for Xen SWIOTLB for ARM"
* tag 'stable/for-linus-3.13-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen/gnttab: leave lazy MMU mode in the case of a m2p override failure
  xen/arm: p2m_init and p2m_lock should be static
  arm/xen: Export phys_to_mach to fix Xen module link errors
  swiotlb-xen: add missing xen_dma_map_page call
| -rw-r--r-- | arch/arm/xen/p2m.c | 5 | ||||
| -rw-r--r-- | drivers/xen/grant-table.c | 6 | ||||
| -rw-r--r-- | drivers/xen/swiotlb-xen.c | 5 | 
3 files changed, 12 insertions, 4 deletions
| diff --git a/arch/arm/xen/p2m.c b/arch/arm/xen/p2m.c index 23732cdff551..b31ee1b275b0 100644 --- a/arch/arm/xen/p2m.c +++ b/arch/arm/xen/p2m.c @@ -25,8 +25,9 @@ struct xen_p2m_entry {  	struct rb_node rbnode_phys;  }; -rwlock_t p2m_lock; +static rwlock_t p2m_lock;  struct rb_root phys_to_mach = RB_ROOT; +EXPORT_SYMBOL_GPL(phys_to_mach);  static struct rb_root mach_to_phys = RB_ROOT;  static int xen_add_phys_to_mach_entry(struct xen_p2m_entry *new) @@ -200,7 +201,7 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn)  }  EXPORT_SYMBOL_GPL(__set_phys_to_machine); -int p2m_init(void) +static int p2m_init(void)  {  	rwlock_init(&p2m_lock);  	return 0; diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c index 62ccf5424ba8..028387192b60 100644 --- a/drivers/xen/grant-table.c +++ b/drivers/xen/grant-table.c @@ -930,9 +930,10 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,  		ret = m2p_add_override(mfn, pages[i], kmap_ops ?  				       &kmap_ops[i] : NULL);  		if (ret) -			return ret; +			goto out;  	} + out:  	if (lazy)  		arch_leave_lazy_mmu_mode(); @@ -969,9 +970,10 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops,  		ret = m2p_remove_override(pages[i], kmap_ops ?  				       &kmap_ops[i] : NULL);  		if (ret) -			return ret; +			goto out;  	} + out:  	if (lazy)  		arch_leave_lazy_mmu_mode(); diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index a224bc74b6b9..1eac0731c349 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -555,6 +555,11 @@ xen_swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl,  				sg_dma_len(sgl) = 0;  				return 0;  			} +			xen_dma_map_page(hwdev, pfn_to_page(map >> PAGE_SHIFT), +						map & ~PAGE_MASK, +						sg->length, +						dir, +						attrs);  			sg->dma_address = xen_phys_to_bus(map);  		} else {  			/* we are not interested in the dma_addr returned by | 
