diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0003-drm-amd-amdgpu-Remove-AMDGPU-tracepoint-and-use-new-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0003-drm-amd-amdgpu-Remove-AMDGPU-tracepoint-and-use-new-.patch | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0003-drm-amd-amdgpu-Remove-AMDGPU-tracepoint-and-use-new-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0003-drm-amd-amdgpu-Remove-AMDGPU-tracepoint-and-use-new-.patch new file mode 100644 index 00000000..359fa2c3 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0003-drm-amd-amdgpu-Remove-AMDGPU-tracepoint-and-use-new-.patch @@ -0,0 +1,180 @@ +From 25ec40bd0617c278843b26c96bf52ef48c35b590 Mon Sep 17 00:00:00 2001 +From: Tom St Denis <tom.stdenis@amd.com> +Date: Wed, 23 Aug 2017 15:33:40 -0400 +Subject: [PATCH 0003/4131] drm/amd/amdgpu: Remove AMDGPU tracepoint and use + new TTM tracepoint (v2) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Switches the AMDGPU driver over to the TTM tracepoint and removes +our old one. Now you can enable traces before loading the module +and trace all mappings. + +Signed-off-by: Tom St Denis <tom.stdenis@amd.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> + +(v2): Use struct device instead of pci in trace. +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 56 ------------------------------- + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 21 ++---------- + include/drm/ttm/ttm_debug.h | 31 +++++++++++++++++ + 3 files changed, 34 insertions(+), 74 deletions(-) + create mode 100644 include/drm/ttm/ttm_debug.h + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +index 34c99a3..b3144d4 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +@@ -15,62 +15,6 @@ + #define AMDGPU_JOB_GET_TIMELINE_NAME(job) \ + job->base.s_fence->finished.ops->get_timeline_name(&job->base.s_fence->finished) + +-TRACE_EVENT(amdgpu_ttm_tt_populate, +- TP_PROTO(struct amdgpu_device *adev, uint64_t dma_address, uint64_t phys_address), +- TP_ARGS(adev, dma_address, phys_address), +- TP_STRUCT__entry( +- __field(uint16_t, domain) +- __field(uint8_t, bus) +- __field(uint8_t, slot) +- __field(uint8_t, func) +- __field(uint64_t, dma) +- __field(uint64_t, phys) +- ), +- TP_fast_assign( +- __entry->domain = pci_domain_nr(adev->pdev->bus); +- __entry->bus = adev->pdev->bus->number; +- __entry->slot = PCI_SLOT(adev->pdev->devfn); +- __entry->func = PCI_FUNC(adev->pdev->devfn); +- __entry->dma = dma_address; +- __entry->phys = phys_address; +- ), +- TP_printk("%04x:%02x:%02x.%x: 0x%llx => 0x%llx", +- (unsigned)__entry->domain, +- (unsigned)__entry->bus, +- (unsigned)__entry->slot, +- (unsigned)__entry->func, +- (unsigned long long)__entry->dma, +- (unsigned long long)__entry->phys) +-); +- +-TRACE_EVENT(amdgpu_ttm_tt_unpopulate, +- TP_PROTO(struct amdgpu_device *adev, uint64_t dma_address, uint64_t phys_address), +- TP_ARGS(adev, dma_address, phys_address), +- TP_STRUCT__entry( +- __field(uint16_t, domain) +- __field(uint8_t, bus) +- __field(uint8_t, slot) +- __field(uint8_t, func) +- __field(uint64_t, dma) +- __field(uint64_t, phys) +- ), +- TP_fast_assign( +- __entry->domain = pci_domain_nr(adev->pdev->bus); +- __entry->bus = adev->pdev->bus->number; +- __entry->slot = PCI_SLOT(adev->pdev->devfn); +- __entry->func = PCI_FUNC(adev->pdev->devfn); +- __entry->dma = dma_address; +- __entry->phys = phys_address; +- ), +- TP_printk("%04x:%02x:%02x.%x: 0x%llx => 0x%llx", +- (unsigned)__entry->domain, +- (unsigned)__entry->bus, +- (unsigned)__entry->slot, +- (unsigned)__entry->func, +- (unsigned long long)__entry->dma, +- (unsigned long long)__entry->phys) +-); +- + TRACE_EVENT(amdgpu_mm_rreg, + TP_PROTO(unsigned did, uint32_t reg, uint32_t value), + TP_ARGS(did, reg, value), +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index bc74613..a1723a7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -34,6 +34,7 @@ + #include <drm/ttm/ttm_placement.h> + #include <drm/ttm/ttm_module.h> + #include <drm/ttm/ttm_page_alloc.h> ++#include <drm/ttm/ttm_debug.h> + #include <drm/drmP.h> + #include <drm/amdgpu_drm.h> + #include <linux/seq_file.h> +@@ -667,32 +668,16 @@ static void amdgpu_trace_dma_map(struct ttm_tt *ttm) + { + struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev); + struct amdgpu_ttm_tt *gtt = (void *)ttm; +- unsigned i; + +- if (unlikely(trace_amdgpu_ttm_tt_populate_enabled())) { +- for (i = 0; i < ttm->num_pages; i++) { +- trace_amdgpu_ttm_tt_populate( +- adev, +- gtt->ttm.dma_address[i], +- page_to_phys(ttm->pages[i])); +- } +- } ++ ttm_trace_dma_map(adev->dev, >t->ttm); + } + + static void amdgpu_trace_dma_unmap(struct ttm_tt *ttm) + { + struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev); + struct amdgpu_ttm_tt *gtt = (void *)ttm; +- unsigned i; + +- if (unlikely(trace_amdgpu_ttm_tt_unpopulate_enabled())) { +- for (i = 0; i < ttm->num_pages; i++) { +- trace_amdgpu_ttm_tt_unpopulate( +- adev, +- gtt->ttm.dma_address[i], +- page_to_phys(ttm->pages[i])); +- } +- } ++ ttm_trace_dma_unmap(adev->dev, >t->ttm); + } + + /* prepare the sg table with the user pages */ +diff --git a/include/drm/ttm/ttm_debug.h b/include/drm/ttm/ttm_debug.h +new file mode 100644 +index 0000000..b5e460f +--- /dev/null ++++ b/include/drm/ttm/ttm_debug.h +@@ -0,0 +1,31 @@ ++/************************************************************************** ++ * ++ * Copyright (c) 2017 Advanced Micro Devices, Inc. ++ * All Rights Reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the ++ * "Software"), to deal in the Software without restriction, including ++ * without limitation the rights to use, copy, modify, merge, publish, ++ * distribute, sub license, and/or sell copies of the Software, and to ++ * permit persons to whom the Software is furnished to do so, subject to ++ * the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the ++ * next paragraph) shall be included in all copies or substantial portions ++ * of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, ++ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE ++ * USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ **************************************************************************/ ++/* ++ * Authors: Tom St Denis <tom.stdenis@amd.com> ++ */ ++extern void ttm_trace_dma_map(struct device *dev, struct ttm_dma_tt *tt); ++extern void ttm_trace_dma_unmap(struct device *dev, struct ttm_dma_tt *tt); +-- +2.7.4 + |