Merge tag 'topic/iomem-mmap-vs-gup-2021-02-22' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / include / linux / mm.h
index 1696ee6..7deb716 100644 (file)
@@ -593,7 +593,8 @@ struct vm_operations_struct {
        vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf);
 
        /* called by access_process_vm when get_user_pages() fails, typically
-        * for use by special VMAs that can switch between memory and hardware
+        * for use by special VMAs. See also generic_access_phys() for a generic
+        * implementation useful for any iomem mapping.
         */
        int (*access)(struct vm_area_struct *vma, unsigned long addr,
                      void *buf, int len, int write);
@@ -1761,48 +1762,6 @@ int account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc);
 int __account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc,
                        struct task_struct *task, bool bypass_rlim);
 
-/* Container for pinned pfns / pages */
-struct frame_vector {
-       unsigned int nr_allocated;      /* Number of frames we have space for */
-       unsigned int nr_frames; /* Number of frames stored in ptrs array */
-       bool got_ref;           /* Did we pin pages by getting page ref? */
-       bool is_pfns;           /* Does array contain pages or pfns? */
-       void *ptrs[];           /* Array of pinned pfns / pages. Use
-                                * pfns_vector_pages() or pfns_vector_pfns()
-                                * for access */
-};
-
-struct frame_vector *frame_vector_create(unsigned int nr_frames);
-void frame_vector_destroy(struct frame_vector *vec);
-int get_vaddr_frames(unsigned long start, unsigned int nr_pfns,
-                    unsigned int gup_flags, struct frame_vector *vec);
-void put_vaddr_frames(struct frame_vector *vec);
-int frame_vector_to_pages(struct frame_vector *vec);
-void frame_vector_to_pfns(struct frame_vector *vec);
-
-static inline unsigned int frame_vector_count(struct frame_vector *vec)
-{
-       return vec->nr_frames;
-}
-
-static inline struct page **frame_vector_pages(struct frame_vector *vec)
-{
-       if (vec->is_pfns) {
-               int err = frame_vector_to_pages(vec);
-
-               if (err)
-                       return ERR_PTR(err);
-       }
-       return (struct page **)(vec->ptrs);
-}
-
-static inline unsigned long *frame_vector_pfns(struct frame_vector *vec)
-{
-       if (!vec->is_pfns)
-               frame_vector_to_pfns(vec);
-       return (unsigned long *)(vec->ptrs);
-}
-
 struct kvec;
 int get_kernel_pages(const struct kvec *iov, int nr_pages, int write,
                        struct page **pages);