@@ -173,97 +173,13 @@ vm_fault_t ttm_bo_vm_reserve(struct ttm_buffer_object *bo,
173173}
174174EXPORT_SYMBOL (ttm_bo_vm_reserve );
175175
176- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
177- /**
178- * ttm_bo_vm_insert_huge - Insert a pfn for PUD or PMD faults
179- * @vmf: Fault data
180- * @bo: The buffer object
181- * @page_offset: Page offset from bo start
182- * @fault_page_size: The size of the fault in pages.
183- * @pgprot: The page protections.
184- * Does additional checking whether it's possible to insert a PUD or PMD
185- * pfn and performs the insertion.
186- *
187- * Return: VM_FAULT_NOPAGE on successful insertion, VM_FAULT_FALLBACK if
188- * a huge fault was not possible, or on insertion error.
189- */
190- static vm_fault_t ttm_bo_vm_insert_huge (struct vm_fault * vmf ,
191- struct ttm_buffer_object * bo ,
192- pgoff_t page_offset ,
193- pgoff_t fault_page_size ,
194- pgprot_t pgprot )
195- {
196- pgoff_t i ;
197- vm_fault_t ret ;
198- unsigned long pfn ;
199- pfn_t pfnt ;
200- struct ttm_tt * ttm = bo -> ttm ;
201- bool write = vmf -> flags & FAULT_FLAG_WRITE ;
202-
203- /* Fault should not cross bo boundary. */
204- page_offset &= ~(fault_page_size - 1 );
205- if (page_offset + fault_page_size > bo -> resource -> num_pages )
206- goto out_fallback ;
207-
208- if (bo -> resource -> bus .is_iomem )
209- pfn = ttm_bo_io_mem_pfn (bo , page_offset );
210- else
211- pfn = page_to_pfn (ttm -> pages [page_offset ]);
212-
213- /* pfn must be fault_page_size aligned. */
214- if ((pfn & (fault_page_size - 1 )) != 0 )
215- goto out_fallback ;
216-
217- /* Check that memory is contiguous. */
218- if (!bo -> resource -> bus .is_iomem ) {
219- for (i = 1 ; i < fault_page_size ; ++ i ) {
220- if (page_to_pfn (ttm -> pages [page_offset + i ]) != pfn + i )
221- goto out_fallback ;
222- }
223- } else if (bo -> bdev -> funcs -> io_mem_pfn ) {
224- for (i = 1 ; i < fault_page_size ; ++ i ) {
225- if (ttm_bo_io_mem_pfn (bo , page_offset + i ) != pfn + i )
226- goto out_fallback ;
227- }
228- }
229-
230- pfnt = __pfn_to_pfn_t (pfn , PFN_DEV );
231- if (fault_page_size == (HPAGE_PMD_SIZE >> PAGE_SHIFT ))
232- ret = vmf_insert_pfn_pmd_prot (vmf , pfnt , pgprot , write );
233- #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
234- else if (fault_page_size == (HPAGE_PUD_SIZE >> PAGE_SHIFT ))
235- ret = vmf_insert_pfn_pud_prot (vmf , pfnt , pgprot , write );
236- #endif
237- else
238- WARN_ON_ONCE (ret = VM_FAULT_FALLBACK );
239-
240- if (ret != VM_FAULT_NOPAGE )
241- goto out_fallback ;
242-
243- return VM_FAULT_NOPAGE ;
244- out_fallback :
245- count_vm_event (THP_FAULT_FALLBACK );
246- return VM_FAULT_FALLBACK ;
247- }
248- #else
249- static vm_fault_t ttm_bo_vm_insert_huge (struct vm_fault * vmf ,
250- struct ttm_buffer_object * bo ,
251- pgoff_t page_offset ,
252- pgoff_t fault_page_size ,
253- pgprot_t pgprot )
254- {
255- return VM_FAULT_FALLBACK ;
256- }
257- #endif
258-
259176/**
260177 * ttm_bo_vm_fault_reserved - TTM fault helper
261178 * @vmf: The struct vm_fault given as argument to the fault callback
262179 * @prot: The page protection to be used for this memory area.
263180 * @num_prefault: Maximum number of prefault pages. The caller may want to
264181 * specify this based on madvice settings and the size of the GPU object
265182 * backed by the memory.
266- * @fault_page_size: The size of the fault in pages.
267183 *
268184 * This function inserts one or more page table entries pointing to the
269185 * memory backing the buffer object, and then returns a return code
@@ -277,8 +193,7 @@ static vm_fault_t ttm_bo_vm_insert_huge(struct vm_fault *vmf,
277193 */
278194vm_fault_t ttm_bo_vm_fault_reserved (struct vm_fault * vmf ,
279195 pgprot_t prot ,
280- pgoff_t num_prefault ,
281- pgoff_t fault_page_size )
196+ pgoff_t num_prefault )
282197{
283198 struct vm_area_struct * vma = vmf -> vma ;
284199 struct ttm_buffer_object * bo = vma -> vm_private_data ;
@@ -329,11 +244,6 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
329244 prot = pgprot_decrypted (prot );
330245 }
331246
332- /* We don't prefault on huge faults. Yet. */
333- if (IS_ENABLED (CONFIG_TRANSPARENT_HUGEPAGE ) && fault_page_size != 1 )
334- return ttm_bo_vm_insert_huge (vmf , bo , page_offset ,
335- fault_page_size , prot );
336-
337247 /*
338248 * Speculatively prefault a number of pages. Only error on
339249 * first page.
@@ -429,7 +339,7 @@ vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf)
429339
430340 prot = vma -> vm_page_prot ;
431341 if (drm_dev_enter (ddev , & idx )) {
432- ret = ttm_bo_vm_fault_reserved (vmf , prot , TTM_BO_VM_NUM_PREFAULT , 1 );
342+ ret = ttm_bo_vm_fault_reserved (vmf , prot , TTM_BO_VM_NUM_PREFAULT );
433343 drm_dev_exit (idx );
434344 } else {
435345 ret = ttm_bo_vm_dummy_page (vmf , prot );
0 commit comments