Commit bcc2f9b7 authored by Linus Torvalds's avatar Linus Torvalds

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
parents aeac8103 14883a75
...@@ -25,8 +25,9 @@ struct xen_p2m_entry { ...@@ -25,8 +25,9 @@ struct xen_p2m_entry {
struct rb_node rbnode_phys; struct rb_node rbnode_phys;
}; };
rwlock_t p2m_lock; static rwlock_t p2m_lock;
struct rb_root phys_to_mach = RB_ROOT; struct rb_root phys_to_mach = RB_ROOT;
EXPORT_SYMBOL_GPL(phys_to_mach);
static struct rb_root mach_to_phys = RB_ROOT; static struct rb_root mach_to_phys = RB_ROOT;
static int xen_add_phys_to_mach_entry(struct xen_p2m_entry *new) 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) ...@@ -200,7 +201,7 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn)
} }
EXPORT_SYMBOL_GPL(__set_phys_to_machine); EXPORT_SYMBOL_GPL(__set_phys_to_machine);
int p2m_init(void) static int p2m_init(void)
{ {
rwlock_init(&p2m_lock); rwlock_init(&p2m_lock);
return 0; return 0;
......
...@@ -930,9 +930,10 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, ...@@ -930,9 +930,10 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,
ret = m2p_add_override(mfn, pages[i], kmap_ops ? ret = m2p_add_override(mfn, pages[i], kmap_ops ?
&kmap_ops[i] : NULL); &kmap_ops[i] : NULL);
if (ret) if (ret)
return ret; goto out;
} }
out:
if (lazy) if (lazy)
arch_leave_lazy_mmu_mode(); arch_leave_lazy_mmu_mode();
...@@ -969,9 +970,10 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, ...@@ -969,9 +970,10 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops,
ret = m2p_remove_override(pages[i], kmap_ops ? ret = m2p_remove_override(pages[i], kmap_ops ?
&kmap_ops[i] : NULL); &kmap_ops[i] : NULL);
if (ret) if (ret)
return ret; goto out;
} }
out:
if (lazy) if (lazy)
arch_leave_lazy_mmu_mode(); arch_leave_lazy_mmu_mode();
......
...@@ -555,6 +555,11 @@ xen_swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, ...@@ -555,6 +555,11 @@ xen_swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl,
sg_dma_len(sgl) = 0; sg_dma_len(sgl) = 0;
return 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); sg->dma_address = xen_phys_to_bus(map);
} else { } else {
/* we are not interested in the dma_addr returned by /* we are not interested in the dma_addr returned by
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment