* [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) @ 2019-08-26 23:07 Kuehling, Felix [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Kuehling, Felix @ 2019-08-26 23:07 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian From: Oak Zeng <Oak.Zeng@amd.com> Add RW mtype introduced for arcturus. v2: * Don't add probe-invalidation bit from UAPI * Don't add unused AMDGPU_MTYPE_ definitions Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> --- include/uapi/drm/amdgpu_drm.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h index ca97b6802275..f3ad429173e3 100644 --- a/include/uapi/drm/amdgpu_drm.h +++ b/include/uapi/drm/amdgpu_drm.h @@ -503,6 +503,8 @@ struct drm_amdgpu_gem_op { #define AMDGPU_VM_MTYPE_CC (3 << 5) /* Use UC MTYPE instead of default MTYPE */ #define AMDGPU_VM_MTYPE_UC (4 << 5) +/* Use RW MTYPE instead of default MTYPE */ +#define AMDGPU_VM_MTYPE_RW (5 << 5) struct drm_amdgpu_gem_va { /** GEM object handle */ -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>]
* [PATCH 2/4] drm/amdgpu: Support new arcturus mtype [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> @ 2019-08-26 23:07 ` Kuehling, Felix [not found] ` <20190826230355.25007-2-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-26 23:07 ` [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v2) Kuehling, Felix ` (2 subsequent siblings) 3 siblings, 1 reply; 11+ messages in thread From: Kuehling, Felix @ 2019-08-26 23:07 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian From: Oak Zeng <Oak.Zeng@amd.com> Arcturus repurposed mtype WC to RW. Modify gmc functions to support the new mtype Change-Id: Idc338e5386a57020f45262025e2664ab4ba9f291 Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> --- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 +++ drivers/gpu/drm/amd/include/vega10_enum.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c index f77138ba41f6..7aa365cd8d1d 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c @@ -603,6 +603,9 @@ static uint64_t gmc_v9_0_get_vm_pte_flags(struct amdgpu_device *adev, case AMDGPU_VM_MTYPE_WC: pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_WC); break; + case AMDGPU_VM_MTYPE_RW: + pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_RW); + break; case AMDGPU_VM_MTYPE_CC: pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_CC); break; diff --git a/drivers/gpu/drm/amd/include/vega10_enum.h b/drivers/gpu/drm/amd/include/vega10_enum.h index c14ba65a2415..adf1b754666e 100644 --- a/drivers/gpu/drm/amd/include/vega10_enum.h +++ b/drivers/gpu/drm/amd/include/vega10_enum.h @@ -1037,6 +1037,7 @@ TCC_CACHE_POLICY_STREAM = 0x00000001, typedef enum MTYPE { MTYPE_NC = 0x00000000, MTYPE_WC = 0x00000001, +MTYPE_RW = 0x00000001, MTYPE_CC = 0x00000002, MTYPE_UC = 0x00000003, } MTYPE; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20190826230355.25007-2-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH 2/4] drm/amdgpu: Support new arcturus mtype [not found] ` <20190826230355.25007-2-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> @ 2019-08-27 8:57 ` Koenig, Christian 0 siblings, 0 replies; 11+ messages in thread From: Koenig, Christian @ 2019-08-27 8:57 UTC (permalink / raw) To: Kuehling, Felix, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak Am 27.08.19 um 01:07 schrieb Kuehling, Felix: > From: Oak Zeng <Oak.Zeng@amd.com> > > Arcturus repurposed mtype WC to RW. Modify gmc functions > to support the new mtype > > Change-Id: Idc338e5386a57020f45262025e2664ab4ba9f291 > Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 +++ > drivers/gpu/drm/amd/include/vega10_enum.h | 1 + > 2 files changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > index f77138ba41f6..7aa365cd8d1d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > @@ -603,6 +603,9 @@ static uint64_t gmc_v9_0_get_vm_pte_flags(struct amdgpu_device *adev, > case AMDGPU_VM_MTYPE_WC: > pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_WC); > break; > + case AMDGPU_VM_MTYPE_RW: > + pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_RW); > + break; > case AMDGPU_VM_MTYPE_CC: > pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_CC); > break; > diff --git a/drivers/gpu/drm/amd/include/vega10_enum.h b/drivers/gpu/drm/amd/include/vega10_enum.h > index c14ba65a2415..adf1b754666e 100644 > --- a/drivers/gpu/drm/amd/include/vega10_enum.h > +++ b/drivers/gpu/drm/amd/include/vega10_enum.h > @@ -1037,6 +1037,7 @@ TCC_CACHE_POLICY_STREAM = 0x00000001, > typedef enum MTYPE { > MTYPE_NC = 0x00000000, > MTYPE_WC = 0x00000001, > +MTYPE_RW = 0x00000001, > MTYPE_CC = 0x00000002, > MTYPE_UC = 0x00000003, > } MTYPE; _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v2) [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-26 23:07 ` [PATCH 2/4] drm/amdgpu: Support new arcturus mtype Kuehling, Felix @ 2019-08-26 23:07 ` Kuehling, Felix [not found] ` <20190826230355.25007-3-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-26 23:07 ` [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus Kuehling, Felix 2019-08-27 8:56 ` [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) Koenig, Christian 3 siblings, 1 reply; 11+ messages in thread From: Kuehling, Felix @ 2019-08-26 23:07 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian The same BO can be mapped with different PTE flags by different GPUs. Therefore determine the PTE flags separately for each mapping instead of storing them in the KFD buffer object. Add a helper function to determine the PTE flags to be extended with ASIC and memory-type-specific logic in subsequent commits. v2: Split Arcturus-specific MTYPE changes into separate commit Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 39 +++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index e519df3fd2b6..1af8f83f7e02 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -57,7 +57,7 @@ struct kgd_mem { unsigned int mapped_to_gpu_memory; uint64_t va; - uint32_t mapping_flags; + uint32_t alloc_flags; atomic_t invalid; struct amdkfd_process_info *process_info; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 44a52b09cc58..1b7340a18f67 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -355,6 +355,23 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) return amdgpu_sync_fence(NULL, sync, vm->last_update, false); } +static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) +{ + bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; + uint32_t mapping_flags; + + mapping_flags = AMDGPU_VM_PAGE_READABLE; + if (mem->alloc_flags & ALLOC_MEM_FLAGS_WRITABLE) + mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; + if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) + mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; + + mapping_flags |= coherent ? + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; + + return amdgpu_gmc_get_pte_flags(adev, mapping_flags); +} + /* add_bo_to_vm - Add a BO to a VM * * Everything that needs to bo done only once when a BO is first added @@ -403,8 +420,7 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem, } bo_va_entry->va = va; - bo_va_entry->pte_flags = amdgpu_gmc_get_pte_flags(adev, - mem->mapping_flags); + bo_va_entry->pte_flags = get_pte_flags(adev, mem); bo_va_entry->kgd_dev = (void *)adev; list_add(&bo_va_entry->bo_list, list_bo_va); @@ -1081,7 +1097,6 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( int byte_align; u32 domain, alloc_domain; u64 alloc_flags; - uint32_t mapping_flags; int ret; /* @@ -1143,16 +1158,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( adev->asic_type != CHIP_VEGAM) ? VI_BO_SIZE_ALIGN : 1; - mapping_flags = AMDGPU_VM_PAGE_READABLE; - if (flags & ALLOC_MEM_FLAGS_WRITABLE) - mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; - if (flags & ALLOC_MEM_FLAGS_EXECUTABLE) - mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; - if (flags & ALLOC_MEM_FLAGS_COHERENT) - mapping_flags |= AMDGPU_VM_MTYPE_UC; - else - mapping_flags |= AMDGPU_VM_MTYPE_NC; - (*mem)->mapping_flags = mapping_flags; + (*mem)->alloc_flags = flags; amdgpu_sync_create(&(*mem)->sync); @@ -1625,9 +1631,10 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, INIT_LIST_HEAD(&(*mem)->bo_va_list); mutex_init(&(*mem)->lock); - (*mem)->mapping_flags = - AMDGPU_VM_PAGE_READABLE | AMDGPU_VM_PAGE_WRITEABLE | - AMDGPU_VM_PAGE_EXECUTABLE | AMDGPU_VM_MTYPE_NC; + (*mem)->alloc_flags = + ((bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) ? + ALLOC_MEM_FLAGS_VRAM : ALLOC_MEM_FLAGS_GTT) | + ALLOC_MEM_FLAGS_WRITABLE | ALLOC_MEM_FLAGS_EXECUTABLE; (*mem)->bo = amdgpu_bo_ref(bo); (*mem)->va = va; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20190826230355.25007-3-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v2) [not found] ` <20190826230355.25007-3-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> @ 2019-08-27 9:00 ` Koenig, Christian [not found] ` <0bf604b8-0091-9cc7-fbac-44cb0485729e-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Koenig, Christian @ 2019-08-27 9:00 UTC (permalink / raw) To: Kuehling, Felix, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak Am 27.08.19 um 01:07 schrieb Kuehling, Felix: > The same BO can be mapped with different PTE flags by different GPUs. > Therefore determine the PTE flags separately for each mapping instead > of storing them in the KFD buffer object. > > Add a helper function to determine the PTE flags to be extended with > ASIC and memory-type-specific logic in subsequent commits. > > v2: Split Arcturus-specific MTYPE changes into separate commit > > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Acked-by: Christian König <christian.koenig@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- > .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 39 +++++++++++-------- > 2 files changed, 24 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > index e519df3fd2b6..1af8f83f7e02 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > @@ -57,7 +57,7 @@ struct kgd_mem { > unsigned int mapped_to_gpu_memory; > uint64_t va; > > - uint32_t mapping_flags; > + uint32_t alloc_flags; > > atomic_t invalid; > struct amdkfd_process_info *process_info; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > index 44a52b09cc58..1b7340a18f67 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > @@ -355,6 +355,23 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) > return amdgpu_sync_fence(NULL, sync, vm->last_update, false); > } > > +static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) > +{ > + bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; > + uint32_t mapping_flags; > + > + mapping_flags = AMDGPU_VM_PAGE_READABLE; > + if (mem->alloc_flags & ALLOC_MEM_FLAGS_WRITABLE) > + mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; > + if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) > + mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; > + > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + > + return amdgpu_gmc_get_pte_flags(adev, mapping_flags); > +} > + > /* add_bo_to_vm - Add a BO to a VM > * > * Everything that needs to bo done only once when a BO is first added > @@ -403,8 +420,7 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem, > } > > bo_va_entry->va = va; > - bo_va_entry->pte_flags = amdgpu_gmc_get_pte_flags(adev, > - mem->mapping_flags); > + bo_va_entry->pte_flags = get_pte_flags(adev, mem); > bo_va_entry->kgd_dev = (void *)adev; > list_add(&bo_va_entry->bo_list, list_bo_va); > > @@ -1081,7 +1097,6 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( > int byte_align; > u32 domain, alloc_domain; > u64 alloc_flags; > - uint32_t mapping_flags; > int ret; > > /* > @@ -1143,16 +1158,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( > adev->asic_type != CHIP_VEGAM) ? > VI_BO_SIZE_ALIGN : 1; > > - mapping_flags = AMDGPU_VM_PAGE_READABLE; > - if (flags & ALLOC_MEM_FLAGS_WRITABLE) > - mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; > - if (flags & ALLOC_MEM_FLAGS_EXECUTABLE) > - mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; > - if (flags & ALLOC_MEM_FLAGS_COHERENT) > - mapping_flags |= AMDGPU_VM_MTYPE_UC; > - else > - mapping_flags |= AMDGPU_VM_MTYPE_NC; > - (*mem)->mapping_flags = mapping_flags; > + (*mem)->alloc_flags = flags; > > amdgpu_sync_create(&(*mem)->sync); > > @@ -1625,9 +1631,10 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, > > INIT_LIST_HEAD(&(*mem)->bo_va_list); > mutex_init(&(*mem)->lock); > - (*mem)->mapping_flags = > - AMDGPU_VM_PAGE_READABLE | AMDGPU_VM_PAGE_WRITEABLE | > - AMDGPU_VM_PAGE_EXECUTABLE | AMDGPU_VM_MTYPE_NC; > + (*mem)->alloc_flags = > + ((bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) ? > + ALLOC_MEM_FLAGS_VRAM : ALLOC_MEM_FLAGS_GTT) | > + ALLOC_MEM_FLAGS_WRITABLE | ALLOC_MEM_FLAGS_EXECUTABLE; > > (*mem)->bo = amdgpu_bo_ref(bo); > (*mem)->va = va; _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <0bf604b8-0091-9cc7-fbac-44cb0485729e-5C7GfCeVMHo@public.gmane.org>]
* [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v3) [not found] ` <0bf604b8-0091-9cc7-fbac-44cb0485729e-5C7GfCeVMHo@public.gmane.org> @ 2019-08-30 0:51 ` Kuehling, Felix 0 siblings, 0 replies; 11+ messages in thread From: Kuehling, Felix @ 2019-08-30 0:51 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian The same BO can be mapped with different PTE flags by different GPUs. Therefore determine the PTE flags separately for each mapping instead of storing them in the KFD buffer object. Add a helper function to determine the PTE flags to be extended with ASIC and memory-type-specific logic in subsequent commits. v2: Split Arcturus-specific MTYPE changes into separate commit v3: Fix return type of get_pte_flags to uint64_t Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Acked-by: Christian König <christian.koenig@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 39 +++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index e519df3fd2b6..1af8f83f7e02 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -57,7 +57,7 @@ struct kgd_mem { unsigned int mapped_to_gpu_memory; uint64_t va; - uint32_t mapping_flags; + uint32_t alloc_flags; atomic_t invalid; struct amdkfd_process_info *process_info; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 44a52b09cc58..aae19d221f42 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -355,6 +355,23 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) return amdgpu_sync_fence(NULL, sync, vm->last_update, false); } +static uint64_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) +{ + bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; + uint32_t mapping_flags; + + mapping_flags = AMDGPU_VM_PAGE_READABLE; + if (mem->alloc_flags & ALLOC_MEM_FLAGS_WRITABLE) + mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; + if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) + mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; + + mapping_flags |= coherent ? + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; + + return amdgpu_gmc_get_pte_flags(adev, mapping_flags); +} + /* add_bo_to_vm - Add a BO to a VM * * Everything that needs to bo done only once when a BO is first added @@ -403,8 +420,7 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem, } bo_va_entry->va = va; - bo_va_entry->pte_flags = amdgpu_gmc_get_pte_flags(adev, - mem->mapping_flags); + bo_va_entry->pte_flags = get_pte_flags(adev, mem); bo_va_entry->kgd_dev = (void *)adev; list_add(&bo_va_entry->bo_list, list_bo_va); @@ -1081,7 +1097,6 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( int byte_align; u32 domain, alloc_domain; u64 alloc_flags; - uint32_t mapping_flags; int ret; /* @@ -1143,16 +1158,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( adev->asic_type != CHIP_VEGAM) ? VI_BO_SIZE_ALIGN : 1; - mapping_flags = AMDGPU_VM_PAGE_READABLE; - if (flags & ALLOC_MEM_FLAGS_WRITABLE) - mapping_flags |= AMDGPU_VM_PAGE_WRITEABLE; - if (flags & ALLOC_MEM_FLAGS_EXECUTABLE) - mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; - if (flags & ALLOC_MEM_FLAGS_COHERENT) - mapping_flags |= AMDGPU_VM_MTYPE_UC; - else - mapping_flags |= AMDGPU_VM_MTYPE_NC; - (*mem)->mapping_flags = mapping_flags; + (*mem)->alloc_flags = flags; amdgpu_sync_create(&(*mem)->sync); @@ -1625,9 +1631,10 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, INIT_LIST_HEAD(&(*mem)->bo_va_list); mutex_init(&(*mem)->lock); - (*mem)->mapping_flags = - AMDGPU_VM_PAGE_READABLE | AMDGPU_VM_PAGE_WRITEABLE | - AMDGPU_VM_PAGE_EXECUTABLE | AMDGPU_VM_MTYPE_NC; + (*mem)->alloc_flags = + ((bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) ? + ALLOC_MEM_FLAGS_VRAM : ALLOC_MEM_FLAGS_GTT) | + ALLOC_MEM_FLAGS_WRITABLE | ALLOC_MEM_FLAGS_EXECUTABLE; (*mem)->bo = amdgpu_bo_ref(bo); (*mem)->va = va; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-26 23:07 ` [PATCH 2/4] drm/amdgpu: Support new arcturus mtype Kuehling, Felix 2019-08-26 23:07 ` [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v2) Kuehling, Felix @ 2019-08-26 23:07 ` Kuehling, Felix [not found] ` <20190826230355.25007-4-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-27 8:56 ` [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) Koenig, Christian 3 siblings, 1 reply; 11+ messages in thread From: Kuehling, Felix @ 2019-08-26 23:07 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian For compute VRAM allocations on Arturus use the new RW mtype for non-coherent local memory, CC mtype for coherent local memory and PTE_SNOOPED bit for invalidating non-dirty cache lines on remote XGMI mappings. Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> --- .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 20 +++++++++++++++++-- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 ++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 1b7340a18f67..c5c18e292ae3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -357,6 +357,7 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) { + struct amdgpu_device *bo_adev = amdgpu_ttm_adev(mem->bo->tbo.bdev); bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; uint32_t mapping_flags; @@ -366,8 +367,23 @@ static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; - mapping_flags |= coherent ? - AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; + switch (adev->asic_type) { + case CHIP_ARCTURUS: + if (mem->alloc_flags & ALLOC_MEM_FLAGS_VRAM) { + if (bo_adev == adev) + mapping_flags |= coherent ? + AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW; + else + mapping_flags |= AMDGPU_VM_MTYPE_UC; + } else { + mapping_flags |= coherent ? + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; + } + break; + default: + mapping_flags |= coherent ? + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; + } return amdgpu_gmc_get_pte_flags(adev, mapping_flags); } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 7ddca3eeb6cf..189ad5699946 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -1592,6 +1592,10 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev, } flags &= ~AMDGPU_PTE_VALID; } + if (adev->asic_type == CHIP_ARCTURUS && + !(flags & AMDGPU_PTE_SYSTEM) && + mapping->bo_va->is_xgmi) + flags |= AMDGPU_PTE_SNOOPED; trace_amdgpu_vm_bo_update(mapping); -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20190826230355.25007-4-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus [not found] ` <20190826230355.25007-4-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> @ 2019-08-27 8:59 ` Koenig, Christian 2019-08-30 20:59 ` Liu, Shaoyun 1 sibling, 0 replies; 11+ messages in thread From: Koenig, Christian @ 2019-08-27 8:59 UTC (permalink / raw) To: Kuehling, Felix, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak Am 27.08.19 um 01:07 schrieb Kuehling, Felix: > For compute VRAM allocations on Arturus use the new RW mtype > for non-coherent local memory, CC mtype for coherent local > memory and PTE_SNOOPED bit for invalidating non-dirty cache > lines on remote XGMI mappings. > > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> I would give an rb on the part in amdgpu_vm_bo_split_mapping(), but can't fully judge the KFD part for correctness. So only Acked-by: Christian König <christian.koenig@amd.com> > --- > .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 20 +++++++++++++++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 ++++ > 2 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > index 1b7340a18f67..c5c18e292ae3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > @@ -357,6 +357,7 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) > > static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) > { > + struct amdgpu_device *bo_adev = amdgpu_ttm_adev(mem->bo->tbo.bdev); > bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; > uint32_t mapping_flags; > > @@ -366,8 +367,23 @@ static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) > if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) > mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; > > - mapping_flags |= coherent ? > - AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + switch (adev->asic_type) { > + case CHIP_ARCTURUS: > + if (mem->alloc_flags & ALLOC_MEM_FLAGS_VRAM) { > + if (bo_adev == adev) > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW; > + else > + mapping_flags |= AMDGPU_VM_MTYPE_UC; > + } else { > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + } > + break; > + default: > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + } > > return amdgpu_gmc_get_pte_flags(adev, mapping_flags); > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 7ddca3eeb6cf..189ad5699946 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1592,6 +1592,10 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev, > } > flags &= ~AMDGPU_PTE_VALID; > } > + if (adev->asic_type == CHIP_ARCTURUS && > + !(flags & AMDGPU_PTE_SYSTEM) && > + mapping->bo_va->is_xgmi) > + flags |= AMDGPU_PTE_SNOOPED; > > trace_amdgpu_vm_bo_update(mapping); > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus [not found] ` <20190826230355.25007-4-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-27 8:59 ` Koenig, Christian @ 2019-08-30 20:59 ` Liu, Shaoyun 1 sibling, 0 replies; 11+ messages in thread From: Liu, Shaoyun @ 2019-08-30 20:59 UTC (permalink / raw) To: Kuehling, Felix, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW Cc: Zeng, Oak, Koenig, Christian Serials are reviewed by : shaoyunl <Shaoyun.Liu@amd.com> Looks like a little bit confusing that we have two place for the pte flags . get_pte_flags already get asic specific mapping flags and inside amdgpu_vm_bo_split_mapping , driver adjust the real HW mapping flags again . Maybe better just keep the logic in one place in the future . Regards shaoyun.liu On 2019-08-26 7:07 p.m., Kuehling, Felix wrote: > For compute VRAM allocations on Arturus use the new RW mtype > for non-coherent local memory, CC mtype for coherent local > memory and PTE_SNOOPED bit for invalidating non-dirty cache > lines on remote XGMI mappings. > > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> > --- > .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 20 +++++++++++++++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 ++++ > 2 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > index 1b7340a18f67..c5c18e292ae3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c > @@ -357,6 +357,7 @@ static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync) > > static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) > { > + struct amdgpu_device *bo_adev = amdgpu_ttm_adev(mem->bo->tbo.bdev); > bool coherent = mem->alloc_flags & ALLOC_MEM_FLAGS_COHERENT; > uint32_t mapping_flags; > > @@ -366,8 +367,23 @@ static uint32_t get_pte_flags(struct amdgpu_device *adev, struct kgd_mem *mem) > if (mem->alloc_flags & ALLOC_MEM_FLAGS_EXECUTABLE) > mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE; > > - mapping_flags |= coherent ? > - AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + switch (adev->asic_type) { > + case CHIP_ARCTURUS: > + if (mem->alloc_flags & ALLOC_MEM_FLAGS_VRAM) { > + if (bo_adev == adev) > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW; > + else > + mapping_flags |= AMDGPU_VM_MTYPE_UC; > + } else { > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + } > + break; > + default: > + mapping_flags |= coherent ? > + AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC; > + } > > return amdgpu_gmc_get_pte_flags(adev, mapping_flags); > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 7ddca3eeb6cf..189ad5699946 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1592,6 +1592,10 @@ static int amdgpu_vm_bo_split_mapping(struct amdgpu_device *adev, > } > flags &= ~AMDGPU_PTE_VALID; > } > + if (adev->asic_type == CHIP_ARCTURUS && > + !(flags & AMDGPU_PTE_SYSTEM) && > + mapping->bo_va->is_xgmi) > + flags |= AMDGPU_PTE_SNOOPED; > > trace_amdgpu_vm_bo_update(mapping); > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> ` (2 preceding siblings ...) 2019-08-26 23:07 ` [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus Kuehling, Felix @ 2019-08-27 8:56 ` Koenig, Christian 3 siblings, 0 replies; 11+ messages in thread From: Koenig, Christian @ 2019-08-27 8:56 UTC (permalink / raw) To: Kuehling, Felix, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak Am 27.08.19 um 01:07 schrieb Kuehling, Felix: > From: Oak Zeng <Oak.Zeng@amd.com> > > Add RW mtype introduced for arcturus. > > v2: > * Don't add probe-invalidation bit from UAPI > * Don't add unused AMDGPU_MTYPE_ definitions > > Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> We should have used the hardware value here in the first place (e.g. a mask and a shift), but now it is probably to late to actually fix that. Reviewed-by: Christian König <christian.koenig@amd.com> > --- > include/uapi/drm/amdgpu_drm.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h > index ca97b6802275..f3ad429173e3 100644 > --- a/include/uapi/drm/amdgpu_drm.h > +++ b/include/uapi/drm/amdgpu_drm.h > @@ -503,6 +503,8 @@ struct drm_amdgpu_gem_op { > #define AMDGPU_VM_MTYPE_CC (3 << 5) > /* Use UC MTYPE instead of default MTYPE */ > #define AMDGPU_VM_MTYPE_UC (4 << 5) > +/* Use RW MTYPE instead of default MTYPE */ > +#define AMDGPU_VM_MTYPE_RW (5 << 5) > > struct drm_amdgpu_gem_va { > /** GEM object handle */ _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/4] KFD: Mapping-specific MTYPEs on Arcturus @ 2019-08-23 21:33 Kuehling, Felix [not found] ` <20190823213249.10749-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Kuehling, Felix @ 2019-08-23 21:33 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian This is a simplified version of Oak's patch series, addressing some of the concerns raised during code review. Patches 1-3 are taken directly from Oak's series. Patch 4 is a simplified version of Oak's patches 3 and 5 that keeps all the KFD memory type abstractions out of the GMC IP-version-specific code. Compile tested only. Felix Kuehling (1): drm/amdgpu: Determing PTE flags separately for each mapping Oak Zeng (3): drm/amdgpu: Extends amdgpu vm definitions drm/amdgpu: Support new arcturus mtype drm/amdgpu: Support snooped PTE flag drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 +- .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 60 ++++++++++++++----- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 9 ++- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 6 ++ drivers/gpu/drm/amd/include/vega10_enum.h | 1 + include/uapi/drm/amdgpu_drm.h | 4 ++ 6 files changed, 63 insertions(+), 19 deletions(-) -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <20190823213249.10749-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>]
* [PATCH 2/4] drm/amdgpu: Support new arcturus mtype [not found] ` <20190823213249.10749-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> @ 2019-08-23 21:33 ` Kuehling, Felix 0 siblings, 0 replies; 11+ messages in thread From: Kuehling, Felix @ 2019-08-23 21:33 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Zeng, Oak, Koenig, Christian From: Oak Zeng <Oak.Zeng@amd.com> Arcturus repurposed mtype WC to RW. Modify gmc functions to support the new mtype Change-Id: Idc338e5386a57020f45262025e2664ab4ba9f291 Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> --- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 +++ drivers/gpu/drm/amd/include/vega10_enum.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c index 6ce2977c3c59..9aafcda6c488 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c @@ -587,6 +587,9 @@ static uint64_t gmc_v9_0_get_vm_pte_flags(struct amdgpu_device *adev, case AMDGPU_VM_MTYPE_WC: pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_WC); break; + case AMDGPU_VM_MTYPE_RW: + pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_RW); + break; case AMDGPU_VM_MTYPE_CC: pte_flag |= AMDGPU_PTE_MTYPE_VG10(MTYPE_CC); break; diff --git a/drivers/gpu/drm/amd/include/vega10_enum.h b/drivers/gpu/drm/amd/include/vega10_enum.h index c14ba65a2415..adf1b754666e 100644 --- a/drivers/gpu/drm/amd/include/vega10_enum.h +++ b/drivers/gpu/drm/amd/include/vega10_enum.h @@ -1037,6 +1037,7 @@ TCC_CACHE_POLICY_STREAM = 0x00000001, typedef enum MTYPE { MTYPE_NC = 0x00000000, MTYPE_WC = 0x00000001, +MTYPE_RW = 0x00000001, MTYPE_CC = 0x00000002, MTYPE_UC = 0x00000003, } MTYPE; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-08-30 20:59 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-08-26 23:07 [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) Kuehling, Felix [not found] ` <20190826230355.25007-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-26 23:07 ` [PATCH 2/4] drm/amdgpu: Support new arcturus mtype Kuehling, Felix [not found] ` <20190826230355.25007-2-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-27 8:57 ` Koenig, Christian 2019-08-26 23:07 ` [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v2) Kuehling, Felix [not found] ` <20190826230355.25007-3-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-27 9:00 ` Koenig, Christian [not found] ` <0bf604b8-0091-9cc7-fbac-44cb0485729e-5C7GfCeVMHo@public.gmane.org> 2019-08-30 0:51 ` [PATCH 3/4] drm/amdgpu: Determing PTE flags separately for each mapping (v3) Kuehling, Felix 2019-08-26 23:07 ` [PATCH 4/4] drm/amdgpu: Use optimal mtypes and PTE bits for Arcturus Kuehling, Felix [not found] ` <20190826230355.25007-4-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-27 8:59 ` Koenig, Christian 2019-08-30 20:59 ` Liu, Shaoyun 2019-08-27 8:56 ` [PATCH 1/4] drm/amdgpu: Extends amdgpu vm definitions (v2) Koenig, Christian -- strict thread matches above, loose matches on Subject: below -- 2019-08-23 21:33 [PATCH 0/4] KFD: Mapping-specific MTYPEs on Arcturus Kuehling, Felix [not found] ` <20190823213249.10749-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> 2019-08-23 21:33 ` [PATCH 2/4] drm/amdgpu: Support new arcturus mtype Kuehling, Felix
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.