Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca3670aa authored by Tom St Denis's avatar Tom St Denis Committed by Alex Deucher
Browse files

drm/amd/amdgpu: Remove AMDGPU tracepoint and use new TTM tracepoint (v2)



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: default avatarTom St Denis <tom.stdenis@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>

(v2): Use struct device instead of pci in trace.
parent a92e1450
Loading
Loading
Loading
Loading
+0 −56
Original line number Diff line number Diff line
@@ -14,62 +14,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),
+3 −18
Original line number Diff line number Diff line
@@ -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 */