From d18fca7f6cf37a05f759135d6b872ff31113532c Mon Sep 17 00:00:00 2001 From: Ville Syrjälä Date: Wed, 6 Sep 2017 15:41:08 +0300 Subject: lib/sysfs: Fix fbcon rebind MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "echo 1 > vtconN/bind" doesn't actually do anything. Looks like the only way to rebind fbcon is to unbind the current console. I suppose the failure to rebind might be a kernel bug, but I can't be bothered to decode the vt.c spaghetti so let's just try to handle this in igt. For simplicity let's assume the currently bound console is the dummy console and unbind that when we want to rebind fbcon. That works for me. With rebinding not working we can't really tell wich console is going to get bound anyway, so there's no way to make this code really robust, assuming we ever had more than these two console drivers involved. Additionally Daniel Vetter pointed out: "We select the dummy con in i915, to be able to kick out vgacon before we register fbdev. So should always be there." Reviewed-by: Chris Wilson Signed-off-by: Ville Syrjälä --- lib/igt_sysfs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c index f7853ca0..817678bc 100644 --- a/lib/igt_sysfs.c +++ b/lib/igt_sysfs.c @@ -537,13 +537,14 @@ void kick_fbcon(bool enable) if (len >= 0) buf[len] = '\0'; - if (!strstr(buf, "frame buffer device")) + if (!strstr(buf, enable ? "dummy device" : + "frame buffer device")) continue; sprintf(buf, "%s/%s/bind", path, de->d_name); fd = open(buf, O_WRONLY); if (fd != -1) { - igt_ignore_warn(write(fd, enable ? "1\n" : "0\n", 2)); + igt_ignore_warn(write(fd, "0\n", 2)); close(fd); } } -- cgit v1.2.3