···724724 return true;725725}726726727727-/**728728- * amdgpu_dummy_page_init - init dummy page used by the driver729729- *730730- * @adev: amdgpu_device pointer731731- *732732- * Allocate the dummy page used by the driver (all asics).733733- * This dummy page is used by the driver as a filler for gart entries734734- * when pages are taken out of the GART735735- * Returns 0 on sucess, -ENOMEM on failure.736736- */737737-int amdgpu_dummy_page_init(struct amdgpu_device *adev)738738-{739739- if (adev->dummy_page.page)740740- return 0;741741- adev->dummy_page.page = alloc_page(GFP_DMA32 | GFP_KERNEL | __GFP_ZERO);742742- if (adev->dummy_page.page == NULL)743743- return -ENOMEM;744744- adev->dummy_page.addr = pci_map_page(adev->pdev, adev->dummy_page.page,745745- 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);746746- if (pci_dma_mapping_error(adev->pdev, adev->dummy_page.addr)) {747747- dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n");748748- __free_page(adev->dummy_page.page);749749- adev->dummy_page.page = NULL;750750- return -ENOMEM;751751- }752752- return 0;753753-}754754-755755-/**756756- * amdgpu_dummy_page_fini - free dummy page used by the driver757757- *758758- * @adev: amdgpu_device pointer759759- *760760- * Frees the dummy page used by the driver (all asics).761761- */762762-void amdgpu_dummy_page_fini(struct amdgpu_device *adev)763763-{764764- if (adev->dummy_page.page == NULL)765765- return;766766- pci_unmap_page(adev->pdev, adev->dummy_page.addr,767767- PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);768768- __free_page(adev->dummy_page.page);769769- adev->dummy_page.page = NULL;770770-}771771-772727/* if we get transitioned to only one device, take VGA back */773728/**774729 * amdgpu_device_vga_set_decode - enable/disable vga decode
+47-2
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
···5757 */58585959/**6060+ * amdgpu_dummy_page_init - init dummy page used by the driver6161+ *6262+ * @adev: amdgpu_device pointer6363+ *6464+ * Allocate the dummy page used by the driver (all asics).6565+ * This dummy page is used by the driver as a filler for gart entries6666+ * when pages are taken out of the GART6767+ * Returns 0 on sucess, -ENOMEM on failure.6868+ */6969+static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)7070+{7171+ if (adev->dummy_page.page)7272+ return 0;7373+ adev->dummy_page.page = alloc_page(GFP_DMA32 | GFP_KERNEL | __GFP_ZERO);7474+ if (adev->dummy_page.page == NULL)7575+ return -ENOMEM;7676+ adev->dummy_page.addr = pci_map_page(adev->pdev, adev->dummy_page.page,7777+ 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);7878+ if (pci_dma_mapping_error(adev->pdev, adev->dummy_page.addr)) {7979+ dev_err(&adev->pdev->dev, "Failed to DMA MAP the dummy page\n");8080+ __free_page(adev->dummy_page.page);8181+ adev->dummy_page.page = NULL;8282+ return -ENOMEM;8383+ }8484+ return 0;8585+}8686+8787+/**8888+ * amdgpu_dummy_page_fini - free dummy page used by the driver8989+ *9090+ * @adev: amdgpu_device pointer9191+ *9292+ * Frees the dummy page used by the driver (all asics).9393+ */9494+static void amdgpu_gart_dummy_page_fini(struct amdgpu_device *adev)9595+{9696+ if (adev->dummy_page.page == NULL)9797+ return;9898+ pci_unmap_page(adev->pdev, adev->dummy_page.addr,9999+ PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);100100+ __free_page(adev->dummy_page.page);101101+ adev->dummy_page.page = NULL;102102+}103103+104104+/**60105 * amdgpu_gart_table_vram_alloc - allocate vram for gart page table61106 *62107 * @adev: amdgpu_device pointer···353308 DRM_ERROR("Page size is smaller than GPU page size!\n");354309 return -EINVAL;355310 }356356- r = amdgpu_dummy_page_init(adev);311311+ r = amdgpu_gart_dummy_page_init(adev);357312 if (r)358313 return r;359314 /* Compute table size */···385340 vfree(adev->gart.pages);386341 adev->gart.pages = NULL;387342#endif388388- amdgpu_dummy_page_fini(adev);343343+ amdgpu_gart_dummy_page_fini(adev);389344}