[Intel-gfx] [PATCH 1/2] lib/drmtest: add drmtest_disable/enable_prefault() function

Xiong Zhang xiong.y.zhang at intel.com
Fri Jul 19 12:42:51 CEST 2013


V2: add exit handler to enable prefault (Daniel)

Signed-off-by: Xiong Zhang <xiong.y.zhang at intel.com>
---
 lib/drmtest.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/drmtest.h |  3 +++
 2 files changed, 53 insertions(+)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 011d8c1..980fa49 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -1593,3 +1593,53 @@ void kmstest_free_connector_config(struct kmstest_connector_config *config)
 	drmModeFreeEncoder(config->encoder);
 	drmModeFreeConnector(config->connector);
 }
+
+#define PREFAULT_DEBUGFS "/sys/module/i915/parameters/prefault_disable"
+static int drmtest_prefault_control(bool enable)
+{
+	char *name = PREFAULT_DEBUGFS;
+	int fd;
+	char buf[2] = {'Y', 'N'};
+	int index;
+	int result = 0;
+
+	fd = open(name, O_RDWR);
+	if (fd == -1) {
+		fprintf(stderr, "Couldn't open prefault_debugfs.%s\n",
+				strerror(errno));
+		return -1;
+	}
+
+	if (enable)
+		index = 1;
+	else
+		index = 0;
+
+	if (write(fd, &buf[index], 1) != 1) {
+		fprintf(stderr, "write prefault_debugfs error.%s\n",
+				strerror(errno));
+		result = -1;
+	}
+
+	close(fd);
+
+	return result;
+}
+
+static void enable_prefault_at_exit(int sig)
+{
+	drmtest_enable_prefault();
+}
+
+int drmtest_disable_prefault(void)
+{
+	drmtest_install_exit_handler(enable_prefault_at_exit);
+
+	return drmtest_prefault_control(false);
+}
+
+int drmtest_enable_prefault(void)
+{
+	return drmtest_prefault_control(true);
+}
+
diff --git a/lib/drmtest.h b/lib/drmtest.h
index e3a9275..80b344c 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -179,3 +179,6 @@ void drmtest_enable_exit_handler(void);
 void drmtest_disable_exit_handler(void);
 
 int drmtest_set_vt_graphics_mode(void);
+
+int drmtest_disable_prefault(void);
+int drmtest_enable_prefault(void);
-- 
1.8.3.2




More information about the Intel-gfx mailing list