| /linux/drivers/gpu/drm/amd/amdgpu/ |
| H A D | amdgpu_gart.c | 42 * GART 43 * The GART (Graphics Aperture Remapping Table) is an aperture 49 * Radeon GPUs support both an internal GART, as described above, 50 * and AGP. AGP works similarly, but the GART table is configured 55 * Both AGP and internal GART can be used at the same time, however 58 * This file handles the common internal GART management. 62 * Common GART table functions. 71 * This dummy page is used by the driver as a filler for gart entries 72 * when pages are taken out of the GART 110 * amdgpu_gart_table_ram_alloc - allocate system ram for gart page table [all …]
|
| H A D | gmc_v7_0.c | 255 * Set the location of vram, gart, and AGP in the GPU's 321 * vram and gart within the GPU's physical address space (CIK). 396 /* set the gart size */ in gmc_v7_0_mc_init() 454 * GART 461 * gmc_v7_0_flush_gpu_tlb - gart tlb flush callback 602 * gmc_v7_0_gart_enable - gart enable 618 if (adev->gart.bo == NULL) { in gmc_v7_0_gart_enable() 619 dev_err(adev->dev, "No VRAM object for PCIE GART.\n"); in gmc_v7_0_gart_enable() 623 table_addr = amdgpu_bo_gpu_offset(adev->gart.bo); in gmc_v7_0_gart_enable() 708 drm_info(adev_to_drm(adev), "PCIE GART of %uM enabled (table at 0x%016llX).\n", in gmc_v7_0_gart_enable() [all …]
|
| H A D | amdgpu_gtt_mgr.c | 186 * amdgpu_gtt_mgr_alloc_entries - alloc GART entries without GTT bo 193 * Helper to dynamic alloc GART entries to map memory not accociated with 214 * amdgpu_gtt_mgr_free_entries - free GART entries not accocaited with GTT bo 229 * amdgpu_gtt_mgr_recover - re-init gart 233 * Re-init the gart for each known BO in the GTT. 261 * Simplified intersection test, only interesting if we need GART or not.
|
| H A D | amdgpu_gmc.c | 170 * The following is for PTE only. GART does not have PDEs. in amdgpu_gmc_set_pte_pde() 239 /** amdgpu_gmc_sysvm_location - place vram and gart in sysvm aperture 244 * This function is only used if use GART for FB translation. In such 246 * and gart (aka system memory) access. 253 * address 0. So vram start at address 0 and gart is right after vram. 266 * amdgpu_bo_create_reserved() from FB aperture to GART aperture. in amdgpu_gmc_sysvm_location() 278 dev_info(adev->dev, "GART: %lluM 0x%016llX - 0x%016llX\n", in amdgpu_gmc_sysvm_location() 283 * amdgpu_gmc_gart_location - try to find GART location 287 * @gart_placement: GART placement policy with respect to VRAM 289 * Function will try to place GART before or after VRAM. [all …]
|
| H A D | amdgpu_gmc.h | 222 * gart/vram_start/end field as the later is from 244 /* GART aperture start and end in MC address space 246 * to place GART by setting VM_CONTEXT0_PAGE_TABLE_START/END_ADDR 248 * Under VMID0, logical address inside GART aperture will 249 * be translated through gpuvm gart page table to access 260 * If driver uses GART table for VMID0 FB access, driver finds a hole in 262 * which the first part is vram and the second part is gart (covering
|
| H A D | gmc_v8_0.c | 430 * Set the location of vram, gart, and AGP in the GPU's 507 * vram and gart within the GPU's physical address space (VI). 587 /* set the gart size */ in gmc_v8_0_mc_init() 645 * GART 652 * gmc_v8_0_flush_gpu_tlb - gart tlb flush callback 819 * gmc_v8_0_gart_enable - gart enable 835 if (adev->gart.bo == NULL) { in gmc_v8_0_gart_enable() 836 dev_err(adev->dev, "No VRAM object for PCIE GART.\n"); in gmc_v8_0_gart_enable() 840 table_addr = amdgpu_bo_gpu_offset(adev->gart.bo); in gmc_v8_0_gart_enable() 942 drm_info(adev_to_drm(adev), "PCIE GART of %uM enabled (table at 0x%016llX).\n", in gmc_v8_0_gart_enable() [all …]
|
| H A D | amdgpu_isp.c | 163 * GART alloc to generate GPU addr for BO to make it accessible through the 164 * GART aperture for ISP HW. 206 drm_err(&adev->ddev, "failed to alloc gart user buffer (%d)", ret); in isp_user_buffer_alloc() 293 drm_err(&adev->ddev, "failed to alloc gart kernel buffer (%d)", ret); in isp_kernel_buffer_alloc()
|
| H A D | gmc_v9_0.c | 788 * GART 1665 * vram and gart within the GPU's physical address space. 1718 /* set the gart size */ in gmc_v9_0_mc_init() 1753 if (adev->gart.bo) { in gmc_v9_0_gart_init() 1754 WARN(1, "VEGA10 PCIE GART already initialized\n"); in gmc_v9_0_gart_init() 1766 /* Initialize common gart structure */ in gmc_v9_0_gart_init() 1770 adev->gart.table_size = adev->gart.num_gpu_pages * 8; in gmc_v9_0_gart_init() 1771 adev->gart.gart_pte_flags = AMDGPU_PTE_MTYPE_VG10(0ULL, MTYPE_UC) | in gmc_v9_0_gart_init() 1775 dev_info(adev->dev, "Put GART in system memory for APU\n"); in gmc_v9_0_gart_init() 1778 dev_err(adev->dev, "Failed to allocate GART in system memory\n"); in gmc_v9_0_gart_init() [all …]
|
| H A D | mes_userqueue.c | 46 DRM_ERROR("Failed to bind bo to GART. ret %d\n", ret); in mes_userq_map_gtt_bo_to_gart() 87 DRM_ERROR("Requested GART mapping for wptr bo larger than one page\n"); in mes_userq_create_wptr_mapping() 93 DRM_ERROR("Failed to map wptr bo to GART\n"); in mes_userq_create_wptr_mapping() 415 /* FW expects WPTR BOs to be mapped into GART */ in mes_userq_mqd_create()
|
| H A D | mmhub_v4_2_0.c | 134 uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo); in mmhub_v4_2_0_mid_init_gart_aperture_regs() 140 pt_base = amdgpu_gmc_pd_addr(adev->gart.bo); in mmhub_v4_2_0_mid_init_gart_aperture_regs() 256 /* In the case squeezing vram into GART aperture, we don't use in mmhub_v4_2_0_mid_init_system_aperture_regs() 523 /* GART Enable. */ in mmhub_v4_2_0_mid_gart_enable() 635 * mmhub_v4_2_0_set_fault_enable_default - update GART/VM fault handling
|
| /linux/drivers/gpu/drm/radeon/ |
| H A D | rs400.c | 45 /* Check gart size */ in rs400_gart_adjust_size() 56 DRM_ERROR("Unable to use IGP GART size %uM\n", in rs400_gart_adjust_size() 58 DRM_ERROR("Valid GART size for IGP are 32M,64M,128M,256M,512M,1G,2G\n"); in rs400_gart_adjust_size() 59 DRM_ERROR("Forcing to 32M GART size\n"); in rs400_gart_adjust_size() 85 if (rdev->gart.ptr) { in rs400_gart_init() 86 WARN(1, "RS400 GART already initialized\n"); in rs400_gart_init() 89 /* Check gart size */ in rs400_gart_init() 102 /* Initialize common gart structure */ in rs400_gart_init() 107 rdev->gart.table_size = rdev->gart.num_gpu_pages * 4; in rs400_gart_init() 119 /* Check gart size */ in rs400_gart_enable() [all …]
|
| H A D | radeon_drv.h | 61 * 1.6 - Add static GART memory manager 65 * Add GART offset query for getparam 94 * 1.19- Add support for gart table in FB memory and PCIE r300 102 * 1.26- Add support for variable size PCI(E) gart aperture 103 * 1.27- Add support for IGP GART
|
| H A D | rs600.c | 34 * R4XX family. The GART is different from the RS400 one and is very 36 * of the RS600 GART block). 525 * GART. 549 if (rdev->gart.robj) { in rs600_gart_init() 550 WARN(1, "RS600 GART already initialized\n"); in rs600_gart_init() 553 /* Initialize common gart structure */ in rs600_gart_init() 558 rdev->gart.table_size = rdev->gart.num_gpu_pages * 8; in rs600_gart_init() 567 if (rdev->gart.robj == NULL) { in rs600_gart_enable() 568 dev_err(rdev->dev, "No VRAM object for PCIE GART.\n"); in rs600_gart_enable() 604 rdev->gart.table_addr); in rs600_gart_enable() [all …]
|
| H A D | radeon_asic.c | 151 * Removes AGP flags and changes the gart callbacks on AGP 152 * cards when using the internal gart rather than AGP (all asics). 166 rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush; in radeon_agp_disable() 167 rdev->asic->gart.get_page_entry = &rv370_pcie_gart_get_page_entry; in radeon_agp_disable() 168 rdev->asic->gart.set_page = &rv370_pcie_gart_set_page; in radeon_agp_disable() 172 rdev->asic->gart.tlb_flush = &r100_pci_gart_tlb_flush; in radeon_agp_disable() 173 rdev->asic->gart.get_page_entry = &r100_pci_gart_get_page_entry; in radeon_agp_disable() 174 rdev->asic->gart.set_page = &r100_pci_gart_set_page; in radeon_agp_disable() 208 .gart = { 276 .gart = { [all …]
|
| H A D | r300.c | 83 * rv370,rv380 PCIE GART 122 void __iomem *ptr = rdev->gart.ptr; in rv370_pcie_gart_set_page() 134 if (rdev->gart.robj) { in rv370_pcie_gart_init() 135 WARN(1, "RV370 PCIE GART already initialized\n"); in rv370_pcie_gart_init() 138 /* Initialize common gart structure */ in rv370_pcie_gart_init() 144 rdev->gart.table_size = rdev->gart.num_gpu_pages * 4; in rv370_pcie_gart_init() 145 rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush; in rv370_pcie_gart_init() 146 rdev->asic->gart.get_page_entry = &rv370_pcie_gart_get_page_entry; in rv370_pcie_gart_init() 147 rdev->asic->gart.set_page = &rv370_pcie_gart_set_page; in rv370_pcie_gart_init() 157 if (rdev->gart.robj == NULL) { in rv370_pcie_gart_enable() [all …]
|
| H A D | radeon_device.c | 777 * This dummy page is used by the driver as a filler for gart entries 778 * when pages are taken out of the GART 1091 * radeon_gart_size_auto - Determine a sensible default GART size 1098 /* default to a larger gart size on newer asics */ in radeon_gart_size_auto() 1129 dev_warn(rdev->dev, "gart size (%d) too small\n", in radeon_check_arguments() 1133 dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n", in radeon_check_arguments() 1332 /* all of the newer IGP chips have an internal gart in radeon_device_init() 1359 * PCI - dma32 for legacy pci gart, 40 bits on newer asics in radeon_device_init() 1444 * with fallback to PCI or PCIE GART in radeon_device_init() 1621 * This second call to evict vram is to evict the gart page table in radeon_suspend_kms()
|
| /linux/Documentation/devicetree/bindings/memory-controllers/ |
| H A D | nvidia,tegra20-mc.yaml | 21 Tegra20 Memory Controller includes the GART (Graphics Address Relocation 27 const: nvidia,tegra20-mc-gart 32 - description: GART registers 68 compatible = "nvidia,tegra20-mc-gart"; 70 <0x58000000 0x02000000>; /* GART aperture */
|
| /linux/arch/x86/kernel/ |
| H A D | amd_gart_64.c | 5 * Use the integrated AGP GART in the Hammer northbridge as an IOMMU for PCI. 39 #include <asm/gart.h> 45 static unsigned long iommu_bus_base; /* GART remapping area (physical) */ 53 * of only flushing when an mapping is reused. With it true the GART is 79 /* GART can only remap to physical addresses < 1TB */ 87 static bool need_flush; /* global flush state. set for each gart wrap */ 258 * This driver will not always use a GART mapping, but might have in gart_unmap_phys() 552 /* Flush the GART-TLB to remove stale entries */ in enable_gart_translations() 581 pr_info("PCI-DMA: Restoring GART aperture settings\n"); in gart_fixup_northbridges() 597 pr_info("PCI-DMA: Resuming GART IOMMU\n"); in gart_resume() [all …]
|
| /linux/arch/x86/include/asm/ |
| H A D | gart.h | 23 /* GART cache control register bits. */ 27 /* K8 On-cpu GART registers */ 66 * Don't enable translation but enable GART IO and CPU accesses. in gart_set_size_and_enable() 67 * Also, set DISTLBWALKPRB since GART tables memory is UC. in gart_set_size_and_enable() 84 /* Enable GART translation for this hammer. */ in enable_gart_translation()
|
| /linux/arch/powerpc/include/asm/ |
| H A D | uninorth.h | 53 * GART_BASE register appear to contain the physical address of the GART 55 * GART size in the low order bits (number of GART pages) 57 * The GART format itself is one 32bits word per physical memory page. 62 * Obviously, the GART is not cache coherent and so any change to it 63 * must be flushed to memory (or maybe just make the GART space non 66 * In order to invalidate the GART (which is probably necessary to inval
|
| /linux/drivers/char/agp/ |
| H A D | Kconfig | 14 If you need more texture memory than you can get with the AGP GART 60 tristate "AMD Opteron/Athlon64 on-CPU GART support" 116 This option gives you AGP GART support for the HP Quicksilver
|
| H A D | parisc-agp.c | 3 * HP Quicksilver AGP GART routines 292 "GART disabled\n"); in agp_ioc_init() 435 MODULE_DESCRIPTION("HP Quicksilver AGP GART routines");
|
| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_chan.c | 101 nvif_object_dtor(&chan->gart); in nouveau_channel_del() 354 nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart) in nouveau_channel_init() argument 387 /* allocate dma objects to cover all allowed vram, and gart */ in nouveau_channel_init() 425 ret = nvif_object_ctor(&chan->user, "abi16ChanGartCtxDma", gart, in nouveau_channel_init() 427 &chan->gart); in nouveau_channel_init() 495 bool priv, u64 runm, u32 vram, u32 gart, struct nouveau_channel **pchan) in nouveau_channel_new() argument 505 ret = nouveau_channel_init(*pchan, vram, gart); in nouveau_channel_new()
|
| H A D | nouveau_ttm.c | 329 /* GART init */ in nouveau_ttm_init() 338 NV_ERROR(drm, "GART mm init failed, %d\n", ret); in nouveau_ttm_init() 346 NV_INFO(drm, "GART: %d MiB\n", (u32)(drm->gem.gart_available >> 20)); in nouveau_ttm_init()
|
| /linux/include/uapi/drm/ |
| H A D | radeon_drm.h | 317 /* There are 2 heaps (local/GART). Each region within a heap is a 704 #define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */ 710 #define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */ 738 int __user *region_offset; /* offset from start of fb or GART */ 773 #define RADEON_SETPARAM_PCIGART_LOCATION 3 /* PCI Gart Location */ 775 #define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */
|