diff mbox

[1/5] lib/drmtest: add drmtest_disable/enable_prefault() function

Message ID 1374213192-2456-1-git-send-email-xiong.y.zhang@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zhang, Xiong Y July 19, 2013, 5:53 a.m. UTC
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
---
 lib/drmtest.c | 43 +++++++++++++++++++++++++++++++++++++++++++
 lib/drmtest.h |  3 +++
 2 files changed, 46 insertions(+)

Comments

Daniel Vetter July 19, 2013, 7:13 a.m. UTC | #1
On Fri, Jul 19, 2013 at 01:53:08PM +0800, Xiong Zhang wrote:
> Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
> ---
>  lib/drmtest.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  lib/drmtest.h |  3 +++
>  2 files changed, 46 insertions(+)
> 
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 011d8c1..713c5ff 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -1593,3 +1593,46 @@ 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;
> +}
> +
> +int drmtest_disable_prefault(void)
> +{
> +	return drmtest_prefault_control(false);
> +}

If our test crashes this will leave prefaulting disable, potentially
affecting future tests run before rebooting. To prevent such issues Imre
has added exit handler code to make sure that we can undo such things.
I think we should install an exit handler which calls
drmtest_enable_prefault again. See drmtest_install_exit_handler.
-Daniel

> +
> +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
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 011d8c1..713c5ff 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -1593,3 +1593,46 @@  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;
+}
+
+int drmtest_disable_prefault(void)
+{
+	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);