Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelv...
[firefly-linux-kernel-4.4.55.git] / drivers / xen / grant-table.c
index b84e3ab839aa06650f98e39da40343f26644532d..6d325bda76da2aea5ef3e2388f015b5392693239 100644 (file)
@@ -933,9 +933,6 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,
                    struct page **pages, unsigned int count)
 {
        int i, ret;
-       bool lazy = false;
-       pte_t *pte;
-       unsigned long mfn;
 
        ret = HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, map_ops, count);
        if (ret)
@@ -947,45 +944,7 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,
                        gnttab_retry_eagain_gop(GNTTABOP_map_grant_ref, map_ops + i,
                                                &map_ops[i].status, __func__);
 
-       /* this is basically a nop on x86 */
-       if (xen_feature(XENFEAT_auto_translated_physmap)) {
-               for (i = 0; i < count; i++) {
-                       if (map_ops[i].status)
-                               continue;
-                       set_phys_to_machine(map_ops[i].host_addr >> PAGE_SHIFT,
-                                       map_ops[i].dev_bus_addr >> PAGE_SHIFT);
-               }
-               return ret;
-       }
-
-       if (!in_interrupt() && paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) {
-               arch_enter_lazy_mmu_mode();
-               lazy = true;
-       }
-
-       for (i = 0; i < count; i++) {
-               /* Do not add to override if the map failed. */
-               if (map_ops[i].status)
-                       continue;
-
-               if (map_ops[i].flags & GNTMAP_contains_pte) {
-                       pte = (pte_t *) (mfn_to_virt(PFN_DOWN(map_ops[i].host_addr)) +
-                               (map_ops[i].host_addr & ~PAGE_MASK));
-                       mfn = pte_mfn(*pte);
-               } else {
-                       mfn = PFN_DOWN(map_ops[i].dev_bus_addr);
-               }
-               ret = m2p_add_override(mfn, pages[i], kmap_ops ?
-                                      &kmap_ops[i] : NULL);
-               if (ret)
-                       goto out;
-       }
-
- out:
-       if (lazy)
-               arch_leave_lazy_mmu_mode();
-
-       return ret;
+       return set_foreign_p2m_mapping(map_ops, kmap_ops, pages, count);
 }
 EXPORT_SYMBOL_GPL(gnttab_map_refs);
 
@@ -993,39 +952,13 @@ int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops,
                      struct gnttab_map_grant_ref *kmap_ops,
                      struct page **pages, unsigned int count)
 {
-       int i, ret;
-       bool lazy = false;
+       int ret;
 
        ret = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, unmap_ops, count);
        if (ret)
                return ret;
 
-       /* this is basically a nop on x86 */
-       if (xen_feature(XENFEAT_auto_translated_physmap)) {
-               for (i = 0; i < count; i++) {
-                       set_phys_to_machine(unmap_ops[i].host_addr >> PAGE_SHIFT,
-                                       INVALID_P2M_ENTRY);
-               }
-               return ret;
-       }
-
-       if (!in_interrupt() && paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) {
-               arch_enter_lazy_mmu_mode();
-               lazy = true;
-       }
-
-       for (i = 0; i < count; i++) {
-               ret = m2p_remove_override(pages[i], kmap_ops ?
-                                      &kmap_ops[i] : NULL);
-               if (ret)
-                       goto out;
-       }
-
- out:
-       if (lazy)
-               arch_leave_lazy_mmu_mode();
-
-       return ret;
+       return clear_foreign_p2m_mapping(unmap_ops, kmap_ops, pages, count);
 }
 EXPORT_SYMBOL_GPL(gnttab_unmap_refs);