All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: intel-gfx@lists.freedesktop.org
Cc: igt-dev@lists.freedesktop.org
Subject: [PATCH i-g-t] overlay: Drop legacy mmio access
Date: Wed,  3 Jul 2019 16:30:36 +0100	[thread overview]
Message-ID: <20190703153036.14549-1-chris@chris-wilson.co.uk> (raw)

Before the i915_pmu kernel interface was available, we had to rely on
doing some decidedly dodgy mmio access to registers. However, now that
we have a stable interface via perf for grabbing all the details we
need, that and its supporting infrastructure can be discarded.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
---
 overlay/Makefile.am |   2 -
 overlay/gpu-top.c   | 167 +---------------------------
 overlay/igfx.c      | 264 --------------------------------------------
 overlay/igfx.h      |  44 --------
 overlay/meson.build |   1 -
 5 files changed, 1 insertion(+), 477 deletions(-)
 delete mode 100644 overlay/igfx.c
 delete mode 100644 overlay/igfx.h

diff --git a/overlay/Makefile.am b/overlay/Makefile.am
index 51643e498..eeeddbba4 100644
--- a/overlay/Makefile.am
+++ b/overlay/Makefile.am
@@ -31,8 +31,6 @@ intel_gpu_overlay_SOURCES = \
 	gpu-perf.c \
 	gpu-freq.h \
 	gpu-freq.c \
-	igfx.h \
-	igfx.c \
 	overlay.h \
 	overlay.c \
 	power.h \
diff --git a/overlay/gpu-top.c b/overlay/gpu-top.c
index 61b8f62fd..6cec2e943 100644
--- a/overlay/gpu-top.c
+++ b/overlay/gpu-top.c
@@ -33,7 +33,6 @@
 
 #include "igt_perf.h"
 
-#include "igfx.h"
 #include "gpu-top.h"
 
 #define RING_TAIL      0x00
@@ -99,176 +98,12 @@ static int perf_init(struct gpu_top *gt)
 	return 0;
 }
 
-struct mmio_ring {
-	int id;
-	uint32_t base;
-	void *mmio;
-	int idle, wait, sema;
-};
-
-static uint32_t mmio_ring_read(struct mmio_ring *ring, uint32_t reg)
-{
-	return igfx_read(ring->mmio, ring->base + reg);
-}
-
-static int has_execlists(void)
-{
-	int detected = 0;
-	FILE *file;
-
-	file = fopen("/sys/module/i915/parameters/enable_execlists", "r");
-	if (file) {
-		int value;
-		if (fscanf(file, "%d", &value) == 1)
-			detected = value != 0;
-		fclose(file);
-	}
-
-	return detected;
-
-}
-
-static void mmio_ring_init(struct mmio_ring *ring, void *mmio)
-{
-	uint32_t ctl;
-
-	ring->mmio = mmio;
-
-	ctl = mmio_ring_read(ring, RING_CTL);
-	if ((ctl & 1) == 0 && !has_execlists())
-		ring->id = -1;
-}
-
-static void mmio_ring_reset(struct mmio_ring *ring)
-{
-	ring->idle = 0;
-	ring->wait = 0;
-	ring->sema = 0;
-}
-
-static void mmio_ring_sample(struct mmio_ring *ring)
-{
-	uint32_t head, tail, ctl;
-
-	if (ring->id == -1)
-		return;
-
-	head = mmio_ring_read(ring, RING_HEAD) & ADDR_MASK;
-	tail = mmio_ring_read(ring, RING_TAIL) & ADDR_MASK;
-	ring->idle += head == tail;
-
-	ctl = mmio_ring_read(ring, RING_CTL);
-	ring->wait += !!(ctl & RING_WAIT);
-	ring->sema += !!(ctl & RING_WAIT_SEMAPHORE);
-}
-
-static void mmio_ring_emit(struct mmio_ring *ring, int samples, union gpu_top_payload *payload)
-{
-	if (ring->id == -1)
-		return;
-
-	payload[ring->id].u.busy = 100 - 100 * ring->idle / samples;
-	payload[ring->id].u.wait = 100 * ring->wait / samples;
-	payload[ring->id].u.sema = 100 * ring->sema / samples;
-}
-
-static void mmio_init(struct gpu_top *gt)
-{
-	struct mmio_ring render_ring = {
-		.base = 0x2030,
-		.id = 0,
-	}, bsd_ring = {
-		.base = 0x4030,
-		.id = 1,
-	}, bsd6_ring = {
-		.base = 0x12030,
-		.id = 1,
-	}, blt_ring = {
-		.base = 0x22030,
-		.id = 2,
-	};
-	const struct igfx_info *info;
-	struct pci_device *igfx;
-	void *mmio;
-	int fd[2], i;
-
-	igfx = igfx_get();
-	if (!igfx)
-		return;
-
-	if (pipe(fd) < 0)
-		return;
-
-	info = igfx_get_info(igfx);
-
-	switch (fork()) {
-	case -1: return;
-	default:
-		 fcntl(fd[0], F_SETFL, fcntl(fd[0], F_GETFL) | O_NONBLOCK);
-		 gt->fd = fd[0];
-		 gt->type = MMIO;
-		 gt->ring[0].name = "render";
-		 gt->num_rings = 1;
-		 if (info->gen >= 040) {
-			 gt->ring[1].name = "bitstream";
-			 gt->num_rings++;
-		 }
-		 if (info->gen >= 060) {
-			 gt->ring[2].name = "blt";
-			 gt->num_rings++;
-		 }
-		 close(fd[1]);
-		 return;
-	case 0:
-		 close(fd[0]);
-		 break;
-	}
-
-	mmio = igfx_get_mmio(igfx);
-	if (mmio == NULL)
-		exit(127);
-
-	mmio_ring_init(&render_ring, mmio);
-	if (info->gen >= 060) {
-		bsd_ring = bsd6_ring;
-		mmio_ring_init(&blt_ring, mmio);
-	}
-	if (info->gen >= 040) {
-		mmio_ring_init(&bsd_ring, mmio);
-	}
-
-	for (;;) {
-		union gpu_top_payload payload[MAX_RINGS];
-
-		mmio_ring_reset(&render_ring);
-		mmio_ring_reset(&bsd_ring);
-		mmio_ring_reset(&blt_ring);
-
-		for (i = 0; i < 1000; i++) {
-			mmio_ring_sample(&render_ring);
-			mmio_ring_sample(&bsd_ring);
-			mmio_ring_sample(&blt_ring);
-			usleep(1000);
-		}
-
-		memset(payload, 0, sizeof(payload));
-		mmio_ring_emit(&render_ring, 1000, payload);
-		mmio_ring_emit(&bsd_ring, 1000, payload);
-		mmio_ring_emit(&blt_ring, 1000, payload);
-		assert(write(fd[1], payload, sizeof(payload))
-		       == sizeof(payload));
-	}
-}
-
 void gpu_top_init(struct gpu_top *gt)
 {
 	memset(gt, 0, sizeof(*gt));
 	gt->fd = -1;
 
-	if (perf_init(gt) == 0)
-		return;
-
-	mmio_init(gt);
+	perf_init(gt);
 }
 
 int gpu_top_update(struct gpu_top *gt)
diff --git a/overlay/igfx.c b/overlay/igfx.c
deleted file mode 100644
index 6d82bc8d3..000000000
--- a/overlay/igfx.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * 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, sublicense,
- * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#include <pciaccess.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdio.h>
-
-#include "igfx.h"
-#include "../lib/i915_pciids.h"
-
-static const struct igfx_info generic_info = {
-	.gen = -1,
-};
-
-#if 0
-static const struct igfx_info i81x_info = {
-	.gen = 010,
-};
-#endif
-
-static const struct igfx_info i830_info = {
-	.gen = 020,
-};
-static const struct igfx_info i845_info = {
-	.gen = 020,
-};
-static const struct igfx_info i855_info = {
-	.gen = 021,
-};
-static const struct igfx_info i865_info = {
-	.gen = 022,
-};
-
-static const struct igfx_info i915_info = {
-	.gen = 030,
-};
-static const struct igfx_info i945_info = {
-	.gen = 031,
-};
-
-static const struct igfx_info g33_info = {
-	.gen = 033,
-};
-
-static const struct igfx_info i965_info = {
-	.gen = 040,
-};
-
-static const struct igfx_info g4x_info = {
-	.gen = 045,
-};
-
-static const struct igfx_info ironlake_info = {
-	.gen = 050,
-};
-
-static const struct igfx_info sandybridge_info = {
-	.gen = 060,
-};
-
-static const struct igfx_info ivybridge_info = {
-	.gen = 070,
-};
-
-static const struct igfx_info valleyview_info = {
-	.gen = 071,
-};
-
-static const struct igfx_info haswell_info = {
-	.gen = 075,
-};
-
-static const struct igfx_info broadwell_info = {
-	.gen = 0100,
-};
-
-static const struct igfx_info cherryview_info = {
-	.gen = 0101,
-};
-
-static const struct igfx_info skylake_info = {
-	.gen = 0110,
-};
-
-static const struct igfx_info broxton_info = {
-	.gen = 0111,
-};
-
-static const struct pci_id_match match[] = {
-#if 0
-	INTEL_VGA_DEVICE(PCI_CHIP_I810, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I810_DC100, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I810_E, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I815, &i81x_info),
-#endif
-
-	INTEL_I830_IDS(&i830_info),
-	INTEL_I845G_IDS(&i845_info),
-	INTEL_I85X_IDS(&i855_info),
-	INTEL_I865G_IDS(&i865_info),
-
-	INTEL_I915G_IDS(&i915_info),
-	INTEL_I915GM_IDS(&i915_info),
-	INTEL_I945G_IDS(&i945_info),
-	INTEL_I945GM_IDS(&i945_info),
-
-	INTEL_G33_IDS(&g33_info),
-	INTEL_PINEVIEW_IDS(&g33_info),
-
-	INTEL_I965G_IDS(&i965_info),
-	INTEL_I965GM_IDS(&i965_info),
-
-	INTEL_G45_IDS(&g4x_info),
-	INTEL_GM45_IDS(&g4x_info),
-
-	INTEL_IRONLAKE_D_IDS(&ironlake_info),
-	INTEL_IRONLAKE_M_IDS(&ironlake_info),
-
-	INTEL_SNB_D_IDS(&sandybridge_info),
-	INTEL_SNB_M_IDS(&sandybridge_info),
-
-	INTEL_IVB_D_IDS(&ivybridge_info),
-	INTEL_IVB_M_IDS(&ivybridge_info),
-
-	INTEL_HSW_IDS(&haswell_info),
-
-	INTEL_VLV_IDS(&valleyview_info),
-
-	INTEL_BDW_IDS(&broadwell_info),
-
-	INTEL_CHV_IDS(&cherryview_info),
-
-	INTEL_SKL_IDS(&skylake_info),
-	INTEL_BXT_IDS(&broxton_info),
-
-	INTEL_VGA_DEVICE(PCI_MATCH_ANY, &generic_info),
-
-	{ 0, 0, 0 },
-};
-
-struct pci_device *igfx_get(void)
-{
-	struct pci_device *dev;
-
-	if (pci_system_init())
-		return 0;
-
-	dev = pci_device_find_by_slot(0, 0, 2, 0);
-	if (dev == NULL || dev->vendor_id != 0x8086) {
-		struct pci_device_iterator *iter;
-
-		iter = pci_id_match_iterator_create(match);
-		if (!iter)
-			return 0;
-
-		dev = pci_device_next(iter);
-		pci_iterator_destroy(iter);
-	}
-
-	return dev;
-}
-
-const struct igfx_info *igfx_get_info(struct pci_device *dev)
-{
-	int i;
-
-	if (!dev)
-		return 0;
-
-	for (i = 0; match[i].device_id != PCI_MATCH_ANY; i++)
-		if (dev->device_id == match[i].device_id)
-			return (const struct igfx_info *)match[i].match_data;
-
-	return &generic_info;
-}
-
-static int forcewake = -1;
-
-static void
-igfx_forcewake(void)
-{
-	char buf[1024];
-	const char *path[] = {
-		"/sys/kernel/debug/dri/",
-		"/debug/dri/",
-		0,
-	};
-	int i, j;
-
-	for (j = 0; path[j]; j++) {
-		struct stat st;
-
-		if (stat(path[j], &st))
-			continue;
-
-		for (i = 0; i < 16; i++) {
-			snprintf(buf, sizeof(buf),
-				 "%s/%i/i915_forcewake_user",
-				 path[j], i);
-			forcewake = open(buf, 0);
-			if (forcewake != -1)
-				return;
-		}
-	}
-}
-
-void *igfx_get_mmio(struct pci_device *dev)
-{
-	const struct igfx_info *info;
-	int mmio_bar, mmio_size;
-	void *mmio;
-
-	info = igfx_get_info(dev);
-	if (info->gen >> 3 == 2)
-		mmio_bar = 1;
-	else
-		mmio_bar = 0;
-
-	if (info->gen < 030)
-		mmio_size = 512*1024;
-	else if (info->gen < 050)
-		mmio_size = 512*1024;
-	else
-		mmio_size = 2*1024*1024;
-
-	if (pci_device_probe(dev))
-		return 0;
-
-	if (pci_device_map_range(dev,
-				 dev->regions[mmio_bar].base_addr,
-				 mmio_size,
-				 PCI_DEV_MAP_FLAG_WRITABLE,
-				 &mmio))
-		return 0;
-
-	if (info->gen >= 060)
-		igfx_forcewake();
-
-	return mmio;
-}
-
diff --git a/overlay/igfx.h b/overlay/igfx.h
deleted file mode 100644
index c99af186c..000000000
--- a/overlay/igfx.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * 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, sublicense,
- * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#ifndef IGFX_H
-#define IGFX_H
-
-struct igfx_info {
-	int gen;
-};
-
-struct pci_device;
-
-struct pci_device *igfx_get(void);
-const struct igfx_info *igfx_get_info(struct pci_device *pci_dev);
-void *igfx_get_mmio(struct pci_device *pci_dev);
-
-static inline uint32_t
-igfx_read(void *mmio, uint32_t reg)
-{
-	return *(volatile uint32_t *)((volatile char *)mmio + reg);
-}
-
-#endif /* IGFX_H */
diff --git a/overlay/meson.build b/overlay/meson.build
index d133b6bed..d2d2b16a8 100644
--- a/overlay/meson.build
+++ b/overlay/meson.build
@@ -11,7 +11,6 @@ gpu_overlay_src = [
 	'gpu-top.c',
 	'gpu-perf.c',
 	'gpu-freq.c',
-	'igfx.c',
 	'overlay.c',
 	'power.c',
 	'rc6.c',
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: Chris Wilson <chris@chris-wilson.co.uk>
To: intel-gfx@lists.freedesktop.org
Cc: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t] overlay: Drop legacy mmio access
Date: Wed,  3 Jul 2019 16:30:36 +0100	[thread overview]
Message-ID: <20190703153036.14549-1-chris@chris-wilson.co.uk> (raw)

Before the i915_pmu kernel interface was available, we had to rely on
doing some decidedly dodgy mmio access to registers. However, now that
we have a stable interface via perf for grabbing all the details we
need, that and its supporting infrastructure can be discarded.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
---
 overlay/Makefile.am |   2 -
 overlay/gpu-top.c   | 167 +---------------------------
 overlay/igfx.c      | 264 --------------------------------------------
 overlay/igfx.h      |  44 --------
 overlay/meson.build |   1 -
 5 files changed, 1 insertion(+), 477 deletions(-)
 delete mode 100644 overlay/igfx.c
 delete mode 100644 overlay/igfx.h

diff --git a/overlay/Makefile.am b/overlay/Makefile.am
index 51643e498..eeeddbba4 100644
--- a/overlay/Makefile.am
+++ b/overlay/Makefile.am
@@ -31,8 +31,6 @@ intel_gpu_overlay_SOURCES = \
 	gpu-perf.c \
 	gpu-freq.h \
 	gpu-freq.c \
-	igfx.h \
-	igfx.c \
 	overlay.h \
 	overlay.c \
 	power.h \
diff --git a/overlay/gpu-top.c b/overlay/gpu-top.c
index 61b8f62fd..6cec2e943 100644
--- a/overlay/gpu-top.c
+++ b/overlay/gpu-top.c
@@ -33,7 +33,6 @@
 
 #include "igt_perf.h"
 
-#include "igfx.h"
 #include "gpu-top.h"
 
 #define RING_TAIL      0x00
@@ -99,176 +98,12 @@ static int perf_init(struct gpu_top *gt)
 	return 0;
 }
 
-struct mmio_ring {
-	int id;
-	uint32_t base;
-	void *mmio;
-	int idle, wait, sema;
-};
-
-static uint32_t mmio_ring_read(struct mmio_ring *ring, uint32_t reg)
-{
-	return igfx_read(ring->mmio, ring->base + reg);
-}
-
-static int has_execlists(void)
-{
-	int detected = 0;
-	FILE *file;
-
-	file = fopen("/sys/module/i915/parameters/enable_execlists", "r");
-	if (file) {
-		int value;
-		if (fscanf(file, "%d", &value) == 1)
-			detected = value != 0;
-		fclose(file);
-	}
-
-	return detected;
-
-}
-
-static void mmio_ring_init(struct mmio_ring *ring, void *mmio)
-{
-	uint32_t ctl;
-
-	ring->mmio = mmio;
-
-	ctl = mmio_ring_read(ring, RING_CTL);
-	if ((ctl & 1) == 0 && !has_execlists())
-		ring->id = -1;
-}
-
-static void mmio_ring_reset(struct mmio_ring *ring)
-{
-	ring->idle = 0;
-	ring->wait = 0;
-	ring->sema = 0;
-}
-
-static void mmio_ring_sample(struct mmio_ring *ring)
-{
-	uint32_t head, tail, ctl;
-
-	if (ring->id == -1)
-		return;
-
-	head = mmio_ring_read(ring, RING_HEAD) & ADDR_MASK;
-	tail = mmio_ring_read(ring, RING_TAIL) & ADDR_MASK;
-	ring->idle += head == tail;
-
-	ctl = mmio_ring_read(ring, RING_CTL);
-	ring->wait += !!(ctl & RING_WAIT);
-	ring->sema += !!(ctl & RING_WAIT_SEMAPHORE);
-}
-
-static void mmio_ring_emit(struct mmio_ring *ring, int samples, union gpu_top_payload *payload)
-{
-	if (ring->id == -1)
-		return;
-
-	payload[ring->id].u.busy = 100 - 100 * ring->idle / samples;
-	payload[ring->id].u.wait = 100 * ring->wait / samples;
-	payload[ring->id].u.sema = 100 * ring->sema / samples;
-}
-
-static void mmio_init(struct gpu_top *gt)
-{
-	struct mmio_ring render_ring = {
-		.base = 0x2030,
-		.id = 0,
-	}, bsd_ring = {
-		.base = 0x4030,
-		.id = 1,
-	}, bsd6_ring = {
-		.base = 0x12030,
-		.id = 1,
-	}, blt_ring = {
-		.base = 0x22030,
-		.id = 2,
-	};
-	const struct igfx_info *info;
-	struct pci_device *igfx;
-	void *mmio;
-	int fd[2], i;
-
-	igfx = igfx_get();
-	if (!igfx)
-		return;
-
-	if (pipe(fd) < 0)
-		return;
-
-	info = igfx_get_info(igfx);
-
-	switch (fork()) {
-	case -1: return;
-	default:
-		 fcntl(fd[0], F_SETFL, fcntl(fd[0], F_GETFL) | O_NONBLOCK);
-		 gt->fd = fd[0];
-		 gt->type = MMIO;
-		 gt->ring[0].name = "render";
-		 gt->num_rings = 1;
-		 if (info->gen >= 040) {
-			 gt->ring[1].name = "bitstream";
-			 gt->num_rings++;
-		 }
-		 if (info->gen >= 060) {
-			 gt->ring[2].name = "blt";
-			 gt->num_rings++;
-		 }
-		 close(fd[1]);
-		 return;
-	case 0:
-		 close(fd[0]);
-		 break;
-	}
-
-	mmio = igfx_get_mmio(igfx);
-	if (mmio == NULL)
-		exit(127);
-
-	mmio_ring_init(&render_ring, mmio);
-	if (info->gen >= 060) {
-		bsd_ring = bsd6_ring;
-		mmio_ring_init(&blt_ring, mmio);
-	}
-	if (info->gen >= 040) {
-		mmio_ring_init(&bsd_ring, mmio);
-	}
-
-	for (;;) {
-		union gpu_top_payload payload[MAX_RINGS];
-
-		mmio_ring_reset(&render_ring);
-		mmio_ring_reset(&bsd_ring);
-		mmio_ring_reset(&blt_ring);
-
-		for (i = 0; i < 1000; i++) {
-			mmio_ring_sample(&render_ring);
-			mmio_ring_sample(&bsd_ring);
-			mmio_ring_sample(&blt_ring);
-			usleep(1000);
-		}
-
-		memset(payload, 0, sizeof(payload));
-		mmio_ring_emit(&render_ring, 1000, payload);
-		mmio_ring_emit(&bsd_ring, 1000, payload);
-		mmio_ring_emit(&blt_ring, 1000, payload);
-		assert(write(fd[1], payload, sizeof(payload))
-		       == sizeof(payload));
-	}
-}
-
 void gpu_top_init(struct gpu_top *gt)
 {
 	memset(gt, 0, sizeof(*gt));
 	gt->fd = -1;
 
-	if (perf_init(gt) == 0)
-		return;
-
-	mmio_init(gt);
+	perf_init(gt);
 }
 
 int gpu_top_update(struct gpu_top *gt)
diff --git a/overlay/igfx.c b/overlay/igfx.c
deleted file mode 100644
index 6d82bc8d3..000000000
--- a/overlay/igfx.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * 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, sublicense,
- * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#include <pciaccess.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdio.h>
-
-#include "igfx.h"
-#include "../lib/i915_pciids.h"
-
-static const struct igfx_info generic_info = {
-	.gen = -1,
-};
-
-#if 0
-static const struct igfx_info i81x_info = {
-	.gen = 010,
-};
-#endif
-
-static const struct igfx_info i830_info = {
-	.gen = 020,
-};
-static const struct igfx_info i845_info = {
-	.gen = 020,
-};
-static const struct igfx_info i855_info = {
-	.gen = 021,
-};
-static const struct igfx_info i865_info = {
-	.gen = 022,
-};
-
-static const struct igfx_info i915_info = {
-	.gen = 030,
-};
-static const struct igfx_info i945_info = {
-	.gen = 031,
-};
-
-static const struct igfx_info g33_info = {
-	.gen = 033,
-};
-
-static const struct igfx_info i965_info = {
-	.gen = 040,
-};
-
-static const struct igfx_info g4x_info = {
-	.gen = 045,
-};
-
-static const struct igfx_info ironlake_info = {
-	.gen = 050,
-};
-
-static const struct igfx_info sandybridge_info = {
-	.gen = 060,
-};
-
-static const struct igfx_info ivybridge_info = {
-	.gen = 070,
-};
-
-static const struct igfx_info valleyview_info = {
-	.gen = 071,
-};
-
-static const struct igfx_info haswell_info = {
-	.gen = 075,
-};
-
-static const struct igfx_info broadwell_info = {
-	.gen = 0100,
-};
-
-static const struct igfx_info cherryview_info = {
-	.gen = 0101,
-};
-
-static const struct igfx_info skylake_info = {
-	.gen = 0110,
-};
-
-static const struct igfx_info broxton_info = {
-	.gen = 0111,
-};
-
-static const struct pci_id_match match[] = {
-#if 0
-	INTEL_VGA_DEVICE(PCI_CHIP_I810, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I810_DC100, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I810_E, &i81x_info),
-	INTEL_VGA_DEVICE(PCI_CHIP_I815, &i81x_info),
-#endif
-
-	INTEL_I830_IDS(&i830_info),
-	INTEL_I845G_IDS(&i845_info),
-	INTEL_I85X_IDS(&i855_info),
-	INTEL_I865G_IDS(&i865_info),
-
-	INTEL_I915G_IDS(&i915_info),
-	INTEL_I915GM_IDS(&i915_info),
-	INTEL_I945G_IDS(&i945_info),
-	INTEL_I945GM_IDS(&i945_info),
-
-	INTEL_G33_IDS(&g33_info),
-	INTEL_PINEVIEW_IDS(&g33_info),
-
-	INTEL_I965G_IDS(&i965_info),
-	INTEL_I965GM_IDS(&i965_info),
-
-	INTEL_G45_IDS(&g4x_info),
-	INTEL_GM45_IDS(&g4x_info),
-
-	INTEL_IRONLAKE_D_IDS(&ironlake_info),
-	INTEL_IRONLAKE_M_IDS(&ironlake_info),
-
-	INTEL_SNB_D_IDS(&sandybridge_info),
-	INTEL_SNB_M_IDS(&sandybridge_info),
-
-	INTEL_IVB_D_IDS(&ivybridge_info),
-	INTEL_IVB_M_IDS(&ivybridge_info),
-
-	INTEL_HSW_IDS(&haswell_info),
-
-	INTEL_VLV_IDS(&valleyview_info),
-
-	INTEL_BDW_IDS(&broadwell_info),
-
-	INTEL_CHV_IDS(&cherryview_info),
-
-	INTEL_SKL_IDS(&skylake_info),
-	INTEL_BXT_IDS(&broxton_info),
-
-	INTEL_VGA_DEVICE(PCI_MATCH_ANY, &generic_info),
-
-	{ 0, 0, 0 },
-};
-
-struct pci_device *igfx_get(void)
-{
-	struct pci_device *dev;
-
-	if (pci_system_init())
-		return 0;
-
-	dev = pci_device_find_by_slot(0, 0, 2, 0);
-	if (dev == NULL || dev->vendor_id != 0x8086) {
-		struct pci_device_iterator *iter;
-
-		iter = pci_id_match_iterator_create(match);
-		if (!iter)
-			return 0;
-
-		dev = pci_device_next(iter);
-		pci_iterator_destroy(iter);
-	}
-
-	return dev;
-}
-
-const struct igfx_info *igfx_get_info(struct pci_device *dev)
-{
-	int i;
-
-	if (!dev)
-		return 0;
-
-	for (i = 0; match[i].device_id != PCI_MATCH_ANY; i++)
-		if (dev->device_id == match[i].device_id)
-			return (const struct igfx_info *)match[i].match_data;
-
-	return &generic_info;
-}
-
-static int forcewake = -1;
-
-static void
-igfx_forcewake(void)
-{
-	char buf[1024];
-	const char *path[] = {
-		"/sys/kernel/debug/dri/",
-		"/debug/dri/",
-		0,
-	};
-	int i, j;
-
-	for (j = 0; path[j]; j++) {
-		struct stat st;
-
-		if (stat(path[j], &st))
-			continue;
-
-		for (i = 0; i < 16; i++) {
-			snprintf(buf, sizeof(buf),
-				 "%s/%i/i915_forcewake_user",
-				 path[j], i);
-			forcewake = open(buf, 0);
-			if (forcewake != -1)
-				return;
-		}
-	}
-}
-
-void *igfx_get_mmio(struct pci_device *dev)
-{
-	const struct igfx_info *info;
-	int mmio_bar, mmio_size;
-	void *mmio;
-
-	info = igfx_get_info(dev);
-	if (info->gen >> 3 == 2)
-		mmio_bar = 1;
-	else
-		mmio_bar = 0;
-
-	if (info->gen < 030)
-		mmio_size = 512*1024;
-	else if (info->gen < 050)
-		mmio_size = 512*1024;
-	else
-		mmio_size = 2*1024*1024;
-
-	if (pci_device_probe(dev))
-		return 0;
-
-	if (pci_device_map_range(dev,
-				 dev->regions[mmio_bar].base_addr,
-				 mmio_size,
-				 PCI_DEV_MAP_FLAG_WRITABLE,
-				 &mmio))
-		return 0;
-
-	if (info->gen >= 060)
-		igfx_forcewake();
-
-	return mmio;
-}
-
diff --git a/overlay/igfx.h b/overlay/igfx.h
deleted file mode 100644
index c99af186c..000000000
--- a/overlay/igfx.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * 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, sublicense,
- * 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 NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#ifndef IGFX_H
-#define IGFX_H
-
-struct igfx_info {
-	int gen;
-};
-
-struct pci_device;
-
-struct pci_device *igfx_get(void);
-const struct igfx_info *igfx_get_info(struct pci_device *pci_dev);
-void *igfx_get_mmio(struct pci_device *pci_dev);
-
-static inline uint32_t
-igfx_read(void *mmio, uint32_t reg)
-{
-	return *(volatile uint32_t *)((volatile char *)mmio + reg);
-}
-
-#endif /* IGFX_H */
diff --git a/overlay/meson.build b/overlay/meson.build
index d133b6bed..d2d2b16a8 100644
--- a/overlay/meson.build
+++ b/overlay/meson.build
@@ -11,7 +11,6 @@ gpu_overlay_src = [
 	'gpu-top.c',
 	'gpu-perf.c',
 	'gpu-freq.c',
-	'igfx.c',
 	'overlay.c',
 	'power.c',
 	'rc6.c',
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

             reply	other threads:[~2019-07-03 15:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-03 15:30 Chris Wilson [this message]
2019-07-03 15:30 ` [igt-dev] [PATCH i-g-t] overlay: Drop legacy mmio access Chris Wilson
2019-07-03 15:40 ` Antonio Argenziano
2019-07-03 15:40   ` [igt-dev] " Antonio Argenziano
2019-07-03 16:01 ` [igt-dev] ✗ Fi.CI.BAT: failure for " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190703153036.14549-1-chris@chris-wilson.co.uk \
    --to=chris@chris-wilson.co.uk \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.