OSDN Git Service

drm/amd/amdgpu: Remove AMDGPU tracepoint and use new TTM tracepoint (v2)
authorTom St Denis <tom.stdenis@amd.com>
Wed, 23 Aug 2017 19:33:40 +0000 (15:33 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 29 Aug 2017 19:27:51 +0000 (15:27 -0400)
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>
(v2): Use struct device instead of pci in trace.

drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index 1c88bd5..b1f9741 100644 (file)
 #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),
index 7ef6c28..d1d94a1 100644 (file)
@@ -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, &gtt->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, &gtt->ttm);
 }
 
 /* prepare the sg table with the user pages */